通义千问的语音合成模型

语音合成-通义千问提供多种拟人音色,支持多语言及方言,并可在同一音色下输出多语言内容。系统可自适应语气,流畅处理复杂文本。

重要

本文档仅适用于中国大陆版(北京)。如需使用模型,需使用中国大陆版(北京)的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

100Token

有效期:百炼开通后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 支持流式输入。

合成音频格式

  • wav

  • 流式输出 Base64 编码的 pcm

合成音频采样率

24kHz

时间戳

不支持

语言

中文(普通话、北京、上海、四川、南京、陕西、闽南、天津、粤语)、英文、西班牙语、俄语、意大利语、法语、韩语、日语、德语、葡萄牙语,因音色而异,详情请参见支持的音色

中文(普通话、北京、上海、四川)、英文,因模型和音色而异,详情请参见支持的音色

声音复刻

不支持

SSML

不支持

快速开始

准备工作

  • 配置 API Key配置API Key到环境变量

  • 如果通过 DashScope SDK 进行调用,需要安装最新版SDK。DashScope Java SDK 版本需要不低于 2.21.9,DashScope Python SDK 版本需要不低于 1.24.6。

    说明

    DashScope Python SDK中的SpeechSynthesizer接口已统一为MultiModalConversation,使用新接口只需替换接口名称即可,其他参数完全兼容。

关键参数

  • text:用于指定文本

  • voice:用于指定音色

  • language_type:指定合成音频的语种,可选值有ChineseEnglishGermanItalianPortugueseSpanishJapaneseKoreanFrenchRussianAuto(默认)。

通过返回的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

音色名

voice参数

音色效果

描述

支持的语种

芊悦

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 格式,建议您转换为纯文本后再输入。