我想知道,我真的不知道为什么 android 中的文字转语音有时非常顺利,但有时(很少)有错误和弹出消息 Google 文字转语音引擎已停止,然后我的设备卡住了,直到弹出出现并关闭,然后我可以继续我的下一个活动。
你有另一个代码支持所有关于语音引擎(谷歌和三星)的安卓设备吗?
这是我正在使用的代码:
班级等级:
private int MY_DATA_CHECK_CODE = 0;
private TextToSpeech tts;
onCreate 级别:
//check for TTS data
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
按下按钮时:
String speech_question = getResources().getString(R.string.question_1);
speakWords(speech_question);
课程级别结束:
private void speakWords(String speech) {
//speak straight away
tts.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
//the user has the necessary data - create the TTS
tts = new TextToSpeech(this, this);
}
else {
//no data - install it now
Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
}
}
}
//setup TTS
public void onInit(int initStatus) {
//check for successful instantiation
if (initStatus == TextToSpeech.SUCCESS) {
if(tts.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE)
tts.setLanguage(Locale.US);
}
else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
上面的代码运行良好,但有时当我一次又一次尝试刷新活动,并一次又一次按下按钮来语音文本时,我的三星 Galaxy S3 给我错误结果是谷歌文本到语音引擎有停止,然后我的设备卡住了,直到弹出窗口出现并关闭,然后我可以继续我的下一个活动。
我的问题是,您是否有另一种使用支持所有设备的 TTS 的方法?
Galaxy S3 中的错误图片如下。