论文原文

最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn

摘要

自动音乐转录(AMT),从原始音频推断音符,是音乐理解核心的一项具有挑战性的任务。与通常关注单个人声的自动语音识别(ASR)不同,AMT 通常需要同时转录多个乐器,同时保留精细的音高和时间信息。此外,许多 AMT 数据集是“资源不足的”,因为即使是专业音乐家也发现音乐转录既困难又耗时。因此,先前的工作集中在特定任务架构上,为每个任务的各个乐器量身定制。在这项工作中,受到低资源自然语言处理(NLP)的序列到序列迁移学习的可喜结果推动,我们展示了通用 Transformer 模型可以执行多任务 AMT,联合转录任意组合跨多个转录数据集的乐器。这个统一的训练框架在一系列数据集上实现了高质量的转录,显著提高了低资源乐器(如吉他)的性能,同时保持了丰富乐器(如钢琴)的强大性能。最后,通过扩大 AMT 的范围,我们揭示了对一致的评估度量和更好的数据集对齐的需求,并为多任务 AMT 的这一新方向提供了强有力的基线。

1 介绍

录制的音乐通常包含多种乐器一起演奏;一首歌曲的这些多个“音轨(tracks)”使音乐转录对算法和人类专家都具有挑战性。标注员必须从混合地音频中挑选出每个音符,估计其音高和时间信息,并确定演奏该音符的乐器。AMT 系统应该能够同时转录多种乐器(多轨),以适应各种风格和乐器的组合(多任务)。尽管多任务多轨音乐转录(MT3)很重要,但仍有一些障碍阻止着研究人员解决它。首先,尚未证明任何模型能够跨各种数据集转录任意乐器的组合。其次,即使存在这样的模型,也没有收集到跨越各种 AMT 任务的统一数据集集合。最后,即使在当前的 AMT 数据集中,评估也是不一致的,不同的研究工作对每个数据集使用不同的度量和测试集拆分方式。

使这一挑战更加复杂的是,与用于在 NLP 或 ASR 等其他训练大规模序列模型的数据集相比,许多音乐数据集相对较小。现有的开源音乐转录数据集包含一到几百小时的音频(见表 1),而标准 ASR 数据集 LibriSpeech(Panayotov 等人,2015)和 CommonVoice(Ardila 等人,2020)分别包含一千和九千多小时的音频。仅 LibriSpeech 包含的音频时间比我们在本文中使用的所有 AMT 数据集加起来还要多。总体而言,AMT 是一个数据稀缺的“低资源”任务。

在这项工作中,我们通过克服这些障碍并启用多任务多轨音乐转录(MT3),为该领域提供了强大的经验贡献。我们的贡献包括:

统一的训练框架(Unified framework for training):我们定义了一个具有紧凑灵活词汇表的标记化方案,以在模型输出标记和多轨 MIDI 文件之间进行转换,从而实现受 Raffel 等人(2019)和 Xue 等人(2020)启发的序列到序列方法,支持具有不同乐器组合的数据集。这使我们能够同时利用几个数据集,这些数据集以前由于乐器的差异而只能单独使用。

不同数据集的基准集合(Benchmark collection of diverse datasets):我们聚合了六个多音轨 AMT 数据集,涵盖各种数据集大小、风格和乐器。它们共同构成了可公开用于多任务 AMT 训练的最大已知集合。

一致的评估(Consistent evaluation):我们定义标准测试集拆分方式,并在所有六个数据集中应用一组一致的基于音符的度量。我们还引入了一种新的乐器敏感转录度量来联合评估音符和乐器的准确性。

SOTA 基线(SOTA Baseline):使用我们的框架训练现成的 T5 架构,我们实现了强大的基线模型,可在每个单独的多轨数据集上实现 SOTA 转录性能,优于先前特定数据集的转录模型以及基于 DSP 的专业转录软件。我们的模型(我们将其称为 MT3)即使同时存在许多乐器,在所有六个数据集上都展示了非常高的乐器标记精度,并且对乐器分组也很稳健。

改善低资源 AMT(Improving low-resource AMT):通过在所有六个混合的数据集中训练单个模型,我们发现与基线模型相比,低资源数据集的 MT3 性能显着提高(相对增益高达 260%),同时在高资源数据集上保持强劲性能。

2 相关工作

2.1 用于序列建模的 Transformer

最初在 Vaswani 等人(2017)中提出的 Transformer 架构最近在多个领域的许多序列建模任务中展现出强大的性能。例如,T5(Raffel 等人,2019)展示了以前需要使用单独模型来解决的许多语言任务,现在可以使用单个文本到文本编码器-解码器 Transformer 模型来解决。mT5(Xue 等人,2020)扩展了这种方法,使用单个 Transformer 对多种语言进行建模,展示了统一架构也可以作为通用的多语言模型,利用高资源语言数据集来提高在低资源数据集上的模型性能。用于序列建模的 Transformer 架构的其他杰出示例包括 BERT(Devlin 等人,2018)和 GPT 模型系列,最杰出的是 GPT-3(Brown 等人,2020)。

Transformer 也被应用于一些音频建模任务。例如,基于 Transformer 的模型已被用于音频分类(Gong 等人,2021; Verma & Berger,2021)、音频字幕(Mei 等人,2021)、音频压缩(Dieleman 等人,2021)、语音识别(Gulati 等人,2020)、语音分离(Subakan 等人,2021)和音频增强(Koizumi 等人,2021)。Transformer 还被用于生成音频模型(Dhariwal 等人,2020;Verma & Chafe,2021),这反过来又促进了对音乐理解的任务(Castellon 等人,2021)。

2.2 音乐转录

从历史上看,音乐转录研究的重点是转录钢琴独奏录音(Polliner & Ellis,2006; B̈ock & Schedl,2012; Kelz 等人,2016)。因此有大量的转录模型的成功依赖于人工设计的钢琴转录表示。例如,Onsets & Frames 模型(Hawthorne 等人,2017)使用专用输出来检测钢琴的开始和正在播放的音符;Kelz 等人(2019)表示全部钢琴音符的振幅轮廓;Kong 等人(2020)还模拟了钢琴脚踏板事件(一种钢琴特有的控制音符延音的方式)。单乐器转录模型也已开发用于其他乐器,例如吉他(Xi 等人,2018)和鼓(Cartwright 和 Bello,2018;Callender 等人,2020),尽管这些乐器受到的关注不如钢琴多。

尽管没有那么广泛,但已经开发了一些多乐器转录系统。例如,Manilow 等人(2020)提出了 Cerberus 模型,该模型同时对一组固定和预定义的乐器进行音源分离和转录。Lin 等人(2021)也进行了分离和转录,尽管是基于音频查询输入并增加了合成。ReconVAT(Cheuk 等人,2021)使用基于 U-Net 和无监督学习技术的方法在低资源数据集上执行转录;但是该模型不会预测乐器标签,而是输出将所有乐器组合成单个“音轨”的钢琴卷(piano roll)。类似的限制也适用于 Thickstun 等人(2016)与 MusicNet 数据集一起引入的早期转录系统。Tanaka 等人(2020)使用了一种聚类方法来分离转录的乐器,但模型输出不包括明确的乐器标签。相比之下,我们的模型输出表示来自任意数量乐器的音符事件流,每个音符明确地分配给指定的乐器;它学会了直接从音频谱图中检测乐器是否存在(参见图 1)。

与我们最密切相关的工作是 Hawthorne 等人。(2021),它使用编码器-解码器 Transformer 架构来转录钢琴独奏录音。在这里,我们将他们的方法扩展到转录具有任意数量乐器的复合音乐。我们坚持他们的理念,使用尽可能接近"现成"的组件:频谱图输入、来自 T5 的标准 Transformer 配置和类似 MIDI 的输出。

3 转录模型

从本质上讲,音乐转录可以被视为一个序列到序列的任务,其中输入是音频帧序列,输出是表示正在播放的音符符号标记序列。这项工作的一个关键贡献是将多乐器转录,即不同的乐器出现在单一的输入音频流中。在此文章中,模型使用 Transformer 模型来学习音频源中存在哪些乐器。

3.1 Transformer 架构

我们工作的一个关键贡献是使用单一通用架构——T5(Raffel 等人,2019)——来解决以前使用复杂的、手工制作的数据集特定架构解决的各种任务。T5 架构是一种编码器-解码器 Transformer 模型,它与 Vaswani 等人(2017)的原始形式密切相关。

在 T5 架构中,输入序列被映射到学习嵌入和固定位置嵌入的序列;我们使用绝对位置嵌入而不是 Raffel 等人(2019)使用的分桶“相对”嵌入,以确保所有位置能得到同等的注意力。该模型在编码器和解码器中都使用了一系列标准的 Transformer 自注意力“块”。为了生成输出标记序列,该模型使用贪婪自回归解码:输入一个序列,具有最高预测概率的输出标记被附加到序列中,并重复该过程直到产生结束序列(EOS)。我们使用其中包含大约 6000 万个参数的 T5 “小”模型。虽然更大的模型通常用于语言建模任务,但我们发现增加模型大小往往会加剧过拟合。附录 A 中给出了本工作中使用的 Transformer 架构的完整详细信息。此外,我们在 https://github.com/magenta/mt3 上提供了我们的代码以及本文的发布版本。

3.2 模型输入与输出

如图 1 所示,MT3 使用对数梅尔声谱图(log Mel spectrograms)作为输入。对于输出,我们构建了一个受 MIDI 规范启发的标记词汇表,我们将其称为“类 MIDI(MIDI-like)”,因为它包含原始 MIDI 规范(1996)的子集(例如,我们的词汇表不表示“控制变更(control change)”的 MIDI 事件)。此输出是对 Hawthorne 等人(2021)词汇表的修改,具有以下区别:(1)添加乐器变更标记,允许在单个事件流中表示多个乐器;(2)去除力度(velocity),因为我们的大多数训练数据集不包含力度标注(并且没有跨数据集编码力度的标准化方法);(3)使用“连音线(tie)”以更好地处理跨越多个音频片段的音符。图 2 所示的词汇表由以下标记类型组成:

乐器(Instrument)(128 个值):表示接下来的应表示哪个乐器。指定的乐器将用于所有后续事件,直到下一个 Instrument 事件。选择 128 个不同的值以匹配原始的通用 MIDI 规范,该规范包含 128 个用于指定特定乐器的“程序(programs)”。我们将在下面进一步讨论使用程序编号表示乐器的挑战。

音符(Note)(128 个值):表示 128 个 MIDI 音高的音符开或音符关事件。

开/关(On/Off)(2 个值):表示更改后续 Note 事件是否是音符开或音符关。

时间(Time)(205 个值):表示一个或多个事件在一个音频片段内的绝对时间位置,量化为 10 毫秒间隔。此时间适用于所有后续事件,直到下一个 Time 事件,这允许在给定时间点发生任意数量的音符。Time 事件必须按时间顺序发生。(Time 值的数量取决于 Transformer 的输入序列长度,我们所有的实验都是 2.048 秒。)

鼓(Drum)(128 个值):表示来自通用 MIDI 标准中 128 种鼓类型之一的鼓声。鼓不是这项工作的重点,但为了完整起见,我们将它们包括在内。

连音线结束符(End Tie Section)(1 个值):表示音频片段开头的“连音线”结束符(见下文)。

结束符(EOS)(1 个值):用于表示序列的结束。

这项工作的一个关键贡献是展示了这种高度通用和灵活的输出词汇表可用于学习单个转录模型,该模型在不同的乐器、数据集和编曲中运行良好,无需手动调整模型或词汇表。相比之下,先前的工作仅限于转录单个乐器的模型(Hawthorne 等人,2021),包含固定乐器组的单独转录“符头(heads)”(Manilow 等人,2020),或完全忽略乐器维度只转录音符(Cheuk 等人,2021)。

应用于音频的序列模型的一个限制是,当使用 Transformer 架构建模时,大多数音频序列太大而无法放入内存中,自注意块的序列长度需要 O ( n 2 ) O(n^2) O(n2) 内存。为了解决这些限制,我们使用 Hawthorne 等人(2021)描述的程序:音频被分成更小的、不重叠的音频片段,输入频谱图和每个音频片段的事件标记。该模型独立处理每个片段。相同的程序应用于训练和推理;然而在推理时,我们采取了额外的步骤,将所有音频片段的解码事件连接到一个序列中,以重建完整的样本。

单独转录裁剪的音频片段的一个问题是一个音符可能跨越多个音频片段。虽然我们的基本方法通常能够处理此类情况,但我们发现模型偶尔会忘记“结束”音符。为了改善这个问题,我们在每个音频片段的开头引入了一个“连音线”,模型必须声明哪些音符已经处于活动状态;也就是说,该模型经过训练,可以为已经激活的音符发出 Program 和 Pitch 标记,其次是 End Tie Section 标记,然后是音频片段的事件。当连接音频片段以重建整个转录样本时,我们会结束任何未在 tie 中明确声明的音符。这允许模型优雅地处理在一个音频片段中检测到音符开始但在后续片段中未检测到相应音符结束的异常。

3.3 多任务混合

除了消除为不同乐器和数据集构建专门架构和损失函数的繁琐任务以外,我们的通用输出词汇表还允许我们的模型同时在多个数据集的混合上进行训练,类似于 mT5 等多语言翻译模型如何在多种语言上进行训练(Xue 等人,2020)。这种方法不仅简化了模型设计和训练,还增加了模型可用的训练数据的数量和多样性。如前所述,训练数据的稀缺性一直是之前 AMT 建模工作的主要挑战。这种混合方法以前没有在音乐转录文献中;相反,先前的工作通常侧重于为单个数据集训练单独的模型(Cheuk 等人(2021))。这里的“混合”是指在单个训练批次中包含来自多个数据集的数据。

为了平衡低资源和高资源数据集上的模型性能,我们使用温度采样策略(temperature sampling strategy)进行混合,如下所示:如果数据集 i 有 n i n_i ni 个样本,与 mT5(Xue 等人,2020)类似,我们以概率 ( n i / Σ j n j ) 0.3 (n_i / \Sigma_{j} n_j)^{0.3} (ni/Σjnj)0.3 从该数据集中采样一个样本。这具有增加模型在训练期间观察到来自低资源数据集样本的频率,同时以较低频率观察到来自高资源数据集的样本。

4 实验

我们进行了一系列实验来测试我们的方法。特别是我们评估了模型在六个数据集(包括高资源数据集和低资源数据集)中的整体转录质量,评估了乐器分组的效果,并使用我们的结果来识别某些数据集的标签。我们还通过一系列留下一个数据集的实验来评估我们的模型对域外数据的泛化能力,并使用我们的结果来辨识下面附录 D 中的标签问题。

4.1 数据集

我们的实验使用了六个不同大小、录制过程、乐器和类型的数据集。除了展示我们方法的灵活性之外,这还允许我们与许多不同的基线模型进行比较,每个模型只能应用于特定数据集,并使用 MT3 为所有数据集提供单个 SOTA 基线。下面简要介绍这六个数据集;我们在表 1 和附录 B 中提供了有关这些数据集的更多信息。

MAESTROv3:MAESTROv3(Hawthorne 等人,2018)是从虚拟古典钢琴比赛中收集的,其中音频和详细的 MIDI 数据是从在 Disklavier 钢琴上演奏的表演者那里收集的,这些钢琴以电子方式实时捕捉每个音符的演奏。

Slakh2100:Slakh2100 由使用专业级、基于样本的合成软件渲染 MIDI 文件生成的音频组成。Manilow 等人(2019)详细介绍了它的结构。在训练期间,我们使用一种数据增强方法将各个乐器组合的不同子集组合在一起,我们在附录 B 中对此进行了描述。

Cerberus4:Cerberus4 源自 Slakh2100 数据集,通过在乐器处于活动状态的音轨中混合四种乐器(吉他、贝斯、鼓、钢琴)组合而成。这些也是 Manilow 等人(2020)在 4-instrument Cerberus 模型中使用的乐器。

GuitarSet:GuitarSet(Xi 等人,2018)由各种类型、节奏和风格的现场吉他表演组成,使用高精度六音拾音器录制,该拾音器单独捕捉每个吉他弦的声音。每个音轨的 MIDI 标签都来自这些录音。

MusicNet:MusicNet(Thickstun 等人,2016)包括来自各种乐器和合奏类型的免费许可的古典音乐录音,以及从专业转录员那里众包的人工转录。由于标签主要使用动态时间规整(dynamic time warping)对齐,因此它们不如其他数据集准确。

URMP:Rochester 大学多模态音乐表演(URMP)数据集(Li 等人,2018)由具有多种乐器的经典作品组成。单独的乐器被分别记录和混合,对齐的 MIDI 标签来自人工标记,他们更正了从 pYIN(Mauch & Dixon,2014)算法中导出的 f0 曲线。

我们在附录 D.2 中讨论了 MusicNet 和 URMP 的标签对齐质量。在 NLP 文献中,我们将 GuitarSet、MusicNet 和 URMP 称为“低资源”数据集,因为它们分别只包含 3、34 和 1.3 小时的总音频。这使得这些数据集难以学习——尤其是 MusicNet 和 URMP,它们包含许多不同的乐器,每个音轨有多个乐器,如表 1 所示。

4.2 评估

文献中用于评估多乐器转录模型的度量不一致,即使忽略多乐器与单乐器的区别也是如此。例如可以使用音乐转录评估标准库 mir_eval(Raffel 等人,2014)计算“F1 分数”的几种变体,在评估预测是否正确时,除了音高值和音符的开始点(音符开始时间)之外,是否还应考虑音符的结束点(音符结束时间)。

为了提供与现有工作最公平和最完整的比较,我们使用三个标准的转录性能度量来评估每个数据集上的模型:Frame F1、Onset F1 和 Onset-Offset F1。我们使用标准的mir_eval 库实现来度量。对于每个度量,mir_eval 使用二分图匹配来找到参考和估计音符的最佳配对,然后使用以下标准计算精度、召回率和 F1 分数:

Frame F1 score 是使用二元度量来衡量预测和目标的类钢琴卷(pianoroll-like)是否匹配。每一秒被分成固定数量的“帧”(我们使用每秒 62.5 帧),音符序列为大小为 [帧 × 128] 的二进制矩阵,表示在给定音高和时间时是否存在活动的音符。

Onset F1 score 如果预测具有相同的音高并且在参考开始点的 ±50 ms 内,则认为预测是正确的。该度量忽略音符的结束。

Onset-Offset F1 score 是转录文献中常用的最严格的度量。除了上述匹配的开始点和音高之外,音符还必须具有匹配的结束点。匹配的结束点的标准是必须在 0.2 x 参考持续时间或 50 ms 内,以较大者为准:|offset_diff| ≤ max(0.2 x 参考持续时间,50 ms)(Raffel 等人,2014)。

虽然这三个度量是音乐转录模型的标准,但它们仅提供了多乐器模型性能的有限视图,因为没有人考虑预测哪种乐器会在序列中播放哪些音符。这是因为(1)大多数先前的音乐转录模型仅限于单乐器转录,(2)即使是大多数多乐器转录模型也没有将特定乐器分配给预测的音符;我们还认为,缺乏真正的多乐器度量导致了之前工作中的这一差距。因此,我们还使用我们称为*多乐器 F1(multi-instrument F1)*的新度量来评估我们的模型的性能。

Multi-instrument F1 在 Onset-Offset F1 分数上增加了额外要求,即预计演奏音符的乐器必须与参考音符的乐器相匹配。这是一个比 McLeod & Steedman(2018)中提出的 MV2H 度量更严格的度量,因为 MV2H 在未正确检测到音高的情况下,评估乐器标签的过程中会忽略结束点并从中消除音符;Multi-instrument F1 也与先前工作中广泛使用的现有转录度量更直接相关。

由于先前模型的限制,通常无法计算先前作品的 Multi-instrument F1 score;因此,我们只为我们的模型提供这个度量(如表 3 所示)。

我们还通过进行“leave-one-datasetout”(LODO)训练实验来评估我们的模型在未见过的数据集的能力。这些结果表明了我们的方法在全新数据集方面的泛化能力,并且在评估使用的各种数据集对最终模型性能的影响方面也很有用。

我们的两个数据集(Slakh2100、Cerberus4)包含鼓。在评估我们的模型时,我们使用开始时间和通用 MIDI 鼓类型来匹配参考和估计的鼓点(因为“鼓结束”的概念没有意义);在 Callender 等人(2020 年)中可以找到专门针对鼓更严格的评估方法。

4.2.1 基线

对于每个数据集,我们都会与一个或多个基线模型进行比较。除了与之前在我们的一个或多个数据集上开发用于多乐器转录的机器学习模型的作品进行比较之外,我们还将我们的结果与用于和弦音高转录的专业 DSP 软件 Melodyne 进行了比较。附录 C 提供了有关我们使用 Melodyne 的详细信息。

由于上述数据集特定的训练和架构,并非所有模型都适用于所有数据集。因此,我们仅提供包含原始模型设计的乐器数据集上的基线模型结果:例如,我们仅在包含四种乐器的 Cerberus4 数据集上评估 Cerberus 模型(Manilow 等人,2020),该数据集模型包含特定转录头,还有 GuitarSet 我们只使用模型”吉他“头的输出。(虽然 Cerberus 最初并未在 GuitarSet 上进行训练,但 Manilow 等人(2020)使用 GuitarSet 作为评估数据集;由于缺乏 GuitarSet 的替代基线,我们与 Cerberus 进行了比较。)在 MAESTRO 和 MusicNet 上,我们与在各自数据集上训练的 Hawthorne 等人(2020)和 Cheuk 等人(2021)进行了比较。

我们尽可能提供基于用于评估 MT3 的相同测试拆分计算的基线模型的结果。如果我们的验证/测试集中的音轨或音轨片段可能已包含在基线模型的训练集中,这可能会高估某些基线的性能(由于某些数据集缺乏一致的训练/测试/验证拆分 )。为了在后续工作中解决这个问题,我们在附录 B 中提供了重现我们的训练/测试/验证拆分的确切细节,并在附录 C 中提供了有关使用的基线的更多详细信息,包括有关重现我们结果的信息。对于每个模型 ,我们使用原作者提供的预训练模型计算报告的度量。跨多个数据集为单个模型提供评估结果的能力是我们方法的另一个好处,也是当前工作的贡献。

4.3 结果

我们的主要结果如表 2 所示,比较了我们的模型在上述六个数据集上的性能。我们的模型在所有三个标准转录度量(Frame、Onset 和 Onset + Offset F1)中评估的六个数据集中的每一个数据集的转录性能都超过了当前最先进的水平,如表 2 所示。这一点尤其值得注意,如上所述每个基线模型都是专门设计(在架构和损失函数方面)、训练并在列出的各个数据集上进行调整。此外,我们的模型能够显著提升上述三个资源有限数据集 GuitarSet、MusicNet 和 URMP 的水平。表 2 还表明了在使用我们的混合方法时,资源有限数据集的性能大幅提升,特别是对于多乐器数据集 MusicNet 和 URMP;混合性能在 MusicNet 上的 Onset-Offset F1 增益为 54%,在 URMP 上为 263%。我们的模型优于专门针对低资源数据集优化的其他基线,例如 Cheuk 等人(2021 年),同时还与针对大型单乐器数据集调整的模型保持竞争力或优于它,Hawthorne 等人(2021 年)。

“在自然条件下”的乐器有许多不同的形式,准确地标记哪些声源包含相同的乐器是一项必要但不平凡的任务。虽然最初的通用 MIDI 1.0 规范(1996)提供了程序编号与 128 种乐器的 1:1 映射,并将这些乐器粗略地分组为八个程序编号“大类”(表 8),但这些映射是简化的:并非所有乐器都被映射到程序编号(例如尤克里里)的原始 128 种乐器中,并且有些乐器(钢琴、管风琴、吉他)包括多个程序编号,可能需要将其视为单个乐器以进行转录(例如,将程序编号 32-39 转录为单个“贝斯”类型)。为了探索乐器标签粒度的影响,我们使用三个级别的乐器分组来训练和评估模型:Flat、MIDI Class 和 Full,如表 3 所示。我们根据第 4.2 节中定义的多乐器转录指标在这三个分组级别评估模型。

表 3 表明,即使在最高粒度级别(“完整(Full)”)下,我们的模型在正确预测开始点和结束点时也很少出现乐器标签错误,因为 multi-instrument F1 接近表 2 中的 onset-offset F1 度量。我们还在图 3 中提供了一个示例转录,它显示了来自 Slakh2100 数据集的输入的不同乐器音轨。除了我们的转录结果之外,我们还在附录 D 中提供了进一步的实验结果。在那里,我们通过进行一组 leave-one-datasetout(LODO)实验来评估我们的方法对未见数据集的泛化能力;我们还通过改变用于计算 F1 分数的开始和结束点的容差阈值来提供有关数据集标签质量的证据。

5 结论和后续工作

在这项工作中,我们已经展示了将多乐器音乐转录作为一个序列到序列的任务,并在各种数据集上同时训练一个通用的 Transformer 架构,可以提高多乐器转录的水平,尤其是在低资源场景中。我们还引入并应用了使用标准乐器分类法使用音符开始+结束+乐器 F1 分数的一致评估方法。

我们的工作提出了几个后续研究方向。由于带有真实音频的多乐器转录的标记数据非常昂贵,因此转录模型可能会受益于以自我或半监督方式对未标记数据进行训练。各种数据增强策略也可能有价值,例如混合不相关的样本以生成新的训练数据。最后,像我们这样的高质量 AMT 模型为其他音乐建模任务提供了新的方式,例如生成音乐建模(即 Dhariwal 等人(2020);Huang 等人(2018));我们模型的转录可以用作符号音乐生成模型的训练数据。

6 重现声明

结合这项工作的发布,我们将编写我们的模型代码,以及我们用来重现先前基线模型的代码,可在 https://github.com/magenta/mt3 上获取。

7 伦理考虑

我们的系统(以及我们与之比较的基线系统)的一个限制是,它是针对“西方传统”的音乐进行训练的,并且仅适用于音乐。与这部作品最相关的西方音乐的特点是它通常由属于 12 个音级之一的离散音符组成,即“C”、“C#”、“D”等。因此,没有明确映射到这 12 个音级的音乐不在本工作的范围之内。这不包括许多非西方音乐传统,如印度拉加和阿拉伯马卡姆,以及依赖微音调的布鲁斯等西方流派。这些类型的音乐将更适合替代表示,例如单个或多个非离散音高轨道。我们注意到,鉴于代表此类传统的转录数据集的可用性较低,此类数据也应被视为“低资源”。参见 Holzapfel 等人(2019)对现有 AMT 系统的用户研究,以及 Viraraghavan 等人(2020)的非西方领域转录方法。

A 模型和训练细节

我们使用 Raffel 等人(2019)中描述的 T5“小型”模型架构,并在 T5.1.1 中定义了修改。这是一个标准的 Transformer 架构,我们使用 t5x 中可用的实现,它基于 FLAX(Heek 等人,2020)和 JAX(Bradbury 等人,2020)构建。

使用 0.001 的固定学习率对所有混合模型进行 1M 步训练。特定于数据集的模型经过 2 19 2^{19} 219 步的训练,这些模型往往收敛得更快,尤其是在较小的数据集上。由于计算限制,我们只将 LODO 模型训练了 2 19 2^{19} 219 步。

B 数据集细节

本节描述了在整个工作中实验使用的数据集。表 1 提供了每个数据集的描述性统计数据。但是,由于并非所有数据集都提供正式的训练测试拆分,并且由于我们执行预处理和过滤以从某些数据集的未处理版本中提取合适的多乐器转录数据集,因此我们在此处提供了可重复性的更多详细信息。

B.1 MAESTROV3

MAESTRO v3 数据集(Hawthorne 等人,2018 年)包含通过配备 MIDI 捕获设备的 Disklavier 钢琴捕获的 198.7 小时的钢琴演奏,可确保音符标签和音频波形之间的精细对齐(≈3ms)。MAESTRO 数据集主要包含古典音乐,仅包括钢琴演奏(不包括其他乐器)。

MAESTRO 包括标准的训练/验证/测试拆分,可确保相同的组合不会出现在多个子集中。962 个性能在训练集中,137 个在验证集中,177 个在测试集中。有关 MAESTRO 数据集的更详细统计数据,请访问 https://magenta.tensorflow.org/datasets/maestro。

B.2 SLAKH2100

Lakh MIDI 数据集(Raffel,2016 年)是从 Internet 上公开可用的资源中抓取的 176,581 个独特 MIDI 文件的集合,涵盖多种类型。合成的 Lakh 数据集(Slakh 或 Slakh2100)(Manilow 等人,2019)是通过使用专业品质的虚拟乐器从 Lakh MIDI 创建 2100 个文件的高质量渲染而构建的数据集。选择的 2100 个文件都至少包含钢琴、贝斯、吉他和鼓,这四种乐器中的每一种都至少演奏 50 个音符。

在 Slakh2100 上进行训练时,我们从 2100 个 MIDI 文件中的每个文件中选择至少 4 个乐器的 10 个随机子集作为数据增强的一种形式,将训练样本的数量扩大 10 倍(尽管单个符干通常会出现在多个样本中)。

我们对所有实验使用标准的 Slakh2100 训练/验证/测试拆分。

B.3 CERBERUS4

我们将 Slakh2100 数据集的另一个切片称为 Cerberus4;在这种情况下,对于每个 MIDI 文件,我们提取所有乐器子集,其中包含(精确地)钢琴、吉他、贝斯和鼓中的每一个。这旨在反映 Manilow 等人(2020)中的数据集构建,但使用整个音轨而不是较短的片段,并且没有关于乐器“活动”的附加标准。

Cerberus4 包含 1327 首曲目,542.6 小时音频。我们使用 Slakh2100 训练/测试/验证拆分方式来分离 Cerberus4 音轨。训练集包含 960 条音轨,418.13 小时音频,测试集包含 132 条音轨,46.1 小时音频,验证集包含 235 条音轨,78.4 小时音频。

B.4 GUITARSET

GuitarSet 是一个由高质量吉他录音和时间对齐标注组成的数据集。GuitarSet 包含 360 个片段,是 6 位吉他手各自演奏 30 首主奏曲(歌曲),分为两个版本(“伴奏”和“独奏”)。这 30 首主奏曲组合了五种风格(Rock、Singer-Songwriter、Bossa Nova、Jazz 和 Funk)、三种进行曲(12 Bar Blues、Autumn Leaves 和 Pachelbel Canon)和两种节奏(慢速和快速)。原始 GuitarSet 以 JAMS 格式(Humphrey 等人,2014)提供,我们将其转换为 MIDI 以用于标准评估库。

GuitarSet 没有官方的训练测试拆分方式。我们建立了以下拆分:对于每种风格,我们使用前两个进行训练,最后一个进行验证。为方便起见,我们在本文的开源版本中提供了准确的音轨训练/验证拆分。此拆分产生 478 个用于训练的音轨和 238 个用于验证的音轨。

B.5 MUSICNET

MusicNet(Thickstun 等人,2016)包含 330 个带有 MIDI 标注的古典音乐录音。标注通过动态时间规整与录音对齐,然后由训练有素的音乐家进行验证。

MusicNet Thickstun 等人(2016)的标准训练/测试拆分仅包含 10 个测试音轨,没有验证集。我们将数据集随机拆分为训练/验证/测试集,并在本文的开源代码版本中提供每个拆分的确切音轨 ID。

我们在附录 D 中讨论了 MusicNet 的潜在标签质量问题。

B.6 URMP

Rochester 大学多模态音乐表演(URMP)数据集(Li 等人,2018)由音频、视频和多乐器音乐作品的 MIDI 标注组成,这些音乐作品由多人配合但是单独录制的各个音轨的表演组合而成。也就是说,每首乐曲的每个部分都由一个单独的表演者与其他表演者协作单独录制(以确保音频的完全隔离)。通过组合各个乐器音轨来产生最终的混音。

该数据集包括 11 个二重奏、12 个三重奏、14 个四重奏和 7 个五重奏。数据集中总共有 14 种不同的乐器,包括弦乐(小提琴、中提琴、大提琴、低音提琴)、木管乐器(长笛、双簧管、单簧管、巴松管、高音萨克斯管、次中音萨克斯管)和铜管乐器(小号、圆号、长号、大号)。

该数据集还包括视频和乐谱,本文未使用。

我们使用以下部分进行验证:1、2、12、13、24、25、31、38、39。其余部分用于训练。此验证集保留了两个二重奏、两个三重奏、三个四重奏和两个五重奏,确保了验证拆分中的多样性。

我们在附录 D 中讨论了 URMP 的潜在标签质量问题。

C 基线细节

Manilow 等人(2020): 对于这个基线,我们在 slakh-redux 数据集上使用作者的 Cerberus 4 乐器模型(吉他、钢琴、贝斯、鼓)的原始代码训练的模型,该模型省略了 Slakh2100 原始版本中包含的重复音轨。我们使用相同的程序对上述和原始 Cerberus 论文(Manilow 等人,2020)中描述的有源乐器随机裁剪音频和过滤,使用 Slakh 的公共训练/验证/测试拆分。

Cheuk 等人(2021): 我们使用作者在 https://github.com/KinWaiCheuk/ReconVAT 提供的预训练模型和推理脚本。由于资源限制,在与作者沟通后,我们将来自 MusicNet 的音轨分成 20 秒的片段进行推理,并直接对这些片段进行评估。我们丢弃所有在真实标注中没有任何活动音符片段,因为 mir_eval 度量在参考音轨中没有任何音符时未定义。

Melodyne: Melodyne 是一款专业音频软件,旨在提供基于音符的录音分析和编辑。Melodyne 包含多种复音音高跟踪算法,包括“复音延音”算法(专为衰减较慢的乐器而设计,如弦乐)和“复音衰减”(专为衰减较快的乐器而设计)。对于本文中的所有结果,我们使用 Melodyne Studio 版本 5.1.1.003。将每个数据集的原始 wav 文件导入 Melodyne,并使用默认音高跟踪设置来转录音频(这使 Melodyne 可以自动选择最适合给定音频文件的算法)。Melodyne 直接导出 MIDI 文件,用于我们的下游分析。

Melodyne 不提供编程接口,导致使用 Melodyne 执行大规模转录需要大量的手动工作。对于 MAESTRO、Slakh10、Cerberus4 和 GuitarSet,我们对 Melodyne 的分析是在每个数据集的测试集中的 30 条音轨的随机子集上执行的。对于 URMP 和 MusicNet,我们在整个测试集上对 Melodyne 进行评估。

由于 Melodyne 是专有的第三方软件,因此我们无法提供有关用于转录音频的确切算法的更多详细信息。

D 补充结果

D.1 使用留一数据集评估零样本泛化

为了评估我们提出的模型的泛化性,我们在一个具有挑战性的零样本泛化任务上评估我们的模型。这些“leave-one-dataset-out”(LODO)实验的过程如下: D t r , i D_{tr, i} Dtr,i 表示一个单独的转录数据集(例如 MAESTRO),这样完整的训练集是 D t r : = ∪ i D t r , i D_{tr} := \cup_i D_{tr, i} Dtr:=iDtr,i。对于每个数据集 D j D_{j} Dj ,我们使用上述相同的混合程序训练一个 MT3 模型,但是训练集为 D t r = D t r ∖ D t r , j ~ \tilde{D_{tr} = D_{tr} \setminus D_{tr, j}} Dtr=DtrDtr,j~(即不使用数据集 D j D_{j} Dj)。然后,我们在每个数据集 D t r , i ∈ D t r D_{tr,i} \in D_{tr} Dtr,iDtr 上进行评估。

由于 Slakh2100 和 Cerberus4 是使用相同的音轨符干子集和合成软件生成的,因此我们在 LODO 实验中共同包含或排除这些数据集。

本研究的结果如表 5 和表 6 所示。表 5 表明,我们的模型能够在大多数数据集上实现超凡的音符预测性能,在每个低资源数据集(GuitarSet、URMP)上获得优于基线模型的 Multi-Instrument F1 和 Onset-Offset F1 分数。对于所有数据集,我们的模型实现了 0.14 到 0.78 之间的 Onset F1 分数。对于更具挑战性的 Multi-Instrument F1 分数,我们的模型在 LODO 任务上的表现因数据集而异。

总的来说,这些结果表明,尽管零样本评估数据集的音频质量、作曲风格和乐器存在很大差异,但我们的模型即使对于它在训练期间从未见过的数据集也可以获得超凡的转录性能。然而 LODO 实验还指出了模型对特定数据集缺失的敏感性,突出了可用音乐转录数据集的资源受限性质,即使在组合时也是如此。例如,Slakh2100 + Cerberus4 组合是我们的 LODO 实验中唯一包含低音和合成器的数据集;如果不对这些数据集进行训练,模型就无法学会识别这些乐器。

D.2 ONSET-OFFSET 阈值灵敏度分析

一个转录数据集可能比另一个更难的原因有很多。在我们的实验过程中,我们观察到我们的一些数据集的标签存在潜在错误,包括不正确的开始/结束时间,特别是在 MusicNet 和 URMP 中。最初的 MusicNet 论文估计错误率约为 4% Thickstun 等人(2016);据我们所知,URMP 标注的错误率还没有被研究过。

虽然对标签错误的直接调查超出了这项工作的范围,但我们在图 4 中提供了一些关于标签时序错误的初步证据。我们网格上系统地增加了用于 Onset-Offset F1 度量(在第 4.2 节中描述)的公差 t ∈ [ 10 m s , 500 m s ] t \in [10ms, 500ms] t[10ms,500ms],并使用阈值 t 计算 MT3 的 Onset-Offset F1 用于开始和结束。我们的结果与 URMP 和 MusicNet 中标签时序错误的存在一致:随着阈值的增加,具有高质量时序标签的数据集的性能趋于稳定到基线值。然而,随着阈值的增加,URMP 和 MusicNet 上的性能继续提高,这表明在我们的工作实验中用于评估所有模型的性能的标准 50 ms 阈值之外存在较大的时序误差。

这些结果表明 MusicNet 和 URMP 可能会受到标签时序问题的影响,这可能会影响在这些数据集上训练的模型的学习、质量和泛化性(特别是考虑到正确预测的默认阈值仅为 50 毫秒,小的时序误差会显著增加正确建模具有噪声时序标签数据集的难度)。虽然通过检查(即使用 MusicNet 检查器工具)在 MusicNet 数据集中有明显的标签错误证据,但我们不知道迄今为止已经正式研究过这个重要问题的学术工作。我们鼓励进一步研究这些数据集的标签问题。

E MIDI 类分组

表 3 中描述的“MIDI 类”分组结果的程序编号与原始规范中的原始 MIDI 类匹配,其中程序 p 的 MIDI 组对应于 f l o o r ( p / 8 ) floor(p/8) floor(p/8);我们在表 8 中给出了 MIDI 程序编号到 MIDI 类映射的完整列表。但是,对于 Cerberus4 和 SLAKH2100 数据集,乐器按“类”分组,这是用于合成这些乐器的补丁组的分类。我们构建了 SLAKH“类”到 MIDI 程序编号的映射,如表 7 所示。这些程序编号作为简单查找应用于 Cerberus4 和 SLAKH2100 数据集中的每个“类”,并使用相关的程序编号。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐