跳转到主要内容
语音合成

声音设计

通过文本描述创建自定义音色,无需音频样本,支持 CosyVoice 和 Qwen-Audio-TTS 模型。

声音设计(Voice Design)无需音频样本,仅通过自然语言描述即可创建定制化音色。

概述

声音设计适用于快速原型验证、创意内容生产、游戏角色配音等场景。 千问AI平台平台提供以下模型系列的声音设计能力:
  • CosyVoice:支持实时与非实时语音合成(v3.5 系列)。
  • Qwen-Audio-TTS:支持实时与非实时语音合成(qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash)。
如果您已有音频样本,请参见声音复刻。如需了解模型选型建议,请参见语音合成。
Voice design 中的 target_model 必须与合成时的 model 一致,否则会导致调用失败。

前提条件

快速开始

声音设计的基本流程为:描述 -> 创建 -> 使用。
  1. 编写声音描述:用自然语言描述期望的声音特质。详细的编写指南请参见编写声音描述。
  2. 创建音色:调用声音设计接口,系统根据描述生成音色并返回预览音频。建议试听确认效果后再使用。
  3. 使用音色合成语音:调用语音合成接口,传入音色 ID 进行语音合成。

CosyVoice 声音设计

CosyVoice 支持通过文本描述创建音色。
CosyVoice 声音设计基于 FunAudioGen-VD 模型能力。相同描述文本(Prompt)设计的音色可能存在差异,建议多次生成后择优使用。

创建音色

调用声音复刻/设计 API,通过 voice_prompt 参数传入声音描述,preview_text 参数指定预览音频朗读的文本。
  • cURL
步骤一:通过声音描述创建音色
curl -X POST https://maas.qianwenaiapi.com/api/v1/services/audio/tts/customization \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "model": "voice-enrollment",
  "input": {
    "action": "create_voice",
    "target_model": "cosyvoice-v3-plus",
    "voice_prompt": "沉稳的中年男性播音员,音色低沉浑厚,富有磁性,语速平稳,吐字清晰,适合用于新闻播报或纪录片解说。",
    "preview_text": "各位听众朋友,大家好,欢迎收听晚间新闻。",
    "prefix": "announcer",
    "language_hints": ["zh"]
  },
  "parameters": {
    "sample_rate": 24000,
    "response_format": "wav"
  }
}'
步骤二:使用设计音色合成语音将上一步返回的 voice 值填入以下请求中。
# 将 YOUR_VOICE_ID 替换为上一步返回的 voice 值

curl -X POST https://maas.qianwenaiapi.com/api/v1/services/audio/tts/SpeechSynthesizer \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "model": "cosyvoice-v3-plus",
  "input": {
    "text": "各位听众朋友,大家好,欢迎收听晚间新闻。",
    "voice": "YOUR_VOICE_ID",
    "format": "wav",
    "sample_rate": 24000
  }
}'
如需使用自定义音色进行实时流式合成,请参见流式语音合成。完整的 API 参数说明及更多操作(列出、查询、删除),请参见 Voice design API 参考。

Qwen-Audio-TTS 声音设计

Qwen-Audio-TTS 与 CosyVoice 使用相同的音色创建、预览和基础合成流程。以下以 qwen-audio-3.1-tts-flash 为例,用 Python 一次性完成创建音色、保存预览音频和合成语音。
  1. 创建音色:设置声音描述 voice_prompt、预览文本 preview_text 和目标模型 target_model,获取音色 ID。
  2. 保存预览音频:解码返回的 preview_audio.data,保存为 WAV 文件,用于试听。
  3. 合成语音:将创建音色时返回的 voice_id 作为 voice,使用绑定模型合成语音。
import base64
import os

import dashscope
import requests
from dashscope.audio.tts_v2 import AudioFormat, SpeechSynthesizer

api_key = os.environ["DASHSCOPE_API_KEY"]
target_model = "qwen-audio-3.1-tts-flash"

# 创建音色,并将返回的预览音频保存到本地。
response = requests.post(
    "https://maas.qianwenaiapi.com/api/v1/services/audio/tts/customization",
    headers={"Authorization": f"Bearer {api_key}"},
    json={
        "model": "voice-enrollment",
        "input": {
            "action": "create_voice",
            "target_model": target_model,
            "voice_prompt": "沉稳的中年男性播音员,音色低沉浑厚,富有磁性,语速平稳,吐字清晰,适合用于新闻播报或纪录片解说。",
            "preview_text": "各位听众朋友,大家好,欢迎收听晚间新闻。",
            "prefix": "announcer",
            "language_hints": ["zh"],
        },
        "parameters": {"sample_rate": 24000, "response_format": "wav"},
    },
    timeout=120,
)
response.raise_for_status()
output = response.json()["output"]
voice_id = output["voice_id"]
print(f"voice_id: {voice_id}")
with open("preview.wav", "wb") as f:
    f.write(base64.b64decode(output["preview_audio"]["data"]))

# 使用创建音色时指定的模型和返回的音色 ID 合成语音。
dashscope.api_key = api_key
dashscope.base_websocket_api_url = "wss://maas.qianwenaiapi.com/api-ws/v1/inference"
synthesizer = SpeechSynthesizer(
    model=target_model,
    voice=voice_id,
    format=AudioFormat.WAV_24000HZ_MONO_16BIT,
)
audio = synthesizer.call("今天天气晴朗,适合外出散步。祝你度过愉快的一天。")
with open("output.wav", "wb") as f:
    f.write(audio)
运行示例后,preview.wav 为预览音频,output.wav 为合成音频。保存打印的音色 ID,后续可使用该 ID 调用语音合成。 HTTP 请求示例、可选参数和返回字段请参见 Voice design API 参考;合成参数请参见 Qwen-Audio-TTS 客户端事件。

配额与计费

音色配额与自动清理

  • 音色总数限制:每个千问AI平台账号的自定义音色总数上限为 1000 个。声音复刻和声音设计共用该配额,不按模型分别计算。
  • 自动清理规则:若单个音色在过去 1 年内未被用于任何语音合成请求,系统将自动删除该音色。

计费规则

以下价格为目录价。具体优惠活动及折扣价格请前往模型市场查看。
  • 创建音色免费。使用设计音色合成语音时,按目标语音合成模型计费。

适用范围

支持的模型:
  • CosyVoice:cosyvoice-v3.5-plus、cosyvoice-v3.5-flash、cosyvoice-v3-plus、cosyvoice-v3-flash
  • Qwen-Audio-TTS:qwen-audio-3.1-tts-plus、qwen-audio-3.1-tts-flash、qwen-audio-3.0-tts-plus、qwen-audio-3.0-tts-flash
  • CosyVoice 声音设计基于 FunAudioGen-VD 模型能力。
  • 相同描述文本(Prompt)设计的音色可能存在差异,建议多次生成后择优使用。

编写声音描述

声音描述(voice_prompt)直接决定生成音色的效果。清晰、具体的描述能帮助模型更准确地生成目标音色。

要求与限制

  • 长度限制:voice_prompt 的最大长度为 500 个字符。
  • 预览文本:preview_text 仅支持中文和英文,长度为 15~200 个字符。
  • 支持语言:描述文本仅支持中文和英文。

核心原则

  1. 具体而非模糊:使用描绘声音特质的词语,如"低沉""清脆""语速偏快",避免"好听""普通"等主观或模糊的表述。
  2. 多维而非单一:好的描述通常涵盖多个维度(如性别、年龄、情感等)。仅写"女声"过于宽泛,难以生成有特色的音色。
  3. 客观而非主观:聚焦声音的物理和感知特征。例如,用"音调偏高,带有活力"代替"我最喜欢的声音"。
  4. 原创而非模仿:描述声音的特质,而非要求模仿特定人物(如名人、演员)。模型不支持模仿,且可能涉及版权风险。
  5. 简洁而非冗余:确保每个词都有明确作用,避免重复的同义词或无意义的修饰。

描述维度参考

建议组合以下维度来描述声音,维度越丰富,生成效果越精准。
维度描述示例
性别男性、女性、中性
年龄儿童(5-12 岁)、青少年(13-18 岁)、青年(19-35 岁)、中年(36-55 岁)、老年(55 岁以上)
音调高音、中音、低音、偏高、偏低
语速快速、中速、缓慢、偏快、偏慢
情感开朗、沉稳、温柔、严肃、活泼、冷静、治愈
特点有磁性、清脆、沙哑、圆润、甜美、浑厚、有力
用途新闻播报、广告配音、有声书、动画角色、语音助手、纪录片解说

示例

  • 标准播音风格:吐字清晰精准,字正腔圆
  • 年轻活泼的女性声音,语速较快,带有明显的上扬语调,适合介绍时尚产品
  • 沉稳的中年男性,语速缓慢,音色低沉有磁性,适合朗读新闻或纪录片解说
  • 温柔知性的女性,30 岁左右,语调平和,适合有声书朗读
  • 可爱的儿童声音,大约 8 岁女孩,说话略带稚气,适合动画角色配音

管理自定义音色

声音设计和声音复刻创建的音色共用同一套管理接口。您可以查询音色列表、查看音色详情或删除不再需要的音色。 API 接口和参数详情请参见 Voice design API 参考。

常见问题

Q:相同的声音描述每次生成的音色一样吗?

不一定。声音设计具有随机性,相同描述可能生成略有差异的音色。建议多次生成后试听,择优使用。

Q:声音描述可以使用哪些语言?

目前声音描述(voice_prompt)仅支持中文和英文,但生成的音色可用于合成多种语言的语音。

Q:声音设计和声音复刻有什么区别?

声音设计通过文本描述从零创建音色,无需音频样本,适合设计全新的声音形象。声音复刻基于真实音频样本复制音色,适合还原特定人物的声音。详情请参见声音复刻。

API 参考