FireRedTTS3:支持24种语言与21种方言的语音生成与编辑

某技术团队开源了FireRedTTS3语音生成与编辑模型,这款模型通过统一的技术框架,同时实现了三大核心功能:零样本音色克隆、自然语言驱动的声音设计,以及精准的局部语音编辑,在多项公开评测中取得了领先的性能表现。
该模型的核心优势在于能够用一套系统完成三类原本需要分别建模的任务:只需几秒参考音频,就能用目标音色生成24种语言、21种中文方言的语音;仅通过一段自然语言描述,就能生成此前不存在的定制化音色;还能对一段现有的语音进行局部修改,只调整指定的片段内容,其余部分保持原有的音色与韵律不变。
过去两年,零样本音色克隆技术已经相对成熟,但用户的需求正在从简单的声音复刻,升级为对语音的精细化控制:不仅要生成符合描述的音色,还要能精准修改指定的语音片段。实现这种可控性需要同时编码语义信息与声学细节,而当前主流的技术路线都存在各自的短板。
- 非自回归Flow Matching架构难以借力大模型的指令跟随能力
- 离散Token量化会丢失细粒度的声学细节,在语音编辑等敏感任务中容易出现失真
- 连续自回归模型存在误差累积的问题,容易导致音色漂移与韵律崩溃
FireRedTTS3选择在语音表示层解决误差累积的问题,同时保持系统结构简洁,无需额外的语义模块或多阶段训练流程。
RedAE:语义增强的连续语音表示
其核心的语音Tokenizer为RedAE,通过引入预训练的音频理解模型作为语义教师,在Tokenizer的训练阶段就将语义信息注入到连续语音表示中。团队首先训练了FireRedAudio音频理解模型,在ASR、说话人验证等多个任务上进行预训练,使其Encoder能够同时编码内容语义与说话人声学特征。训练RedAE时,将该Encoder冻结作为语义教师,让RedAE的输出特征与教师模型的特征对齐,通过语义蒸馏损失优化模型。训练完成后,教师模型不再参与下游生成流程,不会增加推理的额外成本。
RedAE没有使用常见的KL正则化,避免了声学信息被过度压缩,保留了量化过程中容易丢失的音色细节,这也是其在音色相似度评测中取得领先的重要原因。在架构上,输入的24kHz波形被切分为480采样点的帧,得到50Hz的序列,经过两级Qwen3风格的Transformer处理:第一级在50Hz频率下进行上下文建模,第二级通过注意力池化下采样到25Hz,将每两帧合并为一个patch。整体训练采用GAN框架,生成器损失包含对抗损失、多尺度Mel重建损失、特征匹配损失与语义蒸馏损失四项。RedAE的Encoder与Decoder在单阶段内联合训练,没有额外的语义分支与多阶段流水线,训练数据包含50万小时的多样音频,其中干净语音占50%、带噪语音25%、音效10%、音乐15%,在32张H800显卡上训练了55万步。
LLM-DiT:生成框架与双版本设计
基于RedAE的连续语音表示,FireRedTTS3采用轻量的LLM-DiT生成框架,由三个核心组件组成:
- Aggregator:将25Hz的RedAE表示进一步压缩为6.25Hz的latent patch,缩短序列长度,降低建模难度
- Backbone Transformer:基于Qwen3文本大模型初始化,继承大模型的文本理解与指令跟随能力,负责自回归建模「文本token + latent patch」
- DiT模块:全注意力Transformer结构,在Backbone的条件下进行patch级去噪,每一步的输入包含带噪的当前patch与12帧干净的历史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万步
权威评测表现
团队在四个公开权威评测集上与当前主流模型进行了对比测试,FireRedTTS3取得了全面领先的成绩:
Seed-TTS-Eval:中英文零样本克隆评测
FireRedTTS3-Base取得了最低的平均字错率与最高的平均说话人相似度,英文与中文测试集的相似度均为最优。这证明了语义化的连续语音表示能够为LLM-DiT框架提供稳定的建模目标,实现更鲁棒的文本-语音对齐,同时避免了量化带来的声学信息损失,在音色相似度上的优势尤为明显。
MiniMax-MLS-Test:多语言零样本克隆评测
在覆盖24种语言的评测中,FireRedTTS3-Base取得了最低的平均字错率(3.75%)与最高的平均说话人相似度(84.8%),在22/24种语言的相似度评测中位列第一或第二。值得注意的是,葡萄牙语与乌克兰语并未出现在RedAE的训练数据中,模型依然给出了具有竞争力的结果,体现了RedAE表示对未见语言的泛化能力。
InstructTTSEval:声音设计能力评测
该评测集包含6000条样本,中英文子集各3000条,覆盖声学参数指定、风格描述、角色扮演三类指令。FireRedTTS3-Instruct在中英文的所有三类指令任务中均取得了最佳成绩。这得益于其「先规划再合成」的设计,有效降低了自然语言指令的歧义:对于声学参数指定任务,模型能够从复杂的参数化指令中提取显式属性;对于风格描述与角色扮演任务,模型能够将抽象的风格描述转换为具体的声学方案,提升对用户指令的遵循度。同时,模型学习到了从结构化声学属性序列到RedAE语音表示的稳定映射,能够精准控制目标音色的合成。
Ming-Freeform-Audio-Edit:语音编辑评测
在该评测中,无论是语速、音高、音量的声学编辑,还是插入、删除、替换的语义编辑,FireRedTTS3-Instruct大多处于领先地位,在自由指令的开放设定下表现同样稳定。从核心指标来看,更低的字错率与未编辑区字错率配合高编辑准确率,确保了内容修改的准确性;领先的说话人相似度保证了音色不发生漂移;较低的声学误差率表明模型能够精准调整到目标音量与时长,实现「编辑区域准确、其余部分不变、音色保持一致」的效果。
快速部署与使用指南
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,
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_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。

