Python 将MP3音频文件转换成MIDI乐谱文件
spleeter
1.系统环境
我的Python环境
安装spleeter
pip install spleeter
查看spleeter是否安装成功
pip list
安装ffmpeg
windows版链接:https://www.gyan.dev/ffmpeg/builds/
选择需要的版本进行下载,然后解压
将bin目录添加到系统环境变量即可
终端输入命令ffmpeg
如图说明安装成功
2.获取spleeter项目
spleeter项目链接:https://github.com/deezer/spleeter
下载预训练模型
预训练模型链接:https://github.com/deezer/spleeter/releases/tag/v1.4.0
我下载的spleeter项目
在项目根目录新建music
文件夹,用来存放要分离的mp3音频文件
在项目根目录新建pretrained_models
文件夹,把下载好的预训练模型解压到这里
根据需求来下载,不需要全部下载。
将2stems开头的一个预训练模型解压到2stems文件夹下,其他的同理
注意:文件夹命名只识别2stems、4stems、5stems
3.在项目根目录新建startup.bat文件
向startup.bat文件添加如下内容
@echo off & title spleeter启动器 by 编程要快乐
:: 项目根目录所在的绝对路径
set CURRENT_PATH=/d %~dp0
:: cd /d 会切换不同盘符的路径
@REM cd %CURRENT_PATH%
@REM echo %CURRENT_PATH%
:main
echo ------------------------------------------------------------------------------------------
echo 1.使用2stems预训练模型分离mp3音频文件(Vocals (singing voice) / accompaniment separation)
echo.
echo 2.使用4stems预训练模型分离mp3音频文件(Vocals / drums / bass / other separation)
echo.
echo 3.使用5stems预训练模型分离mp3音频文件(Vocals / drums / bass / piano / other separation)
echo ------------------------------------------------------------------------------------------
echo.
set /p x=请选择预训练模型:
:: 默认使用2stems预训练模型分离mp3音频文件
set model=2stems
if %x%==1 (set model=2stems
) else if %x%==2 (set model=4stems
) else if %x%==3 (set model=5stems
)
@REM echo %model%
:: music文件夹所在路径
set MUSIC_PATH=%CURRENT_PATH%music
:: 切换到music文件夹路径下,以便Tab键补全输入的文件名
cd %MUSIC_PATH%
echo.
set /p mp3=直接输入music文件夹里的mp3文件名(含后缀):
:: 将mp3中的所有双引号删除
SET mp3=%mp3:"=%
@REM set mp3=%cd%music%mp3%
set mp3=.music%mp3%
@REM echo %mp3%
:: 再切换回项目根目录来执行命令
cd %CURRENT_PATH%
@echo on
:: 使用 --verbose 参数查看更多的输出信息
python -m spleeter separate -p spleeter:%model% -o music_output "%mp3%" --verbose
@echo off
echo.
set /p isContinue=是否继续执行?(Y/N):
@REM echo %isContinue%
if %isContinue%==Y (clsgoto main
)
if %isContinue%==y (clsgoto main
)
else exit
@REM @echo off
@REM echo 按任意键结束...
@REM pause>nul
然后向music文件夹添加一首歌
接着双击startup.bat运行批处理文件
这样就分离成功了,去到music_output
目录查看
由于我选择了2stems预训练模型,所以只分离了人声和伴奏,其他预训练模型可自行测试
4.spleeter分离音频文件所需工具
关注编程要快乐
公共号,回复spleeter
即可获取
GiantMIDI-Piano
参考教程:https://www.bilibili.com/read/cv8223137/
1.获取GiantMIDI-Piano项目
GiantMIDI-Piano项目链接:https://github.com/bytedance/GiantMIDI-Piano
2.下载EmEdtior编辑器
EmEdtior中文官网:https://zh-cn.emeditor.com/
用来处理接下来的.csv
文件
3.安装项目根目录requirements.txt
文件里的依赖
执行命令安装依赖
pip install -r requirements.txt
下载完之后,需要安装Pytorch
1.4及以上版本
pip install torch
这会默认下载CPU版的Pytorch。但是我是下载GPU版的,这样执行速度会快一点。
4.下载CUDA版(GPU版)Pytorch
链接:https://pytorch.org/get-started/locally/
如图选择(需根据电脑配置来选择CUDA版本)
查看电脑显卡支持的CUDA版本
下载CUDA工具包
CUDA工具包链接:https://developer.nvidia.com/zh-cn/cuda-downloads
CUDA工具包本地安装包是内含特定版本Nvidia显卡驱动的,所以只选择下载CUDA工具包就足够了,如果想安装其他版本的显卡驱动就下载相应版本即可。
开始下载Pytorch
执行以下命令就可以下载了
pip3 install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio===0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
它会根据你当前所在的Python版本环境来下载相应版本的依赖包,我的Python版本为3.8.3,所以会下载cp38的依赖包。
由于我已经下载好了,我用Anaconda来模拟下载命令的过程,可以看到我的Anaconda环境的Python版本为3.7.10,执行命令,会下载cp37的依赖包。
因为命令行下载有很大概率下载失败,所以我选择离线包下载安装
各个版本的pytorch以及torchvision,的CPU版本,GPU版本都可以在下面的网址下载:https://download.pytorch.org/whl/torch_stable.html
找到对应Python版本的GPU版Pytorch离线包下载即可
torchvision、torchaudio同理
注意:torchaudio只有cpu版
离线安装Pytorch、torchvision、torchaudio
依次执行下面的命令,注意离线包名可能不一样
pip install "torch-1.8.1+cu111-cp38-cp38-win_amd64.whl"
pip install "torchvision-0.9.1+cu111-cp38-cp38-win_amd64.whl
pip install "torchaudio-0.8.1-cp38-none-win_amd64.whl"
查看是否都安装成功了
pip list
5.编写startup.bat以及创建文件夹
在项目根目录创建startup.bat批处理文件
python audios_to_midis.py transcribe_piano --workspace="./works" --mp3s_dir="./works/mp3s_piano_solo" --midis_dir="./works/midis" --begin_ind=0 --end_index=10
@echo off
echo.
echo 按任意键退出...
pause>nul