疑难解答“系统属性mbrola.base未定义。使用FreeTTS将文本转换为语音时不会使用MBROLA语音”

时间:2010-10-20 08:15:58

标签: text-to-speech freetts

 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)

3 个答案:

答案 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");.

无论如何它对我有用,请试一试。