【音频分离】demucs V3的环境搭建及训练(window)

news2024/9/23 15:21:16

文章目录

  • 一、环境搭建
    • (1)新建虚拟环境,并进入
    • (2)安装pyTorch
    • (3)进入代码文件夹,批量安装包
    • (4)安装其他需要的包
  • 二、数据集准备
    • (1)下载数据集
    • (2)修改配置参数
    • (3)创建微调数据集
    • (4)解压outputs.tar.gz
    • 三、训练
      • (1)默认,cpu
      • (2)默认,gpu
      • (3)修改参数,gpu
    • 四、推理
      • (1)模型导出
      • (2)模型评估
      • (3)推理
  • 报错
    • (1)soundfile.LibsndfileError: Error opening 'C:\\Users\\Lenovo\\AppData\\Local\\Temp\\tmps0ogpyqy.wav': System error.
    • (2)FileNotFoundError: [WinError 2] 系统找不到指定的文件。
    • (3)TypeError: beat_track() takes 0 positional arguments but 1 positional argument (and 2 keyword-only arguments) were given
    • (4)TypeError: chroma_cqt() takes 0 positional arguments but 1 positional argument (and 1 keyword-only argument) were given
    • (5)numpy.core._exceptions._ArrayMemoryError: Unable to allocate 1.11 GiB for an array with shape (54134, 1377) and data type complex128
    • (6)UserWarning:The version_base parameter is not specified.
    • (7)FileNotFoundError: Caught FileNotFoundError in DataLoader worker process 0.
    • (8)torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 562.00 MiB (GPU 0; 15.99 GiB total capacity; 14.06 GiB already allocated; 0 bytes free; 14.72 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
    • (9)WARNING:__main__:Model 81de367c has less epoch than expected (8 / 360)
  • 写在最后

代码下载

这是一个音频提取、分离的项目

一、环境搭建

(1)新建虚拟环境,并进入

conda create -n demucs python=3.8
activate demucs

在这里插入图片描述
在这里插入图片描述

(2)安装pyTorch

到pyTorch官网选择对应配置
在这里插入图片描述

这个是我的配置

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

在这里插入图片描述

(3)进入代码文件夹,批量安装包

在这里插入图片描述

d:
cd  D:\data\cqZhang\demucs-3
pip install -r requirements.txt

在这里插入图片描述

(4)安装其他需要的包

pip install librosa

二、数据集准备

(1)下载数据集

使用Musdb HQ 数据集
获取路径有:
https://zenodo.org/record/3338373
https://www.kaggle.com/datasets/ayu055/musdb18hq

数据集可以放在“\checkpoint\defossez\datasets\musdbhq”路径下,
这与代码原来的位置应该是一致的

(2)修改配置参数

  1. The dset.musdb key inside conf/config.yaml.
  2. The variable MUSDB_PATH inside tools/automix.py.

在这里插入图片描述
在这里插入图片描述

我本来使用的是相对路径,但是他貌似找不到,后来改成绝对路径
其他的路径也一样,如果找不到,就要改成绝对路径

(3)创建微调数据集

原来的命令是export NUMBA_NUM_THREADS=1; python3 -m tools.automix,但它是linux上的命令,
将其改为set NUMBA_NUM_THREADS=1 && python -m tools.automix

运行结束会在项目目录下产生tmp文件夹,里面有新的数据集

修改 conf/config.yaml.中的 dset.musdb
修改 conf/dset/auto_mus.yaml 中的 dset.wavOUTPATH

(4)解压outputs.tar.gz

tar xvf outputs.tar.gz

在这里插入图片描述

三、训练

训练有三种命令
我只尝试了第二种

(1)默认,cpu

dora info -f 81de367c

this will show the hyper-parameter used by a specific XP.
Be careful some overrides might present twice, and the right most one will give you the right value for it.
这将显示特定XP使用的超参数。
请注意,有些覆盖可能会出现两次,最正确的一次将为您提供正确的值。

(2)默认,gpu

dora run -d -f 81de367c

在这里插入图片描述
注意:如果修改了数据集,要在目录下删除metadata文件夹,否则会出错。

run an XP with the hyper-parameters from XP 81de367c.
-d is for distributed, it will use all available GPUs.
使用XP 81de367c中的超参数运行XP。
-d是分布式的,它将使用所有可用的GPU。

(3)修改参数,gpu

dora run -d -f 81de367c hdemucs.channels=32

start from the config of XP 81de367c but change some hyper-params.
This will give you a new XP with a new signature (here 3fe9c332).
从XP 81de367c的配置开始,但更改了一些超参数。
这将为您提供一个带有新签名的新XP(此处为3fe9c332)。

四、推理

(1)模型导出

python -m tools.export 81de367c

在这里插入图片描述

(2)模型评估

python -m tools.test_pretrained --repo ./release_models -n 81de367c

在这里插入图片描述

(3)推理

python -m demucs --repo ./release_models -n 81de367c --mp3 D:\data\cqZhang\001.mp3

在这里插入图片描述

保存位置./separated
在这里插入图片描述

报错

(1)soundfile.LibsndfileError: Error opening ‘C:\Users\Lenovo\AppData\Local\Temp\tmps0ogpyqy.wav’: System error.

在这里插入图片描述

在linux上运行会创建一个临时文件,且程序退出后该临时文件会自动删除,
但是在windows上运行时,不能打开创建的临时文件,

Whether the name can be used to open the file a second time, while the named temporary file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later).
在命名的临时文件仍然打开的情况下,该名称是否可以用于第二次打开文件,因平台而异(它可以在Unix上使用;不能在Windows NT或更高版本上使用)。

处理:
方法1. 更改临时文件保存方式(不保存到系统的临时文件夹里)
方法2. 增加参数:delete=False,手动删除

我采用方法2
在这里插入图片描述

执行后会报其他错误,这是另一个问题了

在这里插入图片描述

(2)FileNotFoundError: [WinError 2] 系统找不到指定的文件。

在这里插入图片描述

出现这个错误,原因大概有三种:
1、先查看路径是否正确
2、再查看该文件是否存在
3、如果还没解决问题,最后很可能就是该命令在dos环境内无法使用

处理:
根据实际情况,我判断是第三种问题
到这里下载一个程序,
在这里插入图片描述
解压后放在项目目录下
在这里插入图片描述
已经成功执行了
在这里插入图片描述

(3)TypeError: beat_track() takes 0 positional arguments but 1 positional argument (and 2 keyword-only arguments) were given

在这里插入图片描述

说是参数个数不匹配的问题,其实并不是

处理:

# 将下列代码
tempo, events = beat_track(drums.numpy(), units='time', sr=SR)

# 改为
tempo, events = beat_track(y=drums.numpy(), units='time', sr=SR)

在这里插入图片描述

(4)TypeError: chroma_cqt() takes 0 positional arguments but 1 positional argument (and 1 keyword-only argument) were given

在这里插入图片描述

这个问题与上面那个问题一样
说是参数个数不匹配的问题,其实并不是

处理:

# 将下列代码
kr = torch.from_numpy(chroma_cqt(bass.numpy(), sr=SR))

# 改为
kr = torch.from_numpy(chroma_cqt(y = bass.numpy(), sr=SR))

在这里插入图片描述

(5)numpy.core._exceptions._ArrayMemoryError: Unable to allocate 1.11 GiB for an array with shape (54134, 1377) and data type complex128

内存不足
这个我没有去思考如何减少内存的使用
也许减小数据集有效
我的处理方式是:换一台大内存的机器
它的内存需求不超过40g

(6)UserWarning:The version_base parameter is not specified.

在这里插入图片描述

这是一个版本警告,其实无关紧要
完整的警告如下:
D:\app\anaconda\envs\demucs\lib\site-packages\dora\hydra.py:279: UserWarning:
The version_base parameter is not specified.
Please specify a compatability version level, or None.
Will assume defaults for version 1.1
with initialize_config_dir(str(self.full_config_path), job_name=self._job_name,

处理:
加上参数version_base='1.1'
在这里插入图片描述

(7)FileNotFoundError: Caught FileNotFoundError in DataLoader worker process 0.

在这里插入图片描述
处理:
首先我在demucs/repitchsp.run()中加入参数shell=True
在这里插入图片描述
再次运行dora run -d -f 81de367c,报错信息出现变化
在这里插入图片描述
我运行命令soundstretch C:\\Users\\Lenovo\\AppData\\Local\\Temp\\tmps9ifi1_z.wav C:\\Users\\Lenovo\\AppData\\Local\\Temp\\tmp44v82njg.wav -pitch=2 -tempo=-3.226039,执行成功
在这里插入图片描述
说明文件其实是存在的,但是不知道为啥不能执行成功

第二处应该是编码格式的问题,我将raise RuntimeError(f"Could not change bpm because {error.stderr.decode('utf-8')}")修改为raise RuntimeError(f"Could not change bpm because {error.stderr.decode('gbk')}")解决

在这里插入图片描述
在这里插入图片描述
这可能就是报错的主要原因了
将soundstretch放到下面目录
在这里插入图片描述
运行出现一下结果,应该是没问题了。(内存不足修改batch_size)
在这里插入图片描述

(8)torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 562.00 MiB (GPU 0; 15.99 GiB total capacity; 14.06 GiB already allocated; 0 bytes free; 14.72 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

在这里插入图片描述
处理:
修改conf/config.yaml里的batch_size
默认64,但是我只有16G的显存,设置成4,目前恰好运行,不知道能不能运行到结束。
在这里插入图片描述
##(9)FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。
在这里插入图片描述
处理:
方法1:修改重命名方式,改成强制覆盖
在这里插入图片描述
方法2:在重命名前删除已有文件
方法3:修改命名方式,比如加上日期时间

(9)WARNING:main:Model 81de367c has less epoch than expected (8 / 360)

在这里插入图片描述
模型没有训练够就想导出。

处理:
只是一个警告,不理会也没关系。
介意的话,把这里改小即可。
在这里插入图片描述

写在最后

写一半的时候有其他的事,停了大半个月
现在又有事了,匆匆忙忙把推理部分写上
后面有机会再补充
有机会尝试自己构造数据集训练

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

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

相关文章

flask中的flask-login

flask中的flask-login 在 Flask 中,用户认证通常是通过使用扩展库(例如 Flask-Login、Flask-HTTPAuth 或 Flask-Security)来实现的。 本文详细地解释下 Flask 中的用户认证。这里是用 Flask-Login 插件为例,这是一个处理用户会话…

count(列名) ,count(1)与count(*) 有何区别?

Mysql版本:8.0.26 可视化客户端:sql yog 文章目录 一、Mysql之count函数简介二、count(列名) ,count(常量)与count(*) 有何区别?2.1 统计字段上的区别2.2 执行效率上的区别 一、Mysql之count函数简介 👉表达式 COUNT(…

DP-GAN损失

在前面我们看了生成器和判别器的组成。 生成器损失公式: 首先将fake image 和真实的 image输入到判别器中: 接着看第一个损失:参数分别为fake image经过判别器的输出mask,和真实的label进行损失计算。对应于: 其中l…

动态规划之树形DP

动态规划之树形DP 树形DP何为树形DP 树形DP例题HDU-1520 Anniversary partyHDU-2196 Computer834. 树中距离之和 树形DP 何为树形DP 树形DP是指在“树”这种数据结构上进行的动态规划:给出一颗树,要求以最少的代价(或取得最大收益&#xff…

Vue-前端工程化

前后端开发模式 早期开发是前后端混合开发 即前后端代码写在一个工程中 前端写完给后端,后端发现问题反映给前端,后端就需要懂全栈 YAPI(接口在线管理平台) 一个接口管理和编辑平台 现在已经没有在维护了 还有mock服务 就是根据…

leetcode 912.排序数组

⭐️ 题目描述 🌟 leetcode链接:排序数组 思路: 此题如果使用冒泡插入选择这些时间复杂度 O ( N 2 ) O(N^2) O(N2) 的算法会超时,使用快排 优化也过不去,因为里面有一个测试用例全是 2 即使加了三数取中也会是 O (…

Java I/O模型

目录 一、介绍I/O 二、Java中常见的I/O 1.BIO,同步阻塞IO 2.NIO,同步非阻塞IO 3.AIO,异步I/O 三、三种IO的区别 一、介绍I/O 1.I/O(Input/Output)的即为输入输出。 2.从计算机的角度来看:在冯诺伊曼…

Vector - CAPL - 诊断模块函数(连接配置)

CanTpGetMaximumReceiveLength & CanTpSetMaximumReceiveLength 功能:获取或设置该节点接收数据时可接受的最大长度;如果指示较长数据块的第一帧到达,则溢出 (FC.Ovflw) 流状态流控制帧将被发送回发送器。 注意:CANoe 支持高…

NOsql之MongoDB入门分享

目录 一、MongoDB简介 1、概念理解 2、yum安装部署 3、二进制安装部署 4、配置文件解析 二、MongoDB基本管理 1、登录操作 2、管理命令 3、用户管理 一、MongoDB简介 1、概念理解 关系型数据库(RDBMS:Relational Database Management System) MySql、Ora…

YOLO实战1.2-YOLOV5人脸检测

上个项目实现了车牌的检测和识别,这次实现一个简单的人脸检测(加口罩)项目 一.数据集 使用1200张图片进行训练 400张进行测试 二.各项指标 三.效果

SpringCloud Gateway 在微服务架构下的最佳实践

作者:徐靖峰(岛风) 前言 本文整理自云原生技术实践营广州站 Meetup 的分享,其中的经验来自于我们团队开发的阿里云 CSB 2.0 这款产品,其基于开源 SpringCloud Gateway 开发,在完全兼容开源用法的前提下&a…

云服务器开放端口

文章目录 云服务器开放端口1. 云服务器后台开放端口2. linux系统开放端口2.1 查看防火墙状态2.2 开启防火墙2.3 开放端口(以端口2000为例)2.4 重新载入防火墙2.5 查看已开放的端口2.6 重启防火墙2.7 关闭端口 云服务器开放端口 本篇文章主要以阿里云服务…

Pandas.rank() 函数详解

文章目录 Pandas.rank() 函数详解一、参数解析二、案例分享默认排名降序: ascending Falsemethod minmethod maxmethod firstmethod densena_optionbottompct True Pandas.rank() 函数详解 一、参数解析 method:指定排名时的策略。 默认值为 average&#x…

[python]conda激活环境后pip -V显示在base路径

正常激活环境后pip -V是在激活环境路径,比如 但是我的突然确为 D:\anaconda3\lib\site-packages里面,百思不得其解,后来发现是我在环境变量加了PYTHONHOME环境变量,如果你的环境变量有PYTHONHOME或者PYTHONPATH请删掉试试。 此外…

Java并发系列之二:悲观锁机制

什么是锁 在并发环境下,会出现多个线程对同一个资源进行争抢的情况,假设A线程对资源正在进行修改,此时B线程此时又对资源进行了修改,这就可能会导致数据不一致的问题。为了解决这个问题,很多编程语言引入了锁机制&…

Stephen Wolfram:机器学习与神经网络训练

Machine Learning, and the Training of Neural Nets 机器学习与神经网络训练 We’ve been talking so far about neural nets that “already know” how to do particular tasks. But what makes neural nets so useful (presumably also in brains) is that not only can t…

【前端知识】React 基础巩固(四十六)——自定义Hook的应用

React 基础巩固(四十六)——自定义Hook的应用 一、自定义Hook的应用 自定义Hook本质上只是一种函数代码逻辑的抽取,严格意义上而言,它并不算React的特性。 实现组件创建/销毁时打印日志 import React, { memo, useEffect, useState } from "react…

#P0994. [NOIP2004普及组] 花生采摘

题目描述 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。 鲁宾逊先生和多多都很开心,因为花生正…

java学习路程之篇五、进阶知识、常用API、Object类、Math类、System类、BigDecimal类、包装类

文章目录 1、介绍2、Object类3、Math类4、System类5、BigDecimal类6、包装类 1、介绍 2、Object类 3、Math类 4、System类 5、BigDecimal类 6、包装类

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册

实验背景 大屏应用Astro Canvas是华为云低代码平台Astro的子服务之一,是以数据可视化为核心,以屏幕轻松编排,多屏适配可视为基础,用户可通过图形化界面轻松搭建专业水准的数据可视化大屏。例如汽车展示大屏、监控大屏、项目开发大…