Search code examples
javamarytts

How do I use other voices when using MaryTTS embed?


I want to use MaryTTS embed in my Java application. I have downloaded the jars and put them in my classpath. I can successfully run this test:

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

The problem is that the only voice available is cmu-slt-hsmm, which makes sense because that's the only voice- jar I have in the classpath. However, I cannot find anywhere other jars for other voices, which leads me to believe I'm doing something wrong because the Mary GUI can use other voices just fine.

How do I use other voices when using MaryTTS embed?


Solution

  • You need to find or create new voice jar and add this voice jar in your libs. MaryTTS does this itself using the component-installer, but i prefere to download jars manualy from official website.

    Here is the list of all available voices. So, lets suppose you want to add voice-dfki-spike-hsmm. Find apropriate name in marytts-components.xml and link will usually look something like this: http://mary.dfki.de/download/5.1/voice-dfki-spike-hsmm-5.1.zip. Now you can easily unzip and put this voice to your project libs next to maryTTS source.

    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
    

    If you use maryTTS GUI you probably already have all voices somewere on your hard drive. This article may help you to find them: http://myrobotlab.org/content/marytts-multi-language-support

    PS. TTS voices themselves have individual licenses, so don't forget to look at it in marytts-components.xml. Usually Creative Commons, but depending on the voice's license, it may or may not be used commercially.