
# 文本驱动SSML定义
MetaStudio语音驱动采用语音合成标记语言（SSML，Speech Synthesis Markup Language）来控制数字人的行为，包括动作、情绪以及TTS语音合成的多音字、停顿等。
SSML基础定义可参考[语音合成标记语言版本 1.0](https://www.w3.org/TR/2004/REC-speech-synthesis-20040907/)。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/\>]为动作标签，可在文本的指定位置插入动作。
    ![](https://support.huaweicloud.com/api-metastudio/public_sys-resources/note_3.0-zh-cn.png)
    MetaStudio包含多种TTS音色，每种音色支持的SSML标签能力是有差异的，请通过"[查询资产详情](https://support.huaweicloud.com/api-metastudio/ShowAsset.html)"接口，获取每个音色支持使用的标签。
    
    
 #### speak标签
- **描述**
  \<speak\>\</speak\>：SSML所有文本的根节点，一切需要调用SSML标签的文本，都要包含在\<speak\> \</speak\>标记对中。
  
- **语法**
  ```
  <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/\>：停顿标签，可在文本的指定位置插入停顿，可设置停顿时长
  
- **语法**
  ```
  <break time="停顿时长"/>
  ```
  
- **属性**
  表1属性说明 
  | 属性名称     | 属性类型   | 属性值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 是否必选 | 描述            |
  |:---|:---|:---|:---|:---|
  | time     | String | 最小200毫秒，最大10秒                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 否    | 静音停顿时长，单位：毫秒。 |
  | strength | String | 取值如下所示： - none：没有韵律  - x-weak：很短韵律  - weak：短韵律  - medium：中等韵律  - strong：长韵律  - x-strong：很长韵律   | 否    | 韵律定义。         |
     
  
- **标签关系**
  不能包含其他任何标签。
  
- **示例**
  ```
  一句话<break time="200ms"/>另外一句话
  一句话<break strength="strong"/>另外一句话
  ```
  
 
 #### phoneme标签
- **描述**
  \<phoneme\>\</phoneme\>：多音字标签，可指定单个汉字或英文单词的发音。
  
- **语法**
  ```
  <phoneme ph="拼音">字</phoneme>
  <phoneme ph="ˈtəʊkən" alphabet="ipa">Token</phoneme>
  ```
  

- **属性**
  表2属性说明 
  | 属性名称 | 属性类型   | 属性值   | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                             |
  |:---|:---|:---|:---|:---|
  | ph   | String | 拼音或音标 | 是    | 输入汉语拼音时，声调用1、2、3、4来表示，5表示轻声。标签起始和结束中间只能有1个汉字。 - 举例1：天气的ph取值为"tian1 qi4"。  - 举例2：Token的ph取值为"ˈtəʊkən"。   |
     
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  
- **示例**
  ```
  今天<phoneme ph="tian1 qi4">天气</phoneme>很好
  查询<phoneme ph="ˈtəʊkən" alphabet="ipa">Token</phoneme>
  ```
  根据汉字获取拼音JS库，操作请参考[pinyin-pro](https://www.npmjs.com/package/pinyin-pro)。
  如果需要实现自定义单词发音，可通过国际音标指定单词发音，详见[表3]。
   表3音标 
  | 音标类型 | 学术IPA （SSML支持） | 教学IPA （市面常见） | 范例                          |||
  | 音标类型 | 学术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\>：将文本指定为特定类型的内容，或者控制英文单词逐个字符拼写。
  
- **语法**
  ```
  <say-as interpret-as="string">数字或单词</say-as>
  ```
  
- **属性**
  表4属性说明 
  | 属性名称         | 属性类型   | 属性值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 是否必选 | 描述            |
  |:---|:---|:---|:---|:---|
  | interpret-as | String | - number：数字  - date：日期  - figure：数值  - phone：电话号码  - english：英文单词  - spell：逐个字母读英文   | 是    | 将内容解释为给定类型读法。 |
     
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  

- **示例**
  ```
  <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\>：用其他词语替代读法。
  
- **语法**
  ```
  <sub alias="string">文字</sub>
  ```
  
- **属性**
  表5属性说明 
  | 属性名称  | 属性类型   | 属性值  | 是否必选 | 描述               |
  |:---|:---|:---|:---|:---|
  | alias | String | 替代词语 | 是    | 将标记的内容替换为此值进行阅读。 |
     
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  

- **示例**
  实际阅读为"保罗"。
  ```
  <sub alias="保罗">Paul</sub>是德国人
  ```
  
 
 #### prosody标签
- **描述**
  \<prosody\>\</prosody\>：控制局部语速。
  
- **语法**
  ```
  <prosody rate="50">文字</prosody>
  ```
  
- **属性**
  表6属性说明 
  | 属性名称 | 属性类型   | 属性值                                                                                                             | 是否必选 | 描述  |
  |:---|:---|:---|:---|:---|
  | rate | String | 语速百分比值。 最小值50，最大值200。 示例：50，表示用0.5倍速度阅读。 | 是    | 语速值 |
     
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  

- **备注**
  ```
  <prosody rate="50">大家好，我是MetaStudio数字人</prosody>
  ```
  
 
 #### word标签
- **描述**
  \<word\>\</word\>：设置选中文字为连读模式。选中文字的形式须如下所示，不能有标点符号等字符，不能同时包含中英文。
  - 中文文字
  
  - 英文文字与空格
   
- **语法**
  ```
  <word>文字</word>
  ```
  
- **属性**
  无
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  

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

- **备注**
  ```
  <emotion type="HAPPY">今天是个好天气。</emotion>
  ```
  
 
 #### insert-action标签
- **描述**
  \<insert-action/\>：动作标签，可在文本的指定位置插入动作。
  
- **语法**
  ```
  <insert-action name="动作名称" tag="动作标识"/>
  ```
  
- **属性**
  表8属性说明 
  | 属性名称 | 属性类型   | 属性值  | 是否必选 | 描述                                                                                                                         |
  |:---|:---|:---|:---|:---|
  | name | String | 动作名称 | 否    | 动作名称，通过[查询资产详情](https://support.huaweicloud.com/api-metastudio/ShowAsset.html)接口查询获取"action_name_zh"或"action_name_en"参数的值。 |
  | tag  | String | 动作标识 | 否    | 动作标识，通过[查询资产详情](https://support.huaweicloud.com/api-metastudio/ShowAsset.html)接口查询获取"tag"参数的值。                             |
     
  
- **标签关系**
  可以包含文本，不可以包含其他标签。
  

- **备注**
  ```
  <speak>你好<insert-action name="数字三" tag="semantic_3"/>呀</speak>
  ```
  
 
