android - 何时使用 UtteranceProgressListener

标签 android text-to-speech

我有一个带有两个 ImageButton(播放停止)的 FrameLayout。默认情况下

播放 按钮是VISIBLE停止 按钮是GONE

单击播放 会启动读取文本的 TTS 引擎。阅读完文本后,我想设置可见性

播放到GONE,停止到VISIBLE

我应该使用 UtteranceProgressListener 来达到目的吗?如果没有,

  • 如何执行上述操作?
  • UtteranceProgressListener 的用途是什么?

最佳答案

你的意思是:

  • 开始阅读 -> Play 消失,Stop 可见
  • 阅读结束 -> 播放可见,停止消失

无论如何,UtteranceProgressListener 的目的正是您所描述的。用于监控语音合成的进度。

您可以向任何说出的文本添加“话语 ID”(此处为“helloText”):

tts.speak("Hello Stack Overflow!", TextToSpeech.QUEUE_ADD, "helloText");

但这在你的情况下并不是真正必要的,所以最后一个参数可以为空:

tts.speak("Hello Stack Overflow!", TextToSpeech.QUEUE_ADD, null);

应在调用 speak() 之前添加 UtteranceProgressListener。例如,如果 TTS 状态为 TextToSpeech.SUCCESS,您可以在 TTS 初始化回调 onInit() 中执行此操作。

它可以是一个单独的类,也可以只是一个匿名内部类:

speech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
        @Override
        public void onStart(String utteranceId) {
            // Speaking started. 

        }

        @Override
        public void onDone(String utteranceId) {
            // Speaking stopped.

            }

        }

        @Override
        public void onError(String utteranceId) {
            // There was an error.
        }
    });

onStart() 方法在说话开始时触发(在调用 speak() 后不久),因此这是切换可见按钮的一个可能位置。例如,播放 按钮可以切换为停止 按钮。

onDone() 方法在讲话结束时被触发,这是另一个可以切换可见按钮的地方。例如,停止 按钮可以切换为播放 按钮。

如您所见,如果您在 speak() 方法调用中提供了“话语 ID”,那么这两种方法都可用。如果您需要确切知道正在说出/已说完/因错误而失败的文本,这将很有用。

关于android - 何时使用 UtteranceProgressListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004546/

相关文章:

Android TTS - 应用程序意外停止

c# - 如何使用 Microsoft SAPI 将文本转语音保存为 wav?

android - TTS 类 : How to TTS chinese Pinyin?

Android:WAITING用户关闭的对话框

android - 如何将从 url 检索到的图像存储在 SQLite 数据库中?

reactjs - 如何在音频叙述时根据网站上的音频实时突出显示文本

python - 将 SSML 和 Python 与 Azure 语音结合使用

android - 是否可以创建一个 OnClickListener 来处理 ToggleButton 和 Switch

android - 能源经济 : BLE device - when to make connectable?

java - 使用 Horizo​​ntalPicker 库的问题