Java 使用MaryTTS嵌入时如何使用其他声音?

Java 使用MaryTTS嵌入时如何使用其他声音?,java,marytts,Java,Marytts,我想在Java应用程序中嵌入MaryTTS。我已经下载了JAR并将它们放在我的类路径中。我可以成功运行此测试: public static void main(String[] args) throws Exception { MaryInterface marytts = new LocalMaryInterface(); Set<String> voices = marytts.getAvailableVoices(); m

我想在Java应用程序中嵌入MaryTTS。我已经下载了JAR并将它们放在我的类路径中。我可以成功运行此测试:

    public static void main(String[] args) throws Exception {
        MaryInterface marytts = new LocalMaryInterface();
        Set<String> voices = marytts.getAvailableVoices();
        marytts.setVoice(voices.iterator().next());
        AudioInputStream audio = marytts.generateAudio("Hello world.");
        AudioPlayer player = new AudioPlayer(audio);
        player.start();
        player.join();
    }
publicstaticvoidmain(字符串[]args)引发异常{
MaryInterface marytts=新的LocalMaryInterface();
Set voices=marytts.getAvailableVoices();
setVoice(voices.iterator().next());
AudioInputStream audio=marytts.generateAudio(“你好,世界”);
AudioPlayer=新的AudioPlayer(音频);
player.start();
player.join();
}
问题是唯一可用的语音是
cmu slt hsmm
,这很有意义,因为这是类路径中唯一的
voice-
jar。然而,我在任何地方都找不到其他声音的罐子,这让我相信我做错了什么,因为Mary GUI可以很好地使用其他声音


使用MaryTTS embed时如何使用其他语音?

您需要找到或创建新的语音罐,并将此语音罐添加到您的LIB中。MaryTTS自己使用组件安装程序来实现这一点,但我更喜欢从官方网站手动下载JAR

这是。因此,假设您想要添加
语音dfki spike hsmm
。在
marytts components.xml中找到合适的名称,链接通常如下所示:
http://mary.dfki.de/download/5.1/voice-dfki-spike-hsmm-5.1.zip
。现在,您可以轻松地解压并将此声音放到maryTTS源旁边的项目库中

演示

Set<String> voices = maryTTS.getAvailableVoices();
for(String v : voices){
    System.out.println("Voice available: " + v);
}
如果你使用MarytsGUI,你可能已经拥有了硬盘上的所有声音。本文可能会帮助您找到它们:


PS.TTS语音本身有单独的许可证,所以不要忘记在
marytts components.xml
中查看它。通常是Creative Commons,但取决于voice的许可证,它可能用于商业用途,也可能不用于商业用途。

当我使用Mary HTTP server而不是Mary作为Java库时,voice的正确文件夹是什么?
Voice available: cmu-slt-hsmm
Voice available: voice-dfki-spike-hsmm