安卓 TTS 支持语音合成标记语言吗?

14

将以下 SSML (语音合成标记语言) 文档传递给com.svox.pico TextToSpeech引擎,会导致XML正文被读取,但无法控制音素元素或重音元素。这个结果(没有明显的SSML控制)在运行Android 2.2的Nexus One和运行SDK级别为8的模拟器上是相同的。

            String text = "<?xml version=\"1.0\"?>" +
                "<speak version=\"1.0\" xmlns=\"http://www.w3.org/2001/10/synthesis\" " +
                    "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " +
                    "xsi:schemaLocation=\"http://www.w3.org/2001/10/synthesis " +
                        "http://www.w3.org/TR/speech-synthesis/synthesis.xsd\" " +
                    "xml:lang=\"en-US\">" +

                    "tomato " +
                    "<phoneme alphabet=\"ipa\" ph=\"t&amp;#x259;mei&amp;#x325;&amp;#x27E;ou&amp;#x325;\"> tomato </phoneme> " +

                    "That is a big car! " +
                    "That <emphasis> is </emphasis> a big car! " +
                    "That is a <emphasis> big </emphasis> car! " +
                    "That is a huge bank account! " +
                    "That <emphasis level=\"strong\"> is </emphasis> a huge bank account! " +
                    "That is a <emphasis level=\"strong\"> huge </emphasis> bank account!" +
                "</speak>";
            mTts.speak(text, TextToSpeech.QUEUE_ADD, null);

有没有任何Android TTS引擎支持任何SSML元素?

3个回答

4
我一直在尝试使用SSML技术,发现TTS引擎会自动将输入内容包装在根标签<speak>中。如果你不需要它,可以省略该标签,这样就不会出现解析错误。
例如:
String text = "Testing <phoneme alphabet=\"xsampa\" ph=\"&#34;{k.t@`\"/>.";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);

4

4

看起来在SDK 23级别中,android.speech.tts支持SSML的子集。语音文本可以用<speak>标签包裹,观察到<say-as>,但是没有<break>。没有关于SSML支持的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接