1

我正在使用 FreeTTS 在我的 java 程序中说出一些文本。我想在其中嵌入 MBROLA Voices。我按照说明进行操作,但我被困在这里:

为 MBROLA 启用 FreeTTS 支持

要启用对 MBROLA 的 FreeTTS 支持,只需将 mbrola/mbrola.jar 复制到 lib/mbrola.jar。然后,无论何时运行任何 FreeTTS 应用程序,都将“mbrola.base”目录指定为系统属性:

java -Dmbrola.base=/home/jim/mbrola -jar bin/FreeTTSHelloWorld.jar mbrola_us1

在教程中他们正在做的是,他们在 cmd 中键入这一行以使 jar 文件以他们告诉的声音(us1)说话,但我要做的是,我已经有一个 java 程序,我想改变它说话的声音。这个怎么做?

我尝试更改 vm 选项,但这无济于事。

注意:我使用的是 Netbeans IDE,而且我还有文件“FreeTTSHelloWorld.jar”

所以简而言之,我正在寻找一个关于如何继续/将 MBROLA 语音添加到 java 中的 FreeTTS 库中的清晰解释(对于新手)......

你说什么?我应该考虑将我的操作系统更改为 Ubuntu 以进行 Java 开发吗???

4

3 回答 3

4

进入终端:-)这意味着你需要从命令行运行你的程序,这里有很好的教程如何做到这一点。

但我认为它也可以从 NetBeans 运行,转到Properties您的项目,转到Run并粘贴-Dmbrola.base=/home/jim/mbrolaVM options. 您当然需要FreeTTSHelloWorld.jar在类路径上(您可以通过添加它Properties -> Libraries -> Add JAR/Folder)。

于 2014-01-03T13:52:02.657 回答
1

-D 用于为您的 java 程序提供系统属性。所以你需要在运行你的java程序时提供它:

java -Dmbrola.base=/home/jim/mbrola -jar bin/FreeTTSHelloWorld.jar mbrola_us1 yourJavaClass

如果您使用的是 Eclipse 之类的 IDE,那么您可以通过以下方式执行相同操作:

运行 -> 运行配置,选择项目,第二个选项卡:“参数”。顶部框用于您的程序,底部框用于 VM 参数,例如 -Dmbrola.base=/home/jim/mbrola -jar bin/FreeTTSHelloWorld.jar mbrola_us1

于 2014-01-03T13:49:55.790 回答
0

您是否尝试过类似的方法:

public static void main(String[] args) {
    System.setProperty("mbrola.base", "your/mbrola/base/directory");
    VoiceManager voiceManager = VoiceManager.getInstance();
    String voice = "mbrola_us1";
    Voice helloVoice = voiceManager.getVoice(voice);
    if (helloVoice == null) {
        Voice[] availableVoices = voiceManager.getVoices();
        List<String> voiceList = new ArrayList<>();
        for (Voice v : availableVoices) voiceList.add(v.getName());
        System.out.println("Not a valid voice: " + voice + "\nValid voices: " + voiceList);
        return;
    }
    helloVoice.allocate();

    /* Synthesize speech. */
    helloVoice.speak("Thank you for giving me a voice. " + "I'm so glad to say hello to this world.");

    /* Clean up and leave. */
    helloVoice.deallocate();
}
于 2014-01-05T15:56:36.870 回答