14

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

            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 元素?

4

3 回答 3

4

我一直在尝试使用 SSML,似乎 TTS 引擎会自动将其输入与根<speak>元素一起包装,因此如果您将其省略,那么它可以正常工作并且您不会收到解析器错误。

例子:

String text = "Testing <phoneme alphabet=\"xsampa\" ph=\"&#34;{k.t@`\"/>.";
mTts.speak(text, TextToSpeech.QUEUE_ADD, null);
于 2011-03-09T10:09:33.390 回答
4

答案似乎是“有点”。尚不支持所有 SSML 标签,但使用<phoneme>标签的一些测试示例位于https://android.googlesource.com/platform/external/svox/+/89292811b7fe82e5c14fa13942779763627e26db

尽管测试示例产生了所需的语音输出,但它们还在 logcat 中产生了 XML 解析器错误消息。我在 Android 问题跟踪器(问题 11010)中打开了一个关于这些看似不正确的错误消息的问题。

于 2010-09-05T23:25:18.633 回答
4

似乎android.speech.tts在 SDK 级别 23 支持 SSML 的子集。语音文本可以包装在<speak>标签中,并且<say-as>可以观察到,而<break>不能观察到。没有关于 SSML 支持的文档。

于 2018-03-30T20:19:21.890 回答