文档中心 > 语音合成 > SSML 标记语言

SSML 标记语言

最近更新时间:2020-12-02 10:59:44

TTS 支持 SSML

概述

SSML 是一种基于 XML 的语音合成标记语言。 使用 SSML 可以更加准确、具体的定义合成音频的效果。

说明:

腾讯云语音合成服务的 SSML 实现基于 W3C 的语音合成标记语言版本1.1。

使用方式

说明:

• 目前只有中文合成支持 SSML 功能。
• 语音合成服务支持的 SSML 标签请见下文,<speak> 标签内的未定义标签不合成,XML 格式错误可能导致停止该 <speak> 标签的合成。
• 语音合成的 SSML 功能支持多个 <speak> 标签闭合嵌套于文本之中。如:

<speak>她叫<say-as interpret-as="name">任盈盈</say-as>。
她的电话号码是<say-as interpret-as="telephone">+86-15188888888</say-as>。
她今年<say-as interpret-as="cardinal">22</say-as>岁了。
她有一个快递,单号是<say-as interpret-as="digits">5648234514237588</say-as>。
她的地址是<say-as interpret-as="address">深南大道100003单元304</say-as>。
</speak>再补充一下,<speak>
她的用户名是<say-as interpret-as="characters">b888_uαβγ</say-as>。
</speak>

将带标签的文本作为 text 参数值,上传至语音合成服务,发送给语音合成服务的请求内容如下:

{
"Action" : "TextToVoice",
"AppId" : 12345,
"Codec" : "mp3",
"Expired" : 1603271036,
"ModelType" : 1,
"PrimaryLanguage" : 1,
"ProjectId" : 0,
"SampleRate" : 8000,
"SecretId" : "AKID****",
"SessionId" : "1234",
"Speed" : 0,
"Text" : "<speak>电话号码是<say-as interpret-as=\"telephone\">4008110510</say-as>。</speak>",
"Timestamp" : 1603184636,
"VoiceType" : 1000,
"Volume" : 5
}

标签

<speak>

  • 描述
<speak>标签是所有待支持SSML标签的根节点。一切需要调用SSML标签的文本都要包含在“<speak></speak>”中。speak标签不支持属性。
  • 语法
<speak>需要调用SSML标签的文本</speak>
  • 标签关系
    <speak> 标签可以包含文本和以下标签:

    • <break>
    • <phoneme>
    • <say-as>
    • <sub>
  • 示例

<speak>需要调用SSML标签的文本。</speak>

音频效果:SSML-speak1.wav

<sub>

  • 描述
    使用别名替换标签内文本。

  • 语法

<sub alias="别名">文本</sub>
  • 属性
属性名称 属性类型 属性值 是否必选 描述
alias String 替换后的内容 用于替换标签内的文本。
  • 标签关系
    标签仅包括文本。

  • 示例

<speak><sub alias="语音合成">TTS</sub></speak>

音频效果:SSML-sub.wav

<break>

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

  • 语法

<break time="string"/>
  • 属性
属性名称 属性类型 属性值 是否必选 描述
time String [number]s/[number]ms 以秒/毫秒为单位设置停顿的时长 (如“2s“、“50ms”)。[number]s:以秒为单位,[number]取值范围为[1, 10]的整数。[number]ms:以毫秒为单位,[number]取值范围为[50, 10000]的整数。
  • 标签关系
    <break>是空标签,不能包含任何标签。

  • 示例

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

<phoneme>

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

  • 语法

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

  • 示例

<speak>
现状是各地的经济水平是<phoneme alphabet="py" ph="cen1 ci1 bu4 qi2">参差不齐</phoneme>的。需要缩小较弱地域和较强地域的<phoneme alphabet="py" ph="cha1 ju4">差距</phoneme>。要做好这个<phoneme alphabet="py" ph="chai1 shi4">差事</phoneme>可不容易啊。
</speak>

音频效果:SSML-phoneme.wav

<say-as>

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

  • 语法

<say-as interpret-as="string">文本</say-as>
属性名称 属性类型 属性值 是否必选 描述
interpret-as String cardinal/digits/telephone/name/address/
id/characters/punctuation/
date/time/currency/measure
指示出标签内文本的信息类型:
• cardinal:按整数或小数发音。
• digits:按数字发音。
• telephone:按电话号码常用方式发音。
• name:按人名发音。
• address:按地址发音。
• id:适用于账户名、昵称等。
• characters:将标签内的文本按字符一一读出。
• punctuation:将标签内的文本按标点符号的方式读出来。
• date:按日期发音。
• time:按时间发音。
• currency:按金额发音。
• measure:按计量单位发音。
  • <say-as>类型支持范围
    • cardinal
    格式 示例 输出 说明
    数字串 1487 一千四百八十七 整数输入范围:[-18446744073709551615,18446744073709551615]。
    小数输入范围:对小数点后小数的位数没有特殊限制,建议不超过10位。
    负号+数字串 -1487 负一千四百八十七
    以逗号分隔3位数字串 10,500 一万零五百
    负号+以逗号分隔3位数字串 -10,500 负一万零五百
    数字串+小数点+2个零 9.00
    负号+数字串+小数点+2个零 -110.00 负一百一十
    数字串+小数点+数字串 88.090 八十八点零九
    负号+数字串+小数点+数字串 -88.001 负八十八点零零一
    • digits
    格式 示例 输出 说明
    数字串 356210985 三五六二一零九八五 对数字串的长度没有特殊限制。
    建议不超过20位,且当数字串超过10位时,每个数字后插入停顿。
    • telephone
    格式 示例 输出 说明
    座机号 5605560 五六零 五五六零 支持7~8位座机号,支持空格和’-‘作为分隔符。
    其中:7位座机号支持“3-4”的数字分隔方式。8位座机号支持“4-4”的数字分隔方式。
    560 5560 五六零 五五六零
    560-5560 五六零 五五六零
    55605560 五五六零 五五六零
    5560 5560 五五六零 五五六零
    5560-5560 五五六零 五五六零
    座机号+分机号 55605560-105 五五六零 五五六零 转幺零五 支持1~4位分机号。
    55605560转105 五五六零 五五六零 转幺零五
    55605560分机105 五五六零 五五六零 转幺零五
    55605560分机号105 五五六零 五五六零 分机号幺零五
    区号+座机号 01055605560 零幺零 五五六零 五五六零 支持区号:010、02x、03xx、04xx、05xx、07xx、08xx、09xx。
    010 55605560 零幺零 五五六零 五五六零
    010-5560-5560 零幺零 五五六零 五五六零
    (010)55605560 零幺零 五五六零 五五六零
    031955605560 零三幺九 五五六零 五五六零
    0319-55605560 零三幺九 五五六零 五五六零
    区号+座机号+分机号 010 33878528-1054 零幺零 三三八七 八五二八 转幺零五四
    010-33878528-1054 零幺零 三三八七 八五二八 转幺零五四
    (010)33878528-1054 零幺零 三三八七 八五二八 转幺零五四
    (010)33878528转1054 零幺零 三三八七 八五二八 转幺零五四
    (010)33878528分机1054 零幺零 三三八七 八五二八 分机幺零五四
    (010)33878528分机号1054 零幺零 三三八七 八五二八 分机号幺零五四
    国家代码+区号+座机号 86-010-33878528 八六 零幺零 三三八七 支持国家代码:86、 (86)、+86、(+86)、0086。并统一读为“八六”。
    (86)10-33878528 八六 幺零 三三八七 八五二八
    +86-010-33878528 八六 零幺零 三三八七 八五二八
    0086-10-33878528 八六 幺零 三三八七 八五二八
    (+86)-10-3387 8528 八六 幺零 三三八七 八五二八
    国家代码+区号+座机号+分机号 (86)21-33878528-1054 八六 二幺 三三八七 八五二八 转幺零五四
    (86)021-3387-8528-1054 八六 零二幺 三三八七 八五二八 转幺零五四
    (86)021-33878528转1054 八六 零二幺 三三八七 八五二八 转幺零五四
    (86)21-3387-8528分机号1054 八六 二幺 三三八七 八五二八 分机号幺零五四
    +86-021-3387-8528分机1054 八六 零二幺 三三八七 八五二八 分机幺零五四
    手机号 151 8828 1075 幺五幺八八二八 幺零七五 支持11位手机号,支持3-3-5,3-4-4两种数字分隔方式
    151-882-81075 幺五幺 八八二 八幺零七五
    151-8828-1075 幺五幺八八二八 幺零七五
    国家代码+手机号 +86-15188281075 八六 幺五幺 八八二八 幺零七五
    (+86)-151-8828-1075 八六 幺五幺 八八二八 幺零七五
    +8615188281075 八六 幺五幺 八八二八 幺零七五
    0086-151 882 81075 八六 幺五幺 八八二 八幺零七五
    服务号 110 幺幺零 - 支持常用的服务号如110。
    - 支持以400/800开头的10位服务号,支持以“3-3-4”的数字分隔方式。
    - 支持以12530/17951/12593开头的16位号码。
    95566 九五五六六
    4008110280 四零零 八幺幺 零二八零
    800-810-8888 八零零 八幺零 八八八八
    1253013520638377 幺二五三零 幺三五 二零六三 八三七七
    其他 (86)(21)8832-80976-0907 八六 二幺 八八三二 八零九七六 零九零七 支持“数字串+分隔符(左右括号、-)”方式。
    • address
    格式 示例 输出 说明
    常用地址格式 深南大道1000号103-3 深南大道 幺零零零号幺零三杠三 支持常用地址格式。此处地址指标准的邮寄地址。
    高新中四道377弄1137-1128号 高新中四道三七七弄幺幺三七杠幺幺二八号
    华润城六期3-1-3805 华润城六期三杠一杠三八零五
    大族云峰大厦2幢2106室 大族云峰大厦二幢二幺零六室
    高新中三道151弄19号 高新中三道幺五幺弄十九号
    • id
    格式 示例 输出 说明
    字符串 dell3301 D E L L 三 三 零 一 大小写英文字符、阿拉伯数字0~9、下划线。
    输出的空格表示每个字符之间插入停顿,即字符一个一个地读。
    tencent_1998 T E N C E N T 下划线 一 九 九 八
    AiDemo A I D E M O
    • characters
    格式 示例 输出 说明
    字符串 ISO 1-001-095498-1 I S O 一 杠 零 零 一 杠 零 五 四 零 九 八 杠 一 支持中文汉字、大小写英文字符、阿拉伯数字0~9以及部分全角和半角字符。
    输出的空格表示每个字符之间插入停顿,即字符一个一个地读。标签内的文本如果包含XML的特殊字符,需要做字符转义。常用的共有5个:
    <
    >
    &
    "
    '
    分别对应<、>、& 、"、'。
    x10u2385_u x 一 零 u 二 三 八 五 下划线 u
    v1.1.1 v 一 点 一 点 一
    版本号2.0 版本号二 点 零
    粤B BA000 粤B B A 零 零 零
    空中客车A330 空中客车A 三 三 零
    型号B01 B02和B03 型号B 零 一 B 零二 和B 零 三
    αβγ 阿尔法 贝塔 伽玛
    • punctuation
    格式 示例 输出 说明
    标点符号 省略号 支持常见中英文标点。输出的空格表示每个字符之间插入停顿,即字符一个一个地读。
    标签内的文本如果包含XML的特殊字符,需要做字符转义。常用的共有5个:
    <
    >
    &
    "
    '
    分别对应<、>、& 、"、'。
    …… 省略号
    !"#$%& 叹号 双引号 井号 dollar 百分号 and
    ‘()*+ 单引号 左括号 右括号 星号 加号
    ,-./:; 逗号 杠 点 斜杠 冒号 分号
    <=>?@ 小于 等号 大于 问号 at
    [\]^_ 左方括号 反斜线 右方括号 脱字符 下划线
    • date
    格式 示例 输出 说明
    xx年 71年 七一年 支持2位和4位年份。其中:
    - 2位年份支持60年~99年、00年~09年、10年~19年。
    - 4位年份支持1000年~1999年、2000年~2099年。
    08年 零八年
    20年 二零年
    2020年 二零二零年
    1998年 一九九八年
    2008年 二零零八年
    xx年xx月 08年5月 零八年五月 当月份为1到9月时,支持开头带”0”和不带”0”两种写法。例如”1908年4月”和”1908年04月”。
    2020年04月 二零二零年四月
    08年8月 零八年八月
    2020年8月 二零二零年八月
    xx年xx月xx日
    xx年xx月xx号
    98年4月23日 九八年四月二十三日 当日期为1到9日时,支持开头带”0”和不带”0”两种写法。例如”1908年4月8日”和”1908年04月08日”。
    2020年08月23日 二零二零年八月二十三日
    20年8月8号 二零年八月八号
    2020年08月08号 二零二零年八月八号
    xx月xx号 8月20日 八月二十日
    08月08号 八月八号
    年月缩写 2020/08 二零二零年八月 支持”/“、”-“、”.”作为缩写的分隔符。
    2020-08 二零二零年八月
    2020.08 二零二零年八月
    年月日缩写 2020/08/09 二零二零年八月九日
    2020-8-9 二零一八年八月八日
    2020.08.09 二零一八年八月九日
    xx年xx月xx日~xx年xx月xx日
    xx年xx月xx号~xx年xx月xx号
    20年8月9日~30日 二零年八月九日至三十日 支持”~”、”-“作为”至”的缩写标志。
    2020年08月09号-2020年09月09号 二零二零年八月九月一号至二零二零年九月九
    xx年xx月~xx年xx月 20年04月~21年04月 二零年四月至二一年四月
    2020年04月~2021年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号 十月一号至七号
    年月日缩写~年月日缩写 2020/03/03~2021/03/03 二零二零年三月三日至二零二一年三月三日 支持”/“、”.”作为缩写的分隔符,支持”~””-“作为”至”的缩写标志。
    2020.9.9~2021.9.9 二零二零年九月九日至二零二一年九月九日
    月日缩写~月日缩写 10/20~10/31 十月二十日至十月三十一日
    xx~xx月xx月~xx月 1~10月 一至十月
    1月~10月 一月至十月
    月日年缩写 10/25/2020 二零二零年十月二十五日 仅支持4位的年份,仅支持“/”作为日期的分隔符,仅支持”月/日/年”的书写方式。
    • time
    格式 示例 输出 说明
    时刻 12:00 十二点 支持常用时间和时间范围格式。
    12:00:00点 十二点
    10:25分 十点二十五分
    10:25:30 十点二十五分三十秒
    09:25:14 九点二十五分十四秒
    时刻~时刻 11:00~12:00 十一点到十二点
    09:00-14:00 九点到十四点
    11:00~11:30 十一点到十一点三十分
    11:00-15:18 十一点到十五点十八分
    10:30~11:00 十点三十分到十一点
    09:28-10:00 九点二十八分到十点
    10:20~11:20 十点二十分到十一点二十分
    06:00~08:00 六点到八点
    上午10:20~下午13:30 上午十点二十分到下午十三点三十分
    时间缩写 5:00am 凌晨五点 当缩写为am时,小时在[0,5]范围内读作凌晨;
    当单位为am,小时在[6,11]范围内读作上午。
    当缩写为pm,小时为12时读作中午;
    当单位为pm,小时在[1,5]范围内读作下午;小时在[6,11]范围内读作晚上。
    5:30am 凌晨五点三十分
    5:20:12am 凌晨五点二十分十二秒
    7:00am 上午七点
    7:30AM 上午七点半
    7:20:25a.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 十二点五人民币
    15,000,000RMB 一千五百万人民币
    15,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片 两片 支持常见中文单位及单位缩写
    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>常见符号读法如下表所示。

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

<say-as>常见计量单位如下表所示。

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

  • 示例
    • cardinal

<speak>
<say-as interpret-as="cardinal">12345</say-as>
</speak>

音频效果:say-as-cardinal.wav

• digits

<speak>
<say-as interpret-as="digits">12345</say-as>
</speak>

音频效果:say-as-digits.wav

• telephone

<speak>
<say-as interpret-as="telephone">12345</say-as>
</speak>

音频效果:say-as-telephone.wav

• name

<speak>
她的曾用名是<say-as interpret-as="name">曾小凡</say-as>
</speak>

音频效果:say-as-name.wav

• address

<speak>
<say-as interpret-as="address">深南大道10000号1号楼3单元304</say-as>
</speak>

音频效果:say-as-address.wav

• id

<speak>
我的用户名是<say-as interpret-as="id">tencent_8858</say-as>
</speak>

音频效果:say-as-id.wav

• characters

<speak>
希腊字母<say-as interpret-as="characters">αβ</say-as>
</speak>

音频效果:say-as-characters.wav

• punctuation

<speak>
我最常用的标点是<say-as interpret-as="punctuation"></say-as>
</speak>

音频效果:say-as-punctuation.wav

• date

<speak>
<say-as interpret-as="date">2020-10-10</say-as>
</speak>

音频效果:say-as-date.wav

• time

<speak>
<say-as interpret-as="time">5:30am</say-as>
</speak>

音频效果:SSML-say-as_time.mp3

• currency

<speak>
<say-as interpret-as="currency">15,000.00RMB</say-as>
</speak>

音频效果:say-as-currency.wav

• measure

<speak>
<say-as interpret-as="measure">100m²15cm²</say-as>
</speak>

音频效果:say-as-measure.wav

目录