政安晨【零基础玩转各类开源AI项目】基于本地Ubuntu系统部署及应用歌唱语音转换框架NeuCoSVC:歌曲音色转换工具

news2024/9/23 3:27:01

目录

论文简介

部署

模型下载

编译REAPER

最后


政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

本文目标:《Neural Concatenative Singing Voice Conversion》将该论文的这个歌曲音色转录能力基于Linux Ubuntu系统部署并应用起来

论文简介

任意歌声到任意歌声的转换(SVC)面临着一个巨大的挑战,即由于内容和说话者音色之间的分离不足而导致的 "音色泄漏 "问题。

为解决这一难题,本研究引入了一个新颖的神经串联歌声转换(NeuCoSVC)框架。 NeuCoSVC 框架由一个自监督学习(SSL)表征提取器、一个神经谐波信号发生器和一个波形合成器组成。 SSL 模型将音频浓缩为固定维度的 SSL 特征序列。 谐波信号发生器利用给定条件特征的线性时变滤波器产生原始谐波信号和滤波谐波信号。 与此同时,音频发生器直接根据 SSL 特征创建波形,同时整合谐波信号和响度。 在推理过程中,音频生成器会直接构建转换后的波形,将源 SSL 表示替换为匹配池中最接近的对应波形,匹配池由从目标音频中提取的 SSL 表示组成。 因此,该框架规避了解除纠缠的挑战,有效消除了音色泄漏问题。 实验结果证实,在单次 SVC 的情况下,所提出的系统在语言内、跨语言和跨领域评估中均表现出良好的性能。


:所提出的 SVC 系统的结构:(a)SSL 特征提取和匹配模块;(b)神经谐波信号发生器;(c)音频合成器。 

论文地址为:https://arxiv.org/abs/2312.04919

歌唱声音转换(SVC)的目标是将一个歌手的声音特征转换成目标歌手的声音特征,同时
保留歌曲的内容和旋律。随着神经网络架构的进步,取得了重大进展,在SVC任务中实现,在人机交互、娱乐等方面带来了广泛的应用。

该团队已经开发出了第二版:NeuCoSVC2 

部署该项目时,可以在下载完成项目源码后,切换到第二版的分支中。

部署

下载项目GitHub - thuhcsi/NeuCoSVCContribute to thuhcsi/NeuCoSVC development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/thuhcsi/NeuCoSVC

git clone git@github.com:thuhcsi/NeuCoSVC.git

切换至第二版项目分支中:

cd NeuCoSVC
git checkout NeuCoSVC2

创建虚拟环境:

conda create -n NeuCoSVC python=3.10.6
conda activate NeuCoSVC
pip install -r requirements.txt

在您切换至第二版分支之后,最后安装依赖的时候,依赖文件的名字叫作:requirements

即,执行依赖安装的命令为:

pip install -r requirements

 

 

模型下载

要为项目设置检查点,您需要为WavLM大型编码器和带有神经谐波滤波器的FastSVC模型获取预训练模型。

政安晨:也就是说,该框架要用起来,需要下载两个模型,放到特定的位置上

1. 下载编码器:WavLM 大型编码器

从这里您可以看到它的下载地址:

unilm/wavlm at master · microsoft/unilm · GitHubLarge-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities - unilm/wavlm at master · microsoft/unilmicon-default.png?t=N7T8https://github.com/microsoft/unilm/tree/master/wavlm

“WavLM” 是一个用于全栈语音处理的大规模自监督预训练的库。

它有官方的 PyTorch 实现和预训练模型。在 2021 年 10 月发布了预印本,11 月发布了代码和预训练模型(如 WavLM Base 和 WavLM Base+),12 月有了大型版本的发布和对 HuggingFace 的支持,并且在 12 月还有一个有趣的说话人验证演示在 HuggingFace 上,可供尝试。

该库提供了不同的预训练模型,如 WavLM Base、WavLM Base+和 WavLM Large,并说明了它们的预训练数据集和微调数据集。

有条件的小伙伴,可以直接下载Large的模型使用。

2.下载:带有神经谐波滤波器的FastSVC模型:

下载链接如下:(打开项目,在项目中往下拉,找到这句话

3. 把下载好的模型放在特定的位置:

一旦你有了这两个文件,你需要把它们放在项目中正确的目录中。

如果项目的根目录中还不存在,请在根目录中创建一个名为pretrained的文件夹。

将WavLM-Large.pt文件和model. pkl(假设这是包含FastSVC模型的文件夹的正确名称)移动到pretrained文件夹中。

(政安晨注:可以根据项目中提示的模型名称,将下载的模型改名)

编译REAPER

GitHub - google/REAPERContribute to google/REAPER development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/google/REAPER参照上面的项目,编译,并配置使用。

cd convenient_place_for_repository
git clone https://github.com/google/REAPER.git
cd REAPER
mkdir build   # In the REAPER top-level directory
cd build
cmake ..
make

最后

未来可以使用Gradio,开发界面,把核心推理与训练等功能的图形化做起来。

这个项目是清华和腾讯一起做的,在最终部署上,大家可能会遇到一些问题,政安晨在这个项目的部署上如果遇到某些问题(大概率铁定会遇到),不建议大家联系我哈。

小伙伴们,相信你们应该会理解的,也逐渐会懂得的,嘿嘿。


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

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

相关文章

模拟三层--控制层、业务层和数据访问层

三层的概念:https://developer.aliyun.com/article/1390024 一、新建一个项目 我新建好的项目名为spring__ioc_02,然后在 src-main-java 下建立三层(数据访问层、业务层和控制层)的包 dao、service 和controller、并在包下建立相应的接口和实现类 Proje…

网络命令之查看网口最大网速的一些方法?(/sys/class/net/ethx/speed、ethtool ethx)

文章目录 背景方法1: sysfs的net方法2:ethtool方法3:通过网卡型号获取方法4:通过网卡lspci输出信息直接获取方法5:高性能网卡可以通过物理连线光口信息获取后记 背景 经常需要查看不同网卡的网速,甚至相同大版本型号网…

一个简单的pytorch项目框架

框架的基本功能: 1. 模型的定义、训练与测试 2. 数据生成与数据迭代器 3. 训练日志记录 4. 训练过程实时监控 有了这个框架,后续所有复杂的AI项目都可以在此基础上拓展开发。 项目基本结构: 四个文件: sequence_mean_generate…

C++初阶_2:引用

本节咱们来说说引用: C添加了“引用”,与指针成了两兄弟——这两兄弟对我们今后写C代码可谓各有特点,缺一不可。 何谓引用? 引用:就是取别名 不知诸位可有别名?这里不妨举一本耳熟能详的小说《水浒传》&…

Redis16-批处理优化

目录 Pipeline 集群下的批处理 Pipeline 单个命令的执行流程: N条命令的执行流程: N条命令批量执行: Redis提供了很多Mxxx这样的命令,可以实现批量插入数据,例如: msethmset 利用mset批量插入10万条数…

vivado报错:file ended before end of clause

最近在学习Xilinx FPGA时,遇到 Vivado 报错如下图所示: 刚开始,看到错误是在第1行代码中出现的,我的第一反应是该行代码写错了,然后搜了搜语法,发现没错。 分析报错信息发现,该错误应该是和文件…

VScode + PlatformIO 和 Keil 开发 STM32

以前经常使用 KEIL 写 STM32 的代码,自从使用 VScode 写 ESP32 后感觉 KEIL 的开发环境不美观不智能了,后面学习了 VScode 开发 STM32 。 使用过程中发现 串口重定向在 KEIL 中可以用,搬到 VScode 后不能用,不用勾选 Use Micro LI…

SpringMVC 运行流程

SpringMVC 运行流程 💖The Begin💖点点关注,收藏不迷路💖 SpringMVC的运行流程可概括为以下几个核心步骤: 流程图: #mermaid-svg-l1CeK9JwP5wRQjBL {font-family:"trebuchet ms",verdana,arial,…

医学图像分割新突破:6篇文献带你洞悉最前沿的医学AI技术|顶刊速递·24-08-14

小罗碎碎念 文献日推主题:人工智能在医学图像分割中的最新研究进展 今天这期文章信息量很大,并且不同的人看,获取的信息量也会差距很大。为了缩小这个差距,请在正式阅读前,记住小罗的一句话——模型学会了如何分割图像…

【Spark集群部署系列三】Spark StandAlone HA模式介绍和搭建以及使用

简介: Spark Standalone集群是Master-Slaves架构的集群模式,和大部分的Master-Slaves结构集群一样,存在着Master 单点故障(SPOF)的问题。 高可用HA 如何解决这个单点故障的问题,Spark提供了两种方案&#…

83.SAP ABAP从前台找字段所在表的两种方法整理笔记

目录 方法1:F1查看技术信息 F1 技术信息 方法2:ST05开启跟踪 Activate Trace Input and save data Deactivate Trace Display Trace 分析你想要的表 方法1:F1查看技术信息 从前台找一个屏幕字段所在表,一般通过按F1来查找…

Java Nacos与Gateway的使用

Java系列文章目录 IDEA使用指南 Java泛型总结(快速上手详解) Java Lambda表达式总结(快速上手详解) Java Optional容器总结(快速上手图解) Java 自定义注解笔记总结(油管) Jav…

【大数据】6:MapReduce YARN 初体验

目录 MapReduce & YARN 初体验 集群启停命令 一键启动脚本: 单进程启停 提交MapReduce任务到YARN执行 提交MapReduce程序至YARN运行 提交wordcount示例程序 提交求圆周率示例程序 拓展:蒙特卡罗算法求PI的基础原理 onte Carlo蒙特卡罗算法…

【MySQL 06】表的约束

文章目录 🌈 一、约束的概念🌈 二、空属性约束⭐ 1. 空值无法参与运算⭐ 2. 设置非空属性 🌈 三、默认值约束⭐ 1. 默认值使用案例⭐ 2. 同时设置 not null 和 default 🌈 四、列描述约束🌈 五、zerofill 补零约束&…

贷齐乐漏洞复现+php特性绕过WAF

目录 一、环境搭建 1.将贷齐乐源码放入phpstudy中的www目录下 2.在phpstudy上创建网站: 3.在本地数据库中创建数据库--ctf,并创建users表: 4.往表中插入数据: 5.查看users表: 6.测试能否访问到数据库 二、源码分析…

力扣热题100_链表_234_回文链表

文章目录 题目链接解题思路解题代码 题目链接 234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出…

搭建MoneyPrinterTurbo,利用AI大模型,一键生成高清短视频实战

搭建MoneyPrinterTurbo,利用AI大模型,一键生成高清短视频 1.MoneyPrinterTurbo简介 只需提供一个视频 主题 或 关键词 ,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。 github地址&a…

【大模型从入门到精通19】开源库框架LangChain LangChain文档加载器1

目录 理解文档加载器非结构化数据加载器结构化数据加载器 使用文档加载器的实际指南设置和配置安装必要的包(注意:这些包可能已经在你的环境中安装好了)从 .env 文件加载环境变量从环境变量中设置 OpenAI API 密钥 在数据驱动的应用领域&…

企业如何组建安全稳定的跨国通信网络

当企业在海外设有分公司时,如何建立一个安全且稳定的跨国通信网络是一个关键问题。为了确保跨国通信的安全和稳定性,可以考虑以下几种方案。 首先,可以在分公司之间搭建虚拟专用网络。虚拟专用网络通过对传输数据进行加密,保护通信…

Java:jdk8以后开始接口新增的3种方法:default,private,static

文章目录 jdk8以后开始接口新增的方法默认方法:deafult私有方法private如何查看自己的jdk版本静态方法static 问题接口中不止有抽象方法为什么接口中的方法都是public为什么要增加这三种方法 jdk8以后开始接口新增的方法 默认方法:deafult 必须使用defa…