义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)

在这里插入图片描述

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

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

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

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

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

Bert-vits2V210整备数据集

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

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

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

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

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

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

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

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

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

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

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

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

pip install you-get

运行命令:

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

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

Bert-vits2V210训练模型

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

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

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

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

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目录中。

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

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

放入项目的emotional目录:

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

运行脚本,切分素材:

python3 audio_slicer.py

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

python3 short_audio_transcribe.py

接着进行标注:

python3 preprocess_text.py

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

python3 emo_gen.py

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

python3 spec_gen.py

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

python3 bert_gen.py

最后开始训练:

python3 train_ms.py

Bert-vits2V210模型推理

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

bert_gen:  config_path: config.json  device: cuda  num_processes: 2  use_multi_device: false  
dataset_path: Data\meimei  
mirror: ''  
openi_token: ''  
preprocess_text:  clean: true  cleaned_path: filelists/cleaned.list  config_path: config.json  max_val_total: 8  train_path: filelists/train.list  transcription_path: filelists/short_character_anno.list  val_path: filelists/val.list  val_per_spk: 5  
resample:  in_dir: raw  out_dir: raw  sampling_rate: 44100  
server:  device: cuda  models:  - config: ./Data/meimei/config.json  device: cuda  language: ZH  model: ./Data/meimei/models/G_0.pth  speakers:  - length_scale: 1  noise_scale: 0.6  noise_scale_w: 0.8  sdp_ratio: 0.2  speaker: "\u79D1\u6BD4"  - length_scale: 0.5  noise_scale: 0.7  noise_scale_w: 0.8  sdp_ratio: 0.3  speaker: "\u4E94\u6761\u609F"  - length_scale: 1.2  noise_scale: 0.6  noise_scale_w: 0.8  sdp_ratio: 0.2  speaker: "\u5B89\u500D\u664B\u4E09"  - config: ./Data/meimei/config.json  device: cuda  language: JP  model: ./Data/meimei/models/G_0.pth  speakers: []  port: 7860  
train_ms:  base:  model_image: "Bert-VITS2_2.1-Emo底模"  repo_id: Stardust_minus/Bert-VITS2  use_base_model: false  config_path: config.json  env:  MASTER_ADDR: localhost  MASTER_PORT: 10086  RANK: 0  THE_ENV_VAR_YOU_NEED_TO_USE: '1234567'  WORLD_SIZE: 1  keep_ckpts: 8  model: models  num_workers: 16  spec_cache: true  
translate:  app_key: ''  secret_key: ''  
webui:  config_path: Data/meimei/config.json  debug: false  device: cuda  language_identification_library: langid  model: models/G_150.pth  port: 7860  share: false

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

随后启动推理脚本:

python3 webui.py

就可以进行推理了:

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

结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤,Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前,请确保完成以下配置: 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

PC端ssh连接到Android手机的Termux部署http服务器

1. 下载并安装Termux至Android手机 Releases termux/termux-app (github.com) https://github.com/termux/termux-app/releases 2. 手机端启动Termux,安装openssh #更新仓库 pkg up pkg install openssh #安装好后,启动sshd sshd问题1:如…

光学3D表面轮廓仪超0.1nm纵向分辨能力,让显微形貌分毫毕现

在工业应用中,光学3D表面轮廓仪超0.1nm的纵向分辨能力能够高精度测量物体的表面形貌,可用于质量控制、表面工程和纳米制造等领域。 与其它表面形貌测量方法相比,光学3D表面轮廓仪达到纳米级别的相移干涉法(PSI)和垂直扫描干涉法(VSI)&#x…

Influx集群解决方案(Influx Proxy篇)

InFluxDB 集群搭建 本次搭建使用influx proxy 介绍 github地址:https://github.com/chengshiwen/influx-proxy/ Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务,实现了 InfluxDB 高可用集群的部署方案, 具有动态扩/缩容、故障恢复…

Salesforce服务云和营销云重大创新!通过大数据和AI赋能为客户提供非凡体验

4月6日,Salesforce宣布推出新的Service Cloud和Marketing Cloud功能,通过AI驱动的数字化语音、移动离线访问相关信息、Intelligence和CDP创新,使客户体验更加人性化。借助Salesforce与人工智能相结合的强大创新,企业可以提供个性化…

初探HarmonyOS路由跳转

最近的鸿蒙新闻也是很大声势,鸿蒙的纯血版一出,各大互联网大厂都坐不住了,纷纷加入其中。这意味鸿蒙将来会取代大部分Android用户,这也是程序员的一篇大好前程。如今的Android开发行业已经夕阳西下了。 网上有关HarmonyOS的资料几…

分析:为什么有些pdf打开之后无法编辑?

pdf文件大家应该都经常接触,但是不知道大家会遇到这种情况:有些PDF文件打开之后无法编辑?是什么原因呢?今天我们来分析一下都是那些原因导致的。 首先我们可以考虑一下,PDF文件中的内容是否是图片,如果确认…

安全狗入选《2024中国企业服务云图(精选版)》多个细分领域

近日,由吴中区人民政府、苏州市工信局指导,崔牛会主办,苏州太湖国家旅游度假区管委会协办的2023中国SaaS大会在苏州顺利举办。 作为国内云原生安全领导厂商,安全狗突出的多项安全能力也在大会上受到认可。 厦门服云信息科技有限…

前后端分离开发出现的跨域问题

先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如: 当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt…

【电路笔记】-电阻串联

电阻串联 文章目录 电阻串联1、概述2、电阻串联3、串联电阻电压4、电阻串联示例15、分压电路6、电阻串联示例27、电阻串联的应用8、总结 当电阻器以菊花链方式连接在一条线上时,电阻器被称为串联连接,从而导致共同电流流过它们。 1、概述 各个电阻器可以…

vue3中的Fragment、Teleport、Suspense新组件

Fragment组件 在Vue2中: 组件必须有一个根标签 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中 好处: 减少标签层级, 减小内存占用 <template><div style"font-size: 14px;"><p> 组件可以没有根标签</p&g…

ubuntu22.04新机使用(换源,下载软件,安装显卡驱动,锁屏长亮)

换源 国内有很多Ubuntu的镜像源&#xff0c;包括阿里的、网易的&#xff0c;还有很多教育网的源&#xff0c;比如&#xff1a;清华源、中科大源。推荐使用中科大源&#xff0c;快得很。 /etc/apt/sources.list编辑/etc/apt/sources.list文件, 在文件最前面添加以下条目(操作前…

【Vue】绝了!还有不懂生命周期的?

生命周期 Vue.js 组件生命周期&#xff1a; 生命周期函数&#xff08;钩子&#xff09;就是给我们提供了一些特定的时刻&#xff0c;让我们可以在这个周期段内加入自己的代码&#xff0c;做一些需要的事情; 生命周期钩子中的this指向是VM 或 组件实例对象 在JS 中&#xff0c;…

Update this scope and remove the “systemPath“

问题 解析&#xff1a; 在特定的指定路径上查找系统相关性。这大大降低了可移植性&#xff0c;因为如果您将工件部署在一个与您的环境不同的环境中&#xff0c;代码将无法工作。 解决&#xff1a; 1 使用官方maven仓库的第三方jar包 2 如果官方仓库不存在jar包&#xff0c;…

模拟退火算法应用——求解TSP问题

仅作自己学习使用 一、问题 旅行商问题(TSP) 是要求从一个城市出发&#xff0c;依次访问研究区所有的城市&#xff0c;并且只访问一次不能走回头路&#xff0c;最后回到起点&#xff0c;求一个使得总的周游路径最短的城市访问顺序。 采用模拟退火算法求解TSP问题&#x…

接口测试【加密解密攻防完整版】实战教程详解

一、对称加密 对称加密算法是共享密钥加密算法&#xff0c;在加密解密过程中&#xff0c;使用的密钥只有一个。发送和接收双方事先都知道加密的密钥&#xff0c;均使用这个密钥对数据进行加密和解密。 数据加密&#xff1a;在对称加密算法中&#xff0c;数据发送方将明文 (原…

【JavaScript】3.3 JavaScript工具和库

文章目录 1. 包管理器2. 构建工具3. 测试框架4. JavaScript 库总结 在你的 JavaScript 开发之旅中&#xff0c;会遇到许多工具和库。这些工具和库可以帮助你更有效地编写和管理代码&#xff0c;提高工作效率。在本章节中&#xff0c;我们将探讨一些常见的 JavaScript 工具和库&…

linux安装minIo(亲测可用)

一、创建文件夹 进入opt文件夹 cd /opt/创建minio文件夹&#xff1b; mkdir minio赋予权限 chmod 777 minio/执行完后查看目录 进到minio文件夹 创建bin目录 mkdir bin创建data目录 mkdir data创建log touch minio.log创建start.sh文件&#xff0c;并写入数据(不会vi或…

微信公众号扫码授权登录源码 / PHP微信扫码关注公众号并授权登录源码

源码简介&#xff1a; 在当今的互联网时代&#xff0c;微信公众号已成为众多企业与用户之间进行交流和沟通的重要工具&#xff0c;其中包括用户的登录认证。通过关注公众号登录&#xff0c;不仅可以为公众号带来流量&#xff0c;还能够实现用户与公众号粉丝之间的一一对应关系…

数据治理模型的三个模块

数据接入模块 大数据工程的数据来源包含企业内部数据和企业外部数据&#xff0c;其中企业内部数据由资源服务平台、综合资源库、各业务系统生产库中的结构化数据和文件服务器上的文本、图片等非结构化数据组成&#xff0c;其中包括人财物记录、财物报表、原材料、顾客信息、气…