没有AI歌手一键包,纯纯的算法项目

news2025/2/13 12:46:08

项目地址:

https://github.com/PlayVoice/so-vits-svc-5.0

来源丨元语音技术

  • 本项目的目标群体是:深度学习初学者,具备Pyhon和PyTorch的基本操作是使用本项目的前置条件;

  • 本项目旨在帮助深度学习初学者,摆脱枯燥的纯理论学习,通过与实践结合,熟练掌握深度学习基本知识;

  • 本项目不支持实时变声;(也许以后会支持,但要替换掉whisper)

  • 本项目不会开发用于其他用途的一键包。(不会指没学会)

  • 【低 配置】6G显存可训练

  • 【无 泄漏】支持多发音人

  • 【带 伴奏】也能进行转换,轻度伴奏

模型和日志:

https://github.com/PlayVoice/so-vits-svc-5.0/releases/tag/v5.3

  • 5.0.epoch1200.full.pth模型包括:生成器+判别器=176M,可用作预训练模型;

  • 发音人(56个)文件在configs/singers目录中,可进行推理测试,尤其测试音色泄露;

  • 发音人22,30,47,51辨识度较高,音频样本在configs/singers_sample目录中。

GRL去音色泄漏,更多的是理论上的价值;Hugging Face Demo推理模型无泄漏主要归因于PPG扰动;由于使用了数据扰动,相比其他项目需要更长的训练时间。

数据集准备

必要的前处理:

  • 1 降噪&去伴奏

  • 2 频率提升

  • 3 音质提升,基于https://github.com/openvpi/vocoders ,待整合

  • 4 将音频剪裁为小于30秒的音频段,whisper的要求

然后以下面文件结构将数据集放入dataset_raw目录

dataset_raw
├───speaker0
│   ├───xxx1-xxx1.wav
│   ├───...
│   └───Lxx-0xx8.wav
└───speaker1
    ├───xx2-0xxx2.wav
    ├───...
    └───xxx7-xxx007.wav

安装依赖

  1. 软件依赖

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

  2. 下载音色编码器: Speaker-Encoder by @mueller91, 解压文件,把 best_model.pth.tar 放到目录 speaker_pretrain/

  3. 下载whisper模型 multiple language medium model, 确定下载的是medium.pt,把它放到文件夹 whisper_pretrain/

数据预处理

  1. 设置工作目录

    export PYTHONPATH=$PWD

  2. 重采样

    生成采样率16000Hz音频, 存储路径为:./data_svc/waves-16k

         python prepare/preprocess_a.py -w ./data_raw -o ./data_svc/waves-16k -s 16000

    生成采样率32000Hz音频, 存储路径为:./data_svc/waves-32k

         python prepare/preprocess_a.py -w ./data_raw -o ./data_svc/waves-32k -s 32000

    可选的16000Hz提升到32000Hz,待完善~批处理

         python bandex/inference.py -w svc_out.wav

  3. 使用16K音频,提取音高

    python prepare/preprocess_f0.py -w data_svc/waves-16k/ -p data_svc/pitch

  4. 使用16k音频,提取内容编码

    python prepare/preprocess_ppg.py -w data_svc/waves-16k/ -p data_svc/whisper

  5. 使用16k音频,提取音色编码

    python prepare/preprocess_speaker.py data_svc/waves-16k/ data_svc/speaker

  6. 使用32k音频,提取线性谱

    python prepare/preprocess_spec.py -w data_svc/waves-32k/ -s data_svc/specs

  7. 使用32k音频,生成训练索引

    python prepare/preprocess_train.py

  8. 训练文件调试

    python prepare/preprocess_zzz.py

训练

  1. 如果基于预训练模型微调,需要下载预训练模型5.0.epoch1200.full.pth

    指定configs/base.yaml参数pretrain: "",并适当调小学习率

  2. 设置工作目录

    export PYTHONPATH=$PWD

  3. 启动训练

    python svc_trainer.py -c configs/base.yaml -n sovits5.0

  4. 恢复训练

    python svc_trainer.py -c configs/base.yaml -n sovits5.0 -p chkpt/sovits5.0/***.pth

  5. 查看日志,release页面有完整的训练日志

    tensorboard --logdir logs/

推理

  1. 设置工作目录

    export PYTHONPATH=$PWD

  2. 导出推理模型:文本编码器,Flow网络,Decoder网络;判别器和后验编码器只在训练中使用

    python svc_export.py --config configs/base.yaml --checkpoint_path chkpt/sovits5.0/***.pt

  3. 使用whisper提取内容编码,没有采用一键推理,为了降低显存占用

    python whisper/inference.py -w test.wav -p test.ppg.npy

    生成test.ppg.npy;如果下一步没有指定ppg文件,则调用程序自动生成

  4. 提取csv文本格式F0参数,Excel打开csv文件,对照Audition或者SonicVisualiser手动修改错误的F0

    python pitch/inference.py -w test.wav -p test.csv

  5. 指定参数,推理

python svc_inference.py --config configs/base.yaml --model sovits5.0.pth --spk ./configs/singers/singer0001.npy --wave test.wav --ppg test.ppg.npy --pit test.csv

当指定--ppg后,多次推理同一个音频时,可以避免重复提取音频内容编码;没有指定,也会自动提取;

当指定--pit后,可以加载手工调教的F0参数;没有指定,也会自动提取;

生成文件在当前目录svc_out.wav;

args--config--model--spk--wave--ppg--pit
name配置文件模型文件音色文件音频文件音频内容音高内容

数据集

NameURL
KiSinghttp://shijt.site/index.php/2021/05/16/kising-the-first-open-source-mandarin-singing-voice-synthesis-corpus/
PopCShttps://github.com/MoonInTheRiver/DiffSinger/blob/master/resources/apply_form.md
opencpophttps://wenet.org.cn/opencpop/download/
Multi-Singerhttps://github.com/Multi-Singer/Multi-Singer.github.io
M4Singerhttps://github.com/M4Singer/M4Singer/blob/master/apply_form.md
CSDhttps://zenodo.org/record/4785016#.YxqrTbaOMU4
KSShttps://www.kaggle.com/datasets/bryanpark/korean-single-speaker-speech-dataset
JVS MuSichttps://sites.google.com/site/shinnosuketakamichi/research-topics/jvs_music
PJShttps://sites.google.com/site/shinnosuketakamichi/research-topics/pjs_corpus
JUST Songhttps://sites.google.com/site/shinnosuketakamichi/publication/jsut-song
MUSDB18https://sigsep.github.io/datasets/musdb.html#musdb18-compressed-stems
DSD100https://sigsep.github.io/datasets/dsd100.html
Aishell-3http://www.aishelltech.com/aishell_3
VCTKhttps://datashare.ed.ac.uk/handle/10283/2651

代码来源和参考文献

  • https://github.com/facebookresearch/speech-resynthesis paper

  • https://github.com/jaywalnut310/vits paper

  • https://github.com/openai/whisper/ paper

  • https://github.com/NVIDIA/BigVGAN paper

  • https://github.com/mindslab-ai/univnet paper

  • https://github.com/nii-yamagishilab/project-NN-Pytorch-scripts/tree/master/project/01-nsf

  • https://github.com/brentspell/hifi-gan-bwe

  • https://github.com/mozilla/TTS

  • https://github.com/OlaWod/FreeVC paper

  • SNAC : Speaker-normalized Affine Coupling Layer in Flow-based Architecture for Zero-Shot Multi-Speaker Text-to-Speech

  • Adapter-Based Extension of Multi-Speaker Text-to-Speech Model for New Speakers

  • AdaSpeech: Adaptive Text to Speech for Custom Voice

  • Cross-Speaker Prosody Transfer on Any Text for Expressive Speech Synthesis

  • Learn to Sing by Listening: Building Controllable Virtual Singer by Unsupervised Learning from Voice Recordings

  • Adversarial Speaker Disentanglement Using Unannotated External Data for Self-supervised Representation Based Voice Conversion

  • Speaker normalization (GRL) for self-supervised speech emotion recognition

基于数据扰动防止音色泄露的方法

  • https://github.com/auspicious3000/contentvec/blob/main/contentvec/data/audio/audio_utils_1.py

  • https://github.com/revsic/torch-nansy/blob/main/utils/augment/praat.py

  • https://github.com/revsic/torch-nansy/blob/main/utils/augment/peq.py

  • https://github.com/biggytruck/SpeechSplit2/blob/main/utils.py

  • https://github.com/OlaWod/FreeVC/blob/main/preprocess_sr.py

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

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

相关文章

2023年6月最新|大屏可视化

大屏可视化 一、可视化适配 大屏下显示一般都是16:9尺寸 1920*1080 ,做适配也就是在这个比例的基础上进行的 方案一:打开VSCode终端,下载flexible npm i lib-flexible修改源码 要修改的源码的路径: 项目/mode_modules/lib-fl…

Springboot+Vue服务器盲盒活动

文章目录 一、项目要求二、说明文档1、用户抽奖主页/raffle2、多种奖品链接1、奖品1 discont /discount2、奖品2 CPU upgrade /cpu3、奖品3 Memory upgrade /memory4、奖品4 Increase duration /duration5、奖品5 Send to server /server6、奖品6 Configuration upgrade /upgra…

信必优成功案例-全球Tops汽车技术供应商

该集团是全球Tops汽车技术供应商,业务范围涵盖了汽油系统、柴油系统、汽车底盘控制系统、汽车电子驱动、起动机与发电机、电动工具、家用电器、传动与控制技术、热力技术和安防系统等。信必优于2021年开始为该客户服务,参与了客户多个项目,以…

Android进阶 四大组件的工作过程(二):Service的工作过程

Android进阶 四大组件的工作过程(二):Service的工作过程 导语 本片文章主要是来介绍Service组件的工作过程的,主要分成Service的启动和Service的绑定两个部分来讲。上一篇文章我们已经介绍了Activity的工作工程,而Ser…

Windows软件:如何安装ideaIU-2020.3.3并使用无限重置插件达到永久使用

​前言: ​在我们做SpringBoot Java项目时,一个好的开发工具可以让我们的效率达到事半功倍,早期的eclipse已经无法满足我们日常需求,当然idea集成开发工具在很早前就已经进入市场,如今取得了无法撼动的地位&#xff0c…

度学习pytorch实战六:ResNet50网络图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介、训练集与测试集划分 2.模型相关知识 3.model.py——定义ResNet50网络模型 4.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 5.predict.py——利用训练好的网络参数后&#xff0…

为Nomad Web使用添加快捷应用图标

大家好,才是真的好。 上次我们说到Nomad Web已经更新到了1.0.8版本,作为未来的“Notes客户机”(运行在浏览器中),Nomad Web的更新迭代很快。从1.0.5版本开始,就可以直接部署在Domino服务器上,而…

STM32MP157_PRO开发板的第一个驱动程序

文章目录 目的:为什么编译驱动程序之前要先编译内核?编译内核编译设备树编译安装内核模块编译内核模块安装内核模块到 Ubuntu 的NFS目录下备用 安装内核和模块到开发板上编译 led 驱动在开发板安装驱动模块下载驱动程序安装驱动模块 目的: 在…

Netty实战(十三)

WebSocket协议(一) 一、什么是WebSocket 协议二、简单的 WebSocket 程序示例2.1 程序逻辑2.2 添加 WebSocket 支持2.3 处理 HTTP 请求2.4 处理 WebSocket 帧 一、什么是WebSocket 协议 WebSocket 协议是完全重新设计的协议,旨在为 Web 上的双…

读书笔记-《ON JAVA 中文版》-摘要16[第十六章 代码校验]

文章目录 第十六章 代码校验1. 测试1.1 单元测试1.2 JUnit1.3 测试覆盖率的幻觉 2. 前置条件2.1 断言(Assertions)2.2 Java 断言语法2.3 Guava 断言2.4 使用断言进行契约式设计2.4.1 检查指令2.4.2 前置条件2.4.3 后置条件2.4.4 不变性2.4.5 放松 DbC 检…

Frida技术—逆向开发的屠龙刀

简介 Frida是一种基于JavaScript的动态分析工具,可以用于逆向开发、应用程序的安全测试、反欺诈技术等领域。Frida主要用于在已安装的应用程序上运行自己的JavaScript代码,从而进行动态分析、调试、修改等操作,能够绕过应用程序的安全措施&a…

路径规划算法:基于人工电场优化的路径规划算法- 附代码

路径规划算法:基于人工电场优化的路径规划算法- 附代码 文章目录 路径规划算法:基于人工电场优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化…

【Leetcode60天带刷】day06哈希表——242.有效的字母异位词,349. 两个数组的交集,202题. 快乐数,1. 两数之和

题目:242.有效的字母异位词 Leetcode原题链接:242. 有效的字母异位词 思考历程与知识点: 如果一个字母一个字母的找,也就是暴力,用两个for的话时间复杂度是O(N^2); 我们可以换个思路,a~z一共…

Telerik Report Server R2 2023

Telerik Report Server R2 2023 仪表报告项-使用仪表或类似表盘的显示提供数据的可视化表示。 报告项上的AccessibleRole属性-ARIA(可访问的富Internet应用程序)支持已显著改进。在Web上,当启用了辅助功能时,呈现的报表项包含预定义的辅助功能角色。这样…

(七)矢量数据的空间分析——叠置分析①

矢量数据的空间分析——叠置分析 叠置分析是将代表不同主题的各个数据层面进行叠置,产生一个新的数据层面,叠置结果综合了原来两个或多个层面要素所具有的属性。 叠置分析不仅生成了新的空间关系,而且还将输入的多个数据层的属性联系起来产…

随机的乐趣和游戏

1、猜数字游戏 #GuessingGame.py import random the_number random.randint(1, 10) print("计算机已经在1到10之间随机生成了一个数字,") guess int(input("请你猜猜是哪一个数字: ")) while guess ! the_number:if guess > the_number:p…

【MySQL】数据库基本知识小结

数据库的基本概念 数据库:DataBase 简称 DB,就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统:DataBase Management System 简称 DBMS,是一种操纵和管理数据库的大型软件,通常用于建立…

数据结构 一绪论

第一章:绪论 1.1数据结构的基本概念 1.数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被程序识别 和处理的符号的集合。 2.数据元素:数据元素是数据的基本单位,通常作为一个整体进行…

软件项目质量跟踪控制的3大方法

1、质量度量法 质量度量法包括尺度度量和二元度量两种方法,而尺度度量是定量度量,适用可直接度量的特性。如缺陷率 而二元度量是定性度量,适用间接度量的质量特性。如使用性,灵活性。 软件项目质量跟踪控制的3大方法:质…

ReentrantLock实现原理-公平锁

在ReentrantLock实现原理(1)一节中,我们了解了ReentrantLock非公平锁的获取流程,在本节中我们来看下ReentrantLock公平锁的创建以及锁管理流程 创建ReentrantLock公平锁 创建公平锁代码如下: ReentrantLock reentrantLock new ReentrantL…