SSML说明文档

SSML简介

语音合成标记语言(Speech Synthesis Markup Language, SSML)是一种基于XML的标记语言,用于提供语音合成的文本注释。用户通过给输入文本加上SSML中预先定义的标签,可以很好地指导合成器按照其需求进行操作。在接收到完整的SSML输入后,引擎对文本所有标签进行解析,再按长句(以句号、问好、感叹号结尾的句子称之为长句)输入后端合成声音。

Cloud-TTS SSML Tag支持列表

标签(Tag) 是否支持
speak 支持
paragraph/p 支持
sentence/s 支持
token/w 支持
sayas/say-as 支持
phoneme 支持
break 支持
prosody 支持
sub 支持

SSML Tag 介绍

speak标签

所有SSML文档所必需的根标签,该标签有且仅能有一个,其他标签和文本都在该标签以内。< speak>可以包含< paragraph>/< p>,< sentence>/< s>,< token>/< w>,< sayas>/< sayas>,< phoneme>, < break>, < prosody>, < sub>标签。
示例:

<?xml version="1.0"?>
<speak version="1.1"
xmlns="https://www.w3.org/2001/10/synthesis"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="cn">
思必驰初创于2007年,由剑桥大学团队创立于英国剑桥高新区,2008年回国创业。是国内唯一拥有人机
对话技术,国际上极少数拥有自主产权、中英文综合语音技术(语音识别、语音合成、自然语言理解、声纹识
别、性别及年龄识别、情绪识别等)的公司之一,其语音技术曾经多次在美国国家标准局、美国国防部、国际
研究机构评测中夺得冠军,被中国和英国政府评为高新技术企业。思必驰团队使命:智能硬件和物联网时代,
让人机交互更有用、有趣。
语音合成和语音识别技术是实现人机语音通信,建立一个有听和讲能力的口语系统所必需的两项关键技术。
使电脑具有类似于人一样的说话能力,是当今时代信息产业的重要竞争市场。和语音识别相比,语音合成的技
术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。
</speak>

paragraph/p标签

一对< p>< /p>标签或者< paragraph>< /paragraph>标签中的内容为一段文本。对于未加该标签的文本,引擎会自动将其合并为一个paragraph。< paragraph>/< p>可以包含< sentence>/< s>,< token>/< w>,< sayas>/< say-as>,< phoneme>,< break>, < prosody>, < sub>标签。可以包含于```标签。

示例:

<?xml version="1.0"?>
<speak version="1.1"
xmlns="https://www.w3.org/2001/10/synthesis"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="cn">
<paragraph>思必驰初创于2007年,由剑桥大学团队创立于英国剑桥高新区,2008年回国创业。是国内唯一拥有人机对话技术,国际上极少数拥有自主产权、中英文综合语音技术(语音识别、语音合成、自然语言理解、声纹识别、性别及年龄识别、情绪识别等)的公司之一,其语音技术曾经多次在美国国家标准局、美国国防部、国际研究机构评测中夺得冠军,被中国和英国政府评为高新技术企业。思必驰团队使命:智能硬件和物联网时代,让人机交互更有用、有趣。</paragraph>
<p>语音合成和语音识别技术是实现人机语音通信,建立一个有听和讲能力的口语系统所必需的两项关键技术。使电脑具有类似于人一样的说话能力,是当今时代信息产业的重要竞争市场。和语音识别相比,语音合成的技术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。</p>
</speak>

sentence/s标签

一对< s>< /s>标签或者< sentence>< /sentence>标签中的内容为一个长句子(以句号、问号、感叹号结尾的句子称之为长句子)。对于sentence标签之外的文本,引擎会按照标点符号进行切分,并自动将内容添加到一个新的sentence节点下面。 < sentence>/< s>可以包含< token>/,< sayas>/< say-as>,< phoneme>,< break>, < prosody>, < sub>标签。可以包含于< speak>、< prosody>、< paragraph>/< p>标签。
示例:

<?xml version="1.0"?>
<speak version="1.1"
xmlns="https://www.w3.org/2001/10/synthesis"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="cn">
<paragraph>思必驰初创于2007年,由剑桥大学团队创立于英国剑桥高新区,2008年回国创业。是国内唯一拥有人机对话技术,国际上极少数拥有自主产权、中英文综合语音技术(语音识别、语音合成、自然语言理解、声纹识别、性别及年龄识别、情绪识别等)的公司之一,其语音技术曾经多次在美国国家标准局、美国国防部、国际研究机构评测中夺得冠军,被中国和英国政府评为高新技术企业。思必驰团队使命:智能硬件和物联网时代,让人机交互更有用、有趣。</paragraph>
<p>语音合成和语音识别技术是实现人机语音通信,建立一个有听和讲能力的口语系统所必需的两项关键技术。
<s>使电脑具有类似于人一样的说话能力,是当今时代信息产业的重要竞争市场。</s><sentence>和语音识别相比,语音合成的技术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。</sentence></p>
</speak>

token/w标签

一对< w>< /w>标签或者< token>< /token>标签中的内容为一个语法词。对于token标签之外的文本,引擎会进行分词,并自动将词面文本添加到一个新的w节点下面。token/w 可以包含< phoneme>、< sub>, 可以包含于< speak>,< prosody>,< paragraph>/< p>,< sentence>/< s>标签。

<?xml version="1.0"?>
<speak version="1.1"
xmlns="https://www.w3.org/2001/10/synthesis"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://www.w3.org/2001/10/synthesis
http://www.w3.org/TR/speech-synthesis11/synthesis.xsd"
xml:lang="cn">
<paragraph>思必驰初创于2007年,由剑桥大学团队创立于英国剑桥高新区,2008年回国创业。是国内唯一拥有人机对话技术,国际上极少数拥有自主产权、中英文综合语音技术(语音识别、语音合成、自然语言理解、声纹识别、<w>性别</w>及年龄识别、情绪识别等)的公司之一,其语音技术曾经多次在美国国家标准局、美国国防部、国际研究机构评测中夺得<token>冠军</token>,被中国和英国政府评为高新技术企业。思必驰团队使命:智能硬件和物联网时代,让人机交互更有用、有趣。</paragraph>
<p>语音合成和语音识别技术是实现人机语音通信,建立一个有听和讲能力的口语系统所必需的两项关键技术。
<s>使电脑具有<token>类似</token>于人一样的说话能力,是当今时代信息产业的重要竞争市场。</s>
<sentence>和语音识别相比,<w>语音合成</w>的技术相对说来要成熟一些,并已开始向产业化方向成功迈进,大规模应用指日可待。</sentence></p>
</speak>

sayas/say-as标签

指明元素中包含的文本性质,即文本的发音方式。say-as/sayas不可以包含任何标签,只能包含文本;可以包含于< speak>、< paragraph>/< p>、< sentence>/< s>、< prosody>标签。

属性 说明 是否支持
interpret-as 必需,指明文本的发音方式。可用值是包含类型名称的串。
format 可选,指明文本格式。可用值是包含类型名称的串。值依赖interpret-as。
detail 可选,指明元素中包含的文本类型。可用值是包含类型名称的串。"string":extension是使用类型的扩展格式说明detail属性的取值,例如,detail="date:dmy"。
type 可选,CSSML1.0中定义,和detail等效。

属性interpret-as的可选值

发音方式 说明
number 指明是数字
telephone 按电话号码读法发音
date 指明日期
time 指明时刻
duration 指明时间段
currency 指明货币金额
measure 指明度量值
name 指明是人的姓名、公司名称或是地名
net 指明是网络(internet)上应用的地址
address 指明是表述邮政地址

属性format的可选值

interpret-as的属性值 format取值 说明
number 具体见下表
date dmy, mdy, ymd,ym, my, md, y 指明年月日的顺序,d=day, m=month,y=year
time hm, hms 指明是否时间(小时/分钟/秒)的格式和顺序,h=hour, m=minute, s=second
duration hm, hms, ms 指明是否时间间隔(小时/分钟/秒)的格式和顺序
net email, url 分别表示网络电子邮件地址和网络URL地址

number 的format取值和说明

format取值 说明
ordinal 按数值发音
digits 按数字串发音
score 按比分读法发音
fraction 按分数读法发音

属性detail的可选值

类型 扩展格式 说明
number 包含的文本应该按数字发音。
number ordinal 包含的文本应该按数值发音。
number digits 包含的文本应该按数字串发音。
number score 包含的文本应该按比分读法发音。
number fraction 包含的文本应该按分数读法发音。
date dmy, mdy, ymd,ym, my, md, y 包含的文本在指定格式中是日期。在格式扩展中,d=day, m=month,y=year。如果不包括扩展格式,合成系统默认日期格式为月日。
time hm, hms 包含的文本为时间。用数字描绘时、分和秒,中间要用冒号分开。下面的时间串是正确的例子:12:35; 1:14:32;08:15; 02:50:45。在格式扩展中,h=hour, m=minute,s=second。
duration hm, hms, ms 包含的文本是时间段。
currency 包含的文本是货币金额。
measure 包含的文本是度量值。
telephone 包含的文本是电话号码。
net email 包含的文本是电子邮件地址。
net url 包含的文本是URL。
address 包含的文本是邮政地址。
name 包含的文本是名称。

< say-as>相当于< sayas>。
开始和结束的元素必须相同。规范禁止这样的序列:< sayas> text < /say-as> 。
对于规范的文本,语音合成系统通常能够自动处理类似以上所指的这些情况。在自动处理出错时,推荐使用say-as元素,这样可以提示合成系统正确识别文本的朗读方式,改善合成效果。
对于文本中包含的多个文本域的文本格式,应使用单一的、非字母的字符将其分隔。例如,say-as元素中包含的日期值可以通过连字号或斜线分离成日、月、年,如10-19-02或10/19/02。
示例:

<?xml version="1.0" encoding="utf8"?>
<speak xml:lang="cn">
<p>
上海交通大学的英文缩写是<sayas type="acronym">SJTU</sayas>
网址是<sayas interpret-as="net" format="url">http://www.sjtu.edu.cn</sayas>
技术支持信箱是<sayas interpret-as="net" format="email">
devsupport@aispeech.com </sayas>
<sayas type="spell-out">SDK</sayas>
现在时钟已指向<sayas type="number">8</sayas>
我们一共有<sayas type="number:ordinal">13</sayas>个人
我住在<sayas type="number:digits">412</sayas>房间
双方比分是<sayas type="number:score">3:1</sayas>
取其中的<sayas type="number:fraction">1/3</sayas>
今天是<sayas type="date:ymd">2000/12/13</sayas>
会议<sayas type="time:hm">14:30</sayas>开始
笔试时间<sayas type="duration">8:00-10:00</sayas>
这本书的价格是<sayas type="currency">¥12.33</sayas>
身高是<sayas type="measure">1.5米</sayas>
商务合作的电话是<sayas type="telephone">18015588312</sayas>
我的邮箱是<sayas type="net:email">aicloud@aispeech.com</sayas>
本公司的网址是<sayas type="net:url">www.aispeech.com</sayas>
你可以写信至<sayas type="address">苏州市工业园区创意产业园</sayas>
他是<sayas type="name">吴小珍</sayas>
</p>
</speak>

phoneme标签

指明标签内文本的读音。读音长度需和文本长度一致。目前仅支持带调汉语拼音,读音通过py属性给出。拼音之间用单个空格隔开。 phoneme标签不可以包含任何标签,只能包含文本;可以包含于< speak>,< paragraph>/< p>, < sentence>/< s>, < w>/< token>, < prosody>标签。

<?xml version="1.0" encoding="utf8"?>
<speak xml:lang="cn">
<sentence>
他姓<phoneme py="zeng1 hang2">曾行</phoneme>
</sentence>
</speak>

break标签

在音频中加入指定时长的停顿。如果break元素的属性指明strength和time,则以time的值为准;如果两则都没有指明,则停顿时间为自然韵律词边界的停顿长度。break标签不可以包含任何标签,可以包含于< speak>,< paragraph>/< p>,< sentence>/< s>,< prosody>。

属性 说明
strength 可选,指明停顿长短。可取值: "x-weak", "weak", "medium"(default value), "strong", or "x-strong"
time 可选,指明具体停顿时长。以秒或毫秒为单位,例如3s或250ms。

prosody标签

指明合成文本时的音高、速率和音量等韵律参数。prosody可以包含< sentence>/< s>、< w>/< token>, < phoneme>,< break>,< sub>标签。prosody可以包含于< speak>、< paragraph>/< p>、< sentence>/< s>。

属性

属性 说明 是否支持
pitch 可选,指明基频的高低。可取值绝对频率数值、相对值。绝对频率数值可以取60~480Hz,或下列值:"xlow","low", "medium", "high", "x-high", or "default"。相对值可以取浮点值、浮点百分率。
rate 可选,指明速率。rate的取值可以是绝对值,或相对值。绝对值可以取0.5~1.5中的小数表明语速的比例,或下列值:"x-slow", "slow", "medium", "fast", "x-fast",or "default"。相对值可以取浮点值或浮点百分率。
volume 可选,指明合成语音的音量。可取值绝对值,或相对值。绝对值可以取0~100中的正整数或小数,或下列值:"silent", "x-soft", "soft", "medium", "loud", "xloud",or "default"。相对值可以取浮点值,或浮点百分率。默认volume的值是100。

示例:

<?xml version="1.0" encoding="utf8"?>
<speak xml:lang="cn">
<s>
<prosody pitch="high" rate="slow" volume="loud">让世界倾听我们的声音,</prosody>
<prosody pitch="-10%" rate="+0.5" volume="0">你能听见吗?</prosody>
</s>
</speak>

Prosody默认值列表

音量

名称 默认值
default 100
silent 1
x-soft 30
soft 65
medium 100
loud 150
x-loud 230

音速

名称 默认值
default 100%
x-slow 60%
slow 80%
medium 100%
fast 125%
x-fast 150%

基频

名称 默认值
default 100%
x-low 70%
low 85%
medium 100%
high 110%
x-high 120%

sub 标签

使用指定的文本替换原有文本的发音,如果指定的文本为空,则不发音。使用sub元素
替换原来文本中的内容,或者是让一段文本不发音。sub不可以包含任何标签,只能包含文本;可以包含于< speak>、< paragraph>/< p>、< sentence>/< s>、< prosody>。

属性 说明是否支持
alias 必需,指定替换后的文本。
<?xml version="1.0" encoding="GB2312"?>
<speak xml:lang="cn">
<sentence>
中国是<sub alias="世界贸易组织">WTO</sub>的成员
</sentence>
</speak>

emphasis 标签

将包含的文本进行强调。

<?xml version="1.0"?>
<speak version="1.1" xml:lang="en-US">
That is a <emphasis> big </emphasis> car!
</speak>

附录

用户组合使用prosody里的各种属性,可以调节出不同的语音效果,甚至情感变化。