SSML标记语言使用说明
更新时间:2026-07-28
页面描述
SSML即语音合成标记语言(Speech Synthesis Markup Language)。本页面介绍语音合成、声音复刻如何使用SSML对读音、音效进行定制化。
注意事项
- 使用SSML标签时,短文本合成与长文本合成API 务必在请求体中传入xml=1,声音复刻API无需传参。
- 流式在线合成API、声音复刻流式合成API目前不支持SSML。
- 声音复刻HTTP合成API暂不支持<audio>、<background>标签的使用,暂不支持通过<phoneme>指定单词读音,但支持指定中文读音。
- 声音复刻HTTP合成API仅支持中文普通话音色调用SSML,暂不支持方言、小语种调用。
- 使用SSML标签时合成字符不要超过150(包含标签本身),避免出现badcase。
标签概述
| 标签 | 属性 | 功能 | 备注 |
|---|---|---|---|
| <speak> | 根元素 设置全局属性 |
根元素是必需的。若无该元素,输入文本将不被认为是SSML | |
| <phoneme> | py |
指定中文词的读音 | 声音复刻仅支持中文读音,暂不支持指定单词读音 |
| <say-as> | type |
设置数字读法 | 支持整数、数字串、比分等一系列读法 |
| <say-as> | interpret-as |
设置英文读法(包括按字母读、按词读) | |
| <sub> | alias |
文本替换 | 等价于将其内部文本替换为alias属性中的文本 |
| <silence> | time |
插入静音 | |
| <audio> | src |
在文本后插入音频或音乐 | |
| <background> | srcrepeat |
插入同时播放的音频或音乐 |
标签详情
<speak>根元素
解释
<speak>为ssml标注文本的边界,用于设置文本层级。
<speak>为强制标签,ssml标注文本必须要加上<speak>边界。
<sub>:替换文本
解释
<sub>用于替换选中的内容为指定文本
| 属性 | 功能 | 取值 |
|---|---|---|
alias |
替换文本 | 中文或字母,不支持包含数字 |
- 使用示例:
Plain Text
1<speak>百度的下一个使命聚焦在<sub alias="人工智能">AI</sub>上。</speak>
<phoneme>:指定发音
解释
<phoneme>用于精确指定中英文词语的发音,以纠正多音字/单词在合成时出现的不准确发音
| 属性 | 功能 | 取值 |
|---|---|---|
py |
纠正中文读音 | 音素 + 声调数字 如zhao1 |
| 纠正单词读音 | ARPAbet 音素 如ax 0, g eh n 1 |
使用示例
Plain Text
1<speak>迎着<phoneme py="zhao1">朝</phoneme>阳的<phoneme py="chao2">朝</phoneme>阳群众</speak>
2<speak><phoneme py="ax 0, g eh n 1">word</phoneme></speak>
<say-as>:指定文本读法
解释
<say-as>用于指定数字、英文的读法类型
指定数字读法
type用于指定数字、符号等的读法类型,以纠正数字串在合成时出现的不准确读音
| 属性 | 属性值 | 功能支持 | 使用对象 |
|---|---|---|---|
type |
number:ordinal |
整数读法 | 纯阿拉伯数字串、带有英文逗号的纯阿拉伯数字串,数字个数(英文逗号不计数)小于13 |
number:digits |
数字串读法 | 纯阿拉伯数字串 | |
number:score |
比分读法 | 带有一个冒号或中划线-表示的比分读法,冒号或中划线-表前是纯阿拉伯数字串、带有英文逗号的纯阿拉伯数字串,冒号或中划线-表后也是 | |
number:fraction |
分数读法 | ||
telephone |
电话号码读法 | ||
number |
整数读法 负整数读法 浮点数读法 负浮点数读法 比分读法 分数读法 负分数读法 科学计数读法 |
使用示例
| 加标签示例 | 处理后文本 |
|---|---|
<say-as type="number:ordinal">123</say-as> |
一百二十三 |
<say-as type="number:ordinal">123000</say-as> |
十二万三千 |
<say-as type="number:ordinal">123,000</say-as> |
十二万三千 |
<say-as type="number:ordinal">123000000</say-as> |
一亿二千三百万 |
<say-as type="number:ordinal">123,000,000</say-as> |
一亿二千三百万 |
<say-as type="number:ordinal">123000000000</say-as> |
一千两百三十亿 |
<say-as type="number:ordinal">123,000,000,000</say-as> |
一千两百三十亿 |
<say-as type="number:ordinal">123000000000000</say-as> |
- |
<say-as type="number:ordinal">123,000,000,000,000</say-as> |
- |
<say-as type="number:digits">123</say-as> |
一二三 |
<say-as type="number:digits">123,000</say-as> |
一二三零零零 |
<say-as type="number:score">12:123</say-as> |
十二比一百二十三 |
<say-as type="number:score">12,000:123</say-as> |
一万二千比一百二十三 |
<say-as type="number:score">12:123,000</say-as> |
十二比十二万三千 |
<say-as type="number:score">12,000:123,000</say-as> |
一万二千比十二万三千 |
<say-as type="number:score">12-123</say-as> |
十二比一百二十三 |
<say-as type="number:score">12,000-123</say-as> |
一万二千比一百二十三 |
<say-as type="number:score">12-123,000</say-as> |
十二比十二万三千 |
<say-as type="number:score">12,000-123,000</say-as> |
一万二千比十二万三千 |
<say-as type="number:fraction">12/123</say-as> |
一百二十三分之十二 |
<say-as type="number:fraction">-12/123</say-as> |
负一百二十三分之十二 |
<say-as type="telephone">110</say-as> |
幺幺零 |
<say-as type="telephone">87654321</say-as> |
八七六五四三二幺 |
<say-as type="telephone">13456789876</say-as> |
幺三四五六七八九八七六 |
<say-as type="number">123</say-as> |
一百二十三 |
<say-as type="number">-123</say-as> |
负一百二十三 |
<say-as type="number">123.45</say-as> |
一百二十三点四五 |
<say-as type="number">-123.45</say-as> |
负一百二十三点四五 |
<say-as type="number">123.4500</say-as> |
一百二十三点四五零零 |
<say-as type="number">-123.4500</say-as> |
负一百二十三点四五零零 |
<say-as type="number">123:45</say-as> |
一百二十三比四十五 |
<say-as type="number">123-45</say-as> |
一百二十三比四十五 |
<say-as type="number">123.45-45</say-as> |
一百二十三点四五比四十五 |
<say-as type="number">123-45.123</say-as> |
一百二十三比四十五点一二三 |
<say-as type="number">123/45</say-as> |
四十五分之一百二十三 |
<say-as type="number">-123/45</say-as> |
负四十五分之一百二十三 |
<say-as type="number">123.45/45</say-as> |
四十五分之一百二十三点四五 |
<say-as type="number">-123.45/45</say-as> |
负四十五分之一百二十三点四五 |
<say-as type="number">3e+11</say-as> |
三乘以十的十一次幂 |
<say-as type="number">3e-11</say-as> |
三乘以十的负十一次幂 |
<say-as type="number">-3e+11</say-as> |
负三乘以十的十一次幂 |
<say-as type="number">-3e-11</say-as> |
负三乘以十的负十一次幂 |
<say-as type="number">1.23e+11</say-as> |
一点二三乘以十的十一次幂 |
<say-as type="number">1.23e-11</say-as> |
一点二三乘以十的负十一次幂 |
<say-as type="number">-1.23e+11</say-as> |
负一点二三乘以十的十一次幂 |
<say-as type="number">-1.23e-11</say-as> |
负一点二三乘以十的负十一次幂 |
<say-as type="number">3E+07</say-as> |
三乘以十的七次幂 |
<say-as type="number">3E-07</say-as> |
三乘以十的负七次幂 |
<say-as type="number">-3E+07</say-as> |
负三乘以十的七次幂 |
<say-as type="number">-3E-07</say-as> |
负三乘以十的负七次幂 |
<say-as type="number">1.23E+07</say-as> |
一点二三乘以十的七次幂 |
<say-as type="number">1.23E-07</say-as> |
一点二三乘以十的负七次幂 |
<say-as type="number">-1.23E+07</say-as> |
负一点二三乘以十的七次幂 |
<say-as type="number">-1.23E-07</say-as> |
负一点二三乘以十的负七次幂 |
指定字母串读法
interpret-as用于指定字母串的读法类型,以纠正字母串在合成时出现的不准确读音
| 属性 | 功能 | 取值 |
|---|---|---|
interpret-as |
指定大写字母串按字母读 | as-character : |
| 指定大写字母串按词读(暂不生效) | as-word |
- 使用示例:
Plain Text
1<speak>美国宇航局简称读作<say-as interpret-as="as-word">NASA</say-as>还是<say-as interpret-as="as-character">NASA</say-as>。</speak>
<silence>:插入静音
解释
<silence>用于在句间、开头或者结尾增加静音片段。
| 属性 | 功能 | 取值 |
|---|---|---|
time |
设置静音时长 | 数字+时间单位(s秒或者ms毫秒级别) 如5s |
- 每个句间仅支持一个句间大静音
- silence time设置的最大值为10s,如果设置超过10s的统一按照10s处理;最小值为20ms,如果设置小于20ms的统一按20ms处理;
- 使用实例:
Plain Text
1<speak>测试一下<silence time="5s"></silence></speak>
<audio>:插入音频
解释
<audio>在合成中引入外部的音频
| 属性 | 功能 | 取值 |
|---|---|---|
src |
插入音频 音频在合成语音之间播报 |
音频地址 |
- 音频以服务器可以访问的的地址给出,目前支持16K采样和24K采样,16bit,单声道,44字节头的wave格式文件;
- 目前使用<audio>标签,要求用户必须将相应的音频文件上传到百度云bos平台,在使用过程中提供bos地址;
- 单个请求最大限制3个并列的audio资源,单个audio资源大小限制为3M;
- 使用前需要前把音频转换为支持的格式,推荐使用ffmpeg。命令参考如下(<background>标签等同):
使用示例:ffmpeg -i <input-file> -acodec pcm_s16le -b:a 16k -ar 16000 -ac 1 -flags bitexact <output-file.wav> - <audio>标签不支持嵌套<audio>/<background>: <audio>标签支持单标签和双标签;如果是双标签的话,当音频无法访问时,将合成嵌套文本;
- 使用示例:
Plain Text
1<speak>播放度晓晓唱的魔法城堡。<audio src="http://meitron-test.bj.bcebos.com/mofachengbao_part.wav"/> 播放完了,好听吗?</speak>
<background>:插入背景音
解释
<background>用于设置背景声
| 属性 | 功能 | 取值 |
|---|---|---|
src |
插入音频 音频与合成声音同时播报 |
音频地址 |
repeat |
音频是否重复播放 | yes/no |
- 音频以服务器可以访问的的地址给出,目前支持16K采样和24K采样,16bit,单声道,44字节头的wave格式文件;
- 目前使用<background>标签,要求用户必须将相应的音频文件上传到百度云bos平台,在使用过程中提供bos地址;
- <background>标签不支持嵌套<background>;
- 使用示例:
Plain Text
1<speak><background src="http://meitron-test.bj.bcebos.com/mofachengbao_part.wav" repeat="yes">欢迎使用百度语音合成服务</background>。</speak>
评价此篇文章
