?尽管我不再积极地更新此存储库,但您会发现我不断地将这项技术推向良好的一面和开源。我还构建了一个优化的云托管版本:https://noiz.ai/,它是免费的,但现在还没有准备好进行一次性使用。
特征
?中文支持普通话,并通过多个数据集进行了测试: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服务器准备通过远程呼叫为您的结果服务
演示视频
快速开始
1。安装要求
1.1常规设置
请按照原始存储库进行测试,以便您准备好所有环境。 ** python 3.7或更高**运行工具箱。
- 安装Pytorch。
如果您有错误:找不到满足需求torch == 1.9.0+cu102的版本(来自版本:0.1.2,0.1.2.post1,0.1.2.post2)此错误可能是由于Python的低版本,请尝试使用3.9,并且将成功安装它
- 安装FFMPEG。
- 运行PIP Install -R Euncess.txt以安装剩余的必要软件包。
此处的推荐环境是repo tag 0.0.1 pytorch1.9.0,带有torchvision0.10.0和cudatoolkit10.2 sumplast.txt webrtcvad-wheels,因为要求。 TXT是几个月前出口的,因此它与较新版本不起作用
- 安装WebRTCVAD PIP安装Webrtcvad-Wheels(如果需要)
或者
-
使用Conda或Mamba安装依赖项
conda env create -n env_name -f env.yml
mamba env create -n env_name -f env.yml
将在安装必要的依赖项的情况下创建一个虚拟环境。通过Conda激活Env_Name切换到新环境并享受它。
Env.yml仅包括运行项目的必要依赖项,而无需单调对准。您可以检查官方网站以安装GPU版本的Pytorch。
1.2用M1 Mac设置
以下步骤是直接使用原始demo_toolbox.pywith的解决方案的解决方案。
由于主要问题与Demo_toolbox中使用的PYQT5软件包有关。PY与M1芯片不兼容,因此可以尝试使用M1芯片训练模型,因此该人可以放弃demo_toolbox.py,或者一个人可以在项目中尝试Web.py。
1.2.1安装pyqt5,在此处使用参考。
- 创建并在此处使用Ref打开Rosetta终端。
- 使用系统python为项目创建虚拟环境MockingBird/venv
source /PathTo MockingBird /venv/bin/activate\”>/usr/bin/python3 -m venv /PathTo MockingBird /venv source /PathTo MockingBird /venv/bin/activate
- 升级PIP并安装PYQT5
pip install --upgrade pip pip install pyqt5
1.2.2安装pyworld和CTC分段
这两个软件包似乎都是该项目独有的,并且在原始的实时语音克隆项目中没有看到。使用PIP安装安装时,两个软件包都缺少车轮,因此该程序试图直接从C代码编译,并且找不到Python.h。
-
安装pyworld
- 酿造安装Python Python.h可以随附Brew安装的Python
- export cplus_include_path =/opt/homebrew/frameworks/python.framework/headers brew-installed python.h的filepath是m1 macos独有的,上面列出。需要手动将路径添加到环境变量中。
- PIP安装应该做的pyworld。
-
安装CTC-分段
相同的方法不适用于CTC细分,并且需要从GitHub上的源代码进行编译。
- git克隆https://g**ithub*.com/lumaku/ctc-segmentation.git
- CD CTC细分
- 源 /路径MockingBird /venv /bin /激活如果尚未部署虚拟环境,请激活它。
- cythonize -3 ctc_segementation/ctc_sementation_dyn.pyx
- /usr/bin/acr -x86_64 python setup.py构建构建使用x86架构。
- /usr/bin/acr -x86_64 python setup.py安装 – optimize = 1 – 带x86架构的skip -buildinstall。
1.2.3其他依赖性
- /usr/bin/acr -x86_64 pip安装火炬火炬火炬pip安装pytorch以示例,表明它已安装了x86架构
- PIP安装FFMPEG安装FFMPEG
- PIP安装-R要求.txt安装其他要求。
1.2.4运行推理时间(使用工具箱)
在X86架构上运行该项目。参考。
- vim /path to MockingBird /venv /bin /pythonm1创建一个可执行文件的pythonm1,以调理python解释器在 /pathto MockingBird /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 /pathto MockingBird /venv /bin /pythonm1 demo_toolbox.pypy
2.准备模型
请注意,由于原始模型与中国符号不相容,因此我们使用的编码器/Vocoder,但不使用合成器。这意味着目前demo_cli不起作用,因此需要其他合成模型。
您可以训练模型或使用现有模型:
2.1使用数据集的火车编码器(可选)
-
使用音频和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服务器。
2.2与您的数据集的火车合成器
-
下载数据集和解压缩:确保您可以在文件夹中访问所有.wav
-
使用音频和MEL频谱图的预处理:Python pre.py <dataSets_root>允许参数-dataset {dataset}支持AIDATATATANG_200ZH,MAIGHDATA,AISHELL3,DATA_AISHELL 3,DATA_AISHELL等。
-
训练合成器:python train.py -type =合成器普通话<DataSets_Root>/sv2tts/nynthesizer
-
当您看到注意线显示和损失满足您在训练文件夹合成器/ saved_models/中的需求时,请转到下一步。
2.3使用验证的合成器模型
多亏了社区,将分享一些模型:
| 作者 | 下载链接 | 预览视频 | 信息 |
|---|---|---|---|
| @作者 | https://pan.b*ai**du.com/s/1ionvrxmki-t1nhqxkyty3g baidu 4j5d | 由多个数据集训练的75K步骤 | |
| @作者 | https://pan.**bai*du.com/s/1fmh9ilgkjll2piirtyduvw baidu代码:OM7F | 由多个数据集训练的25K步骤,仅在版本0.0.1下工作 | |
| @fawenyo | https://yisiou-my.share**p*oint.com/:u:u:/g/personal/lawrence_cheng_fawenyo_onmicrosoft_comcom/ewfwdhzee-nng9twdkckckcckcc4bc7bc7bk2j9ccbk2j9ccbown0-ccbown0-_tk0nog?ee = n00gggc | 输入输出 | 台湾当地口音的200k步骤,仅在0.0.1版中工作 |
| @miven | https://pan.*b*ai*du.com/s/1pi-hm3sn5wbechrryx-rcq代码:2021 https://www.aliyundrive.com/s/awpsbo8mcsps代码:z2m0 | https://www.*b*ilibi*li.com/video/bv1uh411b7ad/ | 仅在0.0.1版本下工作 |
2.4火车声码器(可选)
注意:Vocoder的效果差异很小,因此您可能不需要培训新的差异。
- 预处理数据:python vocoder_preprocess.py <datasets_root> -m <synthesizer_model_path>
<DataSets_root>用数据集root,<synthesizer_model_path>替换为sythensizer最佳训练型号的目录,例如sythensizer \\ sythensizer \\ saved_mode \\ xxx
-
训练Wavernn Vocoder:Python vocoder_train.py普通话<DataSets_Root>
-
训练hifigan vocoder python vocoder_train.py普通话<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您可能需要通过“ 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(编码器) | 演讲者验证的全身端到端损失 | 这个存储库 |
f Q&A
1.我可以在哪里下载数据集?
| 数据集 | 原始来源 | 替代来源 |
|---|---|---|
| AIDATATANG_200ZH | Openslr | Google Drive |
| MagicData | Openslr | Google Drive(开发设置) |
| aishell3 | Openslr | Google Drive |
| data_aishell | Openslr |
UNZIP AIDATATANG_200ZH之后,您需要解压缩所有文件
2.什么是<DataSets_Root>?
如果数据集路径为d:\\ data \\ aidatang_200zh,则<DataSets_Root> isd:\\ data
3.没有足够的VRAM
训练合成器:在合成器/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数据:调整合成器/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
4.如果发生runtimeError:taCotron的加载状态_dict中的错误(s):encoder.embedding.embedding.perting.perty:用shape torch.size([70,512])复制一个码([70,512])的大小不匹配([[70,512])),当前模型中的形状为torch.size。size([75,512])。
请参考第37期
5。如何提高CPU和GPU入住率?
调整适当改进的批次_size
6.如果发生这种情况,页面文件太小而无法完成操作
请参阅此视频,然后将虚拟内存更改为100G(102400),例如:将文件放置在D磁盘中时,更改了D磁盘的虚拟内存。
7.我什么时候应该在训练期间停下来?
仅供参考,我的注意力是在18k步骤和50k步骤后损失低于0.4之后。
