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

How do I use other voices when using MaryTTS embed?

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

    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();
    }

问题是唯一可用的语音是 cmu-slt-hsmm,这是有道理的,因为这是我在类路径中唯一的 voice- jar。但是,我无法在任何地方找到其他声音的其他罐子,这让我相信我做错了什么,因为 Mary GUI 可以很好地使用其他声音。

如何在使用 MaryTTS 嵌入时使用其他语音?

您需要找到或创建新的语音 jar 并将此语音 jar 添加到您的库中。 MaryTTS 使用组件安装程序自行完成此操作,但我更喜欢从官方网站手动下载 jars。

这里是the list of all available voices。因此,假设您要添加 voice-dfki-spike-hsmm。在 marytts-components.xml 中找到合适的名称,link 通常看起来像这样:http://mary.dfki.de/download/5.1/voice-dfki-spike-hsmm-5.1.zip。现在您可以轻松解压缩并将此声音放入 maryTTS 源旁边的项目库中。

Demo

Set<String> voices = maryTTS.getAvailableVoices();
for(String v : voices){
    System.out.println("Voice available: " + v);
}

Result:

Voice available: cmu-slt-hsmm
Voice available: voice-dfki-spike-hsmm

如果您使用 maryTTS GUI,您的硬盘驱动器上可能已经有了所有声音。本文可能会帮助您找到它们:http://myrobotlab.org/content/marytts-multi-language-support

PS。 TTS 语音本身有单独的许可证,所以不要忘记在marytts-components.xml 中查看它。通常是知识共享,但根据语音的许可,它可能会也可能不会被商业使用。