Android 的 TTS XML 中音素属性的正确语法是啥?
Posted
技术标签:
【中文标题】Android 的 TTS XML 中音素属性的正确语法是啥?【英文标题】:What is the proper syntax for the phoneme attribute in Android's TTS XML?Android 的 TTS XML 中音素属性的正确语法是什么? 【发布时间】:2011-11-06 05:37:54 【问题描述】:我的理解是,这个X-SAMPA XML sample 和其他样本here 甚至here 和here 一样,应该听起来有点意思。
String text = "<speak xml:lang=\"en-US\"> <phoneme alphabet=\"xsampa\" ph=\"faIv\"/>.</speak>";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);
但是,出于某种奇怪的原因,它什么也没说(完全沉默)。
我错过了什么?
澄清一下:我的 TTS 示例应用程序设置正常:如果我将 .
之前的 </speak>
标记更改为 any 字,android TTS 只会说那个字没问题。我唯一的问题是我无法以任何方式使用<phoneme alphabet=\"xsampa\" ph=\"faIv\"/>
。
我知道.
应该是静音的,但是根据这些样本的海报,它应该发出 XML 中的 XSAMPA 音素。我错过了什么?
【问题讨论】:
【参考方案1】:您尝试做的正确语法与您在问题中发布的完全一样。 如果您的手机设置为使用默认的 Pico TTS,即是这样。
在Settings > Voice input & output > Text-to-speech settings > Default Engine
下确保选择Pico TTS
并立即尝试相同的代码。
【讨论】:
哇!就是这样。这个问题让我发疯了很长时间,甚至没有怀疑不同的 TTS 引擎可能不支持 XSAMPA。一旦我选择了 Pico,上面的语法就会按预期工作。谢谢!【参考方案2】:phoneme element 的正确语法记录在 W3C Speech Synthesis Markup Language 文档中。
正如答案 Stack Overflow question 3648239 中提到的,并非所有元素都被正确解析。
在此google groups forum post 中进一步澄清了解析错误,但似乎可以忽略这些错误。
您可以在 google 群组的TTS-for-android site 中找到更多信息,只需在该处发布您的问题。
由于网站关闭,我无法阅读示例。我不确定这是否是暂时的问题,但我稍后会回来查看是否可以找到它们。
【讨论】:
感谢 +1 的研究。在我拼命寻找可能的解释时,我遇到了您发布的所有链接,但这无助于解开谜团。请参阅上面接受的答案。以上是关于Android 的 TTS XML 中音素属性的正确语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio TTS:不读取传递给 speak() 函数的文本