语音合成-千问提供多种拟人音色,支持多语言及方言,并可在同一音色下输出多语言内容。系统可自适应语气,流畅处理复杂文本。 ## **核心功能** - 支持流式输出,可以边合成边播放 - 覆盖多种语言,包含中文方言 - 提供丰富音色,满足场景需求 - 提供[声音复刻](https://help.aliyun.com/zh/model-studio/qwen-tts-voice-cloning)与[声音设计](https://help.aliyun.com/zh/model-studio/qwen-tts-voice-design)两种音色定制方式 - 支持[指令控制](#12884a10929p9),可通过自然语言指令控制语音表现力 ## **适用范围** **支持的模型:** ## 中国内地 在[中国内地部署模式](https://help.aliyun.com/zh/model-studio/regions/#080da663a75xh)下,接入点与数据存储均位于**北京地域**,模型推理计算资源仅限于中国内地。 调用以下模型时,请选择北京地域的[API Key](https://bailian.console.aliyun.com/?tab=model#/api-key): - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash(稳定版,当前等同qwen3-tts-instruct-flash-2026-01-26)、qwen3-tts-instruct-flash-2026-01-26(最新快照版) - **千问3-TTS-VD****:**qwen3-tts-vd-2026-01-26(最新快照版) - **千问3-TTS-VC****:**qwen3-tts-vc-2026-01-22(最新快照版) - **千问3-TTS-Flash**:qwen3-tts-flash(稳定版,当前等同qwen3-tts-flash-2025-11-27)、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts(稳定版,当前等同qwen-tts-2025-04-10)、qwen-tts-latest(最新版,当前等同qwen-tts-2025-05-22)、qwen-tts-2025-05-22(快照版)、qwen-tts-2025-04-10(快照版) ## 国际 在[国际部署模式](https://help.aliyun.com/zh/model-studio/regions/#080da663a75xh)下,接入点与数据存储均位于**新加坡地域**,模型推理计算资源在全球范围内动态调度(不含中国内地)。 调用以下模型时,请选择新加坡地域的[API Key](https://modelstudio.console.aliyun.com/?tab=dashboard#/api-key): - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash(稳定版,当前等同qwen3-tts-instruct-flash-2026-01-26)、qwen3-tts-instruct-flash-2026-01-26(最新快照版) - **千问3-TTS-VD****:**qwen3-tts-vd-2026-01-26(最新快照版) - **千问3-TTS-VC****:**qwen3-tts-vc-2026-01-22(最新快照版) - **千问3-TTS-Flash**:qwen3-tts-flash(稳定版,当前等同qwen3-tts-flash-2025-11-27)、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 更多信息请参见[模型列表](https://help.aliyun.com/zh/model-studio/models) ## **模型选型** | **场景** | **推荐模型** | **推荐理由** | | --- | --- | --- | | **品牌形象、专属声音、扩展系统音色等语音定制(基于文本描述)** | qwen3-tts-vd-2026-01-26 | 支持声音设计,无需音频样本,通过文本描述创建定制化音色,适合从零开始设计品牌专属声音 | | **品牌形象、专属声音、扩展系统音色等语音定制(基于音频样本)** | qwen3-tts-vc-2026-01-22 | 支持声音复刻,基于真实音频样本快速复刻音色,打造拟人化品牌声纹,确保音色高度还原与一致性 | | **情感化内容生产(有声书、广播剧、游戏/动画配音)** | qwen3-tts-instruct-flash | 支持指令控制,通过自然语言描述精确控制音调、语速、情感、角色性格,适合需要丰富表现力和角色塑造的场景 | | **移动端导航/通知播报** | qwen3-tts-flash | 按字符计费简单透明,适合短文本高频调用场景 | | **在线教育课件配音** | qwen3-tts-flash | 支持多语种与方言,满足地域化教学需求 | | **有声读物批量生产** | qwen3-tts-flash | 成本可控,多音色选择丰富内容表现力 | 更多说明请参见[模型功能特性对比](#6e3883d028fqq) ## **快速开始** **准备工作** - 已[配置 API Key](https://help.aliyun.com/zh/model-studio/get-api-key)并[配置API Key到环境变量](https://help.aliyun.com/zh/model-studio/configure-api-key-through-environment-variables)。 - 如果通过 DashScope SDK 进行调用,需要[安装最新版SDK](https://help.aliyun.com/zh/model-studio/install-sdk)。DashScope Java SDK 版本需要不低于 2.21.9,DashScope Python SDK 版本需要不低于 1.24.6。 **说明** DashScope Python SDK中的`SpeechSynthesizer`接口已统一为`MultiModalConversation`,使用新接口只需替换接口名称即可,其他参数完全兼容。 ## 使用系统音色进行语音合成 以下示例演示如何使用[系统音色](#bac280ddf5a1u)进行语音合成。 ## 非流式输出 通过返回的`url`来获取合成的语音。URL 有效期为24 小时。 ## Python ``` import os import dashscope # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1' text = "那我来给大家推荐一款T恤,这款呢真的是超级好看,这个颜色呢很显气质,而且呢也是搭配的绝佳单品,大家可以闭眼入,真的是非常好看,对身材的包容性也很好,不管啥身材的宝宝呢,穿上去都是很好看的。推荐宝宝们下单哦。" # SpeechSynthesizer接口使用方法:dashscope.audio.qwen_tts.SpeechSynthesizer.call(...) response = dashscope.MultiModalConversation.call( # 如需使用指令控制功能,请将model替换为qwen3-tts-instruct-flash model="qwen3-tts-flash", # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), text=text, voice="Cherry", language_type="Chinese", # 建议与文本语种一致,以获得正确的发音和自然的语调。 # 如需使用指令控制功能,请取消下方注释,并将model替换为qwen3-tts-instruct-flash # instructions='语速较快,带有明显的上扬语调,适合介绍时尚产品。', # optimize_instructions=True, stream=False ) print(response) ``` ## Java 需要导入Gson依赖,若是使用Maven或者Gradle,添加依赖方式如下: ## Maven 在`pom.xml`中添加如下内容: ``` com.google.code.gson gson 2.13.1 ``` ## Gradle 在`build.gradle`中添加如下内容: ``` // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation("com.google.code.gson:gson:2.13.1") ``` ``` 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 com.alibaba.dashscope.utils.Constants; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; public class Main { // 如需使用指令控制功能,请将MODEL替换为qwen3-tts-instruct-flash private static final String MODEL = "qwen3-tts-flash"; public static void call() throws ApiException, NoApiKeyException, UploadFileException { MultiModalConversation conv = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model(MODEL) .text("Today is a wonderful day to build something people love!") .voice(AudioParameters.Voice.CHERRY) .languageType("English") // 建议与文本语种一致,以获得正确的发音和自然的语调。 // 如需使用指令控制功能,请取消下方注释,并将model替换为qwen3-tts-instruct-flash // .parameter("instructions","语速较快,带有明显的上扬语调,适合介绍时尚产品。") // .parameter("optimize_instructions",true) .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 { // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1"; call(); } catch (ApiException | NoApiKeyException | UploadFileException e) { System.out.println(e.getMessage()); } System.exit(0); } } ``` ## cURL ``` # ======= 重要提示 ======= # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation # 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # === 执行时请删除该注释 === 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" } }' ``` ## 流式输出 可以流式地将音频数据以 Base64 格式进行输出,此时最后一个数据包中包含完整音频的 URL。 ## Python ``` # 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 # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1' p = pyaudio.PyAudio() # 创建音频流 stream = p.open(format=pyaudio.paInt16, channels=1, rate=24000, output=True) text = "你好啊,我是千问" response = dashscope.MultiModalConversation.call( # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), # 如需使用指令控制功能,请将model替换为qwen3-tts-instruct-flash model="qwen3-tts-flash", text=text, voice="Cherry", language_type="Chinese", # 建议与文本语种一致,以获得正确的发音和自然的语调。 # 如需使用指令控制功能,请取消下方注释,并将model替换为qwen3-tts-instruct-flash # instructions='语速较快,带有明显的上扬语调,适合介绍时尚产品。', # optimize_instructions=True, stream=True ) for chunk in response: if chunk.output is not None: 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() ``` ## Java 需要导入Gson依赖,若是使用Maven或者Gradle,添加依赖方式如下: ### Maven 在`pom.xml`中添加如下内容: ``` com.google.code.gson gson 2.13.1 ``` ### Gradle 在`build.gradle`中添加如下内容: ``` // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation("com.google.code.gson:gson:2.13.1") ``` ``` 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 com.alibaba.dashscope.utils.Constants; import io.reactivex.Flowable; import javax.sound.sampled.*; import java.util.Base64; public class Main { // 如需使用指令控制功能,请将MODEL替换为qwen3-tts-instruct-flash private static final String MODEL = "qwen3-tts-flash"; public static void streamCall() throws ApiException, NoApiKeyException, UploadFileException { MultiModalConversation conv = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model(MODEL) .text("Today is a wonderful day to build something people love!") .voice(AudioParameters.Voice.CHERRY) .languageType("English") // 建议与文本语种一致,以获得正确的发音和自然的语调。 // 如需使用指令控制功能,请取消下方注释,并将model替换为qwen3-tts-instruct-flash // .parameter("instructions","语速较快,带有明显的上扬语调,适合介绍时尚产品。") // .parameter("optimize_instructions",true) .build(); Flowable 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, // 帧大小(位数/字节数) 24000, // 数据传输率(需与采样率一致) 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) { // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1"; try { streamCall(); } catch (ApiException | NoApiKeyException | UploadFileException e) { System.out.println(e.getMessage()); } System.exit(0); } } ``` ## cURL ``` # ======= 重要提示 ======= # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation # 新加坡地域和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # === 执行时请删除该注释 === 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" } }' ``` ## 使用声音复刻音色进行语音合成 声音复刻服务不提供预览音频。需将复刻生成的音色应用于语音合成后,才能试听并评估效果。 以下示例演示了如何在语音合成中使用声音复刻生成的专属音色,实现与原音高度相似的输出效果。这里参考了使用系统音色进行语音合成DashScope SDK的“非流式输出”示例代码,将`voice`参数替换为复刻生成的专属音色进行语音合成。 - **关键原则**:声音复刻时使用的模型 (`target_model`) 必须与后续进行语音合成时使用的模型 (`model`) 保持一致,否则会导致合成失败。 - 示例使用本地音频文件 `voice.mp3` 进行声音复刻,运行代码时,请注意替换。 ### Python ``` import os import requests import base64 import pathlib import dashscope # ======= 常量配置 ======= DEFAULT_TARGET_MODEL = "qwen3-tts-vc-2026-01-22" # 声音复刻、语音合成要使用相同的模型 DEFAULT_PREFERRED_NAME = "guanyu" DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg" VOICE_FILE_PATH = "voice.mp3" # 用于声音复刻的本地音频文件的相对路径 def create_voice(file_path: str, target_model: str = DEFAULT_TARGET_MODEL, preferred_name: str = DEFAULT_PREFERRED_NAME, audio_mime_type: str = DEFAULT_AUDIO_MIME_TYPE) -> str: """ 创建音色,并返回 voice 参数 """ # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key = os.getenv("DASHSCOPE_API_KEY") file_path_obj = pathlib.Path(file_path) if not file_path_obj.exists(): raise FileNotFoundError(f"音频文件不存在: {file_path}") base64_str = base64.b64encode(file_path_obj.read_bytes()).decode() data_uri = f"data:{audio_mime_type};base64,{base64_str}" # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization" payload = { "model": "qwen-voice-enrollment", # 不要修改该值 "input": { "action": "create", "target_model": target_model, "preferred_name": preferred_name, "audio": {"data": data_uri} } } headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } resp = requests.post(url, json=payload, headers=headers) if resp.status_code != 200: raise RuntimeError(f"创建 voice 失败: {resp.status_code}, {resp.text}") try: return resp.json()["output"]["voice"] except (KeyError, ValueError) as e: raise RuntimeError(f"解析 voice 响应失败: {e}") if __name__ == '__main__': # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1' text = "今天天气怎么样?" # SpeechSynthesizer接口使用方法:dashscope.audio.qwen_tts.SpeechSynthesizer.call(...) response = dashscope.MultiModalConversation.call( model=DEFAULT_TARGET_MODEL, # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), text=text, voice=create_voice(VOICE_FILE_PATH), # 将voice参数替换为复刻生成的专属音色 stream=False ) print(response) ``` ### Java 需要导入Gson依赖,若是使用Maven或者Gradle,添加依赖方式如下: #### Maven 在`pom.xml`中添加如下内容: ``` com.google.code.gson gson 2.13.1 ``` #### Gradle 在`build.gradle`中添加如下内容: ``` // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation("com.google.code.gson:gson:2.13.1") ``` **重要** 使用声音复刻生成的专属音色进行语音合成时,必须按照如下方式设置音色: ``` MultiModalConversationParam param = MultiModalConversationParam.builder() .parameter("voice", "your_voice") // 将voice参数替换为复刻生成的专属音色 .build(); ``` ``` 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.utils.Constants; import com.google.gson.Gson; import com.google.gson.JsonObject; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.*; import java.nio.charset.StandardCharsets; import java.util.Base64; public class Main { // ===== 常量定义 ===== // 声音复刻、语音合成要使用相同的模型 private static final String TARGET_MODEL = "qwen3-tts-vc-2026-01-22"; private static final String PREFERRED_NAME = "guanyu"; // 用于声音复刻的本地音频文件的相对路径 private static final String AUDIO_FILE = "voice.mp3"; private static final String AUDIO_MIME_TYPE = "audio/mpeg"; // 生成 data URI public static String toDataUrl(String filePath) throws IOException { byte[] bytes = Files.readAllBytes(Paths.get(filePath)); String encoded = Base64.getEncoder().encodeToString(bytes); return "data:" + AUDIO_MIME_TYPE + ";base64," + encoded; } // 调用 API 创建 voice public static String createVoice() throws Exception { // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:String apiKey = "sk-xxx" String apiKey = System.getenv("DASHSCOPE_API_KEY"); String jsonPayload = "{" + "\"model\": \"qwen-voice-enrollment\"," // 不要修改该值 + "\"input\": {" + "\"action\": \"create\"," + "\"target_model\": \"" + TARGET_MODEL + "\"," + "\"preferred_name\": \"" + PREFERRED_NAME + "\"," + "\"audio\": {" + "\"data\": \"" + toDataUrl(AUDIO_FILE) + "\"" + "}" + "}" + "}"; // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization String url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization"; HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Authorization", "Bearer " + apiKey); con.setRequestProperty("Content-Type", "application/json"); con.setDoOutput(true); try (OutputStream os = con.getOutputStream()) { os.write(jsonPayload.getBytes(StandardCharsets.UTF_8)); } int status = con.getResponseCode(); System.out.println("HTTP 状态码: " + status); try (BufferedReader br = new BufferedReader( new InputStreamReader(status >= 200 && status < 300 ? con.getInputStream() : con.getErrorStream(), StandardCharsets.UTF_8))) { StringBuilder response = new StringBuilder(); String line; while ((line = br.readLine()) != null) { response.append(line); } System.out.println("返回内容: " + response); if (status == 200) { JsonObject jsonObj = new Gson().fromJson(response.toString(), JsonObject.class); return jsonObj.getAsJsonObject("output").get("voice").getAsString(); } throw new IOException("创建语音失败: " + status + " - " + response); } } public static void call() throws Exception { MultiModalConversation conv = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model(TARGET_MODEL) .text("今天天气怎么样?") .parameter("voice", createVoice()) // 将voice参数替换为复刻生成的专属音色 .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 { // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1"; call(); } catch (Exception e) { System.out.println(e.getMessage()); } System.exit(0); } } ``` ## 使用声音设计音色进行语音合成 使用声音设计功能时,服务会返回预览音频数据。建议先试听该预览音频,确认效果符合预期后再用于语音合成,降低调用成本。 1. 生成专属音色并试听效果,若对效果满意,进行下一步;否则重新生成。 ### Python ``` import requests import base64 import os def create_voice_and_play(): # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key = os.getenv("DASHSCOPE_API_KEY") if not api_key: print("错误: 未找到DASHSCOPE_API_KEY环境变量,请先设置API Key") return None, None, None # 准备请求数据 headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } data = { "model": "qwen-voice-design", "input": { "action": "create", "target_model": "qwen3-tts-vd-2026-01-26", "voice_prompt": "沉稳的中年男性播音员,音色低沉浑厚,富有磁性,语速平稳,吐字清晰,适合用于新闻播报或纪录片解说。", "preview_text": "各位听众朋友,大家好,欢迎收听晚间新闻。", "preferred_name": "announcer", "language": "zh" }, "parameters": { "sample_rate": 24000, "response_format": "wav" } } # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization url = "https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization" try: # 发送请求 response = requests.post( url, headers=headers, json=data, timeout=60 # 添加超时设置 ) if response.status_code == 200: result = response.json() # 获取音色名称 voice_name = result["output"]["voice"] print(f"音色名称: {voice_name}") # 获取预览音频数据 base64_audio = result["output"]["preview_audio"]["data"] # 解码Base64音频数据 audio_bytes = base64.b64decode(base64_audio) # 保存音频文件到本地 filename = f"{voice_name}_preview.wav" # 将音频数据写入本地文件 with open(filename, 'wb') as f: f.write(audio_bytes) print(f"音频已保存到本地文件: {filename}") print(f"文件路径: {os.path.abspath(filename)}") return voice_name, audio_bytes, filename else: print(f"请求失败,状态码: {response.status_code}") print(f"响应内容: {response.text}") return None, None, None except requests.exceptions.RequestException as e: print(f"网络请求发生错误: {e}") return None, None, None except KeyError as e: print(f"响应数据格式错误,缺少必要的字段: {e}") print(f"响应内容: {response.text if 'response' in locals() else 'No response'}") return None, None, None except Exception as e: print(f"发生未知错误: {e}") return None, None, None if __name__ == "__main__": print("开始创建语音...") voice_name, audio_data, saved_filename = create_voice_and_play() if voice_name: print(f"\n成功创建音色 '{voice_name}'") print(f"音频文件已保存: '{saved_filename}'") print(f"文件大小: {os.path.getsize(saved_filename)} 字节") else: print("\n音色创建失败") ``` ### Java 需要导入Gson依赖,若是使用Maven或者Gradle,添加依赖方式如下: #### Maven 在`pom.xml`中添加如下内容: ``` com.google.code.gson gson 2.13.1 ``` #### Gradle 在`build.gradle`中添加如下内容: ``` // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation("com.google.code.gson:gson:2.13.1") ``` **重要** 使用声音设计生成的专属音色进行语音合成时,必须按照如下方式设置音色: ``` MultiModalConversationParam param = MultiModalConversationParam.builder() .parameter("voice", "your_voice") // 将voice参数替换为声音设计生成的专属音色 .build(); ``` ``` import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Base64; public class Main { public static void main(String[] args) { Main example = new Main(); example.createVoice(); } public void createVoice() { // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:String apiKey = "sk-xxx" String apiKey = System.getenv("DASHSCOPE_API_KEY"); // 创建JSON请求体字符串 String jsonBody = "{\n" + " \"model\": \"qwen-voice-design\",\n" + " \"input\": {\n" + " \"action\": \"create\",\n" + " \"target_model\": \"qwen3-tts-vd-2026-01-26\",\n" + " \"voice_prompt\": \"沉稳的中年男性播音员,音色低沉浑厚,富有磁性,语速平稳,吐字清晰,适合用于新闻播报或纪录片解说。\",\n" + " \"preview_text\": \"各位听众朋友,大家好,欢迎收听晚间新闻。\",\n" + " \"preferred_name\": \"announcer\",\n" + " \"language\": \"zh\"\n" + " },\n" + " \"parameters\": {\n" + " \"sample_rate\": 24000,\n" + " \"response_format\": \"wav\"\n" + " }\n" + "}"; HttpURLConnection connection = null; try { // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization URL url = new URL("https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization"); connection = (HttpURLConnection) url.openConnection(); // 设置请求方法和头部 connection.setRequestMethod("POST"); connection.setRequestProperty("Authorization", "Bearer " + apiKey); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); connection.setDoInput(true); // 发送请求体 try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonBody.getBytes("UTF-8"); os.write(input, 0, input.length); os.flush(); } // 获取响应 int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // 读取响应内容 StringBuilder response = new StringBuilder(); try (BufferedReader br = new BufferedReader( new InputStreamReader(connection.getInputStream(), "UTF-8"))) { String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } } // 解析JSON响应 JsonObject jsonResponse = JsonParser.parseString(response.toString()).getAsJsonObject(); JsonObject outputObj = jsonResponse.getAsJsonObject("output"); JsonObject previewAudioObj = outputObj.getAsJsonObject("preview_audio"); // 获取音色名称 String voiceName = outputObj.get("voice").getAsString(); System.out.println("音色名称: " + voiceName); // 获取Base64编码的音频数据 String base64Audio = previewAudioObj.get("data").getAsString(); // 解码Base64音频数据 byte[] audioBytes = Base64.getDecoder().decode(base64Audio); // 保存音频到本地文件 String filename = voiceName + "_preview.wav"; saveAudioToFile(audioBytes, filename); System.out.println("音频已保存到本地文件: " + filename); } else { // 读取错误响应 StringBuilder errorResponse = new StringBuilder(); try (BufferedReader br = new BufferedReader( new InputStreamReader(connection.getErrorStream(), "UTF-8"))) { String responseLine; while ((responseLine = br.readLine()) != null) { errorResponse.append(responseLine.trim()); } } System.out.println("请求失败,状态码: " + responseCode); System.out.println("错误响应: " + errorResponse.toString()); } } catch (Exception e) { System.err.println("请求发生错误: " + e.getMessage()); e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } } private void saveAudioToFile(byte[] audioBytes, String filename) { try { File file = new File(filename); try (FileOutputStream fos = new FileOutputStream(file)) { fos.write(audioBytes); } System.out.println("音频已保存到: " + file.getAbsolutePath()); } catch (IOException e) { System.err.println("保存音频文件时发生错误: " + e.getMessage()); e.printStackTrace(); } } } ``` 2. 使用上一步生成的专属音色进行语音合成(非流式合成)。 这里参考了使用系统音色进行语音合成DashScope SDK的“非流式输出”示例代码,将`voice`参数替换为声音设计生成的专属音色进行语音合成。单向流式合成请参见[语音合成-千问](https://help.aliyun.com/zh/model-studio/qwen-tts#c204937c02gsb)。 **关键原则**:声音设计时使用的模型 (`target_model`) 必须与后续进行语音合成时使用的模型 (`model`) 保持一致,否则会导致合成失败。 ### Python ``` import os import dashscope if __name__ == '__main__': # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1' text = "今天天气怎么样?" # SpeechSynthesizer接口使用方法:dashscope.audio.qwen_tts.SpeechSynthesizer.call(...) response = dashscope.MultiModalConversation.call( model="qwen3-tts-vd-2026-01-26", # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx" api_key=os.getenv("DASHSCOPE_API_KEY"), text=text, voice="myvoice", # 将voice参数替换为声音设计生成的专属音色 stream=False ) print(response) ``` ### Java ``` 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.Constants; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; public class Main { private static final String MODEL = "qwen3-tts-vd-2026-01-26"; public static void call() throws ApiException, NoApiKeyException, UploadFileException { MultiModalConversation conv = new MultiModalConversation(); MultiModalConversationParam param = MultiModalConversationParam.builder() // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx") .apiKey(System.getenv("DASHSCOPE_API_KEY")) .model(MODEL) .text("Today is a wonderful day to build something people love!") .parameter("voice", "myvoice") // 将voice参数替换为声音设计生成的专属音色 .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 { // 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:https://dashscope-intl.aliyuncs.com/api/v1 Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1"; call(); } catch (ApiException | NoApiKeyException | UploadFileException e) { System.out.println(e.getMessage()); } System.exit(0); } } ``` ## **指令控制** 指令控制是一项高级语音合成功能,通过自然语言描述的方式精确控制语音的表达效果。您可以使用简单的文字描述,让合成语音呈现出特定的音调、语速、情感、音色特点,无需调整复杂的音频参数。 **支持的模型**:仅支持千问3-TTS-Instruct-Flash系列模型。 **使用方式**:通过`instructions`参数指定指令内容,例如“语速较快,带有明显的上扬语调,适合介绍时尚产品”。 **支持语言**:描述文本仅支持中文和英文。 **长度限制**:长度不得超过 1600 Token。 **适用场景**: - 有声书和广播剧配音 - 广告和宣传片配音 - 游戏角色和动画配音 - 情感化的智能语音助手 - 纪录片和新闻播报 **如何编写高质量的声音描述:** - 核心原则: 1. 具体而非模糊:使用能够描绘具体声音特质的词语,如“低沉”、“清脆”、“语速偏快”。避免使用“好听”、“普通”等主观且缺乏信息量的词汇。 2. 多维而非单一:优秀的描述通常结合多个维度(如下文所述的音调、语速、情感等)。单一维度的描述(如仅“高音”)过于宽泛,难以生成特色鲜明的效果。 3. 客观而非主观:专注于声音本身的物理和感知特征,而不是个人的喜好。例如,用“音调偏高,带有活力”代替“我最喜欢的声音”。 4. 原创而非模仿:请描述声音的特质,而不是要求模仿特定人物(如名人、演员)。此类请求涉及版权风险且模型不支持直接模仿。 5. 简洁而非冗余:确保每个词都有其意义。避免重复使用同义词或无意义的强调词(如“非常非常棒的声音”)。 - 描述维度参考:可以组合多个维度,创造更丰富的表达效果。 | **维度** | **描述示例** | | --- | --- | | 音调 | 高音、中音、低音、偏高、偏低 | | 语速 | 快速、中速、缓慢、偏快、偏慢 | | 情感 | 开朗、沉稳、温柔、严肃、活泼、冷静、治愈 | | 特点 | 有磁性、清脆、沙哑、圆润、甜美、浑厚、有力 | | 用途 | 新闻播报、广告配音、有声书、动画角色、语音助手、纪录片解说 | - 示例: - 标准播音风格:吐字清晰精准,字正腔圆 - 情绪递进效果:音量由正常对话迅速增强至高喊,性格直率,情绪易激动且外露 - 特殊情感状态:哭腔导致发音略微含糊,略显沙哑,带有明显哭腔的紧张感 - 广告配音风格:音调偏高,语速中等,充满活力和感染力,适合广告配音 - 温柔治愈风格:语速偏慢,音调温柔甜美,语气治愈温暖,像贴心朋友般关怀 ## **API 参考** [语音合成-千问API参考](https://help.aliyun.com/zh/model-studio/qwen-tts-api) [声音复刻-API参考](https://help.aliyun.com/zh/model-studio/qwen-tts-voice-cloning) [声音设计-API参考](https://help.aliyun.com/zh/model-studio/qwen-tts-voice-design) ## **模型功能特性对比** | **功能/特性** | **千问3-TTS-Instruct-Flash** | **千问3-TTS-VD** | **千问3-TTS-VC** | **千问3-TTS-Flash** | **千问-TTS** | | --- | --- | --- | --- | --- | --- | | **支持语言** | 因[音色](#bac280ddf5a1u)而异:中文(普通话)、英文、西班牙语、俄语、意大利语、法语、韩语、日语、德语、葡萄牙语 | 中文(普通话)、英文、西班牙语、俄语、意大利语、法语、韩语、日语、德语、葡萄牙语 | | 因[音色](#bac280ddf5a1u)而异:中文(普通话、上海话、北京话、四川话、南京话、陕西话、闽南语、天津话)、粤语、英文、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | 因[音色](#bac280ddf5a1u)而异:中文(普通话、上海话、北京话、四川话)、英文 | | **音频格式** | - wav:非流式输出时 - pcm:流式输出时,Base64编码 | | | | | | **音频采样率** | 24kHz | | | | | | **声音复刻** | 不支持 | | 支持 | 不支持 | | | **声音设计** | 不支持 | 支持 | 不支持 | | | | **SSML** | 不支持 | | | | | | **LaTeX** | 不支持 | | | | | | **音量调节** | 支持 > 可通过[指令控制](#12884a10929p9)调节 | 不支持 | | | | | **语速调节** | 支持 > 可通过[指令控制](#12884a10929p9)调节 | 不支持 | | | | | **语调(音高)调节** | 支持 > 可通过[指令控制](#12884a10929p9)调节 | 不支持 | | | | | **码率调节** | 不支持 | | | | | | **时间戳** | 不支持 | | | | | | **指令控制(Instruct)** | 支持 | 不支持 | | | | | **流式输入** | 不支持 | | | | | | **流式输出** | 支持 | | | | | | **限流** | 每分钟调用次数(RPM):180 | 每分钟调用次数(RPM):180 | 每分钟调用次数(RPM):180 | 每分钟调用次数(RPM)因模型而异: - qwen3-tts-flash、qwen3-tts-flash-2025-11-27:180 - qwen3-tts-flash-2025-09-18:10 | 每分钟调用次数(RPM):10 每分钟消耗Token数(TPM,含输入与输出Token):100,000 | | **接入方式** | Java/Python SDK、WebSocket API | | | | | | **价格** | 中国内地:0.8元/万字符 国际:0.8元/万字符 | 中国内地:0.8元/万字符 国际:0.8元/万字符 | 中国内地:0.8元/万字符 国际:0.8元/万字符 | 中国内地:0.8元/万字符 国际:0.733924元/万字符 | 中国内地: - 输入成本:0.0016元/千Token - 输出成本:0.01元/千Token 音频转换为 Token 的规则:每1秒的音频对应 50个 Token ;若音频时长不足1秒,则按 50个 Token 计算 | ## **支持的系统音色** 不同模型支持的音色有所差异,使用时将请求参数`voice`设置为音色列表中**voice参数**列对应的值。 | `**voice**`**参数** | **详情** | **支持语种** | **支持模型** | | `Cherry` | **音色名**:芊悦 **描述**:阳光积极、亲切自然小姐姐(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22 | | `Serena` | **音色名**:苏瑶 **描述**:温柔小姐姐(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 - **千问-TTS**:qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22 | | `Ethan` | **音色名**:晨煦 **描述**:标准普通话,带部分北方口音。阳光、温暖、活力、朝气(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22 | | `Chelsie` | **音色名**:千雪 **描述**:二次元虚拟女友(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 - **千问-TTS**:qwen-tts、qwen-tts-2025-04-10、qwen-tts-latest、qwen-tts-2025-05-22 | | `Momo` | **音色名**:茉兔 **描述**:撒娇搞怪,逗你开心(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Vivian` | **音色名**:十三 **描述**:拽拽的、可爱的小暴躁(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Moon` | **音色名**:月白 **描述**:率性帅气的月白(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Maia` | **音色名**:四月 **描述**:知性与温柔的碰撞(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Kai` | **音色名**:凯 **描述**:耳朵的一场SPA(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Nofish` | **音色名**:不吃鱼 **描述**:不会翘舌音的设计师(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Bella` | **音色名**:萌宝 **描述**:喝酒不打醉拳的小萝莉(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Jennifer` | **音色名**:詹妮弗 **描述**:品牌级、电影质感般美语女声(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Ryan` | **音色名**:甜茶 **描述**:节奏拉满,戏感炸裂,真实与张力共舞(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Katerina` | **音色名**:卡捷琳娜 **描述**:御姐音色,韵律回味十足(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Aiden` | **音色名**:艾登 **描述**:精通厨艺的美语大男孩(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Eldric Sage` | **音色名**:沧明子 **描述**:沉稳睿智的老者,沧桑如松却心明如镜(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Mia` | **音色名**:乖小妹 **描述**:温顺如春水,乖巧如初雪(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Mochi` | **音色名**:沙小弥 **描述**:聪明伶俐的小大人,童真未泯却早慧如禅(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Bellona` | **音色名**:燕铮莺 **描述**:声音洪亮,吐字清晰,人物鲜活,听得人热血沸腾;金戈铁马入梦来,字正腔圆间尽显千面人声的江湖(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Vincent` | **音色名**:田叔 **描述**:一口独特的沙哑烟嗓,一开口便道尽了千军万马与江湖豪情(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Bunny` | **音色名**:萌小姬 **描述**:“萌属性”爆棚的小萝莉(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Neil` | **音色名**:阿闻 **描述**:平直的基线语调,字正腔圆的咬字发音,这就是最专业的新闻主持人(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Elias` | **音色名**:墨讲师 **描述**:既保持学科严谨性,又通过叙事技巧将复杂知识转化为可消化的认知模块(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Arthur` | **音色名**:徐大爷 **描述**:被岁月和旱烟浸泡过的质朴嗓音,不疾不徐地摇开了满村的奇闻异事(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Nini` | **音色名**:邻家妹妹 **描述**:糯米糍一样又软又黏的嗓音,那一声声拉长了的“哥哥”,甜得能把人的骨头都叫酥了(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Ebona` | **音色名**:诡婆婆 **描述**:她的低语像一把生锈的钥匙,缓慢转动你内心最深处的幽暗角落——那里藏着所有你不敢承认的童年阴影与未知恐惧(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Seren` | **音色名**:小婉 **描述**:温和舒缓的声线,助你更快地进入睡眠,晚安,好梦(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Pip` | **音色名**:顽屁小孩 **描述**:调皮捣蛋却充满童真的他来了,这是你记忆中的小新吗(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Stella` | **音色名**:少女阿月 **描述**:平时是甜到发腻的迷糊少女音,但在喊出“代表月亮消灭你”时,瞬间充满不容置疑的爱与正义(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Instruct-Flash**:qwen3-tts-instruct-flash、qwen3-tts-instruct-flash-2026-01-26 - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Bodega` | **音色名**:博德加 **描述**:热情的西班牙大叔(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Sonrisa` | **音色名**:索尼莎 **描述**:热情开朗的拉美大姐(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Alek` | **音色名**:阿列克 **描述**:一开口,是战斗民族的冷,也是毛呢大衣下的暖(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Dolce` | **音色名**:多尔切 **描述**:慵懒的意大利大叔(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Sohee` | **音色名**:素熙 **描述**:温柔开朗,情绪丰富的韩国欧尼(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Ono Anna` | **音色名**:小野杏 **描述**:鬼灵精怪的青梅竹马(女性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Lenn` | **音色名**:莱恩 **描述**:理性是底色,叛逆藏在细节里——穿西装也听后朋克的德国青年(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Emilien` | **音色名**:埃米尔安 **描述**:浪漫的法国大哥哥(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Andre` | **音色名**:安德雷 **描述**:声音磁性,自然舒服、沉稳男生(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Radio Gol` | **音色名**:拉迪奥·戈尔 **描述**:足球诗人Rádio Gol!今天我要用名字为你们解说足球(男性) | 中文(普通话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27 | | `Jada` | **音色名**:上海-阿珍 **描述**:风风火火的沪上阿姐(女性) | 中文(上海话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts-latest、qwen-tts-2025-05-22 | | `Dylan` | **音色名**:北京-晓东 **描述**:北京胡同里长大的少年(男性) | 中文(北京话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts-latest、qwen-tts-2025-05-22 | | `Li` | **音色名**:南京-老李 **描述**:耐心的瑜伽老师(男性) | 中文(南京话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Marcus` | **音色名**:陕西-秦川 **描述**:面宽话短,心实声沉——老陕的味道(男性) | 中文(陕西话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Roy` | **音色名**:闽南-阿杰 **描述**:诙谐直爽、市井活泼的台湾哥仔形象(男性) | 中文(闽南语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Peter` | **音色名**:天津-李彼得 **描述**:天津相声,专业捧哏(男性) | 中文(天津话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Sunny` | **音色名**:四川-晴儿 **描述**:甜到你心里的川妹子(女性) | 中文(四川话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 - **千问-TTS**:qwen-tts-latest、qwen-tts-2025-05-22 | | `Eric` | **音色名**:四川-程川 **描述**:一个跳脱市井的四川成都男子(男性) | 中文(四川话)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Rocky` | **音色名**:粤语-阿强 **描述**:幽默风趣的阿强,在线陪聊(男性) | 中文(粤语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | | `Kiki` | **音色名**:粤语-阿清 **描述**:甜美的港妹闺蜜(女性) | 中文(粤语)、英语、法语、德语、俄语、意大利语、西班牙语、葡萄牙语、日语、韩语 | - **千问3-TTS-Flash**:qwen3-tts-flash、qwen3-tts-flash-2025-11-27、qwen3-tts-flash-2025-09-18 | ## **常见问题** ### **Q:音频文件链接的有效期是多久?** A:24小时后音频文件链接将失效。 /\* 让引用上下间距调小,避免内容显示过于稀疏 \*/ .unionContainer .markdown-body blockquote { margin: 4px 0; } .aliyun-docs-content table.qwen blockquote { border-left: none; /\* 添加这一行来移除表格里的引用文字的左侧边框 \*/ padding-left: 5px; /\* 左侧内边距 \*/ margin: 4px 0; } /\* 支持吸顶 \*/ div:has(.aliyun-docs-content), .aliyun-docs-content .markdown-body { overflow: visible; } .stick-top { position: sticky; top: 46px; } span.aliyun-docs-icon { color: transparent !important; font-size: 0 !important; } span.aliyun-docs-icon:before { color: black; font-size: 16px; } span.aliyun-docs-icon.icon-size-20:before { font-size: 20px; } span.aliyun-docs-icon.icon-size-22:before { font-size: 22px; } span.aliyun-docs-icon.icon-size-24:before { font-size: 24px; } span.aliyun-docs-icon.icon-size-26:before { font-size: 26px; } span.aliyun-docs-icon.icon-size-28:before { font-size: 28px; }