经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)
来源:cnblogs  作者:刘悦的技术博客  时间:2023/11/29 16:16:18  对本文有异议

Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化;对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性;日语bert更换了模型,完善了多语言推理。

更多情报请参考Bert-vits2官网:

  1. https://github.com/fishaudio/Bert-VITS2/releases/tag/2.1

最近的事情大家也都晓得了,马督工义无反顾带头冲锋,身体力行地实践着横渠四句:为天地立心,为生民立命,为往圣继绝学,为万世开太平。

本次我们基于Bert-vits2的新版本V210,复刻马督工,向他致敬。

Bert-vits2V210整备数据集

我们知道马督工的风格是语速极快,也没啥肢体语言,语调上也基本没有变化,除了换气,基本上就像机关枪一样无限念稿。当然,这也是因为睡前消息内容密度过大导致的,但作为深度学习训练数据集来说,睡前消息节目的音频素材显然是不合格的。

真正好的高质量数据集应该包含以下几个特征:

音色多样性:数据集应该包含目标说话人的多个语音样本,涵盖他们在不同情感状态、不同语速和不同音高下的说话。这样可以捕捉到目标说话人在不同情境下的声音特征。

音频质量:确保语音样本的音频质量高,没有明显的噪声、失真或其他干扰。音频质量的好坏直接影响到复刻结果的质量。

多样的语音内容:语音样本应该包含不同类型的语音内容,例如单词、短语、句子和段落。这有助于捕捉到目标说话人在不同语境下的音色特征。

语音平衡:确保数据集中包含目标说话人的样本数量相对平衡,以避免训练出偏向某些样本的模型。

覆盖不同音高:收集目标说话人在不同音高和音调下的语音样本。这样可以更好地捕捉到他们声音的变化和音高特征。

语音环境:包含不同环境下的语音样本,例如室内、室外、静音和嘈杂环境等。这样可以使复刻的音色更具鲁棒性,适应不同的环境条件。

长度和多样性:语音样本的长度和多样性也是需要考虑的因素。收集包含不同长度和语音风格的样本,以便更好地捕捉到目标说话人的声音特征。

当然了,完全满足上述特点基本不太可能,这里选择马督工和刘女神的一段采访视频:

  1. https://www.bilibili.com/video/BV1sN411M73g/

首先将视频进行下载,这里使用you-get:

  1. pip install you-get

运行命令:

  1. https://www.bilibili.com/video/BV1sN411M73g/

下载成功后,将马督工的声音提取出来。

Bert-vits2V210训练模型

首先克隆笔者fork自官网的v210项目:

  1. git clone https://github.com/v3ucn/Bert-VITS2_V210.git

将素材放入Data/meimei/raw/meimei目录中,注意必须是wav文件。

然后更换新的底模,下载地址:

  1. https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/show_model

把Bert-VITS2_2.1-Emo底模放入项目的pretrained_models目录。

同时单独把deberta-v2-large-japanese-char-wwm模型放入到项目的bert/deberta-v2-large-japanese-char-wwm目录中。

由于新增了多维情感模型,所以也需要单独下载模型:

  1. https://huggingface.co/facebook/wav2vec2-large-robust/tree/main

放入项目的emotional目录:

  1. E:\work\Bert-VITS2-v21_demo\emotional>tree /f
  2. Folder PATH listing for volume myssd
  3. Volume serial number is 7CE3-15AE
  4. E:.
  5. └───wav2vec2-large-robust-12-ft-emotion-msp-dim
  6. .gitattributes
  7. config.json
  8. LICENSE
  9. preprocessor_config.json
  10. pytorch_model.bin
  11. README.md
  12. vocab.json

运行脚本,切分素材:

  1. python3 audio_slicer.py

随后进行重采样和文本识别:

  1. python3 short_audio_transcribe.py

接着进行标注:

  1. python3 preprocess_text.py

和V2.0.2不同的是,V2.1需要生成多维情感模型文件:

  1. python3 emo_gen.py

相对于原版,新版增加了,针对训练集的spec缓存,可以有效提高训练效率:

  1. python3 spec_gen.py

最后生成bert模型可读文件:

  1. python3 bert_gen.py

最后开始训练:

  1. python3 train_ms.py

Bert-vits2V210模型推理

模型训练好之后,进入到推理环节,首先修改根目录的config.yml文件:

  1. bert_gen:
  2. config_path: config.json
  3. device: cuda
  4. num_processes: 2
  5. use_multi_device: false
  6. dataset_path: Data\meimei
  7. mirror: ''
  8. openi_token: ''
  9. preprocess_text:
  10. clean: true
  11. cleaned_path: filelists/cleaned.list
  12. config_path: config.json
  13. max_val_total: 8
  14. train_path: filelists/train.list
  15. transcription_path: filelists/short_character_anno.list
  16. val_path: filelists/val.list
  17. val_per_spk: 5
  18. resample:
  19. in_dir: raw
  20. out_dir: raw
  21. sampling_rate: 44100
  22. server:
  23. device: cuda
  24. models:
  25. - config: ./Data/meimei/config.json
  26. device: cuda
  27. language: ZH
  28. model: ./Data/meimei/models/G_0.pth
  29. speakers:
  30. - length_scale: 1
  31. noise_scale: 0.6
  32. noise_scale_w: 0.8
  33. sdp_ratio: 0.2
  34. speaker: "\u79D1\u6BD4"
  35. - length_scale: 0.5
  36. noise_scale: 0.7
  37. noise_scale_w: 0.8
  38. sdp_ratio: 0.3
  39. speaker: "\u4E94\u6761\u609F"
  40. - length_scale: 1.2
  41. noise_scale: 0.6
  42. noise_scale_w: 0.8
  43. sdp_ratio: 0.2
  44. speaker: "\u5B89\u500D\u664B\u4E09"
  45. - config: ./Data/meimei/config.json
  46. device: cuda
  47. language: JP
  48. model: ./Data/meimei/models/G_0.pth
  49. speakers: []
  50. port: 7860
  51. train_ms:
  52. base:
  53. model_image: "Bert-VITS2_2.1-Emo底模"
  54. repo_id: Stardust_minus/Bert-VITS2
  55. use_base_model: false
  56. config_path: config.json
  57. env:
  58. MASTER_ADDR: localhost
  59. MASTER_PORT: 10086
  60. RANK: 0
  61. THE_ENV_VAR_YOU_NEED_TO_USE: '1234567'
  62. WORLD_SIZE: 1
  63. keep_ckpts: 8
  64. model: models
  65. num_workers: 16
  66. spec_cache: true
  67. translate:
  68. app_key: ''
  69. secret_key: ''
  70. webui:
  71. config_path: Data/meimei/config.json
  72. debug: false
  73. device: cuda
  74. language_identification_library: langid
  75. model: models/G_150.pth
  76. port: 7860
  77. share: false

在后面的webui配置中写入模型文件名:model: models/G_150.pth。

随后启动推理脚本:

  1. python3 webui.py

就可以进行推理了:

请注意,推理建议使用官方的基于Gradio版本的推理页面,而非FastApi的版本。

结语

本项目只是用于Bert-vits2的研究和测试,毫无疑问,想通过30秒的素材就复刻马督工根本是天方夜谭,但马督工的精神,是我们每一个人都可以复刻的。

原文链接:https://www.cnblogs.com/v3ucn/p/17864038.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号