我正尝试移植一个TTS应用程序,该应用程序利用从桌面/ web/iOS到Android的文本内控制标记。该应用程序创建一个文本文件,包括要说出的文本和说出的单词之间的无声时段。静音周期与文本控制标记,如SAPI TTS <silence msec="1000"/>
标签或iOS TTS引擎,文字静音控制标签代表[[slnc 10000]]
Android TTS文本控件?它们是可用的还是任何等效的技术?
发送到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文档](https://developer.android.com/reference/android/speech/tts/TextToSpeech.html)?有'playSilence()'和更新的'playSilentUtterance()'方法可以做到这一点。 'speak()'不使用任何Web服务。 –
感谢@MarkusKauppinen,所以答案将会是用QUEUE_ADD替代speak()和playSilence()以不断添加到队列中。我打算为用户提供一个stop(),所以不需要isSpeaking()。我喜欢。至于在线脱机语音合成,似乎默认的方法是发送请求到谷歌服务器。或者,用户可以通过手机上的设置下载引擎进行离线使用。用户可以提前通知进行这些更改,包括设置默认语音和语言。伟大:) –