我写了一个小程序,它应该简单地用 Java 进行文本到语音转换。
我的班级看起来像这样:
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 or kevin16 voices.
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)