【免费下载链接】IndexTTS-2-MLX
🎙️IndexTTS-2-MLX是一个把零样本语音克隆 TTS 系统 IndexTTS-2 转换到 MLX 框架的模型仓库,专为 Apple Silicon 芯片原生推理而生。这篇文章会带你逐一拆解仓库里的 4 个核心模型文件——gpt.safetensors、s2mel.safetensors、bigvgan.safetensors、vq2emb.safetensors——以及若干辅助文件,帮你在动手跑语音合成之前,彻底搞清楚"每个文件到底是干什么的"。
一、IndexTTS-2-MLX 是什么?
IndexTTS-2 是一款零样本语音克隆 + 情绪控制的 TTS 系统:只需一段 5~15 秒的参考音频,就能克隆出这个人的声音,合成中文或英文语音,还支持显式指定情绪向量。
而 IndexTTS-2-MLX 官方模型卡(README.md)说明:
- 由 IndexTTS-2 官方 PyTorch 权重离线转换为MLX safetensors(fp32)格式;
- 配合推理仓库
mlx-indextts使用,可在 M 系列芯片上原生推理; - 已在 Apple M5 Max 上端到端验证:中文合成RTF ≈ 1.9(fp32,batch 模式)。
💡 RTF(Real-Time Factor)≈ 1.9 意味着合成一段 1 秒的语音大约需要 1.9 秒,属于可用的实时性水平。
二、先看懂整条推理流水线
TTS 模型文件为什么是这四个?因为一条语音从文字到波形的流水线正好被切成四段,每段对应一个权重文件:
参考音频 ──► 说话人/情绪特征提取(CAMPPlus、w2v-BERT 2.0) 文字 ──► BPE 分词(tokenizer.model) │ ▼ ┌───────────────────────────────────┐ │ gpt.safetensors:自回归生成语义编码 │ ← 大脑,决定"说什么、怎么念" └───────────────────────────────────┘ │ 语义码(8192 码本) ▼ ┌───────────────────────────────────┐ │ vq2emb.safetensors:码→向量查表 │ ← 翻译官 └───────────────────────────────────┘ ▼ ┌───────────────────────────────────┐ │ s2mel.safetensors:流匹配生成 mel │ ← 画师,画出频谱 └───────────────────────────────────┘ │ 80 维 mel 频谱 ▼ ┌───────────────────────────────────┐ │ bigvgan.safetensors:声码器 │ ← 打印机,输出 22.05kHz 波形 └───────────────────────────────────┘接下来逐个文件拆解。
三、四个核心模型文件详解
1. gpt.safetensors —— 语义码生成器("大脑")
| 项目 | 说明 |
|---|---|
| 角色 | GPT 自回归语义编码生成器 |
| 下载后大小 | 约 3.2 GB(四个文件中最大) |
| 文件位置 | gpt.safetensors |
它是整个系统的决策核心:输入文字 token 和参考音频提取出的说话人/情绪条件,逐 token 自回归地生成语义编码(semantic codes)。
从 config.json 可以看到它的"身材":24 层 Transformer、模型维度 1280、20 个注意力头;语义码本大小 8194(8192 个有效码 + 开始/结束特殊 token),最多可生成 1815 个 mel token、输入 600 个文字 token。条件注入方式采用conformer_perceiver结构,并单独配有一个情绪条件模块(emo_condition_module),这正是"显式情绪控制"的落点。
2. vq2emb.safetensors —— 语义码转向量("翻译官")
| 项目 | 说明 |
|---|---|
| 角色 | 语义码 → 嵌入向量查表 |
| 下载后大小 | 仅约 293 KB |
| 文件位置 | vq2emb.safetensors |
GPT 输出的是离散的语义码(0~8191 的整数),后级模型无法直接消化整数。vq2emb就是一张码本嵌入表:把 8192 个语义码一一映射为 1024 维连续向量(对应 config.yaml 中semantic_codec的codebook_size: 8192、hidden_size: 1024)。
它体积最小,但位置关键——相当于"语义层"和"声学层"之间的接口。
3. s2mel.safetensors —— 流匹配 mel 解码器("画师")
| 项目 | 说明 |
|---|---|
| 角色 | S2Mel:语义码 → 80 维 mel 频谱 |
| 下载后大小 | 约 395 MB |
| 文件位置 | s2mel.safetensors |
拿到向量化的语义内容后,需要把它"展开"成带韵律、音色细节的声学表征。s2mel采用**流匹配(Flow Matching)**技术完成这一步,核心是一个DiT 架构(13 层、隐藏维度 512、8 头),最后再接 8 层 WaveNet 做精细化,输出 22.05 kHz 采样率下的 80 维 mel 频谱。
config.yaml 的s2mel段落完整描述了它的结构:dit_type: "DiT"、final_layer_type: 'wavenet'、style_condition: true(支持音色条件注入),这些参数与权重一一对应。
4. bigvgan.safetensors —— 声码器("打印机")
| 项目 | 说明 |
|---|---|
| 角色 | BigVGAN v2 声码器:mel → 波形 |
| 下载后大小 | 约 428 MB |
| 文件位置 | bigvgan.safetensors |
最后一步是把 mel 频谱还原成能听的波形。这里用的是 NVIDIA 的BigVGAN v2(nvidia/bigvgan_v2_22khz_80band_256x规格),6 级上采样(4×4×4×4×2×2 = 256 倍)把每 256 个采样点一帧的 mel 直接拉成 22.05 kHz 的音频波形。
config.json 中的bigvgan段落给出了完整超参:SnakeBeta 激活、残差块核尺寸[3, 7, 11]等。官方还专门校验了该模型的转换精度:与 PyTorch 版本相比全模型MAE 仅 6.8e-3,端到端听感一致。
四、小文件大作用:辅助权重与配置
5. feat1.pt / feat2.pt —— 显式情绪控制的"密钥"
| 文件 | 大小 | 作用 |
|---|---|---|
| feat1.pt | 约 56 KB | spk_matrix:说话人风格矩阵 |
| feat2.pt | 约 366 KB | emo_matrix:情绪矩阵 |
IndexTTS-2 的招牌功能之一是可以显式指定情绪。config.yaml 末尾明确写着:
emo_matrix: feat2.pt spk_matrix: feat1.pt emo_num: [3, 17, 2, 8, 4, 5, 10, 24]emo_num列出的 8 个下标就是 8 种预设情绪在矩阵中的位置。合成时选取对应行,就能让同一音色"高兴地说"或"低沉地说"。
6. wav2vec2bert_stats.pt —— 特征归一化统计量
wav2vec2bert_stats.pt(约 9 KB)保存 w2v-BERT 2.0 特征提取所需的均值/标准差等归一化统计量。参考音频会先经 w2v-BERT 2.0 编码,再靠它把特征对齐到模型训练时的分布,保证克隆音色稳定。
7. tokenizer.model —— 文本前端 BPE 分词器
tokenizer.model(约 465 KB)是一个 SentencePiece 格式的 BPE 模型,负责把输入文字切成语义编码器认识的 12000 个文字 token(见 config.json 的number_text_tokens: 12000)。中英文混排时由它统一处理。
8. config.yaml 与 config.json —— 双份运行配置
- config.yaml:训练侧完整配置,包含 mel 参数(24 kHz/100 维训练配置)、GPT、语义编码器、s2mel 全部结构参数,以及
gpt_checkpoint、emo_matrix等文件指针; - config.json:推理侧精简配置,聚焦 GPT、BigVGAN、mel 三大块(22.05 kHz/80 维),供运行时直接读取。
五、全部模型文件速查表
| 文件 | 下载后大小 | 一句话职责 |
|---|---|---|
| gpt.safetensors | ~3.2 GB | 自回归生成语义编码(核心大脑) |
| bigvgan.safetensors | ~428 MB | mel → 22.05 kHz 波形(声码器) |
| s2mel.safetensors | ~395 MB | 语义码 → 80 维 mel(流匹配 DiT) |
| tokenizer.model | ~465 KB | 文字 BPE 分词 |
| feat2.pt | ~366 KB | 情绪矩阵(显式情绪控制) |
| vq2emb.safetensors | ~293 KB | 语义码 → 1024 维向量查表 |
| feat1.pt | ~56 KB | 说话人风格矩阵 |
| wav2vec2bert_stats.pt | ~9 KB | w2v-BERT 特征归一化统计 |
| config.yaml / config.json | 几 KB | 结构与运行配置 |
⚠️ 注意:以上四个大文件通过 Git LFS 管理。如果 clone 后发现
gpt.safetensors只有几百字节,说明你拿到的是 LFS 指针文件而非真实权重,需要执行git lfs pull拉取实际数据。
📌 另外,参考音频特征提取所需的辅助编码器(w2v-BERT 2.0、MaskGCT 语义编码器、CAMPPlus)不在本仓库中,运行时由推理仓库
mlx-indextts从上游检查点自动加载,无需手动管理。
六、如何下载并使用这套模型文件?
🚀 三步上手(以 macOS / Apple Silicon 为例):
第 1 步:获取模型文件
git clone https://gitcode.com/hf_mirrors/mlx-community/IndexTTS-2-MLX或使用 Hugging Face CLI 直接下载转换好的权重:
hf download Jup33QE/IndexTTS-2-MLX --local-dir models/IndexTTS-2-MLX第 2 步:准备推理环境
克隆推理仓库mlx-indextts(Jup33Q/mlx-indextts),按其中说明执行uv sync安装依赖。
第 3 步:运行语音合成
HF_HUB_OFFLINE=1 uv run python -m mlx_indextts.generate_v2 \ --model-dir models/IndexTTS-2-MLX \ --reference path/to/reference.wav \ --text "你好,这是一段 MLX 原生推理的中文语音。" \ --output out.wav只需一段 5~15 秒的reference.wav,即可克隆出该音色并合成out.wav。
七、许可证提醒
⚖️ 本仓库权重继承上游 IndexTTS-2 的bilibili 模型使用许可协议,详见仓库内的 LICENSE.txt(英文)与 LICENSE_ZH.txt(中文)。在商用或二次分发前,请务必先阅读并确认你遵守该协议条款。
总结
用一句话串起四个核心文件:gpt负责"说什么",vq2emb负责"翻译成向量",s2mel负责"画出频谱",bigvgan负责"印成声波";feat1/feat2两个小矩阵则是情绪与音色控制的开关。理解了这条流水线,你对 IndexTTS-2-MLX 的模型文件就再也不会一头雾水了——现在可以动手跑一段属于自己的克隆语音了 🎧
【免费下载链接】IndexTTS-2-MLX
相关推荐
一文读懂IndexTTS-1.5-MLX仓库的6个文件:gpt.safetensors、BigVGAN、DVAE与文本前端各管什么
一文读懂IndexTTS 1.5 MLX仓库的6个文件:gpt.safetensors、BigVGAN、DVAE与文本前端各管什么 IndexTTS 1.5 M
深入IndexTTS-2-MLX架构:GPT语义码+S2Mel流匹配+BigVGAN三级流水线原理
深入IndexTTS 2 MLX架构:GPT语义码+S2Mel流匹配+BigVGAN三级流水线原理 IndexTTS 2 MLX 是将 IndexTTS 2 零
Llama-3.1-8B_rai_1.8.0_hybrid模型文件逐个拆解:model.onnx、model.pb.bin与model.bin各自起什么作用
Llama 3.1 8B_rai_1.8.0_hybrid模型文件逐个拆解:model.onnx、model.pb.bin与model.bin各自起什么作用 L
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考