MockingBird
MockingBird 是一款开源的实时语音克隆工具,旨在让用户仅需 5 秒的参考音频,即可快速合成任意内容的语音,并实现逼真的音色复刻。它有效解决了传统语音合成技术中数据采集成本高、训练周期长以及难以实时生成的痛点,让个性化语音生成变得触手可及。
这款工具特别适合开发者、AI 研究人员以及对语音技术感兴趣的技术爱好者使用。无论是用于构建交互式语音应用、进行声学模型研究,还是制作创意内容,MockingBird 都能提供强大的支持。普通用户若具备基础的编程环境配置能力,也可通过其提供的 Web 服务或工具箱体验前沿的变声效果。
在技术亮点方面,MockingBird 基于 PyTorch 框架,不仅完美支持中文普通话及多种主流数据集,还实现了跨平台运行,兼容 Windows、Linux 乃至 M1 架构的 macOS。其独特的架构设计允许复用预训练的编码器与声码器,只需微调合成器即可获得出色效果,大幅降低了部署门槛。此外,项目内置了现成的 Web 服务器功能,方便用户通过远程调用快速集成到自己的应用中。尽管原作者已转向云端优化版本,但 MockingBird 作为经典的本地部署方案,依然为社区提供了宝贵的学习与实践资源。
使用场景
一家小型独立游戏工作室正在为一款民国背景的角色扮演游戏制作中文配音,但团队预算有限,无法聘请专业配音演员录制所有支线任务的对话。
没有 MockingBird 时
- 成本高昂且周期长:聘请专业配音员按句收费,每次修改剧本都需重新预约录音棚,导致预算迅速超支且开发进度受阻。
- 声音一致性难维持:不同场次由不同替补配音员代录,导致同一角色在不同章节中音色、语调出现明显割裂感,破坏沉浸体验。
- 实时交互无法实现:玩家自由输入的文本或动态生成的剧情对话只能显示字幕,无法生成对应的语音,限制了玩法的创新。
- 方言与语料匮乏:难以找到能完美演绎特定年代感或带有轻微地方口音的现成语音素材库。
使用 MockingBird 后
- 极速克隆降低成本:仅需采集主角配音员 5 秒的样本音频,MockingBird 即可克隆其声线,无限生成任意新台词,将配音成本降低 90% 以上。
- 音色高度统一:无论剧本如何修改或新增多少分支剧情,所有生成语音均保持完全一致的音色特征,确保角色形象的连贯性。
- 支持实时语音合成:结合 Webserver 功能,游戏可调用接口实时将玩家输入的文字转化为角色语音,真正实现“开口即说”的沉浸式互动。
- 灵活适配中文语境:利用其对 AIShell 等中文数据集的优化支持,轻松生成自然流畅的普通话甚至特定语气风格的对话,无需额外训练复杂模型。
MockingBird 让小微团队也能以极低门槛拥有电影级的动态语音生成能力,彻底打破了传统配音对内容创作的限制。
运行环境要求
- Windows
- Linux
- macOS (包括 M1,但需通过 Rosetta 2 运行 x86 架构)
- 需要 NVIDIA GPU 以获得最佳性能(测试型号:Tesla T4, GTX 2060),CUDA 10.2
- M1 Mac 可通过 CPU 或特定配置运行但主要推荐 x86 模拟
未说明

快速开始
🚧 雖然我不再積極更新這個倉庫,但我一直在推動這項技術向更好的方向發展,並致力於開源。同時,我也在構建一個優化且雲託管的版本:https://noiz.ai/,並且我們正在招聘人才([issue 1029](https://github.com/babysor/MockingBird/issues/1029))。
特色
🌍 中文 支持普通話,並已在多個數據集上測試過,包括 aidatatang_200zh、magicdata、aishell3、data_aishell 等。
🤩 PyTorch 基於 PyTorch 框架開發,在 1.9.0 版本(截至 2021 年 8 月為最新版本)下進行了測試,使用 Tesla T4 和 GTX 2060 GPU。
🌍 Windows + Linux 可在 Windows 和 Linux 系統上運行,甚至適用於 M1 Mac OS。
🤩 簡單又強大 只需使用新訓練的合成器,即可實現出色效果,同時重用預訓練的編碼器和聲碼器。
🌍 Web 服務器就緒 可以通過遠程調用提供結果。
演示視頻
快速入門
1. 安裝依賴
1.1 一般設置
請按照原始倉庫的說明,檢查是否已準備好所有環境。 Python 3.7 或更高版本 是運行該工具箱的必要條件。
- 安裝 PyTorch。
如果遇到
ERROR: Could not find a version that satisfies the requirement torch==1.9.0+cu102 (from versions: 0.1.2, 0.1.2.post1, 0.1.2.post2 )的錯誤,這很可能是由於 Python 版本過低所致。建議使用 3.9 版本,通常可以成功安裝。
- 安裝 ffmpeg。
- 執行
pip install -r requirements.txt以安裝剩餘的必要軟體包。
推薦的環境配置為:
Repo Tag 0.0.1、Pytorch 1.9.0 附帶 Torchvision 0.10.0 和 cudatoolkit 10.2、requirements.txt、webrtcvad-wheels。由於requirements.txt是數月前導出的,可能無法與較新的版本兼容。
- 如有需要,安裝 webrtcvad:
pip install webrtcvad-wheels。
或者
使用
conda或mamba安裝依賴:conda env create -n env_name -f env.ymlmamba env create -n env_name -f env.yml這將創建一個包含所需依賴的虛擬環境。切換到新環境後,執行
conda activate env_name即可開始使用。env.yml 只包含運行項目所需的依賴,暫時未包含 monotonic-align。您可以訪問官方網站安裝 GPU 版本的 PyTorch。
1.2 在 M1 Mac 上設置
以下步驟是繞過修改代碼,直接使用原始
demo_toolbox.py的方法。由於
demo_toolbox.py中使用的 PyQt5 套件與 M1 處理器不兼容,這是主要問題。如果希望在 M1 處理器上訓練模型,可以選擇放棄使用demo_toolbox.py,或嘗試項目中的web.py。
1.2.1 安裝 PyQt5,參考資料:這裡。
- 打開 Rosetta 終端,參考資料:這裡。
- 使用系統自帶的 Python 創建項目虛擬環境:
/usr/bin/python3 -m venv /PathToMockingBird/venv source /PathToMockingBird/venv/bin/activate - 更新 pip 並安裝
PyQt5:pip install --upgrade pip pip install pyqt5
1.2.2 安裝 pyworld 和 ctc-segmentation
這兩個套件似乎是專屬於本項目,未見於原始的 Real-Time Voice Cloning 項目中。使用
pip install安裝時,由於缺少輪子文件,程序會嘗試直接從 C 語言編譯,但找不到Python.h。
安裝
pyworld:- 使用
brew install python安裝 Python,brew 安裝的 Python 會附帶Python.h。 - 設定環境變量:
export CPLUS_INCLUDE_PATH=/opt/homebrew/Frameworks/Python.framework/Headers。brew 安裝的Python.h路徑對 M1 Mac 獨特,需手動添加到環境變量中。 - 再次執行
pip install pyworld,應可成功安裝。
- 使用
安裝
ctc-segmentation:對於
ctc-segmentation,上述方法不適用,需要從 GitHub 上的源代碼編譯。- 克隆代碼庫:
git clone https://github.com/lumaku/ctc-segmentation.git - 切換到該目錄:
cd ctc-segmentation - 激活虛擬環境:
source /PathToMockingBird/venv/bin/activate(若尚未激活)。 - 執行
cythonize -3 ctc_segmentation/ctc_segmentation_dyn.pyx - 使用 x86 架構編譯:
/usr/bin/arch -x86_64 python setup.py build - 使用 x86 架構安裝:
/usr/bin.arch -x86_64 python setup.py install --optimize=1 --skip-build
- 克隆代碼庫:
1.2.3 其他依賴
- 使用 x86 架構安裝 PyTorch:
/usr/bin.arch -x86_64 pip install torch torchvision torchaudio。 - 安裝 ffmpeg:
pip install ffmpeg。 - 安裝其他依賴:
pip install -r requirements.txt。
1.2.4 運行推理(使用工具箱)
為了在 x86 架構下運行項目,參考資料:這裡。
- 創建可執行文件
pythonM1:vim /PathToMockingBird/venv/bin/pythonM1,並將其放置在/PathToMockingBird/venv/bin目錄下。 - 寫入以下內容:
#!/usr/bin/env zsh mydir=${0:a:h} /usr/bin.arch -x86_64 $mydir/python "$@" - 設定文件為可執行:
chmod +x pythonM1。 - 若使用 PyCharm IDE,請將項目解釋器配置為
pythonM1(配置步驟在此);若使用命令行 Python,則執行/PathToMockingBird/venv/bin/pythonM1 demo_toolbox.py。
2. 准备您的模型
注意,我们使用的是预训练的编码器和声码器,但不使用合成器,因为原始模型与中文符号不兼容。这意味着 demo_cli 目前无法正常工作,因此需要额外的合成器模型。
您可以选择训练自己的模型,也可以直接使用现有的模型:
2.1 使用您的数据集训练编码器(可选)
对音频和梅尔谱进行预处理:
python encoder_preprocess.py <datasets_root>可以通过参数--dataset {dataset}指定要预处理的数据集。仅会使用这些数据集的训练集。可能的数据集名称包括:librispeech_other、voxceleb1、voxceleb2。多个数据集之间用逗号分隔。训练编码器:
python encoder_train.py my_run <datasets_root>/SV2TTS/encoder
编码器在训练过程中会使用 visdom 进行可视化。您可以通过
--no_visdom参数禁用它,不过启用 visdom 会更有帮助。请在另一个命令行或进程中运行visdom来启动 visdom 服务器。
2.2 使用您的数据集训练合成器
下载并解压数据集:确保可以访问文件夹中的所有 .wav 文件。
对音频和梅尔谱进行预处理:
python pre.py <datasets_root>可以通过参数--dataset {dataset}指定 aidatatang_200zh、magicdata、aishell3、data_aishell 等数据集。如果未指定该参数,则默认使用 aidatatang_200zh 数据集。训练合成器:
python train.py --type=synth mandarin <datasets_root>/SV2TTS/synthesizer当您在训练目录 synthesizer/saved_models/ 中看到注意力线出现,并且损失达到满意水平时,即可进入下一步。
2.3 使用预训练的合成器模型
感谢社区贡献,以下是一些共享的模型:
| 作者 | 下载链接 | 预览视频 | 信息 |
|---|---|---|---|
| @author | https://pan.baidu.com/s/1iONvRxmkI-t1nHqxKytY3g 百度网盘 提取码:4j5d | 基于多个数据集训练的 7.5 万步模型 | |
| @author | https://pan.baidu.com/s/1fMh9IlgKJlL2PIiRTYDUvw 百度网盘 提取码:om7f | 基于多个数据集训练的 2.5 万步模型,仅适用于版本 0.0.1 | |
| @FawenYo | https://yisiou-my.sharepoint.com/:u:/g/personal/lawrence_cheng_fawenyo_onmicrosoft_com/EWFWDHzee-NNg9TWdKckCc4BC7bK2j9cCbOWn0-_tK0nOg?e=n0gGgC | 输入 输出 | 基于台湾本地口音训练的 20 万步模型,仅适用于版本 0.0.1 |
| @miven | https://pan.baidu.com/s/1PI-hM3sn5wbeChRryX-RCQ 提取码:2021;阿里云盘链接:https://www.aliyundrive.com/s/AwPsbo8mcSP 提取码:z2m0 | https://www.bilibili.com/video/BV1uh411B7AD/ | 仅适用于版本 0.0.1 |
2.4 训练声码器(可选)
注意:声码器对最终效果的影响较小,因此您可能不需要重新训练一个新的声码器。
- 数据预处理:
python vocoder_preprocess.py <datasets_root> -m <synthesizer_model_path>
<datasets_root>替换为您数据集的根目录,<synthesizer_model_path>替换为您的最佳合成器模型所在的目录,例如 sythensizer\saved_mode\xxx。
训练 wavernn 声码器:
python vocoder_train.py mandarin <datasets_root>训练 hifigan 声码器:
python vocoder_train.py mandarin <datasets_root> hifigan
3. 启动
3.1 使用 Web 服务器
您可以尝试运行:python web.py,然后在浏览器中打开,默认地址为 http://localhost:8080。
3.2 使用工具箱
您也可以尝试使用工具箱:
python demo_toolbox.py -d <datasets_root>
3.3 使用命令行
您还可以尝试使用命令:
python gen_voice.py <text_file.txt> your_wav_file.wav
为了获得更好的数字转换效果,您可能需要先安装 cn2an 库,命令为 pip install cn2an。
参考文献
本仓库基于 Real-Time-Voice-Cloning 分支而来,原项目仅支持英文。
| URL | 名称 | 标题 | 实现来源 |
|---|---|---|---|
| 1803.09017 | GlobalStyleToken(合成器) | 风格标记:端到端语音合成中的无监督风格建模、控制与迁移 | 本仓库 |
| 2010.05646 | HiFi-GAN(声码器) | 用于高效高保真语音合成的生成对抗网络 | 本仓库 |
| 2106.02297 | Fre-GAN(声码器) | Fre-GAN:对抗式频率一致音频合成 | 本仓库 |
| 1806.04558 | SV2TTS | 从说话人验证到多说话人文本转语音合成的迁移学习 | 本仓库 |
| 1802.08435 | WaveRNN(声码器) | 高效神经音频合成 | fatchord/WaveRNN |
| 1703.10135 | Tacotron(合成器) | Tacotron:迈向端到端语音合成 | fatchord/WaveRNN |
| 1710.10467 | GE2E(编码器) | 用于说话人验证的广义端到端损失 | 本仓库 |
常见问题解答
1. 我可以在哪里下载数据集?
| 数据集 | 原始来源 | 替代来源 |
|---|---|---|
| aidatatang_200zh | OpenSLR | Google Drive |
| magicdata | OpenSLR | Google Drive (开发集) |
| aishell3 | OpenSLR | Google Drive |
| data_aishell | OpenSLR |
解压 aidatatang_200zh 后,需要解压
aidatatang_200zh\corpus\train下的所有文件。
2. <datasets_root> 是什么?
如果数据集路径是 D:\data\aidatatang_200zh,那么 <datasets_root> 就是 D:\data。
3. 显存不足
训练合成器:调整 synthesizer/hparams.py 中的 batch_size。
//之前
tts_schedule = [(2, 1e-3, 20_000, 12), # 渐进式训练计划
(2, 5e-4, 40_000, 12), # (r, lr, step, batch_size)
(2, 2e-4, 80_000, 12), #
(2, 1e-4, 160_000, 12), # r = 缩放因子(每个解码器迭代生成的梅尔频谱帧数)
(2, 3e-5, 320_000, 12), #
(2, 1e-5, 640_000, 12)], # lr = 学习率
//之后
tts_schedule = [(2, 1e-3, 20_000, 8), # 渐进式训练计划
(2, 5e-4, 40_000, 8), # (r, lr, step, batch_size)
(2, 2e-4, 80_000, 8), #
(2, 1e-4, 160_000, 8), # r = 缩放因子(每个解码器迭代生成的梅尔频谱帧数)
(2, 3e-5, 320_000, 8), #
(2, 1e-5, 640_000, 8)], # lr = 学习率
训练声码器——预处理数据:调整 synthesizer/hparams.py 中的 batch_size。
//之前
### 数据预处理
max_mel_frames = 900,
rescale = True,
rescaling_max = 0.9,
synthesis_batch_size = 16, # 用于声码器的预处理和推理。
//之后
### 数据预处理
max_mel_frames = 900,
rescale = True,
rescaling_max = 0.9,
synthesis_batch_size = 8, # 用于声码器的预处理和推理。
训练声码器——训练声码器:调整 vocoder/wavernn/hparams.py 中的 batch_size。
//之前
# 训练
voc_batch_size = 100
voc_lr = 1e-4
voc_gen_at_checkpoint = 5
voc_pad = 2
//之后
# 训练
voc_batch_size = 6
voc_lr = 1e-4
voc_gen_at_checkpoint = 5
voc_pad = 2
4. 如果出现 RuntimeError: Error(s) in loading state_dict for Tacotron: size mismatch for encoder.embedding.weight: copying a param with shape torch.Size([70, 512]) from checkpoint, the shape in current model is torch.Size([75, 512]). 错误,
请参考 issue #37。
5. 如何提高 CPU 和 GPU 的占用率?
适当调整 batch_size 可以提高利用率。
6. 如果出现“页面文件太小,无法完成操作”的错误怎么办?
请参考这个 视频,将虚拟内存调整为 100G(102400),例如:当文件放在 D 盘时,将 D 盘的虚拟内存进行相应调整。
7. 训练过程中应该在什么时候停止?
供参考:我的注意力机制在 18k 步后开始起作用,损失在 50k 步后降至 0.4 以下。

版本历史
v0.0.12021/11/07常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
