资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

SSML标记语言使用说明

页面描述

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> src
repeat
插入同时播放的音频或音乐

标签详情

<speak>根元素

解释

<speak>为ssml标注文本的边界,用于设置文本层级。

<speak>为强制标签,ssml标注文本必须要加上<speak>边界。

<sub>:替换文本

解释

<sub>用于替换选中的内容为指定文本

属性 功能 取值
alias 替换文本 中文或字母,不支持包含数字
  • 使用示例:
<speak>百度的下一个使命聚焦在<sub  alias="人工智能">AI</sub>上。</speak>

<phoneme>:指定发音

解释

<phoneme>用于精确指定中英文词语的发音,以纠正多音字/单词在合成时出现的不准确发音

属性 功能 取值
py 纠正中文读音 音素 + 声调数字
如zhao1
纠正单词读音 ARPAbet 音素
如ax 0, g eh n 1

使用示例

<speak>迎着<phoneme  py="zhao1">朝</phoneme>阳的<phoneme  py="chao2">朝</phoneme>阳群众</speak>
<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
  • 使用示例:
<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处理;
  • 使用实例:
<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>标签支持单标签和双标签;如果是双标签的话,当音频无法访问时,将合成嵌套文本;
  • 使用示例:
<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>
  • 使用示例:
<speak><background src="http://meitron-test.bj.bcebos.com/mofachengbao_part.wav" repeat="yes">欢迎使用百度语音合成服务</background>。</speak>

上一篇
呼叫中心语音-在线合成
下一篇
语音识别