MockingBird
实时语音克隆 - 中文/普通话
English | 中文
DEMO VIDEO | Wiki教程 | 训练教程
特性
🌍 中文 支持普通话并使用多种中文数据集进行测试:aidatatang_200zh, magicdata, aishell3, biaobei, MozillaCommonVoice, data_aishell 等
🤩 PyTorch 适用于 pytorch,已在 1.9.0 版本(最新于 2021 年 8 月)中测试,GPU Tesla T4 和 GTX 2060
🌍 Windows + Linux 可在 Windows 操作系统和 linux 操作系统中运行(苹果系统M1版也有社区成功运行案例)
🤩 Easy & Awesome 仅需下载或新训练合成器(synthesizer)就有良好效果,复用预训练的编码器/声码器,或实时的HiFi-GAN作为vocoder
🌍 Webserver Ready 可伺服你的训练结果,供远程调用
开始
1. 安装要求
1.1 通用配置
按照原始存储库测试您是否已准备好所有环境。 运行工具箱(demo_toolbox.py)需要 Python 3.7 或更高版本 。
- 安装 PyTorch。
如果在用 pip 方式安装的时候出现
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
Pytorch1.9.0 with Torchvision0.10.0 and cudatoolkit10.2
requirements.txt
webrtcvad-wheels
因为requiremants.txt
是在几个月前导出的,所以不适配新版本
- 安装 webrtcvad
pip install webrtcvad-wheels
。
或者
-
用
conda
或者mamba
安装依赖conda env create -n env_name -f env.yml
mamba env create -n env_name -f env.yml
会创建新环境安装必须的依赖. 之后用
conda activate env_name
切换环境就完成了.env.yml只包含了运行时必要的依赖,暂时不包括monotonic-align,如果想要装GPU版本的pytorch可以查看官网教程。
1.2 M1芯片Mac环境配置(Inference Time)
以下环境按x86-64搭建,使用原生的
demo_toolbox.py
,可作为在不改代码情况下快速使用的workaround。如需使用M1芯片训练,因
demo_toolbox.py
依赖的PyQt5
不支持M1,则应按需修改代码,或者尝试使用web.py
。
-
安装
PyQt5
,参考这个链接- 用Rosetta打开Terminal,参考这个链接
- 用系统Python创建项目虚拟环境
/usr/bin/python3 -m venv /PathToMockingBird/venv
source /PathToMockingBird/venv/bin/activate - 升级pip并安装
PyQt5
pip install --upgrade pip
pip install pyqt5
-
安装
pyworld
和ctc-segmentation
这里两个文件直接
pip install
的时候找不到wheel,尝试从c里build时找不到Python.h
报错-
安装
pyworld
brew install python
通过brew安装python时会自动安装Python.h
export CPLUS_INCLUDE_PATH=/opt/homebrew/Frameworks/Python.framework/Headers
对于M1,brew安装Python.h
到上述路径。把路径添加到环境变量里pip install pyworld
-
安装
ctc-segmentation
因上述方法没有成功,选择从github clone源码手动编译
git clone https://github.com/lumaku/ctc-segmentation.git
克隆到任意位置cd ctc-segmentation
source /PathToMockingBird/venv/bin/activate
假设一开始未开启,打开MockingBird项目的虚拟环境cythonize -3 ctc_segmentation/ctc_segmentation_dyn.pyx
/usr/bin/arch -x86_64 python setup.py build
要注意明确用x86-64架构编译/usr/bin/arch -x86_64 python setup.py install --optimize=1 --skip-build
用x86-64架构安装
-
-
安装其他依赖
/usr/bin/arch -x86_64 pip install torch torchvision torchaudio
这里用pip安装PyTorch
,明确架构是x86pip install ffmpeg
安装ffmpegpip install -r requirements.txt
-
运行
参考这个链接 ,让项目跑在x86架构环境上
vim /PathToMockingBird/venv/bin/pythonM1
- 写入以下代码
#!/usr/bin/env zsh
mydir=${0:a:h}
/usr/bin/arch -x86_64 $mydir/python "$@" chmod +x pythonM1
设为可执行文件- 如果使用PyCharm,则把Interpreter指向
pythonM1
,否则也可命令行运行/PathToMockingBird/venv/bin/pythonM1 demo_toolbox.py
2. 准备预训练模型
考虑训练您自己专属的模型或者下载社区他人训练好的模型:
近期创建了知乎专题 将不定期更新炼丹小技巧or心得,也欢迎提问
2.1 使用数据集自己训练encoder模型 (可选)
- 进行音频和梅尔频谱图预处理:
python encoder_preprocess.py <datasets_root>
使用-d {dataset}
指定数据集,支持 librispeech_other,voxceleb1,aidatatang_200zh,使用逗号分割处理多数据集。 - 训练encoder:
python encoder_train.py my_run <datasets_root>/SV2TTS/encoder
训练encoder使用了visdom。你可以加上
-no_visdom
禁用visdom,但是有可视化会更好。在单独的命令行/进程中运行"visdom"来启动visdom服务器。