这个问题是几年前提出的,但希望事情已经改变了.
有人能告诉我哪些版本的Android在文本到语音引擎中支持SSML的哪个子集吗?
我使用颤振- TTS做了一些实验,这只是一个将文本传递给底层平台TTS服务的层。
SSML的一些未知子集确实可以在较新的Android上工作--例如,这个SSML。
<speak>before<break time="5s"/>after</speak>确实会在API 27和API 29的单词之间产生一个5秒钟的停顿。它在API 21上不起作用,但至少它通过忽略所有标记来优雅地处理它。我还没有测试其他API级别。我还试过韵律、音素和朗格标签--它们似乎不起作用。
发布于 2020-06-19 05:26:23
只要TextToSpeech类的TextToSpeech.speakSSML()方法只接受String或CharSequence (然后将它们传递给语音引擎),并且只要Android没有在将来的Android版本中引入像TextToSpeech.speakSSML()这样的新方法(并强制所有引擎都必须支持它).
...then单独的语音引擎处理这些字符串的方式对它们来说是独一无二的,并且最终是不可预测的,因为您直到运行时才知道用户可能已经安装和/或选择了哪些引擎(或版本)在它们的设置中使用。
当然,某个引擎可能很快就会声称完全支持SSML,听起来可能Google引擎(如果你正在测试的话)已经开始使用它了。即使他们最终完全支持它,您也必须提示用户在应用程序中重新配置/安装该引擎的特定版本。
我怀疑你看到它被支持的原因是因为你正在测试一些谷歌引擎的“网络声音”,它与google有一些交叉。
我不认为Android级别应该和它有任何关系,这只是一个用户是否安装了"xyz引擎ver234123.21314“。
谷歌云文本到语音支持它吗,尽管.既然你已经用颤栗穿越了平台,那可能是个更好的方法.但当然,它需要主动网络。
https://stackoverflow.com/questions/62436229
复制相似问题