我写了一个小程序,应该用 Java 简单地进行文本到语音的转换。
我的类(class)是这样的:
import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;
public class TalkResource {
private static final String VOICENAME_kevin = "kevin16";
private final String text; // string to speech
public TalkResource(String text) {
this.text = text;
}
public void speak() {
Voice voice;
VoiceManager voiceManager = VoiceManager.getInstance();
voice = voiceManager.getVoice(VOICENAME_kevin);
voice.allocate();
String newText = "example";
voice.speak(newText);
}
}
我很确定语法(和内容)是正确的,但我的voice
总是null
。
我认为“kevin16”既未找到也未包含在项目中,但我只是想不出如何将任何声音添加到我的项目中。为了获取依赖项,我使用了 maven
。
<dependency>
<groupId>net.sf.sociaal</groupId>
<artifactId>freetts</artifactId>
<version>1.2.2</version>
</dependency>
一切都在那里,除了声音。根据我的阅读,我认为“kevin16”应该包含在 FreeTTS 中。任何想法如何继续?如何添加语音?我还发现了一些关于 MBROLA
的信息,但这让我更加不清楚了:/
感谢您的帮助。
最佳答案
我遇到了完全相同的问题。当我尝试调用 voiceManager.getVoices()
时,我得到的列表是空的。问题是,未设置 freetts.voices
系统属性。因此,添加以下行解决了我的问题:
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
现在,我可以使用 kevin 或 kevin16 的声音。
希望这对您有所帮助。
关于Java FreeTTS 缺少语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808248/