Android TTS 支援中文
阿新 • • 發佈:2018-12-30
最近專案需求,要在android裡面實現語音轉文字朗讀,TTS,於是上網各種搜尋,比較好的是android有自帶原生的api可以直接使用,android.speech.tts.TextToSpeech。封裝一個java類方便使用,程式碼如下:
package dione.healthclub; import android.content.Context; import android.speech.tts.TextToSpeech; import android.util.Log; import android.widget.Toast; import java.util.Locale; public class AJTextToSpeech implements TextToSpeech.OnInitListener { private Context mContext; private TextToSpeech mTTS; public AJTextToSpeech(Context context){ mContext = context; mTTS = new TextToSpeech(mContext,this); } public boolean speak(final String text){ Log.d("dione","speak text:"+text); // 設定音調,值越大聲音越尖(女生),值越小則變成男聲,1.0是常規 mTTS.setPitch(1.0f); // 設定語速 mTTS.setSpeechRate(1.0f); //播放語音 int ret = mTTS.speak(text,TextToSpeech.QUEUE_ADD,null); if(ret == 0) { Toast.makeText(mContext, "文字轉語音成功...", Toast.LENGTH_SHORT).show(); return true; } else { Toast.makeText(mContext, "文字轉語音錯誤...", Toast.LENGTH_SHORT).show(); return false; } } @Override public void onInit(int status) { // 判斷是否轉化成功 if (status == TextToSpeech.SUCCESS){ //預設設定語言為中文,原生的android貌似不支援中文。 int result = mTTS.setLanguage(Locale.US); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){ Toast.makeText(mContext, "資料丟失或不支援..."+String.valueOf(result), Toast.LENGTH_SHORT).show(); }else{ //不支援中文就將語言設定為英文 mTTS.setLanguage(Locale.US); } } } }
將該java加入到自己的工程基本上就可以實現英文的語音轉文字朗讀。
TextToSpeech mTTS = new TextToSpeech(Context,this);
mTTS.speak("TTS中文朗讀");
兩句話就可以使用了。
一般系統都沒有帶中文TTS,不安裝語音外掛的情況下是可以直接實現英文朗讀。
使用中文朗讀:將TTS訊飛語音包(底部地址下載)解壓出來的兩個apk安裝到android系統裡面,然後在設定 -- 語言和輸入法--文字轉語音TTS輸出--選擇科大訊飛語音。
按照如上操作後android系統就支援了中文語音朗讀。
僅供學習參考,by Dione.
完整程式碼已經中文語音外掛apk下載地址:https://download.csdn.net/download/u012532263/10885562