小红书 FireRed 团队开源语音生成与编辑模型 FireRedTTS3,用同一套框架完成三类任务:多语言、多方言的零样本音色克隆,基于自然语言描述的声音设计,以及针对指定区域的精准语音编辑。

给定几秒钟的参考音频,模型可以用该音色说 24 种语言、21 种中文方言;给定一句文字描述,可以生成一个此前不存在的声音;给定一段现成语音,可以只修改指定的片段,其余部分与音色保持不变。克隆、设计、编辑三类过去需要分别建模的任务,在 FireRedTTS3 中由同一个模型完成。

其做法是在 tokenizer 训练阶段就把语义信息注入连续语音表示(RedAE),无需额外语义模块、多阶段训练或复杂架构,即可缓解连续语音生成中的误差累积。在 Seed-TTS-Eval(3.04% / 78.8%)、MiniMax-MLS-Test(3.75% / 84.8%)、InstructTTSEval、Ming-Freeform-Audio-Edit 四个公开评测集上,平均字错率与说话人相似度均取得最优结果。

● Demo 链接:https://fireredteam.github.io/demos/firered_tts_3/

● 模型链接:https://modelscope.cn/models/FireRedTeam/FireRedTTS3

● 代码链接:https://github.com/FireRedTeam/FireRedTTS3

 

效果示例

以下四组样例依次覆盖多语言克隆、方言克隆、声音设计与语音编辑,全部由同一套模型生成。

第一组为多语言零样本克隆,覆盖不同语言与口音,全部样例由同一套模型生成。

 

第二组为中文方言零样本克隆,覆盖多个方言区。

 

第三组为声音设计。不提供参考音频,仅给出一句自然语言描述,由模型生成对应音色。

第四组为语音编辑。在一段现成语音上只修改指定的词或语速,其余部分保持不变,用于观察编辑区域是否精准、拼接是否自然。

 

技术方案:RedAE 与 LLM-DiT

过去两年,TTS 在零样本音色克隆上已相当成熟。用户需求正在升级:不再局限于复刻一个声音,而是希望:

  • 通过自然语言描述设计声音,即给出一句音色描述,模型生成对应的声音;
  • 对已有语音做精准的局部修改,即只调整指定的字词或语速,其余部分保持不变。

需求正在从「克隆」转向「控制」,而可控性是其中最难解决的部分。

从「克隆」到「控制」:可控性难在哪

实现可控性需要三个环节:理解自然语言指令,将指令精确映射到特定语音属性或片段,以及不破坏未指定的部分。其基础是语音表示必须同时编码两类信息:语义(内容 / 风格 / 意图)与声学细节(音色 / 气声 / 音高的细微起伏)。

现有三条技术路线,在语义、声学与可控性上各有短板:

  • 非自回归 Flow Matching:架构决定了难以借力文本大模型的指令跟随能力;
  • 离散 Token(VQ / RVQ):量化会抹掉细粒度声学细节,在语音编辑这类声学敏感任务上易失真;
  • 连续自回归(LLM-DiT):连续空间无界,微小误差在自回归中不断累积,导致音色漂移、韵律崩溃。

连续自回归是目前较有前景的方向,但误差累积是其固有问题。此前的研究主要从两个方向改进:一是为连续表示补充语义(如 Ming-UniAudio 额外增加模块抽取语义、VibeVoice 使用单独的语义 VAE、dots.tts 在 VAE 训练中加入 ASR 目标);二是在自回归阶段正则化特征空间(如 VoxCPM 引入 FSQ 瓶颈)。前者通常需要额外的语义模块或多阶段 tokenizer 训练,后者会增加架构复杂度。

FireRedTTS3 的思路是:在「表示」这一层缓解误差累积,同时保持系统结构简单。

RedAE:语义增强的连续语音表示

FireRedTTS3 的第一块基石是连续语音 tokenizer RedAE。其核心思路是:不额外增加语义模块、不采用多阶段训练,而是引入一个语义教师模型,在 tokenizer 训练阶段就把语义信息注入连续表示。

 

图 1|RedAE 结构示意图

 

语义教师的来源。团队先训练了一个音频理解模型 FireRedAudio,在 ASR、说话人验证等多种语音理解任务上进行学习,其 Audio Encoder 因此同时编码内容语义与说话人声学线索。

训练 RedAE 时,将该 Audio Encoder 冻结作为语义教师,让 RedAE 输出的连续表示对齐教师特征(最小化两者的 MSE,即语义蒸馏损失)。训练完成后,教师模型不再参与下游生成阶段,因此不增加推理成本。

声学保真度。RedAE 未使用常见的 KL 正则,避免声学信息被过度压缩,保留了容易在量化中丢失的音色细节,这也是其在音色相似度上取得领先的原因。

架构与训练细节。输入 24 kHz 波形被切成不重叠的 480 采样点帧(得到 50 Hz 序列),经两个级联的 Qwen3 风格 Transformer 处理:第一个在 50 Hz 做上下文建模,第二个通过基于注意力的池化下采样到 25 Hz(每两帧合成一个 patch)。

整体在 GAN 框架下训练,生成器损失包含对抗、多尺度 Mel 重建、特征匹配、语义蒸馏四项。RedAE 的 Encoder 与 Decoder 在单一阶段联合训练,没有额外语义分支、没有多阶段流水线;训练用了 50 万小时多样音频(干净语音 50% / 带噪 25% / 音效 10% / 音乐 15%),在 32 张 H800 上跑 55 万步。

LLM-DiT:生成框架与两个版本

在 RedAE 之上,FireRedTTS3 采用一个轻量的 LLM-DiT 框架做生成,由三个组件组成:

 

图 2|LLM-DiT 结构,左为 FireRed-Base,右为 FireRed-Instruct

 

  • Aggregator:把 25 Hz 的 RedAE 表示进一步压成 6.25 Hz 的 latent patch,缩短序列、降低建模难度;
  • Backbone Transformer:从 Qwen3 文本大模型初始化,以继承文本理解与指令跟随能力,负责自回归地建模「文本 token + latent patch」;
  • DiT 模块:一个全注意力 Transformer,在 Backbone 的条件下做 patch 级去噪——每一步的输入是「一个带噪的当前 patch(4 帧)+ 12 帧干净的历史 latent」,历史 latent 始终保留,以维持时间连贯性;训练时以 0.1 概率随机丢弃条件做 CFG。

基于同一套框架,团队发布了两个版本:

FireRedTTS3-Base(面向多语言、多方言克隆)

  • Backbone 从 Qwen3-1.7B-Base 初始化;用 CAM++ 提取说话人嵌入,既拼进 Backbone 输入,又作为 DiT 的说话人条件,以强化音色一致性;文本前加语言标签指示目标语种。
  • 两阶段训练:第一阶段用 260 万小时中英文语音(17 万步)打好零样本克隆底子;第二阶段在 56 万小时、覆盖 24 种语言 + 21 种中文方言的数据上继续训练,扩展到多语言、多方言。

FireRedTTS3-Instruct(统一克隆 / 设计 / 编辑)

  • Backbone 从带指令能力的 Qwen3-1.7B 初始化,采用 ChatML 格式,用不同的 system prompt 区分任务。
  • 关键设计是「先规划、再合成」:模型先把用户指令翻译成一份结构化文本方案——声音设计时,把自由描述拆解成 12 个具体声学属性的序列;语音编辑时,把指令展开成目标转录 + 编辑区域掩码,从而只改指定区域、保留其余部分。
  • 保留 Qwen3 的文本头以支持这个中间规划过程;与 Base 不同,Instruct 不使用显式说话人嵌入和语言标签。第二阶段在 33 万小时声音设计与语音编辑数据上训练 4 万步。

 

四个公开评测集结果

FireRed 团队在四个公开评测集上,与当前主流模型进行了对比测试。

在评估中英文零样本音色克隆的 Seed-TTS-Eval 上,FireRedTTS3-Base 取得了最低的平均错误率与最高的平均说话人相似度——Test-EN 与 Test-ZH 的相似度均为最优。这印证了「语义化的连续表示」能为 LLM-DiT 提供稳定的建模目标,带来更鲁棒的文本—语音对齐;而由于避免了量化带来的声学信息损失,它在音色相似度上的优势尤为明显。

 

图 3|Seed-TTS-Eval 零样本克隆结果。所有结果均统一使用官方开源脚本测得

将范围扩展到 24 种语言的 MiniMax-MLS-Test 后,FireRedTTS3-Base 取得了全部语言中最低的平均错误率(3.75%)与最高的平均相似度(84.8%),并在 22 / 24 种语言的相似度上位列第一或第二。其中葡萄牙语与乌克兰语并不在 RedAE 的训练数据中,模型仍给出了有竞争力的结果,体现出 RedAE 表示对未见语言的泛化能力。

 

图 4|MiniMax-MLS-Test 多语种测评结果

在考察声音设计能力的 InstructTTSEval 上(评测集共 6000 条样本,中英文子集各 3000 条),FireRedTTS3-Instruct 在中、英文的三类指令——声学参数指定(APS)、风格描述(DSD)、角色扮演(RP)——上均取得最佳成绩。

这得益于它「先把指令解析成 12 维结构化文本方案、再合成」的设计,有效降低了自然语言指令的歧义:对于 APS 任务,模型从复杂的声学参数化指令中提取显式属性;对于 DSD 与 RP 任务,模型将抽象的风格描述或角色画像转化为具体的声学方案,从而提高对用户指令的遵循度。

除了对指令解耦,FireRedTTS3-Instruct 还学习到了从这些规划好的声学属性序列到 RedAE 语音表示之间的稳定映射,从而能够有效控制目标音色合成。

 

图 5|InstructTTSEval 指令控制声音设计结果

在评估语音编辑的 Ming-Freeform-Audio-Edit 榜单上,无论是声学编辑(语速、音高、音量),还是语义编辑(插入、删除、替换),FireRedTTS3-Instruct 大多处于领先,且在自由指令的 open 设定下表现同样稳定。

从核心评测指标看:更低的 WER(字错率)与 NoEdit WER(未编辑区字错率),配合高 ACC(编辑准确率),确保内容修改准确;领先的 SIM(说话人相似度)保证音色不漂移;较低的 RDE / RAE(声学误差率)表明模型能精准修改到目标音量与时长。三项指标共同对应「编辑区域准确、其余部分不变、音色保持一致」。

 

图 6|Ming-Freeform-Audio-Edit 声学编辑结果

 

图 7|Ming-Freeform-Audio-Edit 语义编辑结果

 

本地部署与快速体验

FireRedTTS3 有 Base 与 Instruct 两个版本。

环境与模型下载

git clone https://github.com/FireRedTeam/FireRedTTS3.git
cd FireRedTTS3
pip install -r requirements.txt

pip install modelscope
modelscope download --model FireRedTeam/FireRedTTS3 --local_dir pretrained_models/

 

文本前端配置

语种识别(可选)。Base 版依赖显式语言标签发挥最佳效果,若不确定输入文本的语种,可下载 FastText 语言识别模型 lid.176 自动判别。

curl -L -o fireredtts3/utils/llm_tn/models/lid.176.ftz \
  https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.ftz

 

零样本音色克隆

准备一段参考音频及其对应文本即可。官方建议参考音频与目标语种或方言保持一致——合成日语时用日语参考音频,合成四川话时用四川话参考音频,因为输出会继承参考音频的说话风格。

import torchaudio
from fireredtts3.core import FireRedTTS3

tts = FireRedTTS3("pretrained_models", use_wetext=True, use_llm_tn=False)

prompt_audio, prompt_sr = torchaudio.load("prompt.wav")
gen_audio, gen_sr = tts.generate(
    language=None,                 # 传 None 自动识别语种
    prompt_text="<参考音频对应的文本>",
    prompt_audio=prompt_audio,
    prompt_audio_sr=prompt_sr,
    text="今天天气很好,我们一起去公园散步吧。",
    do_tn=True,
)
torchaudio.save("gen.wav", gen_audio.cpu(), gen_sr)

 

语种标签用英文名传入,如 Chinese、English、Japanese、Cantonese 等 24 种;方言统一带 ZH_ 前缀,如 ZH_Sichuan、ZH_Shanghai、ZH_Minnan、ZH_Wenzhou 等 21 种。

声音设计与语音编辑

Instruct 版将四类能力收进同一个入口 FireRedTTS3Instruct,按方法区分任务。

from fireredtts3.core import FireRedTTS3Instruct

instruct = FireRedTTS3Instruct("pretrained_models", use_wetext=True, use_llm_tn=False)

# 声音设计:无需参考音频,先输出声学属性方案(gen_text)再渲染音频
gen_audio, gen_sr, gen_text = instruct.generate_voice_design(
    instruction="一个年轻女性的温柔嗓音,语速稍慢,带一点俏皮。",
    text="今天天气很好,我们一起去公园散步吧。",
)

# 语义编辑:内容层面的插入 / 删除 / 替换,指令支持自由表述
audio_in, in_sr = torchaudio.load("input.wav")
gen_audio, gen_sr, gen_text = instruct.generate_semantic_edit(
    instruction="把「猫」替换成「狗」。", audio_in=audio_in,
    audio_in_sr=in_sr,
)

# 声学编辑:语速 / 音高 / 音量
gen_audio, gen_sr = instruct.generate_acoustic_edit(
    instruction="adjust the speed to 0.5x", audio_in=audio_in,
    audio_in_sr=in_sr,
)

# 零样本克隆:Instruct 版同样支持
gen_audio, gen_sr = instruct.generate_tts(
    prompt_text="<参考音频对应的文本>", prompt_audio=prompt_audio,
    prompt_audio_sr=prompt_sr, text="<待合成的文本>",
)

 

声学编辑的指令须套用训练时的模板,自由表述不生效:语速为 adjust the speed to X(X 取 0.5–2.0,步长 0.1),音高为 shift the pitch by N step(s)(N 取 -6 至 +6 的非零整数),音量为 adjust the volume to X(X 取 0.3–2.0,步长 0.1)。

 

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐