说明
Universal SSML是Flute统一TTS前端(Universal FrontEnd,简称UFE)采用的与具体语种解耦的SSML框架,能够方便地为不同语种提供SSML能力。
SSML是语音合成标记语言(Speech Synthesis Markup Language)的缩写。它是W3C的语音接口框架的一部分,通过SSML,可以对语音合成的效果进行定制化。
Universal SSML是Flute统一TTS前端(Universal FrontEnd,简称UFE)采用的与具体语种解耦的SSML框架,能够方便地为不同语种提供SSML能力。
说明
如果使用中英混音色,需要注意比较短的英文句子可能被语种识别为中文,部分标签在中文和英文场景下表现不同。例如在中文场景下,如果Verbatim内的文本是有效单词则不会按字母读。
标签 | 属性 | 功能 | 备注 |
---|---|---|---|
<speak> | 根元素。 |
| |
<phoneme> | alphabet="cmu" | 指定单词发音的音标 | |
alphabet="py" | 指定中文词的发音(拼音) | ||
<say-as> | interpret-as | 指定解析文本的语义类型 | 例如,20可以读作twenty,也可以读作two o |
<sub> | alias | 文本替换 | 等价于将其内部文本替换为alias属性中的文本 |
<speak>作为SSML的根元素出现。不存在该根元素的输入文本不会被认为是SSML。
任意
如无特别说明,实例中的音频均由英语UFE前端+DB6音色Tacotron后端生成。
<speak>hello world</speak>
<speak>hello <speak>world</speak></speak>
报错:unrecognized ssml: 1 -- failed to parse child -- failed to parse ssml
<speak>hello</speak> <speak>world</speak>
目前的行为是仅考虑第一个
根元素的内容,暂不报错
hello world
hello <break/> world
<phoneme>用于手动指定部分字词的发音。通常用于纠正TTS为多音字自动生成的不准确发音。
参数 | 类型 | 功能 | 取值 |
---|---|---|---|
|
| 指定表示发音(音素)的格式 |
|
|
| 指定发音(音素) |
|
纯文本
py
)<speak>《茜茜公主》是奥地利拍摄的历史题材的德语三部曲电影。</speak>
<speak> 《 <phoneme alphabet="py" ph="xi1 xi1">茜茜</phoneme> 公主》是奥地利拍摄的历史题材的德语三部曲电影。 </speak>
<speak>要一起去<phoneme alphabet="py" ph="chi1">吃</phoneme>饭吗</speak>
cmu
)IY1
、UW2
。<speak> <!-- 不区分大小写 --> <phoneme alphabet="cmu" ph="w uw1 ch IY1 l Uw n"> Wu Qilong </phoneme> and Wu Qilong </speak>
<speak> <phoneme alphabet="cmu" ph="w uw1 ch IY1 l Uw n"> Wu, Qilong </phoneme> </speak>
报错:
should align with the word groups
ipa
)"i", "ɪ", "ɛ/e", "æ", "ɑ/ɑː", "ɔ/ɔ:", "u/u:", "ʊ", "ʌ", "ə", "ɜr/ɜːr", "ər", "aɪ/ai", "eɪ/ei", "ɔɪ/ɔi", "oʊ/ou", "aʊ/au", "ɑr/ɑːr", "ɔr", "ʊr/ur/ʊər", "ɛr/ɛər", "ɪr/ɪər", "p", "b", "t", "d", "k", "g", "f", "v", "θ", "ð", "s", "z", "ʃ", "ʒ", "tʃ", "dʒ", "tr", "dr", "ts", "dz", "l", "r", "m", "n", "ŋ", "w", "j", "h",
"ˈ", "ˌ"
<speak> <phoneme alphabet="ipa" ph="wutʃilun"> Wu Qilong </phoneme> and Wu Qilong </speak>
<say-as>用于指定解析文本的语义类型。同一文本内容可能有不同的解读,也就有不同的读法。
参数 | 类型 | 功能 | 取值 |
---|---|---|---|
|
| 指定语义类型 |
|
纯文本
<speak>12:30 and <say-as interpret-as="score">12:30</say-as></speak>
<speak>12.30 and <say-as interpret-as="date">12.30</say-as></speak>
<speak> 20 and <say-as interpret-as="ordinal">20</say-as> and <say-as interpret-as="digit">20</say-as> </speak>
<speak>hello and <say-as interpret-as="verbatim">hello</say-as></speak>
<speak> <say-as interpret-as="digit"> 12 <break time="100ms" /> 34 </say-as> </speak>
报错:
can only contain plain text -- failed to parse child -- failed to parse ssml
<sub>等价于将其内部的文本替换为其alias属性中的文本。
参数 | 类型 | 功能 | 取值 |
---|---|---|---|
|
| 替换文本 |
<speak><sub alias="语音合成标记语言">SSML</sub></speak>