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

SSML 标记语言

最近更新时间:2023-12-13 10:23:01

我的收藏
SSML 是一种基于 XML 的语音合成标记语言。使用 SSML 可以更加准确、具体的定义合成音频的效果。
说明
腾讯云语音合成服务的 SSML 实现,基于 W3C 的语音合成标记语言版本1.1。
目前只有中文、英文合成支持 SSML 功能。

使用方式

将带标签的文本作为 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" : 1002,
"Volume" : 5
}
语音合成支持的 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">深南大道10000号3单元304</say-as>
</speak>再补充一下,<speak>
她的用户名是<say-as interpret-as="characters">b888_uαβγ</say-as>
</speak>

标签

<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>标签时,<speak>标签中除<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个:&lt;&gt;&amp;&quot;&apos;分别对应<、>、& 、"、'。
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个:&lt;&gt;&amp;&quot;&apos;分别对应<、>、& 、"、'。
……
省略号
!"#$%&
叹号 双引号 井号 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

<word>

描述

用于表示文本的词语结构,该标签是可选标签。英文文本通常采用空格来进行分词,一般无需使用此标签。<word>标签内部必须是一个独立的词或短语,这个词或短语只能包含纯中文或纯英文,不能中英混合。

语法

<word>文本</word>

标签关系

<word>标签仅包括文本。

示例

<speak>广州市长<word>隆马戏</word>欢迎您。</speak>
音频效果:SSML-word.wav

<audio>

描述

用于在合成语音输出中插入录制的音频文件和其他音频格式。

语法

属性

属性名称
属性类型
属性值
是否必选
描述
src
String
音频url
指向音频媒体源的 URI。支持的协议为 https。
音频限制条件:
音频文件大小上限:3M
音频格式:mp3、wav
采样率:不限 音频时长:120s
音频存储服务器:腾讯云 cos(需开通公有读权限)
语音合成接口:实时语音合成

示例

你听<speak><audio src="https://example.cos.ap-shanghai.myqcloud.com/knock_door.wav"></audio></speak>有敲门声
音频效果:SSML-audio.wav