Android中文TTS


如今在Android中開發中文語音播報有各式各樣的雲服務、SDK、API等雲雲,但是大部分服務是需要聯網支持來進行語音合成的,在中文語音合成方面,科大訊飛無疑是佼佼者,而且它也提供了離線語音合成包(需要按分發數量和使用時間付費)的下載。

Android原生API本身也就提供了TTS功能,我們可以使用TextToSpeech類通過簡單幾行代碼就能把想發音的文字播報出來,方法如下:

1、首先需要實例化TextToSpeech類,在TextToSpeech的構造函數中,需要提供一個OnInitListener對象用於完成對TextToSpeech對象的初始化設置,在OnInitListener對象中需要實現onInit方法,我們可以在該方法內來調用setLanguage方法

來設置語言類型,Local.CHINA為中文,設置完后判斷當前系統是否支持要發音的語言,代碼如下:

@Override
public void onInit(int status) {
  if (status == TextToSpeech.SUCCESS) {
    int result = textToSpeech.setLanguage(Locale.CHINA);
    if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) 
    {
      Toast.makeText(this, "LANG_MISSING_DATA  or LANG_NOT_SUPPORTED
!", Toast.LENGTH_SHORT).show();
    }
  }
}

2、然后需要發音的地方調用TextToSpeech實例對象的speak方法即可完成語音播報,在播報前可以通過調用setPitch方法來設置音調,默認值為1,數值越大音調越高,代碼如下:

textToSpeech.setPitch(1.5f); // 在系統設置里也可以修改音調
textToSpeech.speak("你好, 我們來測試一下語音功能!”, TextToSpeech.QUEUE_FLUSH, null);

3、使用TextToSpeech進行語音播報使用的語言數據時設備上Android系統設置的TTS語音包,默認是不支持中文的,以我的測試平板為例,默認TTS包是Pico TTS,僅支持英文、法文、德文、意大利文及西班牙文等幾種語言,如圖所示:

4、Android系統支持自定義第三方TTS語音庫,我們可以下載安裝一個“訊飛語音+”, 並在系統語音設置中將TTS切換選擇成“訊飛語音+”,如圖所示:

 

之后,我們就可以成功TTS播報中文了!

---Done---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM