语音合成-通义千问提供多种拟人音色,支持多语言及方言,并可在同一音色下输出多语言内容。系统可自适应语气,流畅处理复杂文本。
本文档仅适用于中国大陆版(北京)。如需使用模型,需使用中国大陆版(北京)的API Key。
支持的模型
推荐使用 Qwen3-TTS。
Qwen3-TTS 拥有 17种音色,支持多种语言及方言。
Qwen-TTS 最多拥有7种音色,且只支持中文和英文。
Qwen3-TTS
模型名称 | 版本 | 单价 | 最大输入字符数 | 支持的语种 | 免费额度(注) |
qwen3-tts-flash 当前能力等同 qwen3-tts-flash-2025-09-18 | 稳定版 | 0.8元/万字符 | 600 | 中文(普通话、北京、上海、四川、南京、陕西、闽南、天津、粤语)、英文、西班牙语、俄语、意大利语、法语、韩语、日语、德语、葡萄牙语 | 各2000字符 有效期:百炼开通后90天内 |
qwen3-tts-flash-2025-09-18 | 快照版 |
Qwen3-TTS 按输入的字符数计费,计算规则如下:
一个汉字 = 2个字符
一个英文字母、一个标点符号、一个空格 = 1个字符
Qwen-TTS
模型名称 | 版本 | 上下文长度 | 最大输入 | 最大输出 | 输入成本 | 输出成本 | 免费额度 |
(Token数) | (每千Token) | ||||||
qwen-tts 当前与 qwen-tts-2025-04-10 能力相同 | 稳定版 | 8,192 | 512 | 7,680 | 0.0016元 | 0.01元 | 各100万Token 有效期:百炼开通后90天内 |
qwen-tts-latest 始终与最新快照版能力相同 | 最新版 | ||||||
qwen-tts-2025-05-22 | 快照版 | ||||||
qwen-tts-2025-04-10 | |||||||
音频转换为 Token 的规则:每1秒的音频对应 50个 Token 。若音频时长不足1秒,则按 50个 Token 计算。
功能特性
功能特性 | Qwen3-TTS | Qwen-TTS |
接入方式 | Python、Java、HTTP | |
流式输出 | 支持 | |
流式输入 | 不支持 Qwen-TTS Realtime API 支持流式输入。 | |
合成音频格式 |
| |
合成音频采样率 | 24kHz | |
时间戳 | 不支持 | |
语言 | 中文(普通话、北京、上海、四川、南京、陕西、闽南、天津、粤语)、英文、西班牙语、俄语、意大利语、法语、韩语、日语、德语、葡萄牙语,因音色而异,详情请参见支持的音色 | 中文(普通话、北京、上海、四川)、英文,因模型和音色而异,详情请参见支持的音色 |
声音复刻 | 不支持 | |
SSML | 不支持 | |
快速开始
准备工作
如果通过 DashScope SDK 进行调用,需要安装最新版SDK。DashScope Java SDK 版本需要不低于 2.21.9,DashScope Python SDK 版本需要不低于 1.24.6。
说明DashScope Python SDK中的
SpeechSynthesizer接口已统一为MultiModalConversation,使用新接口只需替换接口名称即可,其他参数完全兼容。
关键参数
text:用于指定文本voice:用于指定音色language_type:指定合成音频的语种,可选值有Chinese、English、German、Italian、Portuguese、Spanish、Japanese、Korean、French、Russian、Auto(默认)。
通过返回的url来获取合成的语音。URL 有效期为24 小时。
# DashScope SDK 版本不低于 1.24.6
import os
import requests
import dashscope
text = "那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。"
# SpeechSynthesizer接口使用方法:dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
model="qwen3-tts-flash",
api_key=os.getenv("DASHSCOPE_API_KEY"),
text=text,
voice="Cherry",
language_type="Chinese", # 建议与文本语种一致,以获得正确的发音和自然的语调。
stream=False
)
audio_url = response.output.audio.url
save_path = "downloaded_audio.wav" # 自定义保存路径
try:
response = requests.get(audio_url)
response.raise_for_status() # 检查请求是否成功
with open(save_path, 'wb') as f:
f.write(response.content)
print(f"音频文件已保存至:{save_path}")
except Exception as e:
print(f"下载失败:{str(e)}")
// DashScope SDK 版本不低于2.21.9
// 2.20.7 及以上版本支持指定 Dylan、Jada与 Sunny 三种音色
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.protocol.Protocol;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
public class Main {
private static final String MODEL = "qwen3-tts-flash";
public static void call() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model(MODEL)
.text("Today is a wonderful day to build something people love!")
.voice(AudioParameters.Voice.CHERRY)
.languageType("English") // 建议与文本语种一致,以获得正确的发音和自然的语调。
.build();
MultiModalConversationResult result = conv.call(param);
String audioUrl = result.getOutput().getAudio().getUrl();
System.out.print(audioUrl);
// 下载音频文件到本地
try (InputStream in = new URL(audioUrl).openStream();
FileOutputStream out = new FileOutputStream("downloaded_audio.wav")) {
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
System.out.println("\n音频文件已下载到本地: downloaded_audio.wav");
} catch (Exception e) {
System.out.println("\n下载音频文件时出错: " + e.getMessage());
}
}
public static void main(String[] args) {
try {
call();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl -X POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-tts-flash",
"input": {
"text": "那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。",
"voice": "Cherry",
"language_type": "Chinese"
}
}'实时播放
Qwen-TTS 模型可以流式地将音频数据以 Base64 格式进行输出,并在最后一个数据包中包含完整音频的 URL。
# DashScope SDK 版本不低于 1.24.6
# coding=utf-8
#
# Installation instructions for pyaudio:
# APPLE Mac OS X
# brew install portaudio
# pip install pyaudio
# Debian/Ubuntu
# sudo apt-get install python-pyaudio python3-pyaudio
# or
# pip install pyaudio
# CentOS
# sudo yum install -y portaudio portaudio-devel && pip install pyaudio
# Microsoft Windows
# python -m pip install pyaudio
import os
import dashscope
import pyaudio
import time
import base64
import numpy as np
p = pyaudio.PyAudio()
# 创建音频流
stream = p.open(format=pyaudio.paInt16,
channels=1,
rate=24000,
output=True)
text = "你好啊,我是通义千问"
response = dashscope.MultiModalConversation.call(
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3-tts-flash",
text=text,
voice="Cherry",
language_type="Chinese", # 建议与文本语种一致,以获得正确的发音和自然的语调。
stream=True
)
for chunk in response:
audio = chunk.output.audio
if audio.data is not None:
wav_bytes = base64.b64decode(audio.data)
audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
# 直接播放音频数据
stream.write(audio_np.tobytes())
if chunk.output.finish_reason == "stop":
print("finish at: {} ", chunk.output.audio.expires_at)
time.sleep(0.8)
# 清理资源
stream.stop_stream()
stream.close()
p.terminate()
// DashScope SDK 版本不低于2.21.9
// 2.20.7 及以上版本支持指定 Dylan、Jada与 Sunny 三种音色
import com.alibaba.dashscope.aigc.multimodalconversation.AudioParameters;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.protocol.Protocol;
import io.reactivex.Flowable;
import javax.sound.sampled.*;
import java.util.Base64;
public class Main {
private static final String MODEL = "qwen3-tts-flash";
public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model(MODEL)
.text("Today is a wonderful day to build something people love!")
.voice(AudioParameters.Voice.CHERRY)
.languageType("English") // 建议与文本语种一致,以获得正确的发音和自然的语调。
.build();
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(r -> {
try {
// 1. 获取Base64编码的音频数据
String base64Data = r.getOutput().getAudio().getData();
byte[] audioBytes = Base64.getDecoder().decode(base64Data);
// 2. 配置音频格式(根据API返回的音频格式调整)
AudioFormat format = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
24000, // 采样率(需与API返回格式一致)
16, // 采样位数
1, // 声道数
2, // 帧大小(位数/字节数)
16000, // 数据传输率
false // 是否压缩
);
// 3. 实时播放音频数据
DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
try (SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) {
if (line != null) {
line.open(format);
line.start();
line.write(audioBytes, 0, audioBytes.length);
line.drain();
}
}
} catch (LineUnavailableException e) {
e.printStackTrace();
}
});
}
public static void main(String[] args) {
try {
streamCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
curl -X POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3-tts-flash",
"input": {
"text": "那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。",
"voice": "Cherry",
"language_type": "Chinese"
}
}'API 参考
请参见语音合成(Qwen-TTS)。
支持的音色
不同模型支持的音色有所差异,使用时将请求参数voice设置为如下表格的voice参数列对应的值:
Qwen3-TTS
音色名 |
| 音色效果 | 描述 | 支持的语种 |
芊悦 | Cherry | 阳光积极、亲切自然小姐姐。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
晨煦 | Ethan | 标准普通话,带部分北方口音。阳光、温暖、活力、朝气。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
不吃鱼 | Nofish | 不会翘舌音的设计师。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
詹妮弗 | Jennifer | 品牌级、电影质感般美语女声。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
甜茶 | Ryan | 节奏拉满,戏感炸裂,真实与张力共舞。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
卡捷琳娜 | Katerina | 御姐音色,韵律回味十足。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
墨讲师 | Elias | 既保持学科严谨性,又通过叙事技巧将复杂知识转化为可消化的认知模块。 | 中文、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
上海-阿珍 | Jada | 风风火火的沪上阿姐。 | 中文(上海话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
北京-晓东 | Dylan | 北京胡同里长大的少年。 | 中文(北京话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
四川-晴儿 | Sunny | 甜到你心里的川妹子。 | 中文(四川话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
南京-老李 | Li | 耐心的瑜伽老师 | 中文(南京话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
陕西-秦川 | Marcus | 面宽话短,心实声沉——老陕的味道。 | 中文(陕西话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
闽南-阿杰 | Roy | 诙谐直爽、市井活泼的台湾哥仔形象。 | 中文(闽南语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
天津-李彼得 | Peter | 天津相声,专业捧人。 | 中文(天津话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
粤语-阿强 | Rocky | 幽默风趣的阿强,在线陪聊。 | 中文(粤语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
粤语-阿清 | Kiki | 甜美的港妹闺蜜。 | 中文(粤语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | |
四川-程川 | Eric | 一个跳脱市井的四川成都男子。 | 中文(四川话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 |
Qwen-TTS
qwen-tts、qwen-tts-2025-05-22、qwen-tts-2025-04-10支持的音色:
音色名
voice参数音色效果
描述
支持的语种
芊悦
Cherry
阳光积极、亲切自然小姐姐。
中文、英语
苏瑶
Serena
温柔小姐姐。
中文、英语
晨煦
Ethan
标准普通话,带部分北方口音。阳光、温暖、活力、朝气。
中文、英语
千雪
Chelsie
二次元虚拟女友。
中文、英语
qwen-tts-latest、qwen-tts-2025-05-22支持的音色:
音色名
voice参数音色效果
描述
支持的语种
芊悦
Cherry
阳光积极、亲切自然小姐姐。
中文、英语
苏瑶
Serena
温柔小姐姐。
中文、英语
晨煦
Ethan
标准普通话,带部分北方口音。阳光、温暖、活力、朝气。
中文、英语
千雪
Chelsie
二次元虚拟女友。
中文、英语
四川-晴儿
Sunny
甜到你心里的川妹子。
中文(四川话)、英语
上海-阿珍
Jada
风风火火的沪上阿姐。
中文(上海话)、英语
北京-晓东
Dylan
北京胡同里长大的少年。
中文(北京话)、英语
常见问题
Q:音频文件链接的有效期是多久?
A:24小时后音频文件链接将失效。
Q:可以输入 Markdown 格式的文本吗?
A:暂不支持 Markdown 格式,建议您转换为纯文本后再输入。