使用java的女性声音的文本到语音

时间:2014-03-27 07:54:18

标签: java text-to-speech

我使用java编写了文本到语音演示。这是正常的工作,但它并没有与女性的声音说话,虽然我为此做了准备。

我的代码如下:

try {
System.setProperty("FreeTTSSynthEngineCentral",
    "com.sun.speech.freetts.jsapi.FreeTTSEngineCentral");
System.setProperty("freetts.voices",
    "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
Central.registerEngineCentral("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral");

SynthesizerModeDesc desc = new SynthesizerModeDesc(null, "general",
    Locale.US, null, null);

Synthesizer synth = Central.createSynthesizer(desc);
synth.allocate();
desc = (SynthesizerModeDesc) synth.getEngineModeDesc();
Voice voice = new Voice("kevin16", Voice.AGE_YOUNGER_ADULT,
    Voice.GENDER_FEMALE, null);

synth.getSynthesizerProperties().setVoice(voice);
synth.resume();
synth.speakPlainText(text, null);
synth.waitEngineState(Synthesizer.QUEUE_EMPTY);
synth.deallocate(); }catch (Exception ex) {
ex.printStackTrace();}

如何将我的代码更改为女性的声音。救救我!

2 个答案:

答案 0 :(得分:1)

阅读the documentation,我看到了:

  

此版本的FreeTTS包括:

     
      
  • 核心语音合成引擎
  •   
  • 支持多种声音:   
        
    • 一个8khz的双音素,男性,美国英语的声音
    •   
    • 一个16khz的双音素,男性美国英语的声音
    •   
    • 16khz有限域​​名,男性美国英语语音
    •   
  •   
  • 支持从FestVox导入语音(仅限美国英语)
  •   
  • 从FestVox导入CMU ARCTIC语音的特定支持(仅限美国英语)
  •   
  • 支持MBROLA语音(单独下载):   
        
    • 一个16khz 女性,美国英语的声音
    •   
    • 两个16khz 男性美国英语声音
    •   
  •   

所以听起来它只带有男声。也许如果您下载其中一个MBROLA声音,您将获得一个女声。

另请参阅What voices are available?,其中解释了如何获得女性声音,但注意到" FreeTTS在Windows平台上不支持MBROLA"。

答案 1 :(得分:-2)

Voice voice = new Voice("kevin16", Voice.AGE_YOUNGER_ADULT,...

应该有其他选择,凯文对我来说听起来很男性。试试Jane或那个方向的东西