gpt4 book ai didi

Android TTS 不会说话

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:56 26 4
gpt4 key购买 nike

我正在尝试在我的 Activity 中实现 android 的文本到语音技术,但我遇到了一个奇怪的错误。我的代码听不到任何声音。 speak 方法只有在我将它放在 onInit 方法中时才有效,否则它不会说话。

我的代码如下:

public class GameOverActivity extends Activity implements OnInitListener {
private TextToSpeech talker;
....
talker = new TextToSpeech(this, this);
say("Something",false);
...
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
talker.setLanguage(Locale.US);
}
else if (status == TextToSpeech.ERROR) {
Toast.makeText(this,"Error occurred while initializing Text-To-Speech engine", Toast.LENGTH_LONG).show();
}

void say(String text, boolean flush) {
if(flush == true)
{
talker.speak(text,TextToSpeech.QUEUE_FLUSH,null);
}
if(flush == false)
{
talker.speak(text,TextToSpeech.QUEUE_ADD,null);
}
}

奇怪的是,如果我将 say 方法放在 onInit 中,它工作正常!

我仔细观察了 logcat,结果如下:

TtsService.OnCreate()TT正在加载AudioTrack 启动TTSService.setLanguage 语言成功加载 en-US将语速设置为 100

然后什么也没有发生。

知道上面的代码有什么问题吗?

提前致谢!

最佳答案

查看代码几个小时后,我注意到问题在于 TTS 引擎初始化需要一些时间。如果初始化没有结束,speak方法调用就会失败。

如果你在点击按钮时“说”一些东西,你可能不需要这个,因为用户在按下按钮之前会花一些时间思考,并且初始化将结束。

如果您想在初始化完成后立即“说”一些话,请使用此代码:

talker = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

@Override
public void onInit(int arg0) {
if(arg0 == TextToSpeech.SUCCESS)
{
talker.setLanguage(Locale.US);
say(gameover,true);
say(line,false);
say(definition_string,false);
}
}
});

关于Android TTS 不会说话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668224/

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