语音合成(Qwen-TTS)

本文为您介绍 Qwen-TTS 模型的输入与输出参数。

Qwen-TTS 模型的使用方法请参见语音合成-通义千问

请求体

非流式输出

Python

DashScope Python SDK中的SpeechSynthesizer接口已统一为MultiModalConversation,使用方法和参数保持完全一致。
# 请安装 DashScope SDK 的最新版本
import os
import dashscope

text = "那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。"
# SpeechSynthesizer接口使用方法:dashscope.audio.qwen_tts.SpeechSynthesizer.call(...)
response = dashscope.MultiModalConversation.call(
    # 仅支持qwen-tts系列模型,请勿使用除此之外的其他模型
    model="qwen3-tts-flash",
    # 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    text=text,
    voice="Cherry",
    language_type="Chinese"
)
print(response)

Java

// 请安装 DashScope SDK 的最新版本
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.utils.JsonUtils;

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()
                // 仅支持qwen-tts系列模型,请勿使用除此之外的其他模型
                .model(MODEL)
                // 若没有配置环境变量,请用阿里云百炼API Key将下行替换为:apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .text("Today is a wonderful day to build something people love!")
                .voice(AudioParameters.Voice.CHERRY)
                .languageType("English")
                .build();
        MultiModalConversationResult result = conv.call(param);
        System.out.println(JsonUtils.toJson(result));
    }
    public static void main(String[] args) {
        try {
            call();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

若没有配置环境变量,请用阿里云百炼API Key将$DASHSCOPE_API_KEY替换为:sk-xxx。

仅支持Qwen-TTS系列模型,请勿使用除此之外的其他模型。

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"
    }
}'

流式输出

Python

DashScope Python SDK中的SpeechSynthesizer接口已统一为MultiModalConversation,使用新接口只需替换名称即可,其他参数完全兼容。
# DashScope SDK 版本不低于 1.24.5
import os
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=True
)
for chunk in response:
    print(chunk)

Java

// DashScope SDK 版本需要不低于 2.19.0
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.utils.JsonUtils;
import io.reactivex.Flowable;

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)
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .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 -> {System.out.println(JsonUtils.toJson(r));
        });
    }
    public static void main(String[] args) {
        try {
            streamCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

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"
    }
}'
实时播放Base64 音频的方法请参见:实时播放

model string (必选)

模型名称,支持的模型请参见Qwen-TTS

text string (必选)

要合成的文本,支持中文、英文、中英混合输入。Qwen-TTS模型最长输入为512 Token。Qwen3-TTS模型最长输入为600字符。

voice string (必选)

使用的音色,参见支持的音色

language_type string (可选)

指定合成音频的语种,默认为 Auto

  • Auto:适用无法确定文本的语种或文本包含多种语言的场景,模型会自动为文本中的不同语言片段匹配各自的发音,但无法保证发音完全精准。

  • 指定语种:适用于文本为单一语种的场景,此时指定为具体语种,能显著提升合成质量,效果通常优于 Auto。可选值包括:

    • Chinese

    • English

    • German

    • Italian

    • Portuguese

    • Spanish

    • Japanese

    • Korean

    • French

    • Russian

stream boolean (可选)默认值为 false

是否流式输出回复。参数值:

  • 模型生成完后返回音频的 URL。

  • 边生成边输出 Base64 编码格式的音频数据。您需要实时地逐个读取这些片段以获得完整的结果。请参见:实时播放

该参数仅支持Python SDK。通过Java SDK实现流式输出请通过streamCall接口调用;通过HTTP实现流式输出请在Header中指定X-DashScope-SSEenable

返回对象(流式与非流式输出格式一致)

{
  "status_code": 200,
  "request_id": "3c88b429-eb67-49de-b708-fe4c994fbfba",
  "code": "",
  "message": "",
  "output": {
    "text": null,
    "finish_reason": "stop",
    "choices": null,
    "audio": {
      "data": "",
      "url": "http://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/1d/08/20250929/ffcf3aa4/e6cf58c8-33bd-47b9-941b-9a0652868b8c.wav?Expires=1759229218&OSSAccessKeyId=LTAI5xxx&Signature=bSfyEcJ3wjeq15h2ABgSdo1L3Pw%3D",
      "id": "audio_3c88b429-eb67-49de-b708-fe4c994fbfba",
      "expires_at": 1759229218
    }
  },
  "usage": {
    "input_tokens": 0,
    "output_tokens": 0,
    "characters": 195
  }
}

output object

模型的输出。

属性

finish_reason string

有两种情况:

  • 正在生成时为"null";

  • 因模型输出自然结束,或触发输入参数中的stop条件而结束时为"stop"。

audio object

模型输出的音频信息。

属性

url string

模型输出的完整音频文件的URL,有效期24小时。

data string

流式输出时的Base64 音频数据。

id string

模型输出的音频信息对应的ID。

expires_at integer

url 将要过期的时间戳。

usage object

本次请求的 Token 或字符消耗信息。Qwen-TTS模型返回Token消耗信息,Qwen3-TTS模型返回字符消耗信息

属性

input_tokens_details object

输入文本的 Token消耗信息。仅Qwen-TTS模型返回该字段。

属性

text_tokens integer

输入文本的 Token 消耗量。

total_tokens integer

本次请求总共消耗的 Token 量。仅Qwen-TTS模型返回该字段。

output_tokens integer

输出音频的 Token 消耗量。对于Qwen3-TTS模型,该字段固定为0。

input_tokens integer

输入文本的 Token 消耗量。对于Qwen3-TTS模型,该字段固定为0。

output_tokens_details object

输出的 Token 消耗信息。仅Qwen-TTS模型返回该字段。

属性

audio_tokens integer

输出音频的 Token 消耗量。

text_tokens integer

输出文本的 Token 消耗量,当前固定为0。

characters integer

输入文本的字符数。仅Qwen3-TTS模型返回该字段。

request_id string

本次请求的 ID。