什么是SSML?

SSML(Speech Synthesis Markup Language,语音合成标记语言)是一种特殊的文本标记方式。通过使用SSML,您可以像"导演"一样指导AI如何朗读文本——控制语速快慢、语调高低、音量大小,还能添加停顿、音效、背景音乐等,让合成的语音更加生动自然。

CosyVoice语音合成SSML标记语言使用说明 1

注意事项

在使用CosyVoice3 AI配音服务,需要注意,如果是以下模型,才能使用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>

使用注意事项

  1. 特殊字符转义:如果文本中包含 "'&<> 等特殊符号,需要进行转义:
    • "&quot;
    • &&amp;
    • <&lt;
    • >&gt;
  2. 标签不能嵌套<speak> 标签不能嵌套在另一个 <speak> 标签内
  3. 支持的模型:SSML功能需要特定的模型版本支持,请确认您使用的模型支持SSML
  4. 支持的音色:并非所有音色都支持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功能,创造出更自然、更生动的语音效果!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。