前言
自动音乐转录(AMT),从原始音频推断音符,是音乐理解核心的一项具有挑战性的任务。与通常关注单个人声的自动语音识别(ASR)不同,AMT 通常需要同时转录多个乐器,同时保留精细的音高和时间信息。
Omnizart库是一个用于AMT任务的python库,收集了目前各种乐器转录的SOTA模型,并提供了统一的命令行接口。
一、论文笔记
论文地址:
Omnizart: A General Toolbox for Automatic Music Transcription
摘要
提供并发布了Omnizart,一个新的Python库,它为自动音乐转录(AMT)提供了一个简化的解决方案。
Omnizart包含了基于深度学习的全AMT周期的多个模型,并且提供了便捷的命令行接口供用户调用。
据我们所知,Omnizart是第一个提供多乐器转录的工具包
乐器类别,从独奏、乐器合奏、打击乐器到声乐,以及和弦识别和节拍跟踪模型,两种音乐信息检索(MIR)与AMT高度相关。
Omnizart包含了:
1.用于帧级别和音符级别的转录的预训练模型,支持多音高乐器,人声,鼓事件
2.和弦识别和击打跟踪预训练模型
3.一系列的函数,支撑包括数据集下载,特征预处理,模型训练,转录等功能
背景:
由于音乐信号的多样性,AMT一直是MIR的核心挑战。通常,用各种乐器演奏的音符流相互重叠,以表达音乐中不同层次的信息;
这种特征使识别属性的任务变得复杂(例如,乐器家族、乐器类别、音高和音高轮廓、持续时间、开始时间、和弦或非和弦音调、节拍等)
在音乐中的每个音符和每一段中。以前的研究大多只关注于转录一组有限的属性(例如,钢琴的solo转录和其他类型的仪器的转录),
而适用于所有类别的仪器的一般解决方案很少看到。
之前的解决方案主要集中于单乐器转录,Omnizart收集了一些此前的SOTA模型,作为一个统一的工具包,提供转录的实现。
Omnizart的预训练模型重现了此前原始论文,且非常接近其最好的性能,并且可以使用单独的数据集进行微调。
除了音乐转录,转录的输出还可以作为其他MIR任务的辅助信息,例如,源代码分离和音乐生成,特别是在缺乏监督资源的情况下。
Omnizart加快AMT研究的发展,并为MIR社区做出贡献
正文
分钢琴、和弦、鼓、人声等识别,每节都是单独的内容,介绍如何复现SOTA的过程和结果,这里就不一一展开。
二、安装过程
# Install omnizart
pip install omnizart
# Download the checkpoints
omnizart download-checkpoints
# Transcribe your songs
omnizart drum transcribe <path/to/audio.wav>
omnizart chord transcribe <path/to/audio.wav>
omnizart music transcribe <path/to/audio.wav>
这里遇到个问题,由于网络原因,执行omnizart download-checkpoints的时候报错超时,所以需要手动下载。这里我下载下来方便使用:
omnizart音乐转录库的checkpoints
三、实验ADT
以作者之前编的鼓轨“动次打次.wav”作为测试
执行:omnizart drum transcribe 动次打次.wav
运行成功,片刻后生成了一个mid文件,在musescore打开,见证奇迹 时候到了:
这是什么……
导入LMMS与之前的播放对比:
看到效果确实挺糟糕。速度不对,时值也不对,还多了很多奇怪的休止符
总结
AMT是音乐理解核心的一项具有挑战性的任务,目前的研究也是起步阶段,资料相对较少。本文尝试了omnizart转录库的ADT(自动鼓转录),用了简单的节奏型测试,不知道是否训练数据集的原因,效果不是理想。AMT任务任重道远。
参考:
https://blog.csdn.net/sai_simon/article/details/125783433