安卓TTS文字轉語音

今天談談TTS。

TextToSpeech 這個類,能將正常的文字轉換爲音頻播出。

好像網上的資料比較少,之後項目可能要用到,自己先整理筆記。
早上做了第一個Demo,趁午休時間,來總結下:

1.谷歌暫時不支持中文
2.非常簡單的一個控件,但是發音生硬,有一些第三方做得更爲出色


   // private TextToSpeech mTTS;

    case R.id.btn_main_totts2:                                       
        if (mTTS != null) {                                          
            mTTS.stop();                                             
            mTTS.shutdown();                                         
            mTTS = null;                                             
        }                                                            
        mTTS = new TextToSpeech(MainActivity.this, new TTStest());   
        break;                                                       

定義一個Button,設置它的OnclickListener爲以上,其中TTStest是自己定義的一個雷,實現了OnInitListener 接口(如下)

 private class TTStest implements TextToSpeech.OnInitListener {                                                
     @Override                                                                                                 
     public void onInit(int i) {                                                                               
         if (i == TextToSpeech.SUCCESS) {                                                                      
             int result = mTTS.setLanguage(Locale.US);                                                         
             if (result == TextToSpeech.LANG_NOT_SUPPORTED) {                                                  
                 Toast.makeText(MainActivity.this, "what", Toast.LENGTH_SHORT).show();                         
             } else {                                                                                          
                 mTTS.speak("I have a dream. one day we will be free", TextToSpeech.QUEUE_FLUSH, null);        
             }                                                                                                 
         }                                                                                                     
     }                                                                                                         
 }                                                                                                             

到目前爲止,短短十數行代碼,已經可以實現主要的功能了,在真機上運行之後,會有生硬的女音讀出“I have a dream ……..”.


下面在加上一個EditText,讓TTS讀出我們所輸入的內容

EditText mEdt = (EditText) findViewById(R.id.edt_main_totts);
mTTS.speak(mEdt.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);

很簡單,就是EditText.getText().toString(),將輸入的文本轉爲語音

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章