如今在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---
