语音合成,又称文本转语音(Text-to-Speech,TTS),是将文本转换为自然语音的技术。该技术基于机器学习算法,通过学习大量语音样本,掌握语言的韵律、语调和发音规则,从而在接收到文本输入时生成真人般自然的语音内容。
核心功能
-
实时生成高保真语音,支持中英等多语种自然发声
-
提供声音复刻与声音设计两种音色定制方式
-
支持流式输入输出,低延迟响应实时交互场景
-
可调节语速、语调、音量与码率,精细控制语音表现
-
兼容主流音频格式,最高支持48kHz采样率输出
适用范围
支持的模型:
中国内地
服务部署范围为中国内地时,数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
调用以下模型时,请选择北京地域的API Key:
-
CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash、cosyvoice-v2、cosyvoice-v1
-
Sambert:sambert-zhinan-v1、sambert-zhiqi-v1、sambert-zhichu-v1、sambert-zhide-v1、sambert-zhijia-v1、sambert-zhiru-v1、sambert-zhiqian-v1、sambert-zhixiang-v1、sambert-zhiwei-v1、sambert-zhihao-v1、sambert-zhijing-v1、sambert-zhiming-v1、sambert-zhimo-v1、sambert-zhina-v1、sambert-zhishu-v1、sambert-zhistella-v1、sambert-zhiting-v1、sambert-zhixiao-v1、sambert-zhiya-v1、sambert-zhiye-v1、sambert-zhiying-v1、sambert-zhiyuan-v1、sambert-zhiyue-v1、sambert-zhigui-v1、sambert-zhishuo-v1、sambert-zhimiao-emo-v1、sambert-zhimao-v1、sambert-zhilun-v1、sambert-zhifei-v1、sambert-zhida-v1、sambert-camila-v1、sambert-perla-v1、sambert-indah-v1、sambert-clara-v1、sambert-hanna-v1、sambert-beth-v1、sambert-betty-v1、sambert-cally-v1、sambert-cindy-v1、sambert-eva-v1、sambert-donna-v1、sambert-brian-v1、sambert-waan-v1,详情请参见Sambert模型列表
国际
服务部署范围为国际时,数据存储位于新加坡接入地域,模型推理计算资源在全球范围内动态调度(不含中国内地)。
调用以下模型时,请选择新加坡地域的API Key:
-
CosyVoice:cosyvoice-v3-plus、cosyvoice-v3-flash
更多信息请参见模型列表
模型选型
|
场景 |
推荐模型 |
理由 |
注意事项 |
|
品牌形象、专属声音、扩展系统音色等语音定制(基于文本描述) |
cosyvoice-v3.5-plus |
支持声音设计,无需音频样本,通过文本描述创建定制化音色,适合从零开始设计品牌专属声音 |
cosyvoice-v3.5-plus 仅在北京地域可用,且不支持系统音色 |
|
品牌形象、专属声音、扩展系统音色等语音定制(基于音频样本) |
cosyvoice-v3.5-plus |
支持声音复刻,基于真实音频样本快速复刻音色,打造拟人化品牌声纹,确保音色高度还原与一致性 |
cosyvoice-v3.5-plus 仅在北京地域可用,且不支持系统音色 |
|
智能客服 / 语音助手 |
cosyvoice-v3-flash、cosyvoice-v3.5-flash |
比plus模型成本低,支持流式交互、情感表达,响应快,性价比高 |
cosyvoice-v3.5-flash 仅在北京地域可用,且不支持系统音色 |
|
移动端嵌入式语音合成 |
CosyVoice全系列 |
SDK全覆盖,资源优化好,流式支持强,延迟可控 |
cosyvoice-v1不支持 SSML |
|
方言广播系统 |
cosyvoice-v3.5-plus |
支持东北话、闽南语等多种方言,适合地方内容播报 |
cosyvoice-v3.5-plus仅在北京地域可用,且不支持系统音色 |
|
教育类应用(含公式朗读) |
cosyvoice-v2、cosyvoice-v3-flash、cosyvoice-v3-plus |
支持LaTeX公式转语音,适合数理化课程讲解 |
cosyvoice-v2和cosyvoice-v3-plus成本较高(2元/万字符),cosyvoice-v2不支持设置情感 |
|
结构化语音播报(新闻/公告) |
cosyvoice-v3-plus、cosyvoice-v3-flash、cosyvoice-v2 |
支持SSML控制语速、停顿、发音等,提升播报专业度 |
需额外开发 SSML 生成逻辑,不支持设置情感 |
|
语音与文本精准对齐(如字幕生成、教学回放、听写训练) |
cosyvoice-v3-flash、cosyvoice-v3-plus、cosyvoice-v2/Sambert |
支持时间戳输出,可实现合成语音与原文同步 |
需显式启用时间戳功能,默认关闭,cosyvoice-v2不支持设置情感,Sambert不支持流式输入 |
|
多语言出海产品 |
cosyvoice-v3-flash、cosyvoice-v3-plus、Sambert |
支持多语种 |
Sambert不支持流式输入,价格高于cosyvoice-v3-flash |
不同地域和模型的能力存在差异,请仔细阅读模型功能特性对比后再选择使用
快速开始
下面是调用API的示例代码。更多常用场景的代码示例,请参见GitHub。
您需要已获取API Key并配置API Key到环境变量。如果通过SDK调用,还需要安装DashScope SDK。
|
CosyVoice 重要
使用系统音色进行语音合成以下示例演示如何使用系统音色(参见音色列表)进行语音合成。 将合成音频保存为文件Python
Javaimport com.alibaba.dashscope.audio.ttsv2.SpeechSynthesisParam;
import com.alibaba.dashscope.audio.ttsv2.SpeechSynthesizer;
import com.alibaba.dashscope.utils.Constants;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
public class Main {
// 模型
// 不同模型版本需要使用对应版本的音色:
// cosyvoice-v3-flash/cosyvoice-v3-plus:使用longanyang等音色。
// cosyvoice-v2:使用longxiaochun_v2等音色。
// 每个音色支持的语言不同,合成日语、韩语等非中文语言时,需选择支持对应语言的音色。详见CosyVoice音色列表。
private static String model = “cosyvoice-v3-flash”;
// 音色
private static String voice = “longanyang”;
public static void streamAudioDataToSpeaker() {
// 请求参数
SpeechSynthesisParam param =
SpeechSynthesisParam.builder()
// 新加坡地域和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey(“sk-xxx”)
.apiKey(System.getenv(“DASHSCOPE_API_KEY”))
.model(model) // 模型
.voice(voice) // 音色
.build();
// 同步模式:禁用回调(第二个参数为null)
SpeechSynthesizer synthesizer = new SpeechSynthesizer(param, null);
ByteBuffer audio = null;
try {
// 阻塞直至音频返回
audio = synthesizer.call(“今天天气怎么样?”);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
// 任务结束关闭websocket连接
synthesizer.getDuplexApi().close(1000, “bye”);
}
if (audio != null) {
// 将音频数据保存到本地文件”output.mp3”中
File file = new File(“output.mp3”);
// 首次发送文本时需建立 WebSocket 连接,因此首包延迟会包含连接建立的耗时
// 注意:getFirstPackageDelay() 需要 dashscope-sdk-java 2.18.0 及以上版本
System.out.println(
“[Metric] requestId为:”
+ synthesizer.getLastRequestId()
+ “首包延迟(毫秒)为:”
+ synthesizer.getFirstPackageDelay());
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(audio.array());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
public static void main(String[] args) {
// 以下为新加坡地域url,若使用北京地域的模型,需将url替换为:wss://dashscope.aliyuncs.com/api-ws/v1/inference
Constants.baseWebsocketApiUrl = “wss://dashscope-intl.aliyuncs.com/api-ws/v1/inference”;
streamAudioDataToSpeaker();
System.exit(0);
}
}将LLM生成的文本实时转成语音并通过扬声器播放以下代码展示通过本地设备播放千问大语言模型(qwen-turbo)实时返回的文本内容。 重要 以下示例代码需要在具备音频输出设备(如扬声器或耳机)的环境中运行。在无音频设备的服务器上运行可能会报错。如果只需要获取合成音频数据而不进行播放,请参考将合成音频保存为文件的示例。 Python运行Python示例前,需要通过pip安装第三方音频播放库。
Java
使用声音复刻音色进行语音合成声音复刻与语音合成是紧密关联的两个独立步骤,遵循“先创建,后使用”的流程:
示例代码: 使用声音设计音色进行语音合成声音设计与语音合成是紧密关联的两个独立步骤,遵循“先创建,后使用”的流程:
示例代码:
|
|
Sambert 将合成音频保存为文件将合成的音频通过扬声器播放合成语音后,通过本地设备播放实时返回的音频内容。 重要 以下示例代码需要在具备音频输出设备(如扬声器或耳机)的环境中运行。在无音频设备的服务器上运行可能会报错。如果只需要获取合成音频数据而不进行播放,请参考将合成音频保存为文件的示例。 运行Python示例前,需要通过pip安装第三方音频播放库。 |
声音复刻:输入音频格式
新加坡地域不支持该功能。
高质量的输入音频是获得优质复刻效果的基础。
|
项目 |
要求 |
|
支持格式 |
WAV (16bit), MP3, M4A |
|
音频时长 |
推荐10~20秒,最长不得超过60秒 |
|
文件大小 |
≤ 10 MB |
|
采样率 |
≥ 16 kHz |
|
声道 |
单声道 / 双声道,双声道音频仅处理首声道,请确保首声道包含有效人声 |
|
内容 |
音频必须包含至少5秒连续清晰朗读(无背景音),其余部分仅允许短暂停顿(≤2秒);整段音频应避免背景音乐、噪音或其他人声,确保核心朗读内容质量;请使用正常说话音频作为输入,不要上传歌曲或唱歌音频,以确保复刻效果准确和可用。 |
声音设计:如何编写高质量的声音描述?
新加坡地域不支持该功能。
要求与限制
在编写声音描述(voice_prompt)时,请务必遵循以下技术约束:
-
长度限制:
voice_prompt的内容长度不得超过 500 个字符。 -
支持语言:描述文本仅支持中文和英文。
核心原则
高质量的声音描述(voice_prompt)是成功创建理想音色的关键。它如同声音设计的“蓝图”,直接指导模型生成具有特定特征的声音。
请遵循以下核心原则对声音进行描述:
-
具体而非模糊:使用能够描绘具体声音特质的词语,如“低沉”、“清脆”、“语速偏快”。避免使用“好听”、“普通”等主观且缺乏信息量的词汇。
-
多维而非单一:优秀的描述通常结合多个维度(如下文所述的性别、年龄、情感等)。单一维度的描述(如仅“女声”)过于宽泛,难以生成特色鲜明的音色。
-
客观而非主观:专注于声音本身的物理和感知特征,而不是个人的喜好。例如,用“音调偏高,带有活力”代替“我最喜欢的声音”。
-
原创而非模仿:请描述声音的特质,而不是要求模仿特定人物(如名人、演员)。此类请求涉及版权风险且模型不支持直接模仿。
-
简洁而非冗余:确保每个词都有其意义。避免重复使用同义词或无意义的强调词(如“非常非常棒的声音”)。
描述维度参考
|
维度 |
描述示例 |
|
性别 |
男性、女性、中性 |
|
年龄 |
儿童 (5-12岁)、青少年 (13-18岁)、青年 (19-35岁)、中年 (36-55岁)、老年 (55岁以上) |
|
音调 |
高音、中音、低音、偏高、偏低 |
|
语速 |
快速、中速、缓慢、偏快、偏慢 |
|
情感 |
开朗、沉稳、温柔、严肃、活泼、冷静、治愈 |
|
特点 |
有磁性、清脆、沙哑、圆润、甜美、浑厚、有力 |
|
用途 |
新闻播报、广告配音、有声书、动画角色、语音助手、纪录片解说 |
示例对比
✅ 推荐示例
-
“年轻活泼的女性声音,语速较快,带有明显的上扬语调,适合介绍时尚产品。”
分析:结合了年龄、性格、语速和语调,并指明了适用场景,形象立体。
-
“沉稳的中年男性,语速缓慢,音色低沉有磁性,适合朗读新闻或纪录片解说。”
分析:清晰定义了性别、年龄段、语速、音色特点和应用领域。
-
“可爱的儿童声音,大约8岁女孩,说话略带稚气,适合动画角色配音。”
分析:精确到具体年龄和声音特质(稚气),目标明确。
-
“温柔知性的女性,30岁左右,语调平和,适合有声书朗读。”
分析:通过“知性”、“平和”等词汇,有效传递了声音的情感和风格。
❌ 不推荐示例与改进建议
|
不推荐示例 |
主要问题 |
改进建议 |
|
好听的声音 |
过于模糊,主观性强,缺乏可执行的特征。 |
添加具体维度,如:“声线清澈的青年女声,语调温柔”。 |
|
像某明星的声音 |
涉及版权风险,模型无法直接模仿。 |
提取其声音特质进行描述,如:“声音成熟、富有磁性、语速沉稳的男声”。 |
|
非常非常非常好听的女声 |
信息冗余,重复词汇无助于定义音色。 |
移除重复词,并增加有效描述,如:“一个20~24岁,语气轻快、音调活泼、音色甜美的女声”。 |
|
123456 |
无效输入,无法解析为声音特征。 |
请提供有意义的文本描述,参考上方的推荐示例。 |
API参考
模型应用上架及备案
参见应用合规备案。
模型功能特性对比
中国内地
服务部署范围为中国内地时,数据存储位于北京接入地域,模型推理计算资源仅限于中国内地。
|
功能/特性 |
cosyvoice-v3.5-plus |
cosyvoice-v3.5-flash |
cosyvoice-v3-plus |
cosyvoice-v3-flash |
cosyvoice-v2 |
cosyvoice-v1 |
Sambert |
|
支持语言 |
无系统音色,复刻音色支持如下语言:中文(普通话、广东话、河南话、湖北话、闽南话、宁夏话、陕西话、山东话、上海话、四川话)、英文、法语、德语、日语、韩语、俄语、葡萄牙语、泰语、印尼语、越南语 声音设计音色支持如下语言:中文(普通话)、英文 |
系统音色(因音色而异):中文(普通话、东北话、闽南话、陕西话)、英文、日语、韩语 复刻音色:中文(普通话)、英文、法语、德语、日语、韩语、俄语 |
系统音色(因音色而异):中文(普通话)、英文 复刻音色:中文(普通话、广东话、东北话、甘肃话、贵州话、河南话、湖北话、江西话、闽南话、宁夏话、山西话、陕西话、山东话、上海话、四川话、天津话、云南话)、英文、法语、德语、日语、韩语、俄语、葡萄牙语、泰语、印尼语、越南语 |
系统音色(因音色而异):中文(普通话)、英文、韩语、日语 复刻音色:中文(普通话)、英文 |
系统音色(因音色而异):中文(普通话)、英文 复刻音色:中文(普通话)、英文 |
因音色而异:中文、英文、美式英文、意大利语、西班牙语、印尼语、法语、德语、泰语 |
|
|
音频格式 |
pcm、wav、mp3、opus |
pcm、wav、mp3 |
|||||
|
音频采样率 |
8kHz、16kHz、22.05kHz、24kHz、44.1kHz、48kHz |
16kHz、48kHz |
|||||
|
声音复刻 |
使用方法请参见CosyVoice声音复刻/设计API 声音复刻支持的语言如下: cosyvoice-v1、cosyvoice-v2:中文(普通话)、英文 cosyvoice-v3-flash:中文(普通话、广东话、东北话、甘肃话、贵州话、河南话、湖北话、江西话、闽南话、宁夏话、山西话、陕西话、山东话、上海话、四川话、天津话、云南话)、英文、法语、德语、日语、韩语、俄语、葡萄牙语、泰语、印尼语、越南语 cosyvoice-v3-plus:中文(普通话)、英文、法语、德语、日语、韩语、俄语 cosyvoice-v3.5-plus、cosyvoice-v3.5-flash:中文(普通话、广东话、河南话、湖北话、闽南话、宁夏话、陕西话、山东话、上海话、四川话)、英文、法语、德语、日语、韩语、俄语、葡萄牙语、泰语、印尼语、越南语 |
|
|||||
|
声音设计 |
使用方法请参见CosyVoice声音复刻/设计API 声音设计支持的语言:中文、英文 |
|
|||||
|
SSML |
该功能适用于复刻音色,以及音色列表中已标记为支持 SSML 的系统音色 使用方法请参见SSML标记语言介绍 |
|
|
||||
|
LaTeX |
使用方法请参见LaTeX 公式转语音 |
|
|||||
|
音量调节 |
使用方法请参见请求参数
|
||||||
|
语速调节 |
使用方法请参见请求参数
在 Java SDK 中,该参数为
|
||||||
|
语调(音高)调节 |
使用方法请参见请求参数
在 Java SDK 中,该参数为
|
||||||
|
码率调节 |
仅opus格式音频支持该功能 使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
|||||
|
时间戳 |
默认关闭,可开启 该功能适用于复刻音色,以及音色列表中已标记为支持时间戳的系统音色 使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
默认关闭,可开启 |
||||
|
指令控制(Instruct) |
该功能适用于复刻音色,以及音色列表中已标记为支持 Instruct 的系统音色 适合视频配音、有声书等表现力夸张的场景,若还原原始音色韵律,则无需开启 Instruct指令与音色原本风格冲突时,可能会无法生效(如:对开心的音色,使用悲伤的指令) 使用方法请参见请求参数
|
|
该功能适用于复刻音色,以及音色列表中已标记为支持 Instruct 的系统音色 使用方法请参见请求参数
|
|
|||
|
流式输入 |
|
|
|||||
|
流式输出 |
|
||||||
|
限流(RPS) |
3 |
20 |
|||||
|
接入方式 |
Java/Python/Android/iOS SDK、WebSocket API |
||||||
|
价格 |
1.5元/万字符 |
0.8元/万字符 |
2元/万字符 |
1元/万字符 |
2元/万字符 |
1元/万字符 |
|
国际
服务部署范围为国际时,数据存储位于新加坡接入地域,模型推理计算资源在全球范围内动态调度(不含中国内地)。
|
功能/特性 |
cosyvoice-v3-plus |
cosyvoice-v3-flash |
|
支持语言 |
因系统音色而异:中文(普通话、东北话、闽南话、陕西话)、英文、日语、韩语 |
因系统音色而异:中文(普通话)、英文 |
|
音频格式 |
pcm、wav、mp3、opus |
|
|
音频采样率 |
8kHz、16kHz、22.05kHz、24kHz、44.1kHz、48kHz |
|
|
声音复刻 |
|
|
|
声音设计 |
|
|
|
SSML |
该功能适用于复刻音色,以及音色列表中已标记为支持 SSML 的系统音色 使用方法请参见SSML标记语言介绍 |
|
|
LaTeX |
使用方法请参见LaTeX 公式转语音 |
|
|
音量调节 |
使用方法请参见请求参数
|
|
|
语速调节 |
使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
|
语调(音高)调节 |
使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
|
码率调节 |
仅opus格式音频支持该功能 使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
|
时间戳 |
默认关闭,可开启 该功能适用于复刻音色,以及音色列表中已标记为支持时间戳的系统音色 使用方法请参见请求参数
在 Java SDK 中,该参数为
|
|
|
指令控制(Instruct) |
|
该功能适用于音色列表中已标记为支持 Instruct 的系统音色 使用方法请参见请求参数
|
|
流式输入 |
|
|
|
流式输出 |
|
|
|
限流(RPS) |
3 |
|
|
接入方式 |
Java/Python/Android/iOS SDK、WebSocket API |
|
|
价格 |
1.9082元/万字符 |
0.9541元/万字符 |
支持的系统音色
常见问题
Q:语音合成的发音读错怎么办?多音字如何控制发音?
-
将多音字替换成同音的其他汉字,快速解决发音问题。
-
使用SSML标记语言控制发音:Sambert和Cosyvoice都支持SSML。
Q:使用复刻音色生成的音频无声音如何排查?
-
确认音色状态
调用CosyVoice声音复刻/设计API接口,查看音色
status是否为OK。 -
检查模型版本一致性
确保复刻音色时使用的
target_model参数与语音合成时的model参数完全一致。例如:-
复刻时使用
cosyvoice-v3-plus -
合成时也必须使用
cosyvoice-v3-plus
-
-
验证源音频质量
检查复刻音色时使用的源音频是否符合CosyVoice声音复刻/设计API:
-
音频时长:10-20秒
-
音质清晰
-
无背景噪音
-
-
检查请求参数
确认语音合成时请求参数
voice设置为复刻音色的ID。
Q:声音复刻后合成效果不稳定或语音不完整如何处理?
如果复刻音色后合成的语音出现以下问题:
-
语音播放不完整,只读出部分文字
-
合成效果不稳定,时好时坏
-
语音中包含异常停顿或静音段
可能原因:源音频质量不符合要求
解决方案:检查源音频是否符合如下要求,建议按照录音操作指南重新录制
-
检查音频连续性:确保源音频中语音内容连续,避免长时间停顿或静音段(超过2秒)。如果音频中存在明显的空白段,会导致模型将静音或噪声作为音色特征的一部分,影响生成效果
-
检查语音活动比例:确保有效语音占音频总时长的60%以上。如果背景噪声、非语音段过多,会干扰音色特征提取
-
验证音频质量细节:
-
音频时长:10-20秒(推荐15秒左右)
-
发音清晰,语速平稳
-
无背景噪音、回音、杂音
-
语音能量集中,无长时间静音段
-