gpt4 book ai didi

android - 为什么文本转语音 (TTS) 不能一直工作?

转载 作者:太空狗 更新时间:2023-10-29 12:43:15 24 4
gpt4 key购买 nike

我不明白为什么 TTS 不能始终如一地工作。我想了解如何改进我当前的设置。应用程序以 TTS 开头,欢迎用户或提示用户说出语音命令。所以在 onCreate 中我只有以下内容:

textToSpeech = new TextToSpeech(TTSActivity.this, this); 

我的 TTSActivity 类实现了 OnInitListener,所以我也有以下覆盖方法:

@Override
public void onInit(int status) {

if (status == TextToSpeech.SUCCESS) {
textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {

@Override
public void onStart(String utteranceId) {
// TODO Auto-generated method stub

}

@Override
public void onError(String utteranceId) {
// TODO Auto-generated method stub

}

@Override
public void onDone(String utteranceId) {
//do some work here
}
});

textToSpeech.setLanguage(Locale.US);
map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "UniqueID");

ttsString(0);

} else if (status == TextToSpeech.ERROR){
//try to restart TTS
textToSpeech = new TextToSpeech(TTSActivity.this, this);
ttsString(0);
}
} //end onInit() method

一些解释:textToSpeech.setOnUtteranceProgressListener() 在那里,以便我可以在 TTS 引擎停止说话后激活语音识别。 map 来自 HashMap map = new HashMap() 和 ttsString 都是我想让 TTS 说话的字符串。所以我的 ttsString(id#) 方法如下所示。在让 TTS 说话之前,我调用 ttsString(id#) 来设置字符串。

private void ttsString(int id)
{

switch (id)
{
case 0:{
metaString = "Say string one";
speakText(metaString);
break;
}
case 1:{
metaString = "Say string two";
speakText(metaString);
break;
}
case 2:{
metaString = "Say string three";
speakText(metaString);
break;
}

}
}

这就是我让 TTS 说话的方式:

private void speakText(String text) {
if(textToSpeech.isSpeaking()) {
return;
} else {
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, map);
}
}

我没有收到 TTS 未绑定(bind)错误,一切都在某个时间点正常工作,但并不一致。也就是说,有时候程序会说话,有时候不会。你建议我做什么?重组?

最佳答案

一些提示:

在您的 if (status == TextToSpeech.ERROR) 中,调用 ttsString(0); 将始终失败,因为 TTS 尚未初始化。

您似乎没有调用 tts.shutdown()。实际上我会在 onStart() 中初始化 tts,并在 onStop() 中调用 shutdown()。

在我的应用程序中,我已将 TTS 投入使用,因此在配置更改期间重新创建我的 Activity/fragment 时,不必为所有初始化/取消初始化而烦恼。

查看 logcat,您应该会看到任何错误。我在使用 svox 语音时看到了奇怪的错误,据我所知,问题是没有正确调用关闭。

关于android - 为什么文本转语音 (TTS) 不能一直工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22179148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com