音乐生成模型是否内化了音乐理论?
arXiv:2410.00872
音乐基础模型拥有令人印象深刻的音乐生成能力。人们在创作音乐时,通常会将他们对音乐的理解融入到作品中,通过使用音符和音程来创作旋律,用和弦构建和弦进行,并用节奏来创造节奏感。音乐生成模型在多大程度上也是如此?更具体地说,基本的西方音乐理论概念是否在这些模型的“运作原理”中可观察到?最近的研究提出利用音乐生成模型的音频隐含表示来进行音乐信息检索任务(例如,体裁分类、情感识别),这表明高层音乐特征被编码在这些模型中。然而,针对具体音乐理论概念的探测(例如,节奏、音高、和弦性质)仍然未得到充分探索。因此,我们引入了 SynTheory,一个合成的 MIDI 和音频音乐理论数据集,包含节奏、拍号、音符、音程、音阶、和弦以及和弦进行等概念。我们进而提出了一个框架来探究音乐基础模型(Jukebox 和 MusicGen)中的这些音乐理论概念,并评估它们在内部表示中编码这些概念的强度。我们的研究结果表明,音乐理论概念在基础模型中是可辨别的,并且它们的可检测程度因模型大小和层级而异。
引言
目前最先进的文生音乐模型 [1-3] 表现出令人印象深刻的生成能力。过去的研究表明,从音乐生成模型中提取的音频内部表示编码了与高级概念(例如,体裁、乐器或情感)相关的信息 [4-7]。然而,它们是否也捕捉到底层符号音乐概念(例如,节奏或和弦进行)仍不清楚 [8]。
我们的目标是研究最先进的音乐生成模型是否以及在多大程度上在其内部表示中编码了音乐理论概念。证实这一点可以实现对这些概念的创造性修改,为艺术家提供更精细、更底层的控制新方法(例如,改变歌曲的调或修改和弦进行中的某个和弦)。此外,通过对这些基础模型进行基准测试,我们确定了改进概念编码能力的潜在途径。我们的方法建立在探测和编辑语言模型中概念的工作基础上,这些工作已显示出在自回归模型中识别涌现表示和修改事实性知识的希望 [9-12]。虽然以前的工作探究了音乐生成模型的高级概念,例如情感、体裁和标签 [4-7],但我们专注于揭示更细粒度的音乐理论概念的表示。尽管现有的数据集(如 HookTheory [13])包含丰富的音乐理论注释,但它们与受版权保护的音乐的关联可能会使其使用变得复杂。
我们的第一个贡献是一个生成用于探测音乐生成模型中音乐理论概念的诊断数据集的框架,允许对概念选择进行程序化控制,同时减少潜在干扰因素的影响。我们的合成音乐理论数据集 SynTheory 由基于西方音乐理论的七个音乐概念组成:节奏、拍号、音符、音程、音阶、和弦以及和弦进行。SynTheory 为探究基于真实世界数据训练的音乐生成模型提供了一种可定制、无版权且可扩展的生成诊断音乐片段的方法。
我们的第二个贡献是使用 SynTheory 基准分析了两个最先进的音乐生成模型 Jukebox [3] 和 MusicGen [1]。我们从 MusicGen 和 Jukebox 中提取了 SynTheory 中定义的概念的表示,并评估这些模型是否编码了这些概念的有意义表示。为了分析这些模型的内部表示,我们基于音乐理论概念的真实标签训练了探测分类器 [14]。更高的分类准确率意味着这些模型学习了“理解”音乐理论概念的内部表示,这些表示可以由多层感知机 (MLP) 或线性模型解码。
我们的结果表明,音乐基础模型编码了音乐理论概念的有意义表示。这些表示在模型的不同部分(音频编解码器、解码器语言模型)、解码器语言模型内的不同层以及不同的模型大小之间有所不同。此外,从时变的(例如,和弦进行)到静态的(例如,音符、和弦)的概念性质会影响这些模型在这些任务中的性能。我们希望我们对探测音乐基础模型的见解以及合成音乐数据生成框架能够鼓励并促进未来在音乐生成模型中符号可控性方面的努力。
为了可复现性,我们将 SynTheory 数据集上传到 Hugging Face,在 GitHub上发布了数据集生成、嵌入提取、探测和评估的代码,并在我们的网站上展示了音频样本。
相关研究
大型语言模型 (LLM) [15–18] 的成功推动了对其内部表征的探测研究,以评估其对语言概念 [19, 20] 和世界知识 [11, 12, 21] 的理解,以及编辑其编码的知识以使其更忠实于事实知识 [9, 10]。研究表明,大型语言模型可以编码关于颜色 [22]、方向 [23] 和听觉表征 [24] 的grounded representations。因此,我们研究音乐生成模型(它们通常与大型语言模型共享类似的模型架构和训练目标)是否能够编码从高级音乐标签(例如流派、情感)到细粒度音乐理论知识(例如速度、和弦)的抽象概念。
最近的研究已展现出在探测音频和音乐生成模型中发现概念表征,并利用不同的音乐基础模型架构来完成音乐理解任务的潜力。Castellon 和 Donahue 等人 [4] 提出,使用在编码音频上训练的语言模型的表征来完成下游 MIR 任务,可以更好地替代传统的标记模型。作者在 Jukebox 表征上训练探针分类器,用于音乐标记、流派识别、调性识别和情感识别任务。这些结果证明了使用内部模型表征进行下游 MIR 任务的有效性。Koo 等人 [7] 主要关注在乐器识别任务中探测 MusicGen 的注意力头,以 [4] 中强调的任务为基准,并提出利用这些表征进行推理时控制。其他工作 [5,6] 评估了模型架构和自监督方法对音乐理解任务的影响。
然而,先前的工作主要使用现实世界的数据,这些数据通常概念混杂,并且可能受到版权问题的困扰。例如,其中一些工作使用了 Giantsteps-MTG 和 Giantsteps [25]。Won 等人 [5] 使用 HookTheory (一个包含和弦标注的音乐数据集) 进行和弦识别,他们专注于识别每个音高类别的大调和小调和弦。作者还使用 Harmonix Set [26] 和 GTZAN [27] 进行节拍和强拍检测。在语言领域,ChatMusician [28] 的作者制作了一个多项选择问答数据集 MusicTheoryBench,由专业高校音乐教师进行专家标注。MusicTheoryBench 旨在通过自然语言来评估大型语言模型的音乐理解能力。据我们所知,在音频领域,目前尚缺乏像 SynTheory 这样详细标注、无版权且可扩展的音乐理论探测基准测试。
SYNTHEORY:音乐理论概念合成数据集
我们设计了七个数据集来捕捉孤立的音乐理论概念——类似于练耳用的合成音频。音乐家可以通过聆听独立的音频片段来“训练他们的耳朵”,在进入更难、更复杂的非教学音乐案例之前,识别音程或和弦性质等音乐概念。通过孤立的概念评估概念识别,可以减少从上下文中凭直觉或猜测答案的可能性。已有文献证实,人类可以利用音色信息来识别不同的音乐概念,例如音高 [29]。因此,我们的数据集旨在去除或减少与目标概念无关的特征,只保留识别该概念的必要信息。我们的目的是更侧重于评估理论概念本身,而非其声音表现。这项工作更实际的动机是,从现有数据集中提取这种底层、独立的概念可能需要大量的工程工作或领域专家的参与。甚至可能无法将这些混合的概念分离。音轨分离和概念分离是不同的;多轨录音中独立的乐器仍然可能表现出几个错综复杂地交织在一起的理论概念。目前尚不清楚如何将这些混合的概念分离。
SynTheory 不是试图从现有音频中分离多个概念,而是通过直接生成单个概念来实现这种类似“练耳”的测试环境。七个数据集中,每个数据集都只改变一个音乐特征,其他特征保持不变,从而达到在真实音乐中难以实现的隔离程度。这些被隔离的概念包括速度、拍号、音符、音程、音阶、和弦以及和弦进行。我们采用隔离作为一种设计选择,以减少深度学习模型中可能被用作“捷径”的上下文,即在大多数情况下与概念相关但不真正编码概念的启发式方法。
使用这种音乐理论概念驱动的合成设计,我们构建了标签均衡且无版权的数据。合成方法避免了其他当代 MIR 数据集中存在的注释错误。例如,SheetSage [13] 的 HookTheory 数据处理步骤需要对专家注释进行时间对齐。在发布的 SheetSage 数据集中,17,980/26,175 (68.7%) 个样本需要更精确的时间对齐。虽然我们的合成数据不能替代真实的音乐数据,但据我们所知,没有其他数据集能够如此严格地将每个概念隔离到如此精细的程度。
SynTheory 包含音调和节奏两大类。我们这样区分是为了更好地隔离概念;我们希望保持节奏样本的音调一致,音调样本的节奏一致。对于每个音调数据集,我们通过 92 种不同的乐器发出相同的 MIDI 数据。乐器声音的选择是固定的,这使得音色既多样化,又保持了类别均衡。每种乐器对应于 128 个标准 MIDI 程序代码之一,并通过 TimGM6mb.sf2 [30] 音色库发声。MIDI “程序”是一种特定的乐器预设。标准程序集包含许多乐器,例如“原声三角钢琴”、“长笛”等。我们排除了复音、音效(例如“鸟鸣”、“枪声”)和带有特殊音效的程序。带有特殊音效的程序具有一些不可更改的特性(例如音高弯曲),会导致音高不稳定。对于每个节奏数据集,我们定义了五个类似节拍器的声音设置。每个设置都使用一种不同的乐器:木鱼(高音)、木鱼(低音)、“太鼓”、“合成鼓”和 MIDI 鼓组,参考 Sheetsage [13] 的发音方式。每个设置都会在非重拍和重拍上产生不同的声音,这定义了拍号的概念。
可以使用 SynTheory 代码库扩展或更改这些配置。我们提供了一个框架,支持以音乐语义进行声明式和程序式 MIDI 构建、以任何音色库导出音频以及构建用于我们框架的数据集。
SynTheory-节奏部分
速度
我们以 4/4 拍,涵盖了 50 到 210 BPM(每分钟节拍数)的所有整数速度。为了使起始时间多样化,每个样本都生成了五个随机的起始偏移量。总共有 (5 点击设置 · 161 速度 · 5 偏移) = 4,025 个样本。
拍号
我们以固定的 120 BPM 速度渲染以下节拍:、、、、、 和 。为了增加声学变化,我们添加了从完全干燥到宽敞的三种混响级别。我们根据经验发现,这种声学扰动增加了探测任务的难度。与 Tempo 数据集一样,我们为每个样本生成十个随机时间偏移。共有 8 种节拍 × 3 种混响级别 × 5 种节拍器设置 × 10 种时间偏移,共计 1,200 个样本。
SynTheory-Tonal
音高
我们使用 92 种乐器,在九个八度音阶中渲染所有十二个音(十二平均律)。音符以每拍一个音符的速度,以 120 BPM 的速度播放,没有区分强拍和弱拍。共有 (12 音高× 9 八度 × 92 乐器) = 9,936 种配置。然而,由于在音色库中,极端音域的 88 种配置无法发声,因此只有 9,848 个不同的样本。为保证完整性,这些无声样本列在我们的 Hugging Face 数据集中。
音程
我们改变根音、半音数(即相邻两个音之间的最小音程)、乐器和演奏风格(同音、上行和下行)。为了保持节奏一致,上行和下行音程的旋律重复播放四次,而同音的旋律重复播放八次。共有 (12 音级 × 12 半音 × 92 乐器 × 3 演奏风格) = 39,744 个样本。
音阶
我们用 92 种乐器,以两种演奏风格(上行或下行)渲染七种调式(艾奥尼亚、多利亚、弗里吉亚、利底亚、米索利迪亚、埃奥利亚和洛克里亚)的所有根音。音域是恒定的;我们以中央 C 附近的音作为根音。共有 (7 调式 × 12 根音 × 92 乐器 × 2 演奏风格) = 15,456 个样本。
和弦
我们用 92 种乐器渲染所有根音的三和弦、四种和弦性质(大三和弦、小三和弦、增三和弦和减三和弦)以及三种转位(原位(根音在低音)、第一转位(三音在低音)和第二转位(五音在低音))。和弦以 120 BPM 的速度在每个四分音符处敲击。与音阶数据集一样,我们将音域固定在接近中央 C 的位置。共有 (12 根音 × 4 和弦性质 × 92 乐器 × 3 转位) = 13,248 个样本。
和弦进行
我们选择了 19 种四和弦进行,其中 10 种是大调,9 种是自然小调:(罗马数字在此表示基于音阶度数构建的和弦)
大调:(Ⅰ-Ⅳ-Ⅴ-Ⅰ), (Ⅰ-Ⅳ-Ⅵ-Ⅴ), (Ⅰ-Ⅴ-Ⅵ-Ⅳ), (Ⅰ-Ⅵ-Ⅳ-Ⅴ), (Ⅱ-Ⅴ-Ⅰ-Ⅵ), (Ⅳ-Ⅰ-Ⅴ-Ⅵ), (Ⅳ-Ⅴ-Ⅲ-Ⅵ), (Ⅴ-Ⅳ-Ⅰ-Ⅴ), (Ⅴ-Ⅵ-Ⅳ-Ⅰ), (Ⅵ-Ⅳ-Ⅰ-Ⅴ)
自然小调:(ⅰ-ⅱ°-ⅴ-ⅰ), (ⅰ-Ⅲ-ⅳ-ⅰ), (ⅰ-ⅳ-ⅴ-ⅰ), (ⅰ-Ⅵ-Ⅲ-Ⅶ), (ⅰ-Ⅵ-Ⅶ-ⅰ), (ⅰ-Ⅵ-Ⅶ-Ⅲ), (ⅰ-Ⅶ-Ⅵ-Ⅳ), (ⅳ-Ⅶ-ⅰ-ⅰ), (Ⅶ-ⅵ-Ⅶ-ⅰ)
我们改变了调的根音和乐器。每个和弦以 120 BPM 的速度在每个四分音符处演奏。共有 (19 进行 × 12 调根音 × 92 乐器) = 20,976 个样本。
实验
我们将描述我们评估音乐生成模型(MusicGen 和 Jukebox)和人工提取的音频特征(梅尔谱图、梅尔频率倒谱系数 (MFCC) 和色度)的内部表征如何编码音乐理论概念的方法。
评估
线性探测模型(probe)是一种简单的分类器,通常是线性模型,它在神经网络的激活值上进行训练[14]。如果这类分类器性能良好,则表明与类别相关的信息蕴含于网络的潜在表示中。因此,探测模型可以作为一种指标,用于衡量模型对抽象概念的“理解”程度或编码能力。受自然语言处理(NLP)[31]和音乐信息检索(MIR)[4]领域中使用探测模型研究语言结构和语义的启发,我们使用探测模型来评估基础模型的内部表示是否能够识别音乐理论概念。
我们采用与[4]相同的探测范式,并将概念理解定义为对离散概念(音符、音程、音阶、和弦、和弦进行和拍号)进行多类别分类,以及对连续概念(速度)进行回归。我们在 Jukebox 和 MusicGen 的内部表示嵌入以及人工提取特征的组合上训练线性和两层 MLP 探测模型。
每个探测模型都针对其相应的概念任务进行独立训练。也就是说,例如,用于从 Jukebox 嵌入中识别音符的探测模型不会用于识别音程。
对于分类任务,我们使用以下 SynTheory 任务来衡量我们训练的探测模型的准确性:
音符 (12): C, C#, D, D#, E, F, F#, G, G#, A, A# 和 B
音程 (12): 小二度, 大二度, 小三度, 大三度, 纯四度, 增四度/减五度, 纯五度, 小六度, 大六度, 小七度, 大七度 和 纯八度音程
音阶 (7): 爱奥尼亚, 多利安, 弗里吉安, 利底安, 米索利迪安, 自然小调/小调 和 洛克里安
和弦 (4): 大三和弦, 小三和弦, 减三和弦 和 增三和弦
和弦进行 (19): (I–IV–V–I), (I–IV–vi–V), (I–V–vi–IV), (I–vi–IV–V), (ii–V–I–vi), (IV–I–V–vi), (IV–V–iii–vi), (V–IV–I–V), (V–vi–IV–I), (vi–IV–I–V), (i–ii◦ –v–i), (i–III–iv–i), (i–iv–v–i), (i–VI–III–VII), (i–VI–VII–i), (i–VI–VII–III), (i–VII–VI–IV), (iv–VII–i–i) 和 (VII–vi–VII–i)
拍号 (8): , , , , , 和
这些任务使用 Adam 优化器和交叉熵损失函数,在 70% 训练集、15% 测试集和 15% 验证集的划分上进行训练。
对于 Tempo 数据集,我们在 161 个速度值上训练回归探测模型。为了增加探测任务的复杂性并测试对未见 BPM 的泛化能力,训练集由中间 70% 的 BPM 组成。测试集和验证集由最高 15% 的 BPM 和最低 15% 的 BPM 组成,随机打乱并分成两半。我们使用 MSE 损失函数并报告 分数。
为了为每个概念选择性能最佳的探测模型,我们按照 [4] 对 MusicGen 音频编解码器、梅尔频谱图(mel spectrogram)、梅尔频率倒谱系数(MFCC)和恒Q色度图(chroma)以及组合人工特征的各种超参数执行网格搜索:
数据归一化: {True, False}
模型类型: {线性, 具有 512 个隐藏单元和 ReLU 激活函数的两层 MLP}
批大小: {64, 256}
学习率: {, , }
Dropout (丢弃率): {0.25, 0.5, 0.75}
L2 正则化: {关闭, , }
对于解码器语言模型(MusicGen small、medium 和 large 以及 Jukebox),为了提高计算效率,我们使用一组固定的超参数,并针对每个概念选择表现最佳的网络层对应的探测模型:
数据归一化: True
模型类型:包含 512 个隐藏单元及 ReLU 激活函数的两层 MLP
批量大小:64
学习率:
丢弃率:0.5
L2 权重衰减:关闭
我们根据[4]中描述的扫描方法,固定解码器语言模型中的一层并进行超参数搜索,最终选取了这些在探针中整体表现最佳的超参数。
模型表示
我们从两个文本到音乐的基础模型 Jukebox [3] 和 MusicGen [1] 中提取表示,并以[4]中三个手工设计的频谱特征作为基准:梅尔频谱图、梅尔频率倒谱系数(MFCC)和恒定Q变换色度图(chroma)。这些手工设计的特征在传统的音乐信息检索(MIR)方法中很常见,并且作为预训练音乐生成模型嵌入的基线,具有更好的可解释性。
Jukebox 由一个 VQ-VAE 模型和一个语言模型组成。VQ-VAE 模型将音频波形编码成较低采样率的离散码,而语言模型使用 Transformer 解码器生成编码的音频。我们将每个音频样本修剪至四秒并转换为单声道。我们使用 Jukemirlib [4],将音频依次通过冻结的音频编码器和解码器语言模型。由于资源限制,我们使用 Librosa FFT 算法 [32] 将激活下采样到[4]中一半的目标速率。然后,我们对表示进行时间上的平均池化以降低嵌入维度,最终每个样本的维度为 (72, 4800),其中 72 代表层数,4800 代表激活的维度。为了进一步降低维度,我们采用了类似于[4]的层选择过程。我们使用固定的超参数,在 4.1 节中描述的音乐概念任务上训练探针分类器。对于每个概念,我们选择得分最高的层。最终,每个 Jukebox 表示的维度为 4800。
MusicGen 由一个预训练的卷积自编码器 (EnCodec) [33]、一个预训练的 T5 文本编码器和一个声学 Transformer 解码器组成。我们将音频重采样到 32 kHz(EnCodec 模型使用的采样率),修剪至四秒,转换为单声道,然后将其通过冻结的 EnCodec 音频编解码器。由于我们关注的是音频表示,因此没有将文本输入到文本编码器中。然后,我们从模型的几个部分提取表示:残差矢量量化之前的音频编解码器最后一层以及解码器语言模型的隐藏状态。解码器隐藏状态的数量根据模型大小而变化:小型(24 层)、中型(48 层)和大型(48 层)。
对于我们的四秒音频剪辑,音频编解码器表示的维度为 (128, 200),其中 128 是音频编解码器最后一层之后的激活维度,200 是序列长度。我们对表示的值进行时间上的平均池化,最终使 MusicGen 音频编解码器的维度为 128。
小型、中型和大型 MusicGen 模型的解码器隐藏状态的维度分别为 (24, 200, 1024)、(48, 200, 1536) 和 (48, 200, 2048),其中第一个轴对应于层数,第二个对应于序列长度,第三个对应于隐藏大小。为了降低维度,我们对时间进行平均池化,最终使 MusicGen 小型解码器的维度为 (24, 1024),MusicGen 中型解码器的维度为 (48, 1536),MusicGen 大型解码器的维度为 (48, 2048)。与我们处理 Jukebox 的方法类似,我们根据探测分数为每个解码器模型大小选择最佳层。在根据每个概念和模型大小选择性能最佳的层后,小型、中型和大型 MusicGen 模型表示的维度分别为 1024、1536 和 2048。
我们将每个模型(MusicGen 和 Jukebox)跨层、跨概念的平均探测结果可视化在图 2 中。
我们使用librosa[32]提取人工特征(梅尔频谱图、梅尔频率倒谱系数和恒定Q色谱图)。与[4]类似,我们将这些特征在时间维度上的均值和标准差,以及它们的一阶和二阶离散差分连接起来。为了获得人工特征的聚合表示,我们将梅尔频谱图、色谱图和MFCC特征连接起来,并计算它们在时间维度上的均值和标准差,以及它们的一阶和二阶离散差分。
结果与讨论
总的来说,我们发现音乐生成模型确实在其内部表征中编码了音乐理论概念。Jukebox 在所有 SynTheory 任务中都表现得相当好。MusicGen Decoder LMs 在我们的基准测试中也展现了不俗的表现。有趣的是,我们发现 MusicGen Decoder (Small) 的表现优于更大的模型。这个发现跟大家通常认为模型越大效果越好,以及 [1] 中说的 MusicGen 模型越大越懂提示、生成效果越好的说法不太一样。图2进一步突出了这一发现,跟大模型比起来,MusicGen Decoder (Small) 的探测得分在各层都一直很高。同时,更大的 MusicGen 模型一开始几层性能掉得厉害,然后慢慢涨回来,最后几层又稍微掉了一点。看起来小模型可能在表征里用了更高效的方法来编码音乐理论概念。
虽然这些模型其他方面都挺好,但 MusicGen 识别音符的能力差点意思。我们猜测这可能是因为在实际的音乐里,单独的音符不如音程、音阶、和弦那么重要。这就说明了要区分音乐里最基本的组成部分还挺难的。
预训练的音乐解码器 LM 通常比 MusicGen Audio Codec 和单独的人工特征效果要好。MusicGen Audio Codec 的整体表现不太好,因为它训练的时候主要是为了重建细粒度、低层级的局部时间细节。
色度特征,就是编码了音高信息的那些,在音调相关的任务上表现不错,但在节奏相关的任务上就差点意思。值得注意的是,色度特征在静态和声任务(音符、音阶和和弦)上优于 MusicGen Decoder LM,但在动态和声任务(和弦进行和音程)上落后。
把人工特征聚合起来,效果跟 MusicGen Decoder LM 差不多。这表明更难的音乐概念理解基准测试应该关注那些基础模型能够捕捉到、但人工特征难以编码的概念。这些更难的基准测试可能包含耦合的概念,例如在不同节奏的和弦进行样本中同时探测和弦进行类型和节奏。探测作曲任务可以揭示模型表征和人工特征之间概念编码的差异。
虽然这些模型已经证明它们可以在音频里编码音乐理论的表征,但一些最先进的音乐基础模型主要还是靠文本控制。我们打算以后研究一下音乐生成模型里的语言表征,看看能不能改进文本控制的方法。
结论
我们搞了个叫 SynTheory 的数据集,是合成音乐理论概念的,特点就是概念隔离、没有版权问题,而且可以扩展。我们使用 SynTheory 来评估最先进的音乐生成模型对音乐理论概念的编码程度。我们的实验说明,确实可以从这些模型的潜在表征里识别出音乐理论概念。我们觉得这样就能搞清楚怎么分离和控制这些概念,从而在可控生成和音乐理论基准测试方面取得进展。我们鼓励社区使用我们的框架构建更具挑战性的探测数据集,以进一步理解符号音乐生成和基于音频的音乐生成之间的关系。