ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何1分钟克隆任意人的声音?speech-swift 零样本语音克隆完全指南(IndexTTS2/F5-TTS/CosyVoice)

如何1分钟克隆任意人的声音?speech-swift 零样本语音克隆完全指南(IndexTTS2/F5-TTS/CosyVoice)

【免费下载链接】speech-swift

AI speech toolkit for Apple Silicon — ASR, TTS, speech-to-speech, VAD, and diarization powered by MLX and CoreML

项目地址:https://gitcode.com/gh_mirrors/sp/speech-swift
点击查看免费下载

speech-swift是运行在 Apple Silicon 上的开源 AI 语音工具包,基于 MLX 与 CoreML 实现本地零样本语音克隆:只需一段几秒钟的参考音频,就能用任意人的声音合成本人从未说过的话。全程在 Mac 上离线完成,无需云端 API,不产生任何密钥费用,录音与文本永远不离开你的设备。本文带你用一条命令完成首次声音克隆,并横向对比 IndexTTS2、F5-TTS、CosyVoice 三大克隆引擎。

🎯 什么是零样本语音克隆?1分钟原理速览

零样本(Zero-shot)语音克隆指的是:不需要针对某个人的声音训练模型,只凭一段参考音频(通常 3~10 秒)就能捕捉其音色、语调,再让 TA "说出"你想输入的任何文字。

speech-swift 的做法是把各家的克隆模型移植为原生 Swift 运行时,通过一个统一的speech speak命令驱动:

  • IndexTTS2:参考音频 → 语义编码 → 流匹配解码 → 波形,支持情绪/语速控制
  • F5-TTS:参考音频 + 参考文本 → DiT 流匹配 + Vocos 声码器,轻量快
  • CosyVoice3:CAM++ 说话人编码器提取音色向量,支持 9 种语言、情绪标签与多角色对话
维度优势
🛡️ 隐私纯本地推理,录音不上云
⚡ 速度苹果芯片 MLX/CoreML 加速,多数引擎快于实时
🔌 统一入口speech speak一条命令切换所有克隆引擎
📦 按需加载每个模型都是独立 Swift Package,只装你需要的

⚡ 快速安装:一条命令上手 speech-swift

一键安装步骤

speech-swift 已通过 Homebrew 发布,安装只需一行(要求 ARM 原生 Homebrew,即/opt/homebrew):

brew install speech

最快首条克隆命令

准备好一段目标说话人的reference.wav,1 分钟内即可听到结果:

speech speak "你好,这是我用 speech-swift 克隆的声音。" \ --engine indextts2 \ --voice-sample reference.wav \ -o clone.wav

首次运行会自动下载模型包并缓存,之后离线可用。--voice-sample就是声音克隆的核心入参——参考音频。

🆚 三大零样本语音克隆引擎对比

对比项IndexTTS2F5-TTSCosyVoice3
规模1.5B 级(fp16)336M(fp16)0.5B(bf16 约 2.1 GB / 8bit 约 1.4 GB)
输出采样率22.05 kHz24 kHz24 kHz
语言中 / 英(中英混输)中 / 英(可混排)中、英、日、韩、德、西、法、意、俄(9 种)
参考文本不需要必需不需要(提供后保真度更高)
情绪控制✅ 情绪预设 + 8 维情绪向量❌✅ 8 种内联(emotion)标签
语速控制✅ 0.5~1.5 倍✅--f5-speed✅
多角色对话❌❌✅ 说话人标签 + 说话人映射
流式输出❌❌✅ 约 150 ms 首块延迟
典型场景高保真单人克隆轻量快速克隆多语言/有声书/对话

📌 三者的模型规格详见官方文档:docs/models/indextts2.md、docs/models/f5-tts.md、docs/models/cosyvoice-tts.md。

1️⃣ IndexTTS2:支持情绪控制的高保真克隆

IndexTTS2 由 w2v-BERT 语义特征、CAMPPlus 风格向量和 GPT 语义生成组成,克隆的"音色相似度"是三者中取向最激进的。亮点是独立的情绪参考:你可以让声音长得像 A、语气像 B。

speech speak "欢迎来到发布会!" \ --engine indextts2 \ --voice-sample reference.wav \ --indextts2-emotion excited \ --indextts2-speaking-rate 1.35 \ -o clone.wav
  • 情绪预设:eager、happy、angry、sad、calm等 10 种
  • --indextts2-emotion-audio可指定单独的情绪参考音频(默认复用--voice-sample)
  • 提示:情绪权重开太高会牺牲音色相似度,追求"像本人"时保持默认即可

更多参数(S2Mel 步数、停顿上限等)见 docs/inference/indextts2.md,核心实现位于 Sources/IndexTTS2TTS/IndexTTS2TTSModel.swift。

2️⃣ F5-TTS:需要"参考文本"的轻量克隆方案

F5-TTS 基于 DiT 流匹配 + Vocos 声码器,模型只有 336M,是三者中最轻量的。它的独特之处是要求提供参考音频的逐字文本(--f5-reference-text)——文本与声音对齐后,模型能更精准地学习说话风格:

speech speak "这是一段本地运行的 F5-TTS 语音克隆测试。" \ --engine f5 \ --voice-sample reference.wav \ --f5-reference-text "参考录音里说的那句话。" \ -o f5.wav
  • --f5-steps 32:默认 16 步足够,追求最高保真可翻倍
  • --f5-seed:固定随机种子,方便复现同一段合成
  • 中文走拼音词表前端,中英混排在单次请求中即可

参数说明见 docs/inference/f5-tts.md,运行时源码见 Sources/F5TTS/F5TTSModel.swift。

3️⃣ CosyVoice3:9 语言 + 情绪标签 + 多角色对话

CosyVoice 是三者中功能面最广的:三阶段流水线(LLM 语音 token → DiT 流匹配 → HiFi-GAN 声码器),克隆音色、调节情绪、切换说话人全部内联完成。

基础克隆:

speech speak "Good morning, everyone!" \ --engine cosyvoice \ --voice-sample reference.wav \ -o clone.wav

内联情绪标签(直接在文本里写):

speech speak "(excited) 我们赢了比赛!(calm) 谢谢大家支持。" \ --engine cosyvoice --voice-sample reference.wav -o emo.wav

多角色对话——一个命令生成两人对话,各自用自己的参考音频:

speech speak "[S1] 你好呀。[S2] 你好,最近怎么样?" \ --engine cosyvoice \ --speakers s1=alice.wav,s2=bob.wav \ -o dialogue.wav

内置 8 种情绪标签:happy、sad、angry、whispers、laughs、calm、surprised、serious;也可以写自由指令,如(Speak like a pirate)。量化档位用--cosyvoice-variant 8bit切换(bf16/8bit/8bit-full)。

💡 让克隆更像本尊的 5 个实用技巧

  1. 参考音频宁短勿长、宁净勿响:3~10 秒安静环境下的清晰人声效果最好;F5 的参考文本务必逐字准确。
  2. 先降噪再克隆:参考音频有噪声/混响时,加--clean-reference,会用 Sidon 先做降噪+去混响再提取音色,保留说话人身份。
  3. 音量偏低自动补偿:F5 会对过轻的参考做 RMS 归一化(--f5-target-rms,默认 0.1),无需手动放大。
  4. 长文本分段更稳:CosyVoice 会自动按句切分、拼接并加边缘淡入淡出;长段合成时加--seed可让分段间语气/音色保持一致。
  5. 语速微调救场:克隆结果偏慢/偏快时,IndexTTS2 用--indextts2-speaking-rate、F5 用--f5-speed,0.5~1.5 倍连续可调。

所有参数的权威出处是 CLI 命令定义文件 Sources/AudioCLILib/SpeakCommand.swift,其中每个选项的帮助文本都有详细说明。

❓ 常见问题 FAQ

Q1:克隆一段声音需要多长的参考音频?几秒就够。一般 3~10 秒清晰人声即可稳定捕捉音色;F5-TTS 额外要求这段音频的逐字文本。

Q2:我的 Mac 跑得动吗?模型有多大?F5-TTS 最轻(336M);CosyVoice3 选 8bit 档约 1.4 GB;IndexTTS2 为 1.5B 级 fp16 包,体积最大。全部走 MLX GPU 加速,M 系列芯片均可运行。

Q3:支持哪些语言?IndexTTS2 与 F5-TTS 面向中/英(可混排);CosyVoice3 覆盖中、英、日、韩、德、西、法、意、俄共 9 种。

Q4:商用要注意什么?F5-TTS 上游为cc-by-nc-4.0(非商用);IndexTTS2 等部分模型带研究/非商用许可属性。商用前请核对各模型上游 LICENSE,本仓库根目录也提供了 LICENSE 供参考。

Q5:能流式/实时输出吗?目前 CosyVoice 支持流式(约 150 ms 首块延迟),IndexTTS2 与 F5 暂为批式合成,CLI 传入--stream会明确报错提示。

📂 项目文件导航

  • 三大引擎架构文档:docs/models/indextts2.md · docs/models/f5-tts.md · docs/models/cosyvoice-tts.md
  • 推理与命令参考:docs/inference/indextts2.md · docs/inference/f5-tts.md
  • 引擎实现:Sources/IndexTTS2TTS/ · Sources/F5TTS/ · Sources/CosyVoiceTTS/(含 CAM++ 说话人编码与 HiFi-GAN 声码器)
  • CLI 入口:Sources/AudioCLILib/SpeakCommand.swift
  • 在 Swift 应用里集成:在Package.swift添加对应 product(如IndexTTS2TTS、F5TTS、CosyVoiceTTS),即可调用generate(text:referenceAudio:...)合成音频

小结:用 speech-swift 克隆声音只需三步——brew install speech、准备一段参考音频、执行speech speak --voice-sample。追求情绪表现选IndexTTS2,追求轻快省资源选F5-TTS,要做多语言与多角色对话选CosyVoice。全程本地、免费、隐私安全。🎙️

【免费下载链接】speech-swift

AI speech toolkit for Apple Silicon — ASR, TTS, speech-to-speech, VAD, and diarization powered by MLX and CoreML

项目地址:https://gitcode.com/gh_mirrors/sp/speech-swift
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进