更新时间:2025-08-14 GMT+08:00

文本驱动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/>为动作标签,可在文本的指定位置插入动作。

      MetaStudio包含多种TTS音色,每种音色支持的SSML标签能力是有差异的,请通过“查询资产详情”接口,获取每个音色支持使用的标签。

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>
    

insert-action标签

  • 描述

    <insert-action/>:动作标签,可在文本的指定位置插入动作。

  • 语法
    1
    <insert-action name="动作名称" tag="动作标识"/>
    
  • 属性
    表8 属性说明

    属性名称

    属性类型

    属性值

    是否必选

    描述

    name

    String

    动作名称

    动作名称,通过查询资产详情接口查询获取“action_name_zh”或“action_name_en”参数的值。

    tag

    String

    动作标识

    动作标识,通过查询资产详情接口查询获取“tag”参数的值。

  • 标签关系

    可以包含文本,不可以包含其他标签。

  • 备注
    1
    <speak>你好<insert-action name="数字三" tag="semantic_3"/></speak>