【问题标题】:Highlight the current word that TTS engine is speaking突出显示 TTS 引擎正在说话的当前单词
【发布时间】:2012-09-10 15:49:16
【问题描述】:

我正在开发文本转语音应用程序,但我遇到了一个问题,即我不知道 TTS 正在说的当前单词。有没有办法找到这个。?

例如:如果 TTS 说的是这个字符串:可能已经有你的答案的问题,当它达到“已经”时,如何突出显示“已经”。

【问题讨论】:

  • 好主意 - 不幸的是我不知道如何做到这一点......
  • 你做到了吗?

标签: android text-to-speech


【解决方案1】:

我建议使用 TextToSpeech.speak() 的序列:

    • 开始说第一个词。
    • 突出显示第一个单词。
    • 检测到第一个单词的合成已经完成。
    • 开始说第二个单词。
    • 突出显示第二个单词。
    • 检测到第二个单词的合成已完成。
    • 等等...

现在只剩下How to detect that synthesizing of a word has finished?使用TextToSpeech.setOnUtteranceCompletedListener()检测话语是否完成。

您可以查看这些页面了解更多详情:
How to know when TTS is finished?
An introduction to Text-To-Speech in Android

【讨论】:

  • @raghav:请告诉我……你做得怎么样?
  • 这似乎是识别口语单词的唯一可能方法。但是有什么缺点呢?如果单独说出每个单词,语音质量会受到影响吗?如果您将每个单词而不是整个句子排队,是否会出现性能问题?
  • 不幸的是,合成一组单个单词的输出质量远不如一次合成整个文本部分(句子/段落)的质量.. 基本上听起来像是在说word, pause, word, pause - 它们之间没有联系。
  • @Madhav_nimavat 抱歉,我没有为此编写代码。我只是提出了一种方法。
【解决方案2】:
Put it in handler.Create two handler one for to add ;
tts1.speak("your text to speech", TextToSpeech.QUEUE_FLUSH, null);
  viewItem.setBackgroundColor(Color.RED);
view item means your textview....

and add another handler...
and make your view as transparent..
  viewItem.setBackgroundColor(Color.TRANSPARENT);


it's work for me perfectly....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2017-09-08
    • 1970-01-01
    • 2014-02-25
    • 2016-05-18
    • 2014-05-19
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多