浅谈音乐生成算法
内容过时
Draft
生成音乐与生成图像和视频有一些明显的不同之处。
- 首先,音乐是一种时间艺术,需要一个时间模型。
- 其次,音乐通常由多种乐器/音轨组成,这些乐器/音轨都有各自的时间动态,但它们共同随着时间相互依存地展开。
MIDI
- 音乐数字接口(Musical Instrument Digital Interface,简称MIDI)是一个工业标准的电子通信协议,为电子乐器等演奏设备(如合成器)定义各种音符或弹奏码
- MIDI不发送声音,只发送像是音调和音乐强度的数据,音量,颤音和相位等参数的控制信号,还有设置节奏的主频信号。在不同的电脑上,输出的声音也因音源器不同而有差异。
- 许多音乐的文件格式,都建构于MIDI档之上。这些格式可说就是电子乐器在看的电子乐谱,所以通常一个文件只需几十KB,就能够让电子乐器演奏出一首很完整的音乐。
ABC 记谱法
ABC记谱法是19世纪出现的一种记谱法,以A到G的字母记录音高,再配以其他符号用来记录变化音、音长等,由克里斯·瓦尔莎发明。后来由于计算机使用ASCII字符集又要处理音乐,ABC记谱法再度受重视,并成为一部分音乐软件的信息存储法。 该方法在可读性和结构表示方面优于 MIDI
符号音乐生成
基于以上两种标记法,音乐生成任务可以被转化为一种特殊的文本生成任务,特别是在LLM被提出后,基于ABC记谱法的文本序列预测,即可以实现音乐生成功能。
输入输出序列
以下是一些常见模型的输入输出序列
ABC 记谱
bach piano_strings start tempo90 piano:v72:G1 piano:v72:G2 piano:v72:B4 piano:v72:D4 violin:v80:G4 piano:v72:G4 piano:v72:B5 piano:v72:D5 wait:12 piano:v0:B5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:4 piano:v0:G1 piano:v0:G2 piano:v0:B4 piano:v0:D4 violin:v0:G4 piano:v0:G4 wait:1 piano:v72:G5 wait:12 piano:v0:G5 wait:5 piano:v72:D5 wait:12 piano:v0:D5 wait:5 piano:v72:B5 wait:12
此外,这类模型的设计通常会结合一些乐理知识。 例如,音乐序列中的起始音符通常与最后一个音符不同。序列的第一个音符通常包含属于主和弦的音符,但音乐中的最后一个音符包含来自五和弦或下属七和弦的音符。如下图所示,第一个 C 大调和弦小节和最后一个 E 小调和弦小节,最好使用不同的 CNN 内核(Local Conv)。
Local Conv
文本到音乐
假如将这个问题交给普通人来解决,相信很多没有基本乐理知识的人,都很难根据特定的文本,创作出一段长达几分钟的乐曲。但算法模型可以通过大量的数据,模仿文本和对应音乐的关联。 此外,在复调音乐中,音符通常被组合成和弦、琶音或旋律,因此简单的音符时间序列并不自然合适。 但是解决这个问题依然充满了挑战,主要集中在以下两方面:
- 当前学术界的研究只能生成简单场景的短片段语音,因此将单文本转化为高保真和长时间连续的音乐片段具有很强的挑战
- 缺乏丰富的“音乐-文本”结对的数据集
下文介绍Google提出的MusicLM模型,MusicLM基于AudioLM的衍生工作,其生成的音乐可以以文本和旋律为条件,这意味着它可以接受以哼唱、歌唱、吹口哨或演奏乐器为形式的输入旋律,并生成遵循该旋律的音乐,同时也遵守文本描述。
MusicLM
MusicLM使用三种模型来提取作为条件自回归音乐生成输入的音频表示。SoundStream,w2v-BERT,和MuLan。
models
MuLan
通过AudioEmbeding编码音频,通过TextEmbedding编码文本,将audio和text拉齐到同一维度空间,最后计算对比损失函数比较两者在同一维度空间的差别,其做法类似于clip。
MuLan
MusicLM是基于一个层次化的序列到序列的架构。
-
第一阶段被称为语义建模阶段,学习从MuLan音频token到语义token的映射。这一阶段负责生成代表作为输入的文本描述的语义token序列。音频通过MuLan模型生成MuLan tokens, 然后通过语义模型映射为w2v-BERT的Semantic tokens 用作MusicLM下一阶段的条件信号。
-
第二阶段是声学模型阶段,将MuLan tokens和Semantic token一起输入声学模型,并映射为SoundStream的Acoustic tokens,为了保证长时间连续音频生成,生成过程是一个类似audioLM的coarse-to-fine阶段。
-
最后,使用SoundStream的解码器解码Acoustic tokens,得到音乐。
Pipeline
推理
在推理过程中,从文本提示中提取的MuLan文本嵌入被用作条件,并用与音频嵌入相同的RVQ进行量化。 这个过程确保了音频和条件信号都有一个一致和同质的表示,这有助于模型生成与文本描述相一致的高质量音乐。