全部产品
云市场

由SSML控制合成效果

更新时间:2019-06-18 12:42:10

1 简介

SSML(Speech Synthesis Markup Language)是一种基于XML的标记语言。 与纯文本的合成相比,使用SSML可以充实合成的内容,为最终合成效果带来更多变化。SSML不仅让人控制语音合成能读什么,更让人可以控制语音合成可以怎么读,包括控制断句分词方式、发音、速度、停顿、声调、音量等特征,甚至加入背景音乐。

阿里巴巴语音合成服务的SSML实现基于W3C 的语音合成标记语言版本1.0,但并不支持所有的W3C包含的标记类型,而是从业务角度出发,将支持的标记类型最大程度与业务需求绑定。

2 使用方式

说明:

  • 目前只有中文合成支持SSML功能。
  • 所有文本需放在<speak></speak>标签之内;每个语音合成任务只能包含一个<speak></speak>标签。

将带标签的文本作为text参数值,上传至语音合成服务即可,以Java SDK为例:

  1. SpeechSynthesizer synthesizer = new SpeechSynthesizer(client, getSynthesizerListener());
  2. String text = "<speak>请闭上眼睛休息一下<break time=\"500ms\"/>好了,请睁开眼睛。</speak>";
  3. synthesizer.setText(text);
  4. .......

发送给语音合成服务的请求内容如下:

  1. {
  2. "payload": {
  3. "volume": 50,
  4. "sample_rate": 16000,
  5. "format": "wav",
  6. "text": "<speak>请闭上眼睛休息一下<break time=\"500ms\"/>好了,请睁开眼睛。</speak>"
  7. },
  8. "context": {
  9. "sdk": {
  10. "name": "nls-sdk-java",
  11. "version": "2.0.4"
  12. }
  13. },
  14. "header": {
  15. "namespace": "SpeechSynthesizer",
  16. "name": "StartSynthesis",
  17. "message_id": "5fdf78c0dd574b6897f3cb204dd080b3",
  18. "appkey": "fd4******er4",
  19. "task_id": "6e1be78ef5804c50a2c5a8b92de15cb9"
  20. }
  21. }

语音合成服务所支持的SSML标签请阅读如下章节,使用方式与上述示例相同。

3 标签

3.1 speak

  1. 描述

    <speak>标签是所有待支持SSML标签的根节点。一切需要调用SSML标签的文本都要包含在<speak></speak>中。

  2. 语法

    1. <speak>需要调用SSML标签的文本</speak>
  3. 属性

    <speak>标签可以使用以下属性:

    属性名称 属性类型 属性值 是否必需 描述
    voice String 线上可调用的发音人的名称代号(voice的属性值需要为全小写的voice参数值,如”siyue”) 阿里巴巴语音合成特有标签。在合成时,指定发音人,优先级高于接口请求参数voice指定的发音人。(xiaowei和xiaomeng暂不支持在voice中设置)
    encodeType String pcm
    wav
    mp3
    阿里巴巴语音合成特有标签。在合成时,指定音频文件格式,优先级高于接口请求参数format指定的文件格式。
    sampleRate String 8000
    16000
    阿里巴巴语音合成特有标签。在合成时,指定音频的采样率,优先级高于接口请求参数sample_rate指定的音频采样率。
    rate String [-500, 500]之间的任意整数。0是默认值,大于0表示加快语速,小于0表示减慢语速。 阿里巴巴语音合成特有标签。在合成时,指定音频的语速,优先级高于接口请求参数speech_rate指定的语速。
    pitch String [-500, 500]之间的任意整数。0是默认值,大于0表示升高音高,小于0表示降低音高。 阿里巴巴语音合成特有标签。在合成时,指定音频的音高,优先级高于接口请求参数pitch_rate指定的音高。
    volume String [0, 100]之间的任意整数。50是默认值,大于50表示增大音量,小于50表示减小音量。 阿里巴巴语音合成特有标签。在合成时,指定音频的音量,优先级高于接口请求参数volume指定的音量。
    effect String robot
    lolita
    lowpass
    echo
    eq
    lpfilter
    hpfilter
    阿里巴巴语音合成特有标签。使用该标签可以使合成的语音产生不同的声音效果。
    • robot是机器人音效。
    • lolita是萝莉音效。
    • lowpass是低通音效。
    • echo是回声音效。
    • eq是均衡器。
    • lpfilter是低通滤波器。
    • hpfilter是高通滤波器。
    备注:
    1. 其中eq、lpfilter、hpfilter是高级效果器,您可以通过effectValue自定义效果器的效果。
    2. 一个SSML只支持一种音效,不可以写多个effect属性。
    3. 选择使用音效功能会增加系统延时。
    effectValue String 当用户选择使用高级音效eq, lpfilter, hpfilter时,可以使用该参数修改效果器的默认效果。 • eq(均衡器): 系统默认使用8个band,对应的频率为[“40Hz”, “100Hz”, “200Hz”, “400Hz”, “800Hz”, “1600Hz”, “4000Hz”, “12000Hz”],对应的带宽为[“1.0q”, “1.0q”, “1.0q”, “1.0q”, “1.0q”, “1.0q”, “1.0q”, “1.0q”]。用户在使用过程中,需要输入的是8个band对应的gain。gain的调整范围在[-20dB, 20dB]之间。例如effectValue=”1 1 1 1 1 1 1 1”。输入是一个以空格分割的8个整数组成的string。数值为0表示不调整对应频率的gain。
    • lpfilter: 输入低通滤波器的频率值。可以是(0, 目标采样率/2]之间的任意整数。例如effectValue=”800”。
    • hpfilter: 输入高通滤波器的频率值。可以是(0, 目标采样率/2]之间的任意整数。例如effectValue=”1200”。
    bgm String 线上可调用的背景音乐的名称,请阅读下面bgm属性说明。 阿里巴巴语音合成特有标签。为合成的语音添加指定的背景音乐。
    backgroundMusicVolume String [0, 100]之间的任意整数。50是默认值,大于50表示增大音量,小于50表示减小音量。 阿里巴巴语音合成特有标签。控制背景音乐的音量。

    bmg属性说明:

    服务内嵌URL 目前阿里巴巴语音合成服务内嵌了几款背景音乐供您体验:
    http://nls.alicdn.com/bgm/1.wav
    http://nls.alicdn.com/bgm/2.wav
    http://nls.alicdn.com/bgm/3.wav
    自定义背景音URL 您可以根据需求,使用自定义的背景音。需要将背景音存放在阿里云的OSS上,并且所在的Bucket至少为公共读权限,请参考创建存储空间,生成文件访问链接请阅读如何获取OSS文件的访问地址, 使用HTTP/HTTPS协议。
    您需要对上传的音频版权承担相应的法律责任。
    对音频要求:
    1. 采样率16KHz、单声道wav格式
    2. 大小不超过2MB
    3. 合成时长超出背景音时长时,背景音将循环合成
    (如果您的背景音不是wav格式,可使用ffmpeg将其转为wav格式:ffmpeg -i 输入音频 -acodec pcm_s16le -ac 1 -ar 16000 目标.wav)

    说明:标签内的URL如果包含XML的特殊字符,需要做字符转义。常用的共有5个:< > & " '

  4. 标签关系 <speak>标签可以包含文本和以下标签:

    • break
    • s
    • w
    • phoneme
    • say-as
  5. 示例

    • 空属性

      1. <speak>
      2. 需要调用SSML标签的文本
      3. </speak>
    • voice属性

      1. <speak voice="xiaogang">
      2. 我是男声。
      3. </speak>
    • encodeType属性

      1. <speak encodeType="mp3">
      2. 我可以生成压缩格式的音频。
      3. </speak>
    • sampleRate属性

      1. <speak sampleRate="8000">
      2. 看看我的文件大小吧,是16000采样率音频的一半。
      3. </speak>
    • rate属性

      1. <speak rate="200">
      2. 我的语速比正常人快。
      3. </speak>
    • pitch属性

      1. <speak pitch="-100">
      2. 我的音高却比别人低。
      3. </speak>
    • volume属性

      1. <speak volume="80">
      2. 我的音量也很大。
      3. </speak>
    • 属性组合,用空格隔开

      1. <speak rate="200" pitch="-100" volume="80">
      2. 所以放在一起,我的声音是这样的。
      3. </speak>
    • effect属性

      1. <speak effect="robot">
      2. 你喜欢机器人瓦力吗?
      3. </speak>
    • bgm属性

      1. <speak bgm="http://nls.alicdn.com/bgm/2.wav" backgroundMusicVolume="30" rate="-500" volume="40">
      2. <break time="2s"/>
      3. 阴崖老木苍苍烟
      4. <break time="700ms"/>
      5. 雨声犹在竹林间
      6. <break time="700ms"/>
      7. 绵蕝固知裨国计
      8. <break time="700ms"/>
      9. 绵州风物总堪怜
      10. <break time="2s"/>
      11. </speak>

3.2 break

  1. 描述

    用于在文本中插入停顿,该标签是可选标签。

  2. 语法

    1. # 空属性
    2. <break/>
    3. # 带time属性
    4. <break time="string"/>
  3. 属性

    属性名称 属性类型 属性值 是否必需 描述
    使用无属性的break标签时,停顿时长为”1s”。
    time String [number]s
    [number]ms
    以秒或毫秒的单位来设置停顿的长度 (如 “2s” 或 “50ms”)。
    以毫秒为单位的话,number数值范围是[50, 10000]的整数。
    以秒为单位的话,number数值范围是[1, 10]的整数。
    • [number]s:停顿的持续时长,以秒为单位。
    • [number]ms:停顿的持续时长,以毫秒为单位。
  4. 标签关系

    <break>是空标签,不可以包含任何标签。如果SSML结构中存在<s>标签,请把<break>写在<s>里面,表示对当前段落或句子设置停顿。

  5. 示例

    1. <speak>
    2. 请闭上眼睛休息一下<break time="500ms"/>好了,请睁开眼睛。
    3. </speak>

3.3 s

  1. 描述

    用于表示文本的句子结构,该标签是可选标签。

  2. 语法

    1. <s>文本</s>
  3. 属性

  4. 标签关系 <s>标签可以包含文本和以下标签:

    • break
    • w
    • phoneme
    • say-as
  5. 示例

    1. <speak><s>这是第一句话</s><s>这是第二句话</s></speak>

3.4 sub

  1. 描述

    使用别名来替换标签内文本。

  2. 语法

    1. <sub alias="string"></sub>
  3. 属性

    属性名称 属性类型 属性值 是否必需 描述
    alias String 替换后的内容 用于替换标签内的文本
  4. 标签关系

    <sub>标签仅包括文本。

  5. 示例

    1. <speak><sub alias="网络协议标准">W3C</sub></speak>

3.5 w

  1. 描述

    用于表示文本的词语结构,该标签是可选标签。

  2. 语法

    1. <w>文本</w>
  3. 属性

  4. 标签关系

    <w>标签仅包括文本。

  5. 示例

    1. <speak>南京市长<w>江大桥</w>今天发表了演讲。</speak>

3.6 phoneme

  1. 描述

    用于控制标签内文本的读音,该标签是可选标签。

  2. 语法

    1. <phoneme alphabet="string" ph="string">文本</phoneme>
  3. 属性

    属性名称 属性类型 属性值 是否必需 描述
    alphabet String py py表示拼音
    ph String 标签内文本对应的拼音串 拼音用法的赋值规范:
    1.字与字的拼音用空格分隔,拼音的数目必须与字数相等。
    2.每个拼音由发音和调组成,调为1~5的数字编号,其中”5”表示轻声。
  4. 标签关系

    <phoneme>标签仅包括文本。

  5. 示例

    1. <speak>
    2. <phoneme alphabet="py" ph="dian3 dang4 hang2">典当行</phoneme>把这个玩意<phoneme alphabet="py" ph="dang4 diao4">当掉</phoneme>
    3. </speak>

3.8 soundEvent

  1. 描述

    提示音标签,可以在SSML合成过程中,通过该标签在任意位置插入提示音。

  2. 语法

    1. <soundEvent src="URI"/>
  3. 属性

    属性名称 属性类型 属性值 是否必需 描述
    src String URI提示音资源路径 您可以根据需求,使用自定义的提示音。需要将提示音存放在阿里云的OSS上,并且所在的Bucket至少为公共读权限,请参考创建存储空间,生成文件访问链接请阅读如何获取OSS文件的访问地址,使用HTTP/HTTPS协议。
    您需要对上传的音频版权承担相应的法律责任。
    对音频要求:
    1. 采样率16KHz、单声道wav格式;
    2. 大小不超过2MB。
  4. 标签关系

    <soundEvent>是空标签,不可以包含任何标签。

  5. 示例

    1. <speak>
    2. 一匹马受了惊吓<soundEvent src="http://nls.alicdn.com/sound-event/horse-neigh.wav"/>人们四散躲避
    3. </speak>

3.7 say-as

  1. 描述

    用于指示出标签内文本的信息类型,进而按照该类型的默认发音方式来发音。

  2. 语法

    1. <say-as interpret-as="string">文本</say-as>
  3. 属性

    属性名称 属性类型 属性值 是否必需 描述
    interpret-as String cardinal
    digits
    telephone
    name
    address
    id
    characters
    punctuation
    date
    time
    currency
    measure
    指示出标签内文本的信息类型:
    • cardinal: 按整数或小数发音;
    • digits: 按数字发音;
    • telephone: 按电话号码常用方式发音;
    • name: 按人名发音;
    • address: 按地址发音。
    • id: 适用于账户名、昵称等。
    • characters: 将标签内的文本按character一一读出。
    • punctuation: 将标签内的文本按标点符号的方式读出来。
    • date: 按日期发音。
    • time: 按时间发音。
    • currency: 按金额发音。
    • measure: 按计量单位发音。
  4. 每种say-as类型支持的范围

  • cardinal
    格式 例子 输出 说明
    数字串 145 一百四十五 整数输入范围:20位以内的正负整数,-99999999999999999999~99999999999999999999
    小数输入范围: 对小数点后小数的位数没有特殊限制,但建议不超过10位
    负号+数字串 -145 负一百四十五
    以逗号分隔3位数字串 10,000 一万
    负号+以逗号分隔3位数字串 -10,124 负一万一百二十四
    数字串+小数点+2个零 10.00
    负号+数字串+小数点+2个零 -110.00 负一百一十
    数字串+小数点+数字串 79.090 七十九点零九零
    符号+数字串+小数点+数字串 -79.001 负七十九点零零一
  • digits
    格式 例子 输出 说明
    数字串 129090909 一二九零九零九零九 对数字串的长度没有特殊限制,但建议不超过20位;且当数字串超过10位时,每个数字后插入停顿
  • telephone

    格式 例子 输出 说明
    座机号 4930286 四九三 零二八六 支持7~8位座机号,支持空格和’-‘作为分隔符。其中:
    7位座机号支持3-4的数字分隔方式。
    8位座机号支持4-4的数字分隔方式
    493 0286 四九三 零二八六
    493-0286 四九三 零二八六
    62552560 六二五五 二五六零
    6255 2560 六二五五 二五六零
    6255-2560 六二五五 二五六零
    座机号+分机号 4930286-109 四九三 零二八六 转幺零九 支持1~4位分机号
    4930286转109 四九三 零二八六 转幺零九
    4930286分机109 四九三 零二八六 分机幺零九
    4930286分机号109 四九三 零二八六 分机号幺零九
    区号+座机号 01062552560 零幺零 六二五五 二五六零 支持区号010,02x,03xx,04xx,05xx,07xx,08xx,09xx
    010 62552560 零幺零 六二五五 二五六零
    010 6255 2560 零幺零 六二五五 二五六零
    010 6255-2560 零幺零 六二五五 二五六零
    010-62552560 零幺零 六二五五 二五六零
    010-6255-2560 零幺零 六二五五 二五六零
    (010)62552560 零幺零 六二五五 二五六零
    03198907098 零三幺九 八九零 七零九八
    0319-8907098 三幺九 八九零 七零九八
    区号+座机号+分机号 010 62552560-109 零幺零 六二五五 二五六零 转幺零九
    010-62552560-109 零幺零 六二五五 二五六零 转幺零九
    (010)62552560-109 零幺零 六二五五 二五六零 转幺零九
    (010)62552560转109 零幺零 六二五五 二五六零 转幺零九
    (010)62552560分机109 零幺零 六二五五 二五六零 分机幺零九
    (010)62552560分机号109 零幺零 六二五五 二五六零 分机号幺零九
    国家代码+区号+座机号 86-010-62791627 八六 零幺零 六二七九 幺六二七 支持国家代码:86, (86), +86,(+86), 0086, 并统一读为“八六”
    (86)10-62791627 八六 幺零 六二七九 幺六二七
    +86-010-62791627 八六 零幺零 六二七九 幺六二七
    0086-10-62791627 八六 幺零 六二七九 幺六二七
    (+86)-10-6279 1627 八六 幺零 六二七九 幺六二七
    国家代码+区号+座机号+分机号 (86)21-58118818-207 八六 二幺 五八幺幺 八八幺八 转二零七
    (86)021-5811-8818-207 八六 零二幺 五八幺幺 八八幺八 转二零七
    (86)021-58118818转207 八六 零二幺 五八幺幺 八八幺八 转二零七
    (86)21-5811-8818分机207 八六 二幺 五八幺幺 八八幺八 分机二零七
    +86-021-58118818分机号207 八六 零二幺 五八幺幺 八八幺八分机号二零七
    手机号 151 9099 0987 幺五幺 九零九九 零九八七 支持11位手机号,支持3-3-5,3-4-4两种数字分隔方式
    151-909-90987 幺五幺 九零九 九零九八七
    151 909 90987 幺五幺 九零九 九零九八七
    国家代码+手机号 +86-15190990987 八六 幺五幺 九零九九 零九八七
    (+86)-151-9099-0987 八六 幺五幺 九零九九 零九八七
    +8615190990987 八六 幺五幺 九零九九 零九八七
    0086-151 909 90987 八六 幺五幺 九零九 九零九八七
    服务号 110 幺幺零 1.支持常用的服务号如110
    2.支持以400/800开头的10位服务号,支持以3-3-4的数字分隔方式
    3.支持以12530,17951,12593开头的16位号码
    95566 九五五六六
    4008110510 四零零 八幺幺 零五幺零
    800-810-8888 八零零 八幺零 八八八八
    1253013520638377 幺二五三零 幺三五 二零六三 八三七七
    其他 (86)(21)9899-80800-0909 八六 二幺 九八九九 八零八零零 零九零九 支持数字串+分隔符(左右括号,-)
  • address

    格式 例子 输出 说明
    常用地址格式 元和镇嘉元30-9 元和镇嘉元三十杠九 支持常用地址格式。这里的地址指标准的邮寄地址。
    市台路388弄1107-1108号 市台路三八八弄幺幺零七杠幺幺零八号
    华润二十四城六期锦云府3-1-3205 华润二十四城六期锦云府三杠一杠三二零五
    圣华名都大厦2幢2006室 圣华名都大厦二幢二零零六室
    五常街道庭院5幢4单元201 五常街道庭院五幢四单元二零幺
    芙蓉江路150弄19号 芙蓉江路幺五零弄十九号
  • id

    格式 例子 输出 说明
    字符串 dell0101 D E L L 零 一 零 一 大小写英文字符,阿拉伯数字0~9,下划线。
    输出的空格表示每个字符之间插入停顿,即字符一个一个的读
    myid_1998 M Y I D 下划线 一 九 九 八
    AiTest A I T E S T
  • characters

    格式 例子 输出 说明
    字符串 ISBN 1-001-099098-1 I S B N 一 杠 零 零 一 杠 零 九 九 零 九 八 杠 一 支持中文汉字,大小写英文字符,阿拉伯数字0~9,以及部分全角和半角字符。
    输出的空格表示每个字符之间插入停顿,即字符一个一个的读。
    标签内的文本如果包含XML的特殊字符,需要做字符转义。常用的共有5个:&lt; &gt; &amp; &quot; &apos;,分别对应< > & " '
    x10b2345_u x 一 零 b 二 三 四 五 下划线 u
    v1.0.1 v 一 点 零 点 一
    版本号2.0 版本号二 点 零
    苏M MA000 苏M M A 零 零 零
    空中客车A330 空中客车A 三 三 零
    型号s01 s02和s03 型号s 零 一 s 零二 和s 零 三
    空中客车A330 空中客车A 三 三 零
    αβγ 阿尔法 贝塔 伽玛
  • punctuation

    格式 例子 输出 说明
    标点符号 省略号 支持常见中英文标点,具体参见详细表格。
    输出的空格表示每个字符之间插入停顿,即字符一个一个的读。
    标签内的文本如果包含XML的特殊字符,需要做字符转义。常用的共有5个:&lt; &gt; &amp; &quot; &apos;,分别对应< > & " '
    …… 省略号
    !"#$%& 叹号 双引号 井号 dollar 百分号 and
    ‘()*+ 单引号 左括号 右括号 星号 加号
    ,-./:; 逗号 杠 点 斜杠 冒号 分号
    <=>?@ 小于 等号 大于 问号 at
    [\]^_ 左方括号 反斜线 右方括号 脱字符 下划线
  • date

    格式 例子 输出 说明
    xx年 71年 七一年 xx年支持2位和4位年份,其中:
    2位年份支持:60~99年, 00~09年, 10~19年
    4位年份支持:1000~1999年, 2000~2099年
    04年 零四年
    19年 一九年
    1011年 一零一一年
    1998年 一九九八年
    2008年 二零零八年
    xx年xx月 98年4月 九八年四月 当月份为1到9月时,支持开头带”0”和不带”0”两种写法,例如”1908年4月”和”1908年04月”都可以
    1998年04月 一九九八年四月
    08年8月 零八年八月
    2008年8月 二零零八年八月
    xx年xx月xx日
    xx年xx月xx号
    98年4月23日 九八年四月二十三日 当日期为1到9日时,支持开头带”0”和不带”0”两种写法,例如”1908年4月8日”和”1908年04月08日”都可以
    1998年04月23日 一九九八年四月二十三日
    08年8月8号 零八年八月八号
    2008年08月08号 二零零八年八月八号
    xx年xx月xx日
    xx年xx月xx号
    98年4月23日 九八年四月二十三日 当日期为1到9日时,支持开头带”0”和不带”0”两种写法,例如”1908年4月8日”和”1908年04月08日”都可以
    1998年04月23日 一九九八年四月二十三日
    08年8月8号 零八年八月八号
    2008年08月08号 二零零八年八月八号
    xx月xx号 3月20日 三月二十日
    08月07号 八月七号
    年月缩写 2018/08 二零一八年八月 支持”/“”-“”.”作为缩写的分隔符
    2018-08 二零一八年八月
    2018.08 二零一八年八月
    年月日缩写 2018/08/08 二零一八年八月八日
    2018-8-8 二零一八年八月八日
    2018.08.08 二零一八年八月八日
    xx年xx月xx日~xx年xx月xx日
    xx年xx月xx号~xx年xx月xx号
    04年9月1日~30日 零四年九月一日至三十日 支持”~””-“作为”至”的缩写标志
    2004年09月01号-2008年06月08号 二零零四年九月一号至二零零八年六月八号
    xx年xx月xx日~xx日
    xx年xx月xx号~xx号
    04年9月1日~30日 零四年九月一日至三十日
    2004年09月01号-2008年06月08号 二零零四年九月一号至二零零八年六月八号
    xx年xx月~xx年xx月 01年04月~10年04月 零一年四月至一零年四月
    2001年04月~2010年04月 二零零一年四月至二零一零年四月
    xx月xx日~xx月xx日
    xx月xx号~xx月xx号
    10月1日~10月7日 十月一日至十月七日
    10月01号~10月07号 十月一号至十月七号
    xx月xx日~xx日
    xx月xx号~xx号
    10月1日~7日 十月一日至七日
    10月01号~07号 十月一号至七号
    年月日缩写~年月日缩写 2018/03/03~2019/01/01 二零一八年三月三日至二零一九年一月一日 支持”/“”.”作为缩写的分隔符,支持”~””-“作为”至”的缩写标志
    1997.9.9~1998.9.9 一九九七年九月九日至一九九八年九月九日
    月日缩写~月日缩写 10/20~10/31 十月二十日至十月三十一日
    xx~xx月
    xx月~xx月
    1~10月 一至十月
    1月~10月 一月至十月
    月日年缩写 10/20/2018 二零一八年十月二十日 仅支持4位的年份,仅支持“/”作为日期的分隔符,仅支持”月/日/年”的书写方式
  • time

    格式 例子 输出 说明
    时刻 12:00 十二点 支持常用的时间和时间范围格式
    12:00:00点 十二点
    10:20分 十点二十分
    10:20:30 十点二十分三十秒
    09:18:14 九点十八分十四秒
    时刻~时刻 11:00~12:00 十一点到十二点
    09:00-14:00 九点到十四点
    11:00~11:30 十一点到十一点三十分
    11:00-12:18 十一点到十二点十八分
    10:30~11:00 十点三十分到十一点
    09:28-10:00 九点二十八分到十点
    10:20~11:20 十点二十分到十一点二十分
    06:00~08:00 六点到八点
    上午10:20~下午13:30 上午十点二十分到下午十三点三十分
    时间缩写 5:00am 凌晨五点整
    5:30am 凌晨五点半
    5:20:12am 凌晨五点二十分十二秒
    7:00am 上午七点整
    7:30AM 上午七点半
    7:20:12a.m. 上午七点二十分十二秒
    07:08:12A.M. 上午七点零八分十二秒
    5:00pm 下午五点整
    5:30PM 下午五点半
    5:20:12p.m. 下午五点二十分十二秒
    05:09:12P.M. 下午五点零九分十二秒
    9:00pm 晚上九点整
    9:30pm 晚上九点半
    9:20:12PM 晚上九点二十分十二秒
    9:02:12P.M. 晚上九点零二分十二秒
    12:00pm 中午十二点整
    12:30p.m. 中午十二点半
    12:20:12PM 中午十二点二十分十二秒
  • currency

    格式 例子 输出 说明
    数字+金额标识符 12.00RMB 十二人民币 支持AUD(澳元) CAD(加元) HKD(港币) JPY(日元) USD(美元) CHF(瑞士法郎) NOK(挪威克朗) SEK(瑞典克朗) GBP(英镑) RMB(人民币) CNY(元) EUR(欧元)。
    支持的数字格式包括:整数,小数,以及以逗号分隔的国际写法
    12.50RMB 十二点五零人民币
    12,000,000RMB 一千二百万人民币
    12,000,000.00RMB 一千二百万人民币
    12,000.35RMB 一万两千点三五人民币
    金额标识符+数字 $12 十二美元 支持 CAD(加元) $(美元) $(美元) Fr(法郎) kr(丹麦克朗) £(英镑)¥(元) ¥(元) €(欧元)。
    支持的数字格式包括:整数,小数,以及以逗号分隔的国际写法
    $12.00 十二美元
    $12.12 二点一二美元
    $12,000 一万两千美元
    $12,000.00 一万两千美元
    $12,000.99 一万两千点九九美元
    其他默认读法 1213 一千二百一十三
    1213KML 一千二百一十三K M L
    1213.00KML 一千二百一十三K M L
    1213.9KML 一千二百一十三点九K M L
    1,000KML 一千K M L
    1,000.00KML 一千K M L
    1,000.98KML 一千点九八K M L
    12,000 一万两千
  • measure

    格式 例子 输出 说明
    数字+中文单位 2片 两片 支持常见中文单位,单位缩写,具体请参考表格meausre
    120公顷 一百二十公顷
    100多毫克 一百多毫克
    100来米 一百来米
    100余人 一百余人
    1厘米20毫米 一厘米二十毫米
    120.00平方公里 一百二十平方公里
    数字+单位缩写 120.56cm² 一百二十点五六平方厘米
    120㎡56cm² 一百二十平方米五十六平方厘米
    100m12cm6mm 一百米十二厘米六毫米
    范围 10~15kg 十至十五千克
    10.24~789.82亩 十点二四至七百八十九点八二亩
    10米~15米 十米至十五米
    10.24cm~19.08cm 十点二四厘米至十九点零八厘米
    数字+单位+"/"+单位 10元/斤 十元每斤
    199~299元/件 一百九十九至二百九十九元每件
    299.99元/g~399.99元/g 二百九十九点九九元每克至三百九十九点九九元每克
    其他默认读法 12扎 十二扎
    30rm 三十r m
    4万万同胞 四万万同胞
    12.897微克 十二点八九七微克

    其中say-as chartable如下表所示:

符号 读法
! 叹号
双引号
# 井号
$ dollar
% 百分号
& and
单引号
( 左括号
) 右括号
*
+
, 逗号
-
.
/ 斜杠
: 零冒号
; 分号
< 小于
= 等号
> 大于
? 问号
@ at
[ 左方括号
\ 反斜线
] 右方括号
^ 脱字符
_ 下划线
` 反引号
{ 左花括号
| 竖线
} 右花括号
~ 波浪线
叹号
左双引号
右双引号
左单引号
右单引号
左括号
右括号
逗号
句号
冒号
分号
问号
顿号
省略号
…… 省略号
左书名号
右书名号
人民币符号
大于等于
小于等于
不等于
约等于
± 加减
×
π
Α 阿尔法
Β 贝塔
Γ 伽玛
Δ 德尔塔
Ε 艾普西龙
Ζ 捷塔
Ε 依塔
Θ 西塔
Ι 艾欧塔
Κ 喀帕
拉姆达
Μ
Ν
Ξ 克西
Ο 欧麦克轮
Ρ
西格玛
Τ
Υ 宇普西龙
Φ fai
Χ
Ψ 普赛
Ω 欧米伽
α 阿尔法
β 贝塔
γ 伽玛
δ 德尔塔
ε 艾普西龙
ζ 捷塔
η 依塔
θ 西塔
ι 艾欧塔
κ 喀帕
λ 拉姆达
μ
ν
ξ 克西
ο 欧麦克轮
π
ρ
σ 西格玛
τ
υ 宇普西龙
φ fai
χ
ψ 普赛
ω 欧米伽

其中say-as measure unit table如下表所示:

格式
类别
举例
缩写
长度
nm(纳米) μm(微米) mm(毫米)cm(厘米) m(米) km(千米) ft(英尺) in(英寸)
面积
cm²(平方厘米) ㎡(平方米)km2(平方千米) SqFt(平方英尺)
体积
cm³(立方厘米) m³(立方米)km3(立方千米) mL(毫升) L(升) gallon(加仑)
重量
μg(微克) mg(毫克) g(克)kg(千克)
时间
min(分) sec(秒) ms(毫秒)
电磁
μA(微安) mA(毫安) Ω(欧姆)Hz(赫兹) KHz(千赫兹) MHz(兆赫兹) GHz(吉赫兹) V(伏) kV(千伏) kWh(千瓦时)
声音
dB(分贝)
气压
Pa(帕)kPa(千帕) Mpa(兆帕)
中文单位
支持不限于上述类别的中文单位,例如“米”“秒”“美元”“毫升每瓶”等,以及中文量词,例如“架”“场”“头”“部”“盆”等

5.标签关系

<say-as>标签仅包括文本。

6.示例

  • cardinal

    1. <speak>
    2. <say-as interpret-as="cardinal">12345</say-as>
    3. </speak>
  • digits

    1. <speak>
    2. <say-as interpret-as="digits">12345</say-as>
    3. </speak>
  • telephone

    1. <speak>
    2. <say-as interpret-as="telephone">12345</say-as>
    3. </speak>
  • name

    1. <speak>
    2. 她的曾用名是<say-as interpret-as="name">曾小凡</say-as>
    3. </speak>
  • address

    1. <speak>
    2. <say-as interpret-as="address">富路国际1号楼3单元304</say-as>
    3. </speak>
  • id

    1. <speak>
    2. <say-as interpret-as="id">myid_1998</say-as>
    3. </speak>
  • characters

    1. <speak>
    2. <say-as interpret-as="characters">希腊字母αβ</say-as>
    3. </speak>
  • punctuation

    1. <speak>
    2. <say-as interpret-as="punctuation"> -./:;</say-as>
    3. </speak>
  • date

    1. <speak>
    2. <say-as interpret-as="date">1000-10-10</say-as>
    3. </speak>
  • time

    1. <speak>
    2. <say-as interpret-as="time">5:00am</say-as>
    3. </speak>
  • currency

    1. <speak>
    2. <say-as interpret-as="currency">13,000,000.00RMB</say-as>
    3. </speak>
  • measure

    1. <speak>
    2. <say-as interpret-as="measure">100m12cm6mm</say-as>
    3. </speak>

4 综合示例

本示例将详细展示SSML的使用方法,您可以直接拷贝到管控台的项目功能配置中,测试效果。

注意:

  • 示例样音中旁白发音人使用的是定制声音,暂没有开放。体验定制声音,请阅读语音合成声音定制
  • 语音合成每次合成请求的文本字数不能超过300字符,且只能使用一次<speak>标签,以下示例需要按照<speak>标签分多次进行合成测试。
  1. <speak>
  2. 相传北宋年间,
  3. <say-as interpret-as="date">1121-10-10</say-as>
  4. <say-as interpret-as="address">开封城</say-as>
  5. 郊外的早晨笼罩在一片
  6. <sub alias="双十一">11.11</sub>
  7. 前买买买的欢乐海洋中。一支运货的骡队刚进入城门
  8. <soundEvent src="http://nls.alicdn.com/sound-event/bell.wav"/>
  9. 一个肤白貌美
  10. <phoneme alphabet="py" ph="de5"></phoneme>
  11. 姑娘便拦下第一排的小哥<say-as interpret-as="name">阿发。</say-as>
  12. </speak>
  13. <speak voice="xiaomei">
  14. “亲,本店今日特惠,鞋履全场
  15. <say-as interpret-as="digits">199</say-as>
  16. <say-as interpret-as="cardinal">100</say-as>
  17. 走过路过不要错过”。
  18. </speak>
  19. <speak voice="sicheng" rate="150">
  20. “不啦不啦,赶着上货,已经
  21. <say-as interpret-as="time">09:59:59</say-as>
  22. 了,再晚就供应链断裂了”。
  23. </speak>
  24. <speak>
  25. <say-as interpret-as="name">阿发</say-as>
  26. 擦了擦汗,带着运货队伍,径直穿过闹巷,耳边充斥着各种叫卖声:
  27. </speak>
  28. <speak voice="ninger" rate="200">
  29. 最新花色现染布匹,买两尺送一尺;
  30. </speak>
  31. <speak voice="xiaobei">
  32. 爆款纱帽头盔,7天无理由退货;
  33. </speak>
  34. <speak voice="sijia">
  35. 专治大小方脉,调理男人妇人疑难杂症。
  36. </speak>
  37. <speak>
  38. 突然,一匹马不知怎么受了惊,在路上嘶鸣狂奔
  39. <soundEvent src="http://nls.alicdn.com/sound-event/horse-neigh.wav"/>
  40. 一个孩子也吓坏了,跌跌撞撞地扑向大人怀里
  41. <break time="50ms"/>大喊道:
  42. </speak>
  43. <speak voice="sitong" rate="150">
  44. “妈妈,妈妈!”
  45. </speak>
  46. <speak>
  47. 这时,
  48. <say-as interpret-as="name">阿发</say-as>
  49. 心想
  50. </speak>
  51. <speak effect="robot" pitch="-100">
  52. “吓死宝宝了!”
  53. </speak>
  54. <speak>
  55. 于是他赶紧捂住了
  56. <phoneme alphabet="py" ph="he2 bao1">钱包</phoneme>
  57. 继续赶路送货。一路上,
  58. <say-as interpret-as="address">开封城</say-as>
  59. 的繁荣景象给
  60. <say-as interpret-as="name">阿发</say-as>
  61. 留下了深刻的印象。
  62. </speak>
  63. <speak bgm="http://nls.alicdn.com/bgm/2.wav" backgroundMusicVolume="30" rate="-200">
  64. 物换星移,繁华落尽,于是他在购物狂欢之余握起画笔,勾勒出一幅长卷,并命名为《清明上河图》。
  65. </speak>