文本驱动SSML定义
MetaStudio语音驱动采用语音合成标记语言(SSML,Speech Synthesis Markup Language)来控制数字人的行为,包括动作、情绪以及TTS语音合成的多音字、停顿等。
SSML基础定义可参考语音合成标记语言版本 1.0。MetaStudio在此基础上,扩展了一些字段用于实现数字人的控制。
MetaStudio SSML当前支持如下能力:
- TTS语音合成时,控制文字读音。
包含如下标签:
- <speak></speak>标签为SSML文本根节点。
- <break/>标签用于静音停顿,可设置停顿时长。
- <phoneme></phoneme>标签,用于标记多音字发音。
- <say-as></say-as>标签用于指定数字或英文的读法。
- <sub></sub>标签用于设置当前标记文字的别名,即替代读法。
- <prosody></prosody>标签用于控制局部语速。
- <word></word>标签用于设置选中文字为连读模式。
MetaStudio包含多种TTS音色,每种音色支持的SSML标签能力是有差异的,请通过“查询资产详情”接口,获取每个音色支持使用的标签。
speak标签
- 描述
<speak></speak>:SSML文本的根节点。
- 语法
1
<speak>这里输入SSML标签的文本</speak>
- 属性
无
- 标签关系
<speak>可以包含文本和标签,包括<break>、<phoneme>、<say-as>、<sub>标签。
break标签
- 描述
<break/>:在任意位置插入静音停顿。
- 语法
1
<break time="String"/>
- 属性
表1 属性说明 属性名称
属性类型
属性值
是否必选
描述
time
String
最小200毫秒,最大10秒
否
静音停顿时长,单位:毫秒。
strength
String
取值如下所示:
- none:没有韵律
- x-weak:很短韵律
- weak:短韵律
- medium:中等韵律
- strong:长韵律
- x-strong:很长韵律
否
韵律定义。
- 标签关系
不能包含其他任何标签。
- 示例
1 2
一句话<break time="200ms"/>另外一句话 一句话<break strength="strong"/>另外一句话
phoneme标签
- 描述
<phoneme></phoneme>:中文多音字的发音或英文单词发音。
- 语法
1 2
<phoneme ph="string">文字</phoneme> The <phoneme ph="W EH1 DH AH0">weather</phoneme> is very good.
- 属性
表2 属性说明 属性名称
属性类型
属性值
是否必选
描述
ph
String
拼音或音素
是
- 输入汉语拼音时,声调用1、2、3、4来表示,5表示轻声。
- CMU词典音素。
- 举例1:天气的ph取值为“tian1 qi4”。
- 举例2:weather的ph取值为“ˈweəðə(r)”。
- 标签关系
可以包含文本,不可以包含其他标签。
- 示例
1
今天<phoneme ph="tian1 qi4">天气</phoneme>很好
根据汉字获取拼音JS库,操作请参考pinyin-pro。
say-as标签
- 描述
<say-as></say-as>:将文本指定为特定类型的内容,或者控制英文单词逐个字符拼写。
- 语法
1
<say-as interpret-as="string">数字或单词</say-as>
- 属性
表3 属性说明 属性名称
属性类型
属性值
是否必选
描述
interpret-as
String
- number:数字
- date:日期
- figure:数值
- phone:电话号码
- english:英文单词
- spell:逐个字母读英文
是
将内容解释为给定类型读法。
- 标签关系
可以包含文本,不可以包含其他标签。
- 示例
1 2 3 4 5 6
<say-as interpret-as="number">123</say-as> <say-as interpret-as="date">2022/3/8</say-as> <say-as interpret-as="figure">175 cm</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><!-- 读:H E L L O -->
sub标签
- 描述
<sub></sub>:用其他词语替代读法。
- 语法
1
<sub alias="string">文字</sub>
- 属性
表4 属性说明 属性名称
属性类型
属性值
是否必选
描述
alias
String
替代词语
是
将标记的内容替换为此值进行阅读。
- 标签关系
可以包含文本,不可以包含其他标签。
- 示例
实际阅读为“保罗”。
1
<sub alias="保罗">Paul</sub>是德国人