gpt4 book ai didi

Android TTS 文本控件?它们是否可用或任何等效技术?

转载 作者:行者123 更新时间:2023-11-29 17:00:13 26 4
gpt4 key购买 nike

我正在尝试将一个使用文本控制标签的 TTS 应用程序从桌面/网络/iOS 移植到 Android。该应用程序生成一个文本文件,其中包含要说出的文本和说出的单词之间的静默期。静默期用文本内控制标签表示,例如 SAPI TTS <silence msec="1000"/>标记或 iOS TTS 引擎文本内控制标记用于静音 [[slnc 10000]]

发送到 SAPI TTS 语音合成器的文本如下所示:

Text one <silence msec="750"/> text two <silence msec="1000"/> text three <silence msec="500"/> Text four <silence msec="600"/> Text five.....

与 iOS TTS 类似,静音的文本控制标签是 [[slnc 10000]]发送到语音合成器的文本如下所示:

Text one [[slnc 750]] text two [[slnc 10000]] text three [[slnc 500]] text four [[slnc 600]] text five......

Android TTS 似乎没有为语音合成器使用文本内控制标签。还有以下两个变体 speech()方法使用谷歌网络服务,以便实现从语音合成器服务器返回的语音文本的准确计时,并且代码中的静默期的计时可能是不可能的或充其量是不可靠的。

speak(speech, TextToSpeech.QUEUE_FLUSH, null);

speak(speech, TextToSpeech.ADD_ADD, null);

我欢迎任何专注于保持口语之间静默期准确计时的 Android 解决方案。

最佳答案

Android TTS engine具有已弃用的 playSilence() 和较新的 playSilentUtterance() 方法,可用于将语音输出暂停给定的时间量。

如果应用程序以 API 级别 21 为目标,即 Android 5.0 作为最低要求,则应使用 playSilentUtterance()。否则,已弃用的 playSilence() 仍然可用。

playSilentUtterance 方法的完整方法签名是:

int playSilentUtterance (long durationInMs, int queueMode, String utteranceId)

此处 durationInMs 是以毫秒为单位的静音持续时间。

queueMode 可以是QUEUE_ADD,这意味着在 TTS 引擎完成当前正在播放的内容以及已经添加到队列中的内容后播放静音,并且QUEUE_FLUSH 首先停止一切并清除队列,因此立即播放静音。

最后,utteranceId 是要说的文本(或在本例中为静音)的可选唯一标识符,如果使用 UtteranceProgressListener 则很有用。 .

关于Android TTS 文本控件?它们是否可用或任何等效技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349672/

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