import com.sun.speech.freetts.*;
import java.util.*;
public class Demofreetts
{
private String speaktext;
public void doSpeak(String speak, String voice)
{
speaktext = speak;
try
{
VoiceManager voiceManager = VoiceManager.getInstance();
Voice voices = voiceManager.getVoice(voice);
Voice sp = null;
if(voices != null)
sp = voices;
else
System.out.println("No Voice Available");
sp.allocate();
sp.speak(speaktext);
sp.deallocate();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String[]args)
{
Demofreetts obj = new Demofreetts();
obj.doSpeak(args[0],"Kelvin16");
}
}
以上代码导致以下错误:
System property "mbrola.base" is undefined. Will not use MBROLA voices No Voice Available java.lang.NullPointerException at Demofreetts.doSpeak(Demofreetts.java:24) at Demofreetts.main(Demofreetts.java:39)
答案 0 :(得分:1)
您可以使用freetts1.2 API将文本转换为Java语音。它使用起来非常简单。此链接可能对您有用。它有一个示例程序
http://learnsharelive.blogspot.com/2011/01/convert-text-to-speech-java-freetts12.html
答案 1 :(得分:0)
只需添加System.setProperty
即可
System.setProperty("mbrola.base", "C:\\Users\\iup\\workspace\\newpro\\mbrola");
VoiceManager voiceManager = VoiceManager.getInstance();

答案 2 :(得分:0)
这是解决方案
将字符串语音参数更改为以下之一。
1.kevin16(所有字母都应以小写字母书写) 2.alan(这也是你下一个选择kevin16语音的选择。 但是消息 系统属性“mbrola.base”未定义。不会使用MBROLA的声音。仍然存在,但你可以得到你需要的声音。但是你可以通过设置mbrola语音的属性来解决这个问题。使用
System.setProperty (" mbrola.base" ,"here the pathof property");.
无论如何它对我有用,请试一试。