什么是SSML?
SSML(Speech Synthesis Markup Language,语音合成标记语言)是一种特殊的文本标记方式。通过使用SSML,您可以像"导演"一样指导AI如何朗读文本——控制语速快慢、语调高低、音量大小,还能添加停顿、音效、背景音乐等,让合成的语音更加生动自然。
注意事项
在使用CosyVoice3 AI配音服务,需要注意,如果是以下模型,才能使用SSML功能!
模型:仅cosyvoice-v3.5-flash、cosyvoice-v3.5-plus、cosyvoice-v3-flash、cosyvoice-v3-plus和cosyvoice-v2模型支持SSML功能
基本使用格式
所有SSML内容都必须包裹在 <speak> 标签中:
<speak>您要朗读的文本内容</speak>
常用功能详解
1. 调整语速
想让AI读得快一点或慢一点?使用 rate 属性:
<speak rate="2">我的语速比正常人快一倍</speak>
<speak rate="0.5">我的语速比较慢,适合听清楚每个字</speak>
- 取值范围:0.5 ~ 2(1为正常语速)
- 大于1:加快语速
- 小于1:减慢语速
2. 调整音调
想让声音更高亢或更低沉?使用 pitch 属性:
<speak pitch="1.5">我的声音比较高亢</speak>
<speak pitch="0.7">我的声音比较低沉</speak>
- 取值范围:0.5 ~ 2(1为正常音调)
- 大于1:升高音调
- 小于1:降低音调
3. 调整音量
控制声音大小,使用 volume 属性:
<speak volume="80">我的音量很大</speak>
<speak volume="30">我的音量比较小</speak>
- 取值范围:0 ~ 100(50为默认音量)
- 大于50:增大音量
- 小于50:减小音量
4. 添加停顿
在句子中加入适当的停顿,让朗读更有节奏感:
<speak>请闭上眼睛休息一下<break time="2s"/>好了,请睁开眼睛</speak>
<break/>:默认停顿1秒<break time="2s"/>:停顿2秒<break time="500ms"/>:停顿500毫秒(0.5秒)
注意:连续停顿总时长不能超过10秒。
5. 组合多种效果
您可以同时设置多个属性,用空格分隔:
<speak rate="1.2" pitch="1.1" volume="70">
我语速稍快,音调偏高,音量适中
</speak>
6. 指定文本朗读方式
对于一些特殊文本,可以告诉AI如何正确朗读:
数字读法
<say-as interpret-as="cardinal">12345</say-as> <!-- 读作:一万二千三百四十五 -->
<say-as interpret-as="digits">12345</say-as> <!-- 读作:一二三四五 -->
电话号码
<say-as interpret-as="telephone">13800138000</say-as>
<!-- 按手机号格式朗读 -->
日期
<say-as interpret-as="date">2024-03-28</say-as>
<!-- 读作:二零二四年三月二十八日 -->
时间
<say-as interpret-as="time">14:30</say-as>
<!-- 读作:十四点三十分 -->
金额
<say-as interpret-as="currency">100.50 RMB</say-as>
<!-- 读作:一百点五零人民币 -->
地址
<say-as interpret-as="address">北京市朝阳区建国路1号</say-as>
逐个读字符
<say-as interpret-as="characters">ISBN 978-7-111</say-as>
<!-- 逐个读出每个字符 -->
7. 自定义发音
如果AI读错了某个词,您可以指定正确的读法:
替换文本
<sub alias="世界贸易组织">WTO</sub>
<!-- 将WTO读作"世界贸易组织" -->
指定拼音(中文)
<phoneme alphabet="py" ph="dian3 dang4 hang2">典当行</phoneme>
<!-- 指定"典当行"的拼音,数字1-5表示声调 -->
指定音标(英文)
<phoneme alphabet="cmu" ph="S AY N">sin</phoneme>
8. 添加音效
为语音添加有趣的音效效果:
<speak effect="robot">我是机器人瓦力</speak>
<speak effect="lolita">我是萝莉音</speak>
<speak effect="echo">我有回声音效</speak>
可选音效:
robot:机器人音效lolita:萝莉音效echo:回声音效lowpass:低通音效
9. 插入音效文件
在语音中插入提示音、环境音等:
<speak>一匹马受了惊吓<soundEvent src="http://example.com/horse.wav"/>人们四散躲避</speak>
音频要求:
- 格式:WAV
- 采样率:16kHz
- 声道:单声道
- 大小:不超过2MB
10. 添加背景音乐
为合成的语音配上背景音乐:
<speak bgm="http://example.com/music.wav" backgroundMusicVolume="30">
<break time="2s"/>
这是带背景音乐的朗读内容
<break time="2s"/>
</speak>
注意:
- 背景音乐会自动循环播放以匹配语音长度
- 如果合成内容超过背景音乐时长,音乐会重复播放
完整示例
<speak rate="1.1" volume="60">
大家好,欢迎收听今天的节目。
<break time="1s"/>
今天我们要讲的是<say-as interpret-as="date">2024年3月28日</say-as>的新闻。
<break time="500ms"/>
首先,<sub alias="人工智能">AI</sub>技术正在快速发展。
<break time="1s"/>
感谢收听,我们下期再见!
</speak>
使用注意事项
- 特殊字符转义:如果文本中包含
"、'、&、<、>等特殊符号,需要进行转义:"→"&→&<→<>→>
- 标签不能嵌套:
<speak>标签不能嵌套在另一个<speak>标签内 - 支持的模型:SSML功能需要特定的模型版本支持,请确认您使用的模型支持SSML
- 支持的音色:并非所有音色都支持SSML功能,请使用支持SSML的音色
快速参考表
| 功能 | 标签/属性 | 示例 |
|---|---|---|
| 语速 | rate |
<speak rate="1.5">快语速</speak> |
| 音调 | pitch |
<speak pitch="0.8">低音调</speak> |
| 音量 | volume |
<speak volume="80">大音量</speak> |
| 停顿 | <break/> |
<break time="2s"/> |
| 数字 | interpret-as="cardinal" |
<say-as interpret-as="cardinal">123</say-as> |
| 电话号码 | interpret-as="telephone" |
<say-as interpret-as="telephone">13800138000</say-as> |
| 日期 | interpret-as="date" |
<say-as interpret-as="date">2024-03-28</say-as> |
| 时间 | interpret-as="time" |
<say-as interpret-as="time">14:30</say-as> |
| 金额 | interpret-as="currency" |
<say-as interpret-as="currency">100 RMB</say-as> |
| 替换文本 | <sub alias="..."> |
<sub alias="世界贸易组织">WTO</sub> |
| 指定拼音 | <phoneme alphabet="py"> |
<phoneme alphabet="py" ph="zhong1 guo2">中国</phoneme> |
| 音效 | effect |
<speak effect="robot">机器人</speak> |
| 插入音效 | <soundEvent/> |
<soundEvent src="xxx.wav"/> |
| 背景音乐 | bgm |
<speak bgm="xxx.wav">内容</speak> |
希望这篇说明能帮助您更好地使用CosyVoice的SSML功能,创造出更自然、更生动的语音效果!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


评论(0)