跳到正文
原文
Qwen Blog· QwenTeam·· 2025-12-23精选AI 评分62

Qwen3-TTS 升级:发布音色设计模型 VD-Flash 与 3 秒音色克隆模型 VC-Flash

Qwen3-TTS 全面升级: 音色设计与音色克隆!

AI 摘要

Qwen3-TTS 家族新增两个可通过 Qwen API 调用的模型:音色设计模型 Qwen3-TTS-VD-Flash 和音色克隆模型 Qwen3-TTS-VC-Flash。

正文 · AI 翻译

Qwen3-TTS 升级:声音克隆与声音设计!

Qwen3-TTS 系列推出两款新模型:声音设计模型 Qwen3-TTS-VD-Flash(可通过 Qwen API 访问)和声音克隆模型 Qwen3-TTS-VC-Flash(可通过 Qwen API 访问)。

关键特性:

  • 声音设计:Qwen3-TTS-VD-Flash 支持复杂的自然语言指令,可对音色、韵律、情感、人设等进行细粒度控制,实现从“说什么”到“怎么说”的全面掌控。它允许用户自由定义想要的声音,彻底摆脱只能克隆已有声音或从有限预设声音中选择的限制。在 InstructTTS-Eval 上,其整体表现显著优于 GPT-4o-mini-tts 和 Mimo-audio-7b-instruct,并在角色扮演测试中超越 Gemini-2.5-pro-preview-tts。
  • 声音克隆:Qwen3-TTS-VC-Flash 支持 3 秒声音克隆,并可基于克隆声音生成中文、英文、德文、意大利文、葡萄牙文、西班牙文、日文、韩文、法文和俄文 10 种主要语言的语音。在 MiniMax TTS 多语言测试集上,其平均词错误率(WER)始终优于 MiniMax、ElevenLabs 和 GPT-4o-Audio-Preview。
  • 高表现力:Qwen3-TTS-VD-Flash 和 Qwen3-TTS-VC-Flash 提供极具表现力、类人的声音,能够稳定可靠地生成与输入文本高度一致的语音,并根据语义内容自动调整语调和节奏,实现自然生动的表达。
  • 稳健的文本处理:Qwen3-TTS-VD-Flash 和 Qwen3-TTS-VC-Flash 具备强大的文本解析能力,可自动处理复杂的文本结构并准确提取关键信息,在处理多样化和非标准文本格式时展现出很强的稳健性。

Qwen3-TTS-VD-Flash

Qwen3-TTS 支持直接根据自然语言描述创建定制声音档案。用户可以自由描述声学属性、人设设定、背景信息等,轻松创建自己想要的那种声音。

指标

可控生成:在 InstructTTS-Eval 基准上,Qwen3-TTS 整体显著优于 GPT-4o-mini-tts 和 Mimo-audio-7b-instruct,并在角色扮演测试中超越 Gemini-2.5-pro-preview-tts。

示例

控制类型控制指令文本示例
声学属性:正面/负面模仿电视购物主持人,中年男性,声音洪亮有激情,语速极快,音调夸张上扬,用极具煽动性的语气来介绍产品,营造出紧迫感和抢购氛围。不要九百九十八,也不要八百八十八,今天只要九十八!对,你没有听错,只要九十八!赶快拿起电话订购吧!
男性,中年,洪亮男中音——超有能量的电视购物嗓音,语速飞快、音调夸张上扬,满是推销腔调不是九百九十九美元!也不是七百九十九!今天,只要 \$98!没错,你没听错,只要九十八美元!别等了,别犹豫——拿起电话,现在就打!
展现出悲苦沙哑的声音质感,语速偏慢,情绪浓烈且带有哭腔,以标准普通话缓慢诉说,情感强烈,语调哀怨高亢,音高起伏大。这些年代受的苦,就跟你说上十天半个月也说不完。
男性,30 多岁,紧绷的男高音——抽泣的喘息打断话语,音调在耳语和哀号之间剧烈摇摆我受过的苦……我能说上几天、几周,也仍然说不完。
人设角色扮演:简洁/丰富邪恶女魔头哥哥,你回来啦,人家等了你好久好久了,要抱抱!
俏皮宅家妹妹哥哥~你终于回家啦!我等了好久好久!抱抱我嘛~!
角色姓名:陈远山 身份背景:某国家重点科研项目首席顾问,年近七十的资深战略科学家。曾参与国家重大科技攻关工程,历经数十年风雨,见证了从落后追赶到自主创新的艰难历程。现任国家科技咨询委员会终身荣誉委员,仍坚持在一线培养青年人才,为国家战略发展建言献策。 外貌特征:身形挺拔,两鬓斑白,眉宇间刻着岁月沉淀的坚毅。常着深色中山装或简洁正装,眼神沉静而锐利,举手投足间自带威严与从容。 性格特质:意志如钢,信念坚定,面对挑战从不退缩;胸怀家国,心系民族未来,将个人命运与国家兴衰紧密相连;严谨自律,言出必行,话语中充满责任感与历史担当;外冷内热,表面严肃,实则对后辈寄予厚望,甘为人梯。 人生信条:“我们这一代人,不是为了站在光里,而是为了把路铺到光里。”有些事,只要国家需要,就得有人扛起来。 我们那一代人,是背着泥土铺路的; 你们要做的,是让这条路,通向星辰大海。
角色:中级企业项目经理。性别:男。音高:富有动态的男声音高,起始于中高音区并带有激动情绪,过渡到较低平的陈述音域,并在诸如“so finished!”这样的强烈强调处向上拔高。语速:语速多变;在激动状态(“Damn it!”)下起初较快,在“I'm done”等陈述性语句处放慢,随后在强烈的情感表达(“so finished!”)中再次加快。音量:动态范围显著;起初响亮有力,短暂减弱至坚定的交谈音量,随后在高强调点如“so finished!”处升级为喊叫。年龄:中年成年人。清晰度:吐字始终清晰,即使在快速或响亮的情绪表达中也能保持。流畅度:言语流畅连贯,停顿和节奏与所表达的情绪状态相契合。口音:通用美式英语。质感:以有力为主,在激动的爆发和喊叫中变得紧绷,而在较平静的陈述中则洪亮而坚定。情绪:以明显的沮丧和恼怒(“Damn it!”)开始,转为坚决果断(“I'm done”),最终以对终结的强烈强调性宣告(“I am so finished!”)达到高潮。语气:以激动和质问开始,过渡到坚定和陈述性,最后以高度强调和强烈的特质收尾。性格:果断且情感外露,展现出沮丧的累积,最终导向果断、有力的了结。我也一样,该死的。我是说,拜托。只是,你知道吗,我受够了。我完了。结束了,我走了。我彻底完了。那些是在健康的时候来的。
背景信息《少年闰土》是节选自鲁迅1921年写的短篇小说《故乡》中的一段插叙, 主人公以鲁迅的童年伙伴章运水为原型。 《少年闰土》的题目是被选入小学语文教材后编者加的,自1980年起,它基本上一直保留在小学语文教材中, 目前被选入小学语文教材统编版六年级上册。 《少年闰土》以回忆的方式展开, 刻画出一个机敏勇敢、见多识广的闰土形象。 全文按照“记忆—相识—相处—相别”的顺序书写, 依次介绍了“我”记忆中看瓜刺猹的闰土、初次相识时的闰土、给“我”讲新鲜事的闰土, 少年闰土给“我”的童年生活带来了无穷的新奇与乐趣。 作者善用白描手法,多用直接引语, 其中又蕴含丰富的情感,既有“我”在相见之前对闰土的盼望,也有相处过程中对闰土的羡慕和向往,还有分别时的依依不舍。在短短的相处中,“我”和闰土彼此之间结下深厚情谊。深蓝的天空中挂着一轮金黄的圆月,下面是海边的沙地,种着一望无际的碧绿西瓜。其间十一二岁的少年闰土,项带银圈,手捏钢叉,向一匹猹刺去。那猹却将身一扭,反从他胯下逃走——这幅月夜刺猹的画面,成了“我”三十年来难忘的剪影。那年,因家中轮到三十余年一遇的大祭祀值年,祭器贵重需人看管,父亲便允了忙月的请求,唤其子闰土进城相助。
《不要温和地走进那个良夜》是威尔士诗人迪伦·托马斯(1914–1953)创作的一首维拉内拉体诗歌,也是他最著名的作品之一。这首诗于1951年首次发表于《Botteghe Oscure》期刊,但托马斯是在1947年与家人游览佛罗伦萨时写下此诗的。此后,这首诗与托马斯的其他作品一同收录于《在乡间沉睡及其他诗作》(New Directions,1952)和《诗集,1934–1952》(Dent,1952)。该诗于2024年1月1日在美国以外的所有国家进入公有领域。有人认为这首诗是为托马斯垂死的父亲而写,尽管他直到1952年圣诞节前夕才去世。这首诗除首行“不要温和地走进那个良夜”外并无标题,该行与另一句叠句“怒斥,怒斥光明的消逝”一同作为叠句贯穿全诗。不要温和地走进那个良夜 老年应当在日暮时燃烧咆哮 怒斥,怒斥光明的消逝 尽管智者临终时知道黑暗有理 因为他们的话语没有迸发出闪电 他们也不会温和地走进那个良夜

用户还可以持久存储并反复调用由Qwen3-TTS创建的声音,从而生成生动自然的多轮、多角色长篇对话。

控制类型控制指令文本示例
声音复用"旁白": "声音特征沉稳、客观、略带叙事感的女播音腔,普通话标准,语速适中,带有轻微的环境氛围渲染,语调平缓但富有感染力,在关键情节时稍作停顿,增强画面感。情感冷静旁观,偶尔带一丝微妙的反讽" "小林": "25岁男性上班族,声音清亮但时常犹豫,语速时快时慢,紧张时会轻微结巴。情绪波动明显,从低声呢喃到突然激动再到自我怀疑的叹气。肢体语言丰富,经常无意识的小动作" "御姐": "模拟成熟性感的御姐音色,声音略带磁性且沉稳,语速不快不慢,语调充满自信和一丝挑逗,尾音可以稍微拖长并上扬,给人一种游刃有余的掌控感。"旁白: 小林今天第三次走神了。酒吧昏黄的灯光晃得他心跳加速,而吧台对面那个红唇微扬的女人,正用指尖轻轻摩挲着酒杯边缘。 御姐: 小弟弟,有兴趣陪姐姐喝一杯吗? 小林: 啊?我、我……我其实不太会喝酒…… 旁白: 他的手指无意识地抠着杯沿,喉结上下滚动,像被什么无形的东西掐住了呼吸。 御姐: 不会喝?那正好——姐姐教你。这杯莫吉托,甜得刚好,就像你刚才偷看我的眼神。 小林: 我、我没偷看!……好吧,看了一眼。就一眼! 旁白: 他猛地坐直,又立刻缩回肩膀,仿佛那句话烫伤了自己的嘴。 御姐: 紧张什么?你连坐姿都在发抖……要不要靠过来一点?这里太吵了。 小林: 靠过去?可、可我们才第一次见面……你都不认识我…… 御姐: 名字不重要,感觉才重要。......而我感觉……你有点可爱。 旁白: 小林的耳朵瞬间红透,连耳后那颗小痣都像在发烫。他想逃,脚却像钉在了高脚凳上。 小林: 可爱?没人这么说过我……他们都说我太闷,连朋友圈都发不出手…… 御姐: 那现在呢?敢不敢发一条——'今晚,和一个危险又迷人的姐姐喝了一杯'? 小林: ……我连配图都不敢选。你笑起来太……太有杀伤力了。 御姐: 那就别发了。有些故事,只适合藏在两个人的记忆里——比如,接下来你打算请我跳支舞吗? 旁白: 他张了张嘴,没发出声音。但这一次,他没有低头,而是轻轻推开了那杯没动过的苏打水,朝她伸出了手。
“Lucas”:“男性,17岁,男高音音域,逐渐获得自信——气息支撑更深了,不过紧张时元音仍会收紧” “Mia”:“女性,16岁,女中音音域,渐趋柔和——降低音区至亲密交谈的声音,辅音变得柔和”Lucas:嘿——嘿!你掉了你的……呃……微积分笔记本?我是说,我觉得这是你的?也许吧? Mia:哦哇,我的死对头——Thompson老师的习题集。谢谢你把我从F手里救出来。 Lucas:没问题!其实……我好像已经做完那些了?如果你想对答案什么的…… Mia:这是你委婉地说想一起学习的方式吗,Lucas?因为我看到你在实验搭档报名时一直盯着看。 Lucas:什么?没有!我是说对,但不是那种……我只是觉得你……你的滴定手法真的很精准! Mia:这是我听过最书呆子的赞美。这样吧——帮我熬过预备微积分,我就教你怎么真正地调情。 Lucas:哇,真狠。我还以为我的滴定台词很顺呢。 Mia:是很可爱。就像你昨天在走廊被鞋带绊倒那样。或者那次你—— Lucas:好了好了!我懂了,我是个灾难。所以……放学后图书馆?我带图形计算器? Mia:除非你保证不再把咖啡洒在我的笔记上……不过看你手忙脚乱地清理还挺可爱的。

如何使用

通过 Qwen API 使用 Qwen3-TTS-VD-Flash 非常简单。下面是一段简短的代码片段,供你试用:

python

import requestsimport base64import os
def create_voice_and_play():    # API keys differ between Singapore and Beijing regions. Get your API key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key    # If you haven't set an environment variable, replace the line below with: api_key = "sk-xxx"    api_key = os.getenv("DASHSCOPE_API_KEY")    if not api_key:        print("Error: DASHSCOPE_API_KEY environment variable not found. Please set your API key.")        return None, None, None    # Prepare request data    headers = {        "Authorization": f"Bearer {api_key}",        "Content-Type": "application/json"    }    data = {        "model": "qwen-voice-design",        "input": {            "action": "create",            "target_model": "qwen3-tts-vd-realtime-2025-12-16",            "voice_prompt": "A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.",            "preview_text": "Dear listeners, hello everyone. Welcome to the evening news.",            "preferred_name": "announcer",            "language": "en"        },        "parameters": {            "sample_rate": 24000,            "response_format": "wav"        }    }    # URL for Singapore region. For Beijing region, use: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization    url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"    try:        # Send request        response = requests.post(            url,            headers=headers,            json=data,            timeout=60  # Add timeout setting        )        if response.status_code == 200:            result = response.json()            # Get voice name            voice_name = result["output"]["voice"]            print(f"Voice name: {voice_name}")            # Get preview audio data            base64_audio = result["output"]["preview_audio"]["data"]            # Decode Base64 audio data            audio_bytes = base64.b64decode(base64_audio)            # Save audio file locally            filename = f"{voice_name}_preview.wav"            # Write audio data to local file            with open(filename, 'wb') as f:                f.write(audio_bytes)            print(f"Audio saved to local file: {filename}")            print(f"File path: {os.path.abspath(filename)}")            return voice_name, audio_bytes, filename        else:            print(f"Request failed. Status code: {response.status_code}")            print(f"Response: {response.text}")            return None, None, None    except requests.exceptions.RequestException as e:        print(f"Network request error: {e}")        return None, None, None    except KeyError as e:        print(f"Response format error: missing required field: {e}")        print(f"Response: {response.text if 'response' in locals() else 'No response'}")        return None, None, None    except Exception as e:        print(f"Unexpected error: {e}")        return None, None, None
if __name__ == "__main__":    print("Creating voice...")    voice_name, audio_data, saved_filename = create_voice_and_play()    if voice_name:        print(f"\nSuccessfully created voice '{voice_name}'")        print(f"Audio file saved: '{saved_filename}'")        print(f"File size: {os.path.getsize(saved_filename)} bytes")    else:        print("\nVoice creation failed")

Qwen3-TTS-VC-Flash

Qwen3-TTS 支持自然、3 秒级别的音色克隆,并能基于克隆音色生成多语言音频。它在处理复杂文本和真实场景音频时也具有很高的鲁棒性。

指标

多语言音色克隆:在 MiniMax TTS 多语言测试集上,Qwen3‑TTS 在中文、英文、法文、意大利文等语言上相比 MiniMax、ElevenLabs 和 GPT‑4o‑Audio‑Preview 展现出更稳定的内容,取得了最佳的平均词错误率(WER)。

样例

克隆类型参考音频文本样例
中英克隆昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。
Overcome with guilt, Martin hung his head and muttered, "I’m so sorry. I never meant to hurt you like this. Can you ever forgive me?" It was obvious what the answer would be.
再说,学好文化搞通思想,道理还不是为了劳动?难道我劳动比谁差!
Innovation blossoms when we cast aside the paralyzing fear of failure and wholeheartedly embrace the gloriously messy, unexpectedly beautiful journey of creation.
多语言克隆上周我去日本旅游,看到一个法国人在买东西,那个日本人问:なんか買うものありますか?那个法国人说:Je voudrais acheter un t-shirt à manches courtes.'
呐,跟你说个秘密哦!The tea eggs sold by the old lady on the mountaintop are something else, I tell you! Es wird durch Einkochen mit Quellwasser und drei verschiedenen Wildkräutern zubereitet.
复杂文本鲁棒性Qwen-TTS 是支持音色克隆、生成、控制的语音合成模型,不仅支持多语言multilingual,还支持各种复杂文本,如pin1 yin1,特殊符号等·〛』];能读出各种生僻字词。快来试试吧!
Is there anyone who can solve the equation: x = [-b ± √(b²-4ac)] / 2a? Nobody can — it's a disaster, very sad! If you know this formula, please email solution@prize.org.
真实场景音频鲁棒性妲己凭借着自己的妖娆妩媚,在商纣王的宫廷中弄权,她的行为可谓是牝鸡司晨,加速了商朝的灭亡
We began our discussion on the four development phases of romantic relationships by reading a quote from 'The General Theory of Love.'

想听听动物如果会说话会是什么声音吗?Qwen3-TTS 可以向你展示跨物种克隆:

克隆类型参考音频文本样例
跨物种克隆这点小事都能办砸?说好晚上七点准时开饭,本汪的肚子都咕咕叫了!
That was one small leap for me, but a giant leap for goatkind!
早起的鸟儿有虫吃,早起的虫儿被我吃!
Oink... not now. My mud nap is at peak fluffiness. Disturb me and I’ll snore louder.

如何使用

通过 Qwen API 使用 Qwen3-TTS-VC-Flash 非常简单。下面是一段简短的代码片段,供你试用:

python

# The DashScope SDK version must be 1.23.9 or later, and the Python version must be 3.10 or later.# 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 pyaudioimport osimport requestsimport base64import pathlibimport threadingimport timeimport dashscope  # The DashScope Python SDK version must be 1.23.9 or later.from dashscope.audio.qwen_tts_realtime import QwenTtsRealtime, QwenTtsRealtimeCallback, AudioFormat
# ======= Constant configuration =======DEFAULT_TARGET_MODEL = "qwen3-tts-vc-realtime-2025-11-27"  # The same model must be used for voice cloning and speech synthesis.DEFAULT_PREFERRED_NAME = "guanyu"DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg"VOICE_FILE_PATH = "voice.mp3"  # The relative path of the local audio file for voice cloning.
TEXT_TO_SYNTHESIZE = [    'Right? I really like this kind of supermarket,',    'especially during the New Year.',    'Going to the supermarket',    'just makes me feel',    'super, super happy!',    'I want to buy so many things!']
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:    """
    Create a voice and return the voice parameter.
    """    # The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.    # If you have not configured the environment variable, replace the following line with your Model Studio 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"The audio file does not exist: {file_path}")
    base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()    data_uri = f"data:{audio_mime_type};base64,{base64_str}"
    # The following is the URL for the Singapore region. If you use a model in the Beijing region, replace the URL with: https://dashscope.aliyuncs.com/api/v1/services/audio/tts/customization    url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"    payload = {        "model": "qwen-voice-enrollment", # Do not modify this value.        "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"Failed to create the voice: {resp.status_code}, {resp.text}")
    try:        return resp.json()["output"]["voice"]    except (KeyError, ValueError) as e:        raise RuntimeError(f"Failed to parse the voice response: {e}")
def init_dashscope_api_key():    """
    Initialize the API key for the DashScope SDK.
    """    # The API keys for the Singapore and Beijing regions are different. To get an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key.    # If you have not configured the environment variable, replace the following line with your Model Studio API key: dashscope.api_key = "sk-xxx"    dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
# ======= Callback class =======class MyCallback(QwenTtsRealtimeCallback):    """
    Custom TTS streaming callback.
    """    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] Connection established')
    def on_close(self, close_status_code, close_msg) -> None:        self._stream.stop_stream()        self._stream.close()        self._player.terminate()        print(f'[TTS] Connection closed 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] Session started: {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 complete, Response ID: {qwen_tts_realtime.get_last_response_id()}')            elif event_type == 'session.finished':                print('[TTS] Session finished')                self.complete_event.set()        except Exception as e:            print(f'[Error] Exception occurred while processing callback event: {e}')
    def wait_for_finished(self):        self.complete_event.wait()
# ======= Main execution logic =======if __name__ == '__main__':    init_dashscope_api_key()    print('[System] Initializing Qwen TTS Realtime ...')
    callback = MyCallback()    qwen_tts_realtime = QwenTtsRealtime(        model=DEFAULT_TARGET_MODEL,        callback=callback,        # The following is the URL for the Singapore region. If you use a model in the Beijing region, replace the URL with: wss://dashscope.aliyuncs.com/api-ws/v1/realtime        url='wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime'    )    qwen_tts_realtime.connect()    qwen_tts_realtime.update_session(        voice=create_voice(VOICE_FILE_PATH), # Replace the voice parameter with the custom voice generated by cloning.        response_format=AudioFormat.PCM_24000HZ_MONO_16BIT,        mode='server_commit'    )
    for text_chunk in TEXT_TO_SYNTHESIZE:        print(f'[Send text]: {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')

引用

如果你觉得我们的模型对你的研究有帮助,请考虑引用我们 📝 :)

BibTeX

@misc{qwen3_tts_202512,  author       = {Qwen Team, Alibaba},  title        = {Qwen3-TTS Steps Up: Voice Cloning and Voice Design!},  year         = {2025},  url          = {https://qwen.ai/blog?id=qwen3-tts-vc-voicedesign},  urldate      = {2025-12-23}}

来源:Qwen Blog · qwen.ai

00