gpt4 book ai didi

android - 未调用 TTS-UtteranceProgressListener

转载 作者:IT王子 更新时间:2023-10-29 00:07:45 26 4
gpt4 key购买 nike

我不想把我所有的代码都放在这里,所以我只是放了相关的部分。如果您需要更多,请随时询问。

我正在使用文本转语音 (TTS),它在提出问题后会导致语音监听器...我通过日志输出发现 TTS 的 onInit 正在被调用,但 UtteranceProgressListener 不是,我想不出出为什么。任何帮助表示赞赏。

// ---Initialize TTS variables---

// Implement Text to speech feature
tts = new TextToSpeech(this, new ttsInitListener());

// set listener to the TTS engine
tts.setOnUtteranceProgressListener(new ttsUtteranceListener());

if (!tts.isSpeaking()) {
tts.speak("Speak to me", TextToSpeech.QUEUE_FLUSH, null);
}

// --- TEXT TO SPEECH && SPEECH TO TEXT METHODS ---

class ttsInitListener implements OnInitListener {

@Override
public void onInit(int status) {

if (status == TextToSpeech.SUCCESS) {
tts.setLanguage(Locale.getDefault());

} else {
tts = null;
Toast.makeText(mContext, "Failed to initialize TTS engine.",
Toast.LENGTH_SHORT).show();
}
}
}

class ttsUtteranceListener extends UtteranceProgressListener {

@Override
public void onDone(String utteranceId) {
if (processStart) {
speech.startListening(intent);
} else {
...
}

}

@Override
public void onError(String utteranceId) {
}

@Override
public void onStart(String utteranceId) {
}
}

我在所有 TTS 和 Speech 方法中添加了日志输出。 UtteranceProgressListener 的 onStart 甚至没有被调用:

11-30 00:38:37.299: D/OpenGLRenderer(15842): Enabling debug mode 0
11-30 00:38:39.782: I/TextToSpeech(15842): Connected to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
11-30 00:38:39.782: I/TextToSpeech(15842): Set up connection to ComponentInfo{com.google.android.tts/com.google.android.tts.service.GoogleTTSService}
11-30 00:38:39.782: D/LOOK AT ME!!!(15842): ttsInitListener - onInit

最佳答案

找到答案...

原来我在网上找到的TTS资源是使用单个TTS字符串源,所以tts.speak(String text, int queueMode, HashMap params)中的第三个参数设置为null。

致将来遇到此问题的任何人:

如果您将第三个参数设置为 null,则没有 ID 可供 UtteranceProgressListener 跟踪。修复是创建和初始化一个 HashMap ,然后添加到包含的数组中,为每个具有新 ID 的新 TTS 可以被跟踪。代码如下:

HashMap<String, String> map = new HashMap<String, String>();

那么,在调用 tts.speak 之前...

map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "UniqueID");

那么你就可以用所有参数调用 speak...

tts.speak(text, TextToSpeech.QUEUE_FLUSH, map);

关于android - 未调用 TTS-UtteranceProgressListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296792/

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