今天談談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(),將輸入的文本轉爲語音