免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

阿里 Qwen3-TTS 两大更新直接封神!支持跨物种音色克隆,3 秒复刻!

发布日期:2025-12-24 08:39:08 浏览次数: 1542
作者:开源星探

微信搜一搜,关注“开源星探”

推荐语

阿里Qwen3-TTS两大黑科技震撼登场,3秒克隆任何声音,还能跨物种合成!

核心内容:
1. VoiceDesign功能:用文字描述直接生成定制音色,打破传统预设音色池限制
2. VoiceClone技术:仅需3秒音频即可高精度克隆声音,支持10种语言转换
3. 跨物种音色克隆:突破人声限制,可复制动漫角色、动物叫声等非常规音色

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

 

说实话,今年语音模型的内卷程度已经到了不讲武德的地步。

但这次,Qwen3-TTS 的更新,是真的有点狠,可能会直接刷新你的认知。

阿里通义刚刚上线了 Qwen3-TTS 的两大核心能力:

  • • VoiceDesign(VD-Flash):用文字“设计”声音,而不是选声音。
  • • VoiceClone(VC-Flash):3 秒音频,跨语言、跨物种级别的音色克隆。

不仅可以让你自己设计声音,而且还顺手把「跨语言、跨风格、跨角色,甚至跨物种」这件事一起解决了,也可以说是创造声音。

Qwen3-TTS 正在把语音合成,从「音色选择题」,变成「声音编程」。

下面有一段最新能力的演示视频,建议观看↓。

这次更新到底有多猛?

先给大家看几个核心指标,感受下强度:

  • • ⚡ 0.1 秒级生成速度
  • • 🌍 10 种语言混合克隆
  • • 🗣️ 50 种声音 + 9 种方言
  • • 📉 错误率比 ElevenLabs/GPT-4o 还低 15%
  • • 🎭 Role-play 表现超过 GPT-4o-mini & Gemini-2.5-pro

而真正的杀手锏,其实是下面这两个能力。

VoiceDesign 声音设计

以前的 TTS 是什么逻辑?

选一个「男声/女声/情绪」,调下语速、音高,然后结束。

本质还是预设音色池 + 参数微调

Qwen3-TTS 最新的 VoiceDesign 直接推翻了这套逻辑。

它直接支持全文本控制音色特征:

  • • 语气(冷静/兴奋/疯狂/克制等)
  • • 节奏(急促/断句/停顿等)
  • • 情绪(愤怒/悲伤/戏谑/神秘等)
  • • 表演风格(旁白/角色扮演/AI助手等)

不需要任何预设音色限制,直接“描述声音”即可。

Role-play 能力据官方测试结果,VoiceDesign 在角色扮演表现上,明显超过 GPT-4o-mini 和 Gemini-2.5-pro。

终于不再是“一个声音演所有角色”。

VoiceClone 声音克隆

如果说 VoiceDesign 是「从 0 创造声音」,那 VoiceClone 就是「完美复刻现实世界的声音」。

既一个“创造声音”,另一个“复制灵魂”。

核心亮点:

只要 3 秒音频,就能克隆一个声音,并且让它说 10 种语言。

并且其错误率比 ElevenLabs/GPT-4o 低 15%,还有 0.1 秒级生成速度加成。

所以它具备更低错误率、多语言更稳、音色一致性更强的优势。

甚至支持非常规音色 — 这也是大家说它“跨物种音色克隆”的原因。

跨物种音色克隆,开始离谱了

这次 Qwen3-TTS 最让人“啊?”的一点是:

已经开始支持非传统人声的风格迁移(跨物种)。

虽然官方描述得比较克制,但从 Demo 来看:卡通音、夸张角色音、动物叫声都已经能稳定复刻。

游戏/动画/IP角色的语音生产成本,会被直接打穿。

直接上手体验

想体验现成的服务,可直接在阿里魔搭平台进行 Demo 体验。

声音设计:
https://modelscope.cn/studios/Qwen/Qwen3-TTS-Voice-Design

声音克隆(跨物种):
https://modelscope.cn/studios/Qwen/Qwen-TTS-Clone-Demo

Hugging Face上也有相关Demo,考虑到国内小伙伴们这里就不贴出来了。

另一种方式就是调用 API 服务了,其中 VoiceDesign 的模型名为:qwen3-tts-vd-realtime-2025-12-16,VoiceClone 的模型名为:qwen3-tts-vc-realtime-2025-11-27

需前往阿里云百炼开通服务,不过应该每人账户都有一些免费额度可使用的。(相关资料文档都会放在文末)

代码调用示例(VoiceClone):

import pyaudio
import
 os
import
 requests
import
 base64
import
 pathlib
import
 threading
import
 time
import
 dashscope  # DashScope Python SDK 版本需要不低于1.23.9
from
 dashscope.audio.qwen_tts_realtime import QwenTtsRealtime, QwenTtsRealtimeCallback, AudioFormat
# ======= 常量配置 =======

DEFAULT_TARGET_MODEL = "qwen3-tts-vc-realtime-2025-11-27"  # 声音复刻、语音合成要使用相同的模型
DEFAULT_PREFERRED_NAME = "guanyu"
DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg"
VOICE_FILE_PATH = "voice.mp3"  # 用于声音复刻的本地音频文件的相对路径
TEXT_TO_SYNTHESIZE = [
    '对吧~我就特别喜欢这种超市,'
,
    '尤其是过年的时候'
,
    '去逛超市'
,
    '就会觉得'
,
    '超级超级开心!'
,
    '想买好多好多的东西呢!'

]
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}")
def
 init_dashscope_api_key():
    """

    初始化 dashscope SDK 的 API key

    """

    # 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key

    # 若没有配置环境变量,请用百炼API Key将下行替换为:dashscope.api_key = "sk-xxx"

    dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
# ======= 回调类 =======

class
 MyCallback(QwenTtsRealtimeCallback):
    """

    自定义 TTS 流式回调

    """

    def
 __init__(self):
        self
.complete_event = threading.Event()
        self
._player = pyaudio.PyAudio()
        self
._stream = self._player.open(
            format
=pyaudio.paInt16, channels=1, rate=24000, output=True
        )
    def
 on_open(self) -> None:
        print
('[TTS] 连接已建立')
    def
 on_close(self, close_status_code, close_msg) -> None:
        self
._stream.stop_stream()
        self
._stream.close()
        self
._player.terminate()
        print
(f'[TTS] 连接关闭 code={close_status_code}, msg={close_msg}')
    def
 on_event(self, response: dict) -> None:
        try
:
            event_type = response.get('type', '')
            if
 event_type == 'session.created':
                print
(f'[TTS] 会话开始: {response["session"]["id"]}')
            elif
 event_type == 'response.audio.delta':
                audio_data = base64.b64decode(response['delta'])
                self
._stream.write(audio_data)
            elif
 event_type == 'response.done':
                print
(f'[TTS] 响应完成, Response ID: {qwen_tts_realtime.get_last_response_id()}')
            elif
 event_type == 'session.finished':
                print
('[TTS] 会话结束')
                self
.complete_event.set()
        except
 Exception as e:
            print
(f'[Error] 处理回调事件异常: {e}')
    def
 wait_for_finished(self):
        self
.complete_event.wait()
# ======= 主执行逻辑 =======

if
 __name__ == '__main__':
    init_dashscope_api_key()
    print
('[系统] 初始化 Qwen TTS Realtime ...')
    callback = MyCallback()
    qwen_tts_realtime = QwenTtsRealtime(
        model=DEFAULT_TARGET_MODEL,
        callback=callback,
        # 以下为北京地域url,若使用新加坡地域的模型,需将url替换为:wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime

        url='wss://dashscope.aliyuncs.com/api-ws/v1/realtime'
    )
    qwen_tts_realtime.connect()
    qwen_tts_realtime.update_session(
        voice=create_voice(VOICE_FILE_PATH), # 将voice参数替换为复刻生成的专属音色
        response_format=AudioFormat.PCM_24000HZ_MONO_16BIT,
        mode='server_commit'
    )
    for
 text_chunk in TEXT_TO_SYNTHESIZE:
        print
(f'[发送文本]: {text_chunk}')
        qwen_tts_realtime.append_text(text_chunk)
        time.sleep(0.1)
    qwen_tts_realtime.finish()
    callback.wait_for_finished()
    print
(f'[Metric] session_id={qwen_tts_realtime.get_session_id()}, '
          f'first_audio_delay={qwen_tts_realtime.get_first_audio_delay()}s'
)

写在最后

Qwen3-TTS 并不是“炫技型 TTS”,而是可以直接上生产的 TTS。

从这次 Qwen3-TTS 的更新能明显感觉到一个趋势:

语音合成,正在从「音色播放」,进化成「声音建模与设计」。

如果你在做 AI语音Agent、多模态应用、游戏/虚拟角色等,那 Qwen3-TTS 这一波,真的值得重点关注。

值得大家未来应用在各种语音场景中,发挥出它的强大能力。

API 文档(语音设计):
https://www.alibabacloud.com/help/zh/model-studio/qwen-tts-voice-design


API 文档(语音克隆):
https://www.alibabacloud.com/help/zh/model-studio/qwen-tts-voice-cloning

官方博客:
https://qwen.ai/blog?id=qwen3-tts-vc-voicedesign

 







如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️

在看你就赞赞我!

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询