最近項目需求,要在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