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

下载完之后,需要安装Pytorch1.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

填入上述内容保存

在项目根目录创建works文件夹

并建立midismp3s_piano_solo两个文件夹,同时将以下full_music_pieces_youtube_similarity_pianosoloprob.csv文件放进该works文件夹

将mp3文件放入mp3s_piano_solo

将之前spleeter分离出的accompaniment.wav文件转成mp3文件放入该目录

接着用EmEdtior工具打开csv文件

删除多余的行,并设置不必要的列的值为unknown,并设置audio_name列的值为accompaniment,以及piano_solo_prob列的值为1

保存设置好的csv文件,并执行批处理文件

双击该项目根目录的startup.bat来将MP3文件转换成MIDI乐谱文件

查看输出来的MIDI文件

双击播放该乐谱文件

播放成功!至此MP3音频文件转MIDI乐谱文件教程就结束了!

6.GiantMIDI-Piano转换所需工具

关注编程要快乐公共号,回复midi即可获取

Python 将MP3音频文件转换成MIDI乐谱文件相关推荐

  1. pip 安装protobuf_Python3.6安装protobuf模块+将proto文件转换成pb2.py文件

    Python对版本的对应即为苛刻,笔者第一次安装时遇到了很多坑,比如无法将proto文件转换成py文件,转换了之后文件无法使用,网上各种各样的解决办法都没有讲到重点.其实会出现各种各样的问题是由于版本 ...

  2. pdf英文转换成html网页,PDF文件转换成html网页文件小方法

    原标题:PDF文件转换成html网页文件小方法 现在不知道大家知不知道小学已经开设编程课程了.我记得我们小时候连上个微机课都是一种奢望,所以现在的孩纸还是很享福的呀.但是很多的小白估计听着代码.编程这 ...

  3. 答:怎样把图片文件转换成.ico图标文件?

    答:怎样把图片文件转换成.ico图标文件? 有许多中方法制作图标文件.选其中的两种方式记录下来. 第一种非常简单,使用"小榕图标编辑器".是公用软件.免费.使用起来非常简单,根本不 ...

  4. 怎样把图片文件转换成.ico图标文件?

    怎样把图片文件转换成.ico图标文件? 比如把.bmp/.jpg/.gif等格式的文件转换成.ico文件.应该如何作呢? 有知道的大哥告知一下吧. 有答案啦!!! 答:怎样把图片文件转换成.ico图标 ...

  5. 如何将pdf文件转换成cad格式文件

    pdf文件是一个封闭性文件,文件不仅不容易编辑修改,而且还可能被加密了,那么如何将pdf文件转换成cad格式文件呢? 下面小编教大家使用pdf转换器实现以上操作,具体步骤如下. 第一步:搜索迅捷pdf ...

  6. 如何将asc文件转换成的txt文件,并导入到sql server中?

    最近的工作是利用Arcgis处理得到pixels 数据,再用erdas 软件将pixels 数据转换成 ASCII码,最终生成了asc文件(文件中的数据每3个数据为一组,分别表示了: 横坐标X:纵坐标 ...

  7. java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

  8. python把.CSV文件转换成.JSON格式文件并格式化储存

    先来看看.JSON对象的一些操作方法: 我们这次用到的主要就是json.dumps 再来看看我们将要转换的.CSV文件的样子: 可以看出,是一张再普通不过的表了,话不多说,直接上代码: import ...

  9. r语言的rmd文件转换成html,.Rmd文件转化为PDF报告

    使用R Markdown,knit和MikTex将.Rmd文件转化为pdf报告(只针对windows10, 可能windows系统都可以) 因为上课需要用到RStudio创建.Rmd文件,并且需要将该 ...

最新文章

  1. inline hook __usercall 函数
  2. 古月居ros课件_【古月居】ROS2探索总结系列
  3. Docker的运行机制
  4. matlab GUI——按下按钮在指定的坐标下绘制函数图像
  5. c语言链表有没有哨兵的区别,链表中的哨兵(sentinel)
  6. [react] 举例说明useState
  7. LeetCode 2161. 根据给定数字划分数组
  8. Greenplum 行存、列存,堆表、AO表的原理和选择
  9. 从仁慈的独裁者到微软打工人,Python之父和Python将走向何方?
  10. [sql面试经验] 经典sql面试题及答案第2期
  11. 渗透测试PTES标准流程(超详细)
  12. 可控硅型号怎样识别_可控硅的鉴别
  13. pmp知识点(8)-项目质量管理
  14. python中ix用法_pandas中ix的使用详细讲解
  15. 激情巴布部落畅快一日游
  16. htc android sd卡,HTC M8支持扩展储存卡吗?HTC M8支持多大的储存卡?
  17. 《数据结构》-图的邻接表表示法(四)
  18. 万测试验机软件,万测关注检查井盖质量检测
  19. 前端学习从入门到高级全程记录之13 (京东项目一)
  20. HTML径向效果,HTML Canvas实现径向渐变效果

热门文章

  1. ExifTool常用使用方法
  2. 谷歌浏览器 chrome 71版本以上 设置默认允许flash
  3. Android之WebView的使用与简单浏览器
  4. 美团四年,字节三年这七年测试之路希望能让正在迷茫的你少走弯路
  5. 什么是美颜SDK?怎样选择美颜SDK?
  6. 个人免签支付如何对接微信支付宝?
  7. 坎坎坷坷的深度学习之路(一)-环境搭建
  8. [模板上新]病毒防疫主题公众号图文模板免费使用,武汉加油!
  9. 我的世界java版变形模组下载_我的世界变形模组
  10. python概率密度函数参数估计_Python与项目反应理论:基于EM和MCMC的参数估计算法...