一、介绍
字节跳动/piano_transcription 项目是一个高精度钢琴转谱系统,旨在将钢琴录音(如 mp3、wav 等格式)自动转录成 MIDI 文件。
1.项目背景与意义
随着人工智能技术的发展,音乐信息提取(Music Information Retrieval, MIR)领域也迎来了新的突破。piano_transcription 项目作为 MIR 中的一个重要应用,通过深度学习等先进技术,实现了从钢琴音频到电子乐谱(MIDI)的自动转换,为音乐创作者、教育者及音乐爱好者提供了极大的便利。
2.项目技术特点
- 高精度转谱 :piano_transcription 项目能够识别任意声部数目、任意复杂度的钢琴音频,并将其转谱为MIDI 文件。该系统在 MAESTRO 评测数据集上取得了 96.72% 的 F1 值,超越了其他系统。
- 任意时间精度 :该系统突破了之前算法 32 毫秒识别精度的限制,实现了任意时间精度的音符检测。
- 力度识别 :对每个音符实现了 128 个粒度的力度识别,使得转谱结果更加接近原曲的真实演奏效果。
- 踏板识别 :除了钢琴音符外,该系统还能识别钢琴踏板的触发和抬起,进一步提高了转谱的准确性和完整性。
3.项目实现过程
- 数据采集与处理 :项目团队首先从 IMSLP(International Music Score Library Project)等网站抓取作曲家信息和曲目名,然后在 Youtube 上下载对应的钢琴音频。通过训练 CNN 网络对音频进行分类,筛选出钢琴曲。
- 转谱系统开发 :利用深度学习技术,开发了一套高精度钢琴转谱系统。该系统能够识别音频中的音调、琴键的触发与抬起、力度以及踏板操作等信息,并将其转换为 MIDI 格式。
- 数据集构建 :通过该系统,将大量钢琴音频转谱为 MIDI 文件,构建了 GiantMIDI-Piano 数据集。该数据集包含了丰富的钢琴作品信息,为音乐研究和创作提供了宝贵资源。
4.项目应用与影响
- 音乐教育 :piano_transcription 项目可以应用于音乐教育领域,帮助学生通过音频学习钢琴曲目,提高学习效率。
- 音乐创作 :对于音乐创作者而言,该系统可以将他们的即兴演奏或创意灵感快速转换为乐谱,促进音乐创作的发展。
- 音乐研究 :GiantMIDI-Piano 数据集的发布为音乐研究提供了丰富的素材和工具,有助于推动音乐信息提取领域的发展。
5.项目资源
钢琴曲音频在线转谱 · 创空间 (modelscope.cn)
二、容器构建说明
建议使用 RTX3060 显卡
1. 安装 miniconda
进入 Anaconda 官网:
找到快速命令行安装,选择 Linux 系统,复制代码进入终端进行安装。
等待安装完成。
2. 安装并更新基础命令,让后续使用更快捷: unzip、lsof、git、git-lfs
apt-get update
apt-get install -y unzip
apt-get install -y lsof
apt-get install -y git
apt-get install -y git-lfs
3. 克隆项目仓库,并打开文件
git clone https://www.modelscope.cn/studios/MuGeminorum/piano_transcription.git
cd piano_transcription
4. 创建 python 为 3.10 版本的虚拟环境,名称为piano
conda create -n piano python=3.10 -y
5. 激活虚拟环境piano
conda activate piano
6. 通过 pip 安装所需的 torch 环境(国内镜像源快一些,以下使用了清华源)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 -i https://pypi.tuna.tsinghua.edu.cn/simp
7. 安装项目依赖文件及相应包
为了安装速度更快可以将 pip 进行永久换源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements.txt
pip install gradio
pip install modelscope
apt install ffmpeg
8. 指定端口,运行 py 文件(运行项目,首次运行会自动下载模型)
export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=8080
python app.py
耐心等待
出现以下页面即为运行成功
三、网页演示
运行成功后获取访问链接,即可进入 webUI 界面使用