今天谈谈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(),将输入的文本转为语音