如何更改Java的TTS语音

时间:2014-01-03 13:48:15

标签: java windows netbeans freetts

我正在使用FreeTTS在我的java程序中说出一些文字。我想在其中嵌入MBROLA音色。我跟着the instructions,但我被困在这里:

  

为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'文件

简而言之,我正在寻找一个清晰的解释,如何在Java中为MBTOLA音色库添加MBROLA音色(对于新手)......

你怎么说?我应该考虑将我的操作系统改为Ubuntu for Java Development ???

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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

答案 2 :(得分: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();
}