我写了一个小程序,它应该只是做一个文本到speach在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
的东西,但这让我更加不清楚:
谢谢你的帮助。
4条答案
按热度按时间plicqrtu1#
我也有同样的问题。当我试图调用
voiceManager.getVoices()
时,我得到的是空列表。问题是,freetts.voices
系统属性未设置。所以,添加以下行解决了我的问题:现在,我可以用凯文或凯文16的声音。
希望这对你有帮助。
eulz3vhy2#
你有没有在任何地方调用 your speak方法?
试试这样的方法:
我会尝试一下,说你比我更熟悉Maven服务器,但是我也经常使用FreeTTS和MBROLA声音,而且我在项目中引用freeText库从来没有遇到过问题。
如果你想看看MBROLA,我有一个体面的线程如何设置它在这里
trnvg8h33#
对我来说也不管用。我使用了一个不同的存储库(你必须改变你的POM文件)。我使用了以下依赖项:
为此,我使用了以下存储库:
bogh5gae4#
只需简单地添加第一行在您的主要