1

我想知道,我真的不知道为什么 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 中的错误图片如下。 在此处输入图像描述

4

0 回答 0