俊星的BLOG

          freetts初探

          FreeTTS是一個語音合成庫,今天進行了相關的試用。
          1、下載完畢之后,構建工程,拷貝到LIB中的JAR有:en_us.jar、freetts.jar、jsapi.jar、freetts-jsapi10.jar
          2、jsapi.jar因為采用的授權不同于freetts,所以需要運行jsapi.exe并同意后來獲取
          3、需要將speech.properties拷貝到user.home或者java.home/lib下
          4、編寫基于JSAPI的HelloWorld程序:
          import java.util.Locale;

          import javax.speech.Central;
          import javax.speech.EngineList;
          import javax.speech.synthesis.Synthesizer;
          import javax.speech.synthesis.SynthesizerModeDesc;
          import javax.speech.synthesis.Voice;

          public class HelloWorld {

              
          public HelloWorld() {
              }

              
          public static void listAllVoices(String modeName) {
                  System.out.println(
          "All " + modeName + " Mode JSAPI Synthesizers and Voices:");
                  SynthesizerModeDesc required 
          = new SynthesizerModeDesc(null, modeName, Locale.US, nullnull);
                  EngineList engineList 
          = Central.availableSynthesizers(required);
                  
          for (int i = 0; i < engineList.size(); i++) {
                      SynthesizerModeDesc desc 
          = (SynthesizerModeDesc) engineList.get(i);
                      System.out.println(
          "    " + desc.getEngineName() + " (mode=" + desc.getModeName() + ", locale="
                              
          + desc.getLocale() + "):");
                      Voice voices[] 
          = desc.getVoices();
                      
          for (int j = 0; j < voices.length; j++)
                          System.out.println(
          "        " + voices[j].getName());
                  }
              }

              
          public static void main(String args[]) {
                  
          // 利用 FreeTTS 讀出Good job
                  try {
                      SynthesizerModeDesc desc 
          = new SynthesizerModeDesc("FreeTTS en_US general synthesizer""general",
                              Locale.US, 
          nullnull);
                      Synthesizer synthesizer 
          = Central.createSynthesizer(desc);
                      
          if (synthesizer == null) {
                          System.exit(
          1);
                      }
                      synthesizer.allocate();
                      synthesizer.resume();
                      desc 
          = (SynthesizerModeDesc) synthesizer.getEngineModeDesc();
                      Voice voices[] 
          = desc.getVoices();
                      
          for (Voice v : voices) {
                          synthesizer.getSynthesizerProperties().setVoice(v);
                          synthesizer.speakPlainText(
          "good job"null);
                          synthesizer.waitEngineState(
          0x10000L);
                      }
                      synthesizer.deallocate();
                  } 
          catch (Exception ex) {
                      ex.printStackTrace();
                  }
              }
          }

          5、編寫基于FreeTTS的測試程序:
          import com.sun.speech.freetts.Voice;
          import com.sun.speech.freetts.VoiceManager;

          public class FreeTTSHelloWorld {

              
          public FreeTTSHelloWorld() {
              }

              
          public static void listAllVoices() {
                  System.out.println();
                  System.out.println(
          "All voices available:");
                  VoiceManager voiceManager 
          = VoiceManager.getInstance();
                  Voice voices[] 
          = voiceManager.getVoices();
                  
          for (int i = 0; i < voices.length; i++)
                      System.out.println(
          "    " + voices[i].getName() + " (" + voices[i].getDomain() + " domain)");

              }

              
          public static void main(String args[]) {
                  listAllVoices();
                  System.out.println();
                  VoiceManager voiceManager 
          = VoiceManager.getInstance();
                  Voice helloVoice 
          = voiceManager.getVoice("kevin16");
                  
          if (helloVoice == null) {
                      System.exit(
          1);
                  }
                  helloVoice.allocate();
                  helloVoice.speak(
          "GOOD JOB KINKDING");
                  helloVoice.deallocate();
                  System.exit(
          0);
              }
          }

          posted on 2010-10-15 11:28 俊星 閱讀(3429) 評論(2)  編輯  收藏

          評論

          # re: freetts初探 2011-06-02 22:16 瓏兒

          System property "mbrola.base" is undefined. Will not use MBROLA voices.

          這個問題怎么解決啊?  回復  更多評論   

          # re: freetts初探 2012-02-01 17:12 apiao

          學習了! 就是不清楚為啥在eclipse下跑不起來...  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 仪陇县| 奉新县| 福安市| 莱州市| 杂多县| 衡水市| 潮安县| 嘉鱼县| 佛坪县| 永登县| 泸水县| 兴山县| 佛山市| 余干县| 收藏| 曲松县| 建瓯市| 东台市| 紫阳县| 南昌县| 凤台县| 隆昌县| 临海市| 赤水市| 巴彦县| 苍溪县| 周至县| 山阴县| 绍兴市| 梁河县| 温宿县| 门头沟区| 佳木斯市| 陇南市| 柳林县| 甘孜| 紫阳县| 翁源县| 无为县| 嘉义县| 千阳县|