文本驱动SSML定义
MetaStudio语音驱动采用语音合成标记语言(SSML,Speech Synthesis Markup Language)来控制数字人的行为,包括动作、情绪以及TTS语音合成的多音字、停顿等。
SSML基础定义可参考语音合成标记语言版本 1.0。MetaStudio在此基础上,扩展了一些字段用于实现数字人的控制。
MetaStudio SSML当前支持如下能力:
- TTS语音合成时,控制文字读音。
含如下标签:
- <speak></speak>标签为SSML所有文本的根节点,一切需要调用SSML标签的文本,都要包含在<speak> </speak>标记对中。
- <break/>为停顿标签,可在文本的指定位置插入停顿,可设置停顿时长。
- <phoneme></phoneme>为多音字标签,可指定单个汉字或英文单词的发音。
- <say-as></say-as>标签用于指定数字或英文的读法。
- <sub></sub>标签用于设置当前标记文字的别名,即替代读法。
- <prosody></prosody>标签用于控制局部语速。
- <word></word>标签用于设置选中文字为连读模式。
- <emotion></emotion>标签用于设置选中文字使用的音色情感/风格。
- <insert-action/>为动作标签,可在文本的指定位置插入动作。
speak标签
- 描述
<speak></speak>:SSML所有文本的根节点,一切需要调用SSML标签的文本,都要包含在<speak> </speak>标记对中。
- 语法
1
<speak>这里输入SSML标签的文本</speak>
- 属性
无
- 标签关系
<speak>可以包含文本和标签,包括<break>、<phoneme>、<say-as>、<sub>标签。
<speak> <emotion type="HAPPY"><insert-action name="双手指尖交触" tag="system_female_animation_0026"/>大家好,<break time="200ms"/>我是MetaStudio制作的人工智能数字人。</emotion>我带大家<phoneme ph="liao3">了</phoneme>解MetaStudio。</speak>
break标签
- 描述
<break/>:停顿标签,可在文本的指定位置插入停顿,可设置停顿时长
- 语法
1
<break time="停顿时长"/>
- 属性
表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="拼音">字</phoneme> The <phoneme ph="ˈweəðə(r)">weather</phoneme> is very good.
- 属性
表2 属性说明 属性名称
属性类型
属性值
是否必选
描述
ph
String
拼音或音素
是
- 输入汉语拼音时,声调用1、2、3、4来表示,5表示轻声。标签起始和结束中间只能有1个汉字。
- CMU词典音素。
- 举例1:天气的ph取值为“tian1 qi4”。
- 举例2:weather的ph取值为“ˈweəðə(r)”。
- 标签关系
可以包含文本,不可以包含其他标签。
- 示例
1
今天<phoneme ph="tian1 qi4">天气</phoneme>很好
根据汉字获取拼音JS库,操作请参考pinyin-pro。
如果需要实现自定义单词发音,可通过国际音标指定单词发音,详见表3。
表3 音标 音标类型
学术IPA
(SSML支持)
教学IPA
(市面常见)
范例
单词
学术IPA
教学IPA
元音
/i/
/iː/
me
/mi/
/miː/
/ɪ/
/ɪ/
hit
/hɪt/
/hɪt/
/ɛ/
/e/
head
/hɛd/
/hed/
/æ/
/æ/
act
/ækt/
/ækt/
/ɑ/
ɑ
/aː/
father
/'faðɚ/
/'fa:ðər/
/ɔ/
/ɔː/
draw
/drɔ/
/drɔː/
/ʊ/
/ʊ/
book
/bʊk/
/bʊk/
/u/
/uː/
too
/tu/
/tuː/
/ʌ/
/ʌ/
fund
/fʌnd/
/fʌnd/
/ə/
/ə/
about
/ə'baʊt/
/ə'baʊt/
/ɚ/
/ər/
better
/'bɛtɚ/
/'betər/
/ɝ/
/ɜːr/
flirt
/'flɝt/
/'flɜːrt/
/aɪ/
/aɪ/
dry
/draɪ/
/draɪ/
/aʊ/
/aʊ/
out
/aʊt/
/aʊt/
/eɪ/
/eɪ/
main
/meɪn/
/meɪn/
/ɔɪ/
/ɔɪ/
toy
/tɔɪ/
/tɔɪ/
/oʊ/
/oʊ/
goal
/goʊl/
/goʊl/
辅音
/p/
/p/
pen
/pɛn/
/pen/
/b/
/b/
bad
/bæd/
/bæd/
/t/
/t/
tea
/ti/
/tiː/
/d/
/d/
did
/dɪd/
/dɪd/
/k/
/k/
cat
/kæt/
/kæt/
/ɡ/
/g/
get
/gɛt/
/get/
/tʃ/
/tʃ/
chain
/tʃeɪn/
/tʃeɪn/
/dʒ/
/dʒ/ 或 /ʤ/
jam
/dʒæm/
/dʒæm/
/f/
/f/
fall
/fɔl/
/fɔːl/
/v/
/v/
van
/væn/
/væn/
/θ/
/θ/
thin
/θɪn/
/θɪn/
/ð/
/ð/
this
/ðɪs/
/ðɪs/
/s/
/s/
see
/si/
/siː/
/z/
/z/
zoo
/zu/
/zuː/
/ʃ/
/ʃ/
shoe
/ʃu/
/ʃuː/
/ʒ/
/ʒ/
vision
/'vɪʒn/
/'vɪʒn/
/h/
/h/
hand
/hænd/
/hænd/
/m/
/m/
man
/mæn/
/mæn/
/n/
/n/
now
/naʊ/
/naʊ/
/ŋ/
/ŋ/
sing
/sɪŋ/
/sɪŋ/
/j/
/j/
yes
/jɛs/
/jes/
/w/
/w/
wet
/wɛt/
/wet/
/ɹ/
/r/
red
/ɹɛd/
/red/
/l/
/l/
leg
/lɛg/
/leg/
say-as标签
- 描述
<say-as></say-as>:将文本指定为特定类型的内容,或者控制英文单词逐个字符拼写。
- 语法
1
<say-as interpret-as="string">数字或单词</say-as>
- 属性
表4 属性说明 属性名称
属性类型
属性值
是否必选
描述
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>
- 属性
表5 属性说明 属性名称
属性类型
属性值
是否必选
描述
alias
String
替代词语
是
将标记的内容替换为此值进行阅读。
- 标签关系
可以包含文本,不可以包含其他标签。
- 示例
实际阅读为“保罗”。
1
<sub alias="保罗">Paul</sub>是德国人
prosody标签
- 描述
<prosody></prosody>:控制局部语速。
- 语法
1
<prosody rate="50">文字</prosody>
- 属性
表6 属性说明 属性名称
属性类型
属性值
是否必选
描述
rate
String
语速百分比值。
最小值50,最大值200。
示例:50,表示用0.5倍速度阅读。
是
语速值
- 标签关系
可以包含文本,不可以包含其他标签。
- 备注
1
<prosody rate="50">大家好,我是MetaStudio数字人</prosody>
word标签
- 描述
<word></word>:设置选中文字为连读模式。选中文字的形式须如下所示,不能有标点符号等字符,不能同时包含中英文。
- 中文文字
- 英文文字与空格
- 语法
1
<word>文字</word>
- 属性
无
- 标签关系
可以包含文本,不可以包含其他标签。
- 备注
1 2
<word>华为云</word> <word>HUAWEI Cloud</word>
emotion标签

情感/风格标签推荐包含整句或者整段的文本,不建议只对整句中的部分文本打上情感/风格标签,会将句子切碎,导致情感/风格标签所包含文本的前后停顿感明显。
- 描述
<emotion></emotion>:情感/风格标签,对指定的一句或多句话生效。标签开始于句子起始位置,标签结束于句子结尾。
- 语法
1
<emotion type="HAPPY">文字</emotion>
- 属性
表7 属性说明 属性名称
属性类型
属性值
是否必选
描述
type
String
音色的情感/风格类型。
取值如下所示:
- DEFAULT:通用
- HAPPY:开心
- SAD:悲伤
- ANGRY:生气
- FEAR:害怕
- AMAZED:惊讶
- COMFORT:安慰
- NEWS:新闻
- MARKETING:营销
- LIVE:直播
- EDUCATION:教培
- CUSTOMER:客服
- STORYTELLING:故事
默认值:DEFAULT。
是
情感/风格类型。音色资产需要支持对应的情感类型,否则使用通用情感合成。
查询资产列表接口参数“asset_file_category”的值为“OTHER”时,对应“file_name”的值,与type属性值相同。
- 标签关系
可以包含文本,也可以包含其他标签,包括<break>、<phoneme>、<say-as>和<sub>。
- 备注
1
<emotion type="HAPPY">今天是个好天气。</emotion>