SSML标记语言介绍
本文为您介绍SSML(Speech Synthesis Markup Language)标记语言的功能、标签使用及示例。
概述
SSML 是一种基于 XML 的语音合成标记语言。使用 SSML 可以更加准确、具体的定义合成音频的效果,包括控制断句分词方式、发音、速度、停顿、声调和音量等特征。相比文本输入进行合成,有更好的操作灵活性。
华为云语音合成服务的SSML实现,基于W3C的语音合成标记语言版本1.1,但并不支持W3C包含的所有的标记类型。目前仅华小飞,华小美,华小龙,华小蕊合成支持 SSML功能。该特性与语言无关。发音人property取值详见语音合成。
- 华小飞(朝气男声):chinese_huaxiaofei_common,支持8k/16k采样率。
- 华小美(温柔女声):chinese_huaxiaomei_common,支持8k/16k采样率。
- 华小龙(朝气男声):chinese_huaxiaolong_common,支持16k采样率。
- 华小蕊(知性女声):chinese_huaxiaorui_common,支持16k采样率。
使用方式
语音合成服务支持的SSML标签请参见标签。详情请参考文档下方各标签的介绍和示例。语音合成的SSML功能支持多个 <say-as> 标签闭合嵌套于文本之中,如:
{ "text": "<speak>文本<break time=\"15ms\"/>本文, <say-as interpret-as=\"money\">15.55 RMB</say-as></speak>" }
将带标签的文本作为text的参数值,上传至语音服务进行调用,以Java SDK为例:
使用postman调用格式如下:
标签
- <speak>
语法:
<speak>这里输入SSML标签的文本</speak>
属性:无
标签关系: <speak> 可以包含文本和以下标签:- <break>
- <phoneme>
- <say-as>
- <sub>
- <break>
语法:
<!-- 空属性 --> <break/> <!-- 指定长度 --> <break time="string"/> <!-- 指定长度类 --> <break strength="string"/>
属性:
表1 标签属性 属性名称
属性类型
属性值
是否必选
描述
time
String
[number]s/[number]ms
否
以s/ms为单位设置静音持续时间 (如:"1s", "500ms")。 最大静音时间为10s。(华小龙,华小蕊不支持该属性)
strength
String
以下之一:none, x-weak, weak, medium,strong, x-strong
否
定义韵律(none=没有韵律,x-weak=很短,x-strong=很长)
标签关系:<break> 是空标签,不能包含任何标签。
示例:
一句话<break/>另外一句话 一句话<break time="20ms"/>另外一句话 一句话<break strength="strong"/>另外一句话
- <phoneme>
语法:
<phoneme ph="string">这里输入字母</phoneme>
属性:
表2 标签属性 属性名称
属性类型
属性值
是否必选
描述
ph
String
拼音,CMU词典音素
是
Pronunciation。
标签关系: <phoneme> 可以包含文本,不可以包含其他SSML标签。
示例:今天<phoneme ph="tian1 qi1">天气</phoneme>很好 The <phoneme ph="W EH1 DH AH0">weather</phoneme> is very good.
- <say-as>
描述:将文本解释为特定的类型内容,或者控制英文单词逐个字符拼写。
语法:
<say-as interpret-as="string">这里输入字母</say-as>
属性:
表3 标签属性 属性名称
属性类型
属性值
是否必选
描述
iterpret-as
String
以下之一:money, date, figure,phone, english, spell;具体含义参考下表。
是
将内容解释为给定类型。
表4 iterpret-as类型说明 类型
描述
money
钱
date
日期
figure
数次
phone
电话号码
english
英文单词
spell
逐个字母读英文
标签关系: 可以包含文本 。
示例:今天<phoneme ph="tian1 qi1">天气</phoneme>很好 The <phoneme ph="W EH1 DH AH0">weather</phoneme> is very good.
<say-as interpret-as="money">15.55 RMB</say-as> <say-as interpret-as="date">2022/3/8</say-as> <say-as interpret-as="figure">175 厘米</say-as> <say-as interpret-as="phone">151 12345678</say-as> <say-as interpret-as="english">Hello</say-as> <say-as interpret-as="spell">Hello</say-as>
- <sub>
语法:
<sub alias="string">这里输入字母</sub>
属性:
表5 标签属性 属性名称
属性类型
属性值
是否必选
描述
alias
String
替代值
是
将标记的内容替换为此值。
标签关系: 可以包含文本 。
示例:
<sub alias="保罗">Paul</sub>是德国人