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 示例应用程序设置正常:如果我将 . 之前的 &lt;/speak&gt; 标记更改为 any 字,android TTS 只会说那个字没问题。我唯一的问题是我无法以任何方式使用&lt;phoneme alphabet=\"xsampa\" ph=\"faIv\"/&gt;

我知道. 应该是静音的,但是根据这些样本的海报,它应该发出 XML 中的 XSAMPA 音素。我错过了什么?

【问题讨论】:

【参考方案1】:

您尝试做的正确语法与您在问题中发布的完全一样。 如果您的手机设置为使用默认的 Pico TTS,即是这样。

Settings &gt; Voice input &amp; output &gt; Text-to-speech settings &gt; 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 中音素属性的正确语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

文字转语音(TTS)-Android

Android:协调SounPool和TTS

Android Studio TTS:不读取传递给 speak() 函数的文本

Android 4.0系统中有个TTS功能如何使用

Phonegap TTS 插件 Android 无法正常工作

Android应用开发提高篇-----文本朗读TTS(TextToSpeech)