使用AI实现高精度钢琴曲转谱Piano Transcription简明使用教程

易小灯塔
2020-11-20 / 6 评论 / 37,794 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年01月28日,已超过302天没有更新,若内容或图片失效,请留言反馈。

timg-tuya

简介

此项目可将钢琴录音(mp3, wav等格式)转录成MIDI文件, 识别的精度非常之高, 扒谱党的福利。相对于人工扒谱效率高了不知道多少倍, AI扒谱的时代已经到来。

前段时间字节跳动发布了全球最大的古典钢琴MIDI数据集 GiantMIDI-Piano, GiantMIDI-Piano 的特点是使用钢琴转谱技术,通过计算机将音频文件自动转为 MIDI 文件,并通过该技术转谱了大规模的 MIDI 数据集。

研究者万余首钢琴作品+一千多小时训练,开发并开源了一套高精度钢琴转谱系统piano_transcription,将所有音频转谱成 MIDI 文件,进而构建了 GiantMIDI-Piano 数据库。

该转谱系统的特点包括:

  • 能够将任意声部数目、任意复杂度,甚至双钢琴、多钢琴的钢琴音频转谱为 MIDI 文件。
  • 实现了任意时间精度的音符检测,突破了之前算法 32 毫秒识别精度的限制。
  • 对每个音符实现了 128 个粒度的力度识别。
  • 同时包含了钢琴音符和钢琴踏板的识别。
  • 在 MAESTRO 评测数据集上取得 96.72% 的 F1 值,超越了 Google 系统的 94.80%。
  • 预训练模型的代码以 Apache 2.0 协议开源。

详细介绍见https://zhuanlan.zhihu.com/p/269218623

GiantMIDI-Pianohttps://github.com/bytedance/GiantMIDI-Piano

piano_transcriptionhttps://github.com/bytedance/piano_transcription

一网友在此基础制作的修改版https://zhuanlan.zhihu.com/p/270999354

在此基础上, 我再稍微加工了下, 可批量转置, 使得更易使用

下面是一些转置后制作的一些视频

2011年Zetacola《赤色要塞》的钢琴演奏

音质修复+特效钢琴版

使用方法只需三步即可

  1. 下载资源
  2. 安装环境
  3. 使用

下载下面的资源包, 解压

链接: https://pan.baidu.com/s/1aqnlgfFCjB0KIlPEB8RcRg 提取码: xubj

资源包内包括piano_transcription项目,项目所使用的已训练完好模型,python安装包和ffmpeg

安装环境

以64位的windows版本为例, Mac和linux的步骤也是一样的, 只需安装对应系统的软件版本

安装下列环境

  • 01 Python 3.7

    使用到了f-string, 需要Python3.6以上版本才支持, 这里选择安装Python3.7.9版本

  • 02 项目所依赖的库
  • 03 ffmpeg

    用于读取媒体文件, 使用资源包里的版本即可

  • 04 cuda

    限NVIDIA显卡, 使用cuda转置速度更快, 没有可以不装, 使用CPU转置

  • 05 pytorch

    需要看Python版本和cuda版本, 选择相应的版本下载

01 安装 Python 3.7

双击附件里边的Python 3.7.9安装即可

image-20201122193925262

在cmd里输入python出现下面提示及安装成功

image-20201122194203335

02 项目所依赖的库

在项目目录根下按住shift在空白处点击powershell打开

image-20201122222453216

输入下面命令, 升级pip版本(我装有多个python版本, 所以图片显示命令不一样, 新手直接输入下面命令即可)

python -m pip install --upgrade pip 

image-20201122195300042

安装依赖环境

pip install -r .\requirements.txt 

image-20201122195541394

03 安装ffmpeg

需要把ffmpeg的bin目录添加到环境变量

右键点击此电脑--属性 , 点击高级系统设置, 高级里边的环境变量, 双击Path, 选择新建,

将ffmpeg下的bin目录路径复制的里边,

F:\钢琴转谱资源包\ffmpeg\bin(将路径改为你所解压的ffmpeg的bin目录路径)

然后点击确定

image-20201122195745259

image-20201122195948161

image-20201122200224504

image-20201122200324040

image-20201122200853746

在cmd里输入ffmpeg 有显示ffmpeg version 4.3.1字样的即添加好了环境变量

image-20201122201147075

04 安装cuda (使用CPU跳过此步骤)

CUDA 是 NVIDIA 的一种并行计算平台和编程模型。使用显卡转置比用CPU快很多

cuda版本和驱动支持有关,显卡驱动会影响支持cuda的版本 , 为避免不必要的错误, 先去官网更新驱动到最新版本,这里以win10 1909版本的系统为例

win7等其他系统去NVIDIA控制面板查看支持cuda的最高版本, 选择相应的cuda版本

驱动下载地址https://www.nvidia.cn/geforce/drivers/

安装显卡最新驱动, 再去下载cuda工具包11.1安装(有3G大)

下载地址https://developer.nvidia.com/zh-cn/cuda-downloads

image-20201122202044187

在安装界面选择自定义, 如图只勾选cuda当中的那几项, 其他不必勾选, 选了有可能安装失败

image-20201122210341742

image-20201122210440471

安装完成后显示

image-20201122215435208

05 安装pytorch

到官网下载自己系统合适的版本, 如果使用CPU选择cuda版本选择none

https://pytorch.org/

这里选择windows系统python3.7 使用pip安装cuda11为例, 按下图选择好版本后下面会有对应的安装命令

在cmd命令行里输入安装pytorch, 文件挺大有差不多2G, 如果网络不好安装失败, 请看下边的离线包安装

pip install torch===1.7.0+cu110 torchvision===0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html 

image-20201122202907542

文件比较大差不多2G, 如果网络不好可以下载离线安装包

https://download.pytorch.org/whl/cu110/torch-1.7.0%2Bcu110-cp37-cp37m-win_amd64.whl

下载好后再目录下按住shift在空白处右键点击, 选择powershell打开命令行, 输入下面安装命令

 pip install .\torch-1.7.0+cu110-cp37-cp37m-win_amd64.whl 

image-20201122205022358

使用

把MP3,或wav文件放入input文件夹, 可以放多个音频文件

image-20201122204017811

在项目piano_transcription按住shift在空白处右键点击, 选择powershell打开命令行, 输入以下命令, 等待程序跑完即可

 python .\start.py 

image-20201122221415246

使用GPU进行转置还是挺快的, 大概10秒~1分多钟一首

跑完后可在output文件夹得到转置好的mid文件, 使用播放器播放即可, 可使用Pianoteq的音源生成高音质的mp3, 如果效果不是很好, 可以使用midi编辑软件进行进一步的修改。midi文件还可以通过一些软件转成琴谱

如果使用CPU转置可以修改start.py文件把第19行里边的cuda改为cpu即可

image

114

评论 (6)

取消
  1. 头像
    Yqe_852c
    Linux · Google Chrome

    为什么我的在安装依赖环境这一步卡住了...
    PS C:\钢琴转谱资源包\piano_transcription> pip install -r .\requirements.txt
    pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,
    然后再试一次。
    所在位置 行:1 字符: 1
    + pip install -r .\requirements.txt
    + ~~~
    + CategoryInfo : ObjectNotFound: (pip:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    回复
    1. 头像
      insmoin 作者
      Windows 10 · Google Chrome
      @ Yqe_852c

      python 安装没安装好重新卸载安装 或找到python目录将pip.exe所在的文件夹添加到系统变量

      回复
  2. 头像
    网友_xd4331
    Windows 10 · Google Chrome

    谢谢大佬! 很有用!

    回复
  3. 头像
    Trotyl
    Windows 10 · Google Chrome

    yeah 成功了

    回复
  4. 头像
    Payne
    Linux · Google Chrome

    这个需要是纯钢琴曲吗,如果有鼓会不会影响精度很大,钢琴的音色也会影响精度吗,另外这个算法适合做其他乐器的音频转谱吗

    回复
    1. 头像
      一根芦苇
      Windows 10 · Google Chrome
      @ Payne

      需要纯钢琴,我拿了和《夜的钢琴曲五》实验了下,前者有鼓点,后者纯钢琴;对比转录出来的midi,发现前者弄得不是很好,有鼓点的地方会比较的混乱,而后者则几乎完全听不出和原曲的区别QAQ。当然,这只是随便拿的两首试的,效果应该也和音符速率有关,比如十六分音符比较密集可能效果就会差一些(猜测

      回复