虽然我不再积极更新此仓库,但您会发现我不断将这项技术向前推向良好的一面和开源。我还构建了一个优化的云托管版本:https://noiz.ai/,它是免费的,但现在还没有准备好进行一次性使用。

英语| 中文| 中文linux
中国支持普通话并通过多个数据集进行了测试:aidatang_200zh,magicdata,aishell3,data_aishell等。
Pytorch在Pytorch工作,以1.9.0版(2021年8月的最新版本)进行了测试,其中GPU Tesla T4和GTX 2060
Windows + Linux在Windows OS和Linux OS中运行(甚至在M1 MacOS中)
仅通过重复使用验证的编码器/vocoder,便于新训练的合成器轻松且令人敬畏的效果
Web服务器准备通过远程呼叫为您的结果服务
请按照原始存储库进行测试,以便您准备好所有环境。 ** 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.1Pytorch1.9.0 with Torchvision0.10.0 and cudatoolkit10.2requirements.txtwebrtcvad-wheels因为requirements. 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仅包括运行项目的必要依赖项,而无需单调对准。您可以检查官方网站以安装GPU版本的Pytorch。
以下步骤是一个解决方法,可以直接使用原始的
demo_toolbox.py,而无需更改代码。由于主要问题与
demo_toolbox.pydemo_toolbox.pyweb.py的pyqt5软件包有关项目。
PyQt5 ,在此处使用参考。创建并在此处使用Ref打开Rosetta终端。
使用系统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安装时,两个软件包都缺少车轮,因此该程序试图直接从C代码编译,并且找不到Python.h。
安装pyworld
brew install python Python.h可以随附Brew安装的Python
export CPLUS_INCLUDE_PATH=/opt/homebrew/Frameworks/Python.framework/Headers brew-installed Python.h的filepath是m1 macos独有的,上面列出。需要手动将路径添加到环境变量中。
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
/usr/bin/arch -x86_64 python setup.py build构建使用x86架构。
/usr/bin/arch -x86_64 python setup.py install --optimize=1 --skip-build instuct in x86体系结构。
/usr/bin/arch -x86_64 pip install torch torchvision torchaudio pip安装PyTorch的例子,表明它已安装了x86架构
pip install ffmpeg安装FFMPEG
pip install -r requirements.txt安装其他要求。
在X86架构上运行该项目。参考。
vim /PathToMockingBird/venv/bin/pythonM1创建一个可执行文件pythonM1 ,以调理python解释器在/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,run /PathToMockingBird/venv/bin/pythonM1 demo_toolbox.py
请注意,由于原始模型与中国符号不相容,因此我们使用的编码器/Vocoder,但不使用合成器。这意味着目前demo_cli不起作用,因此需要其他合成模型。
您可以训练模型或使用现有模型:
使用音频和MEL频谱图的预处理: python encoder_preprocess.py <datasets_root>允许参数--dataset {dataset}来支持要预处理的数据集。仅使用这些数据集的火车组。可能的名称:librispeech_other,voxceleb1,voxceleb2。使用逗号串起多个数据集。
训练编码器: python encoder_train.py my_run <datasets_root>/SV2TTS/encoder
对于培训,编码器使用vign。您可以使用
--no_visdom将其禁用,但是很高兴。在单独的CLI/进程中运行“ vive”以启动您的vive服务器。
下载数据集和解压缩:确保您可以在文件夹中访问所有.wav
使用音频和MEL频谱图的预处理: python pre.py <datasets_root>允许参数--dataset {dataset}支持AIDATATATANG_200ZH,MAIGHDATA,AISHELL3,DATA_AISHELL 3,DATA_AISHELL等。
训练合成器: python train.py --type=synth mandarin <datasets_root>/SV2TTS/synthesizer
当您看到注意线显示和损失满足您在训练文件夹合成器/ saved_models/中的需求时,请转到下一步。
多亏了社区,将分享一些模型:
| 作者 | 下载链接 | 预览视频 | 信息 |
|---|---|---|---|
| @作者 | https://pan.baidu.com/s/1ionvrxmki-t1nhqxkyty3g baidu 4j5d | 由多个数据集训练的75K步骤 | |
| @作者 | https://pan.baidu.com/s/1fmh9ilgkjll2piirtyduvw baidu代码:OM7F | 由多个数据集训练的25K步骤,仅在版本0.0.1下工作 | |
| @fawenyo | https://yisiou-my.sharepoint.com/:u:u:/g/personal/lawrence_cheng_fawenyo_onmicrosoft_comcom/ewfwdhzee-nng9twdkckckcckcc4bc7bc7bk2j9ccbk2j9ccbown0-ccbown0-_tk0nog?ee = n00gggc | 输入输出 | 台湾当地口音的200k步骤,仅在0.0.1版中工作 |
| @miven | https://pan.baidu.com/s/1pi-hm3sn5wbechrryx-rcq代码:2021 https://www.aliyundrive.com/s/awpsbo8mcsps代码:z2m0 | https://www.bilibili.com/video/bv1uh411b7ad/ | 仅在0.0.1版本下工作 |
注意:Vocoder的效果差异很小,因此您可能不需要培训新的差异。
预处理数据: python vocoder_preprocess.py <datasets_root> -m <synthesizer_model_path>
<datasets_root>用数据集root,<synthesizer_model_path>替换为sythensizer最佳训练型号的目录,例如sythensizersaved_modexxx
训练Wavernn Vocoder: python vocoder_train.py mandarin <datasets_root>
训练hifigan vocoder python vocoder_train.py mandarin <datasets_root> hifigan
然后,您可以尝试运行: python web.py并在浏览器中打开,默认为http://localhost:8080
然后,您可以尝试工具箱: python demo_toolbox.py -d <datasets_root>
然后,您可以尝试命令: python gen_voice.py <text_file.txt> your_wav_file.wav您可能需要通过“ PIP INSTALS CN2AN”安装CN2AN,以获得更好的数字数字结果。
该存储库是从仅支持英语的实时访问中分配的。
| URL | 指定 | 标题 | 实现来源 |
|---|---|---|---|
| 1803.09017 | 全球风格(合成器) | 样式令牌:无监督的样式建模,控制和转移端到端语音综合 | 这个存储库 |
| 2010.05646 | Hifi-Gan(Vocoder) | 生成的对抗网络,可高效且高保真语音综合 | 这个存储库 |
| 2106.02297 | Fre-Gan(Vocoder) | Fre-GAN:对抗频率一致的音频综合 | 这个存储库 |
| 1806.04558 | SV2TTS | 从说话者验证转移到多言扬声器文本到语音综合 | 这个存储库 |
| 1802.08435 | Wavernn(Vocoder) | 有效的神经音频综合 | fatchord/wavernn |
| 1703.10135 | TACOTRON(合成器) | TACOTRON:朝向端到端语音合成 | fatchord/wavernn |
| 1710.10467 | GE2E(编码器) | 演讲者验证的全身端到端损失 | 这个存储库 |
| 数据集 | 原始来源 | 替代来源 |
|---|---|---|
| AIDATATANG_200ZH | Openslr | Google Drive |
| MagicData | Openslr | Google Drive(开发设置) |
| aishell3 | Openslr | Google Drive |
| data_aishell | Openslr |
UNZIP AIDATATANG_200ZH之后,您需要在
aidatatang_200zhcorpustrain下解压缩所有文件
<datasets_root> ?如果数据集路径为D:dataaidatatang_200zh ,则<datasets_root> D:data
训练合成器:在synthesizer/hparams.py中调整批次_size
//Before tts_schedule = [(2, 1e-3, 20_000, 12), # Progressive training schedule (2, 5e-4, 40_000, 12), # (r, lr, step, batch_size) (2, 2e-4, 80_000, 12), # (2, 1e-4, 160_000, 12), # r = reduction factor (# of mel frames (2, 3e-5, 320_000, 12), # synthesized for each decoder iteration) (2, 1e-5, 640_000, 12)], # lr = learning rate //After tts_schedule = [(2, 1e-3, 20_000, 8), # Progressive training schedule (2, 5e-4, 40_000, 8), # (r, lr, step, batch_size) (2, 2e-4, 80_000, 8), # (2, 1e-4, 160_000, 8), # r = reduction factor (# of mel frames (2, 3e-5, 320_000, 8), # synthesized for each decoder iteration) (2, 1e-5, 640_000, 8)], # lr = learning rate
训练vocoder-preprocess数据:调整synthesizer/hparams.py中的batch_size
//Before ### Data Preprocessing max_mel_frames = 900, rescale = True, rescaling_max = 0.9, synthesis_batch_size = 16, # For vocoder preprocessing and inference. //After ### Data Preprocessing max_mel_frames = 900, rescale = True, rescaling_max = 0.9, synthesis_batch_size = 8, # For vocoder preprocessing and inference.
Train Vocoder-Train the Vocoder:调整vocoder/wavernn/hparams.py中的batch_size
//Before # Training voc_batch_size = 100 voc_lr = 1e-4 voc_gen_at_checkpoint = 5 voc_pad = 2 //After # Training voc_batch_size = 6 voc_lr = 1e-4 voc_gen_at_checkpoint = 5 voc_pad =2
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]).请参考第37期
调整适当改进的批次_size
the page file is too small to complete the operation请参阅此视频,然后将虚拟内存更改为100G(102400),例如:将文件放置在D磁盘中时,更改了D磁盘的虚拟内存。
仅供参考,我的注意力是在18k步骤和50k步骤后损失低于0.4之后。 
