JinyuEgg
JinyuEgg

Music Technology在读

什么是“音乐信息提取”?一篇简单的介绍


近日托《集合啦!动物森友会》的福,让游戏内的语音合成火了一把。借着这股东风,想和大家介绍一下与其相关的一些背后故事:动森的制作人员是如何想到这样来处理声音的?语音、音乐又如何与科技发生联系?程序员懂了乐理以后能做出什么脑洞大开的玩意?

作为一个研一的新人,笔者在此恬不知耻地斗胆为大家介绍一下这一音乐、信号处理和机器学习的交叉学科:音乐信息提取 (Music Information Retrieval,简称MIR)。

了解声音工程的朋友们知道,在音乐制作的领域里,多亏了科技与音乐创作的结合才能创造出如今我们每天都能享受到的声音体验。而作为音乐的另一面,当聆听和理解音乐的过程与科技相结合,便是本文想为大家介绍的“音乐信息提取”领域了。因为是从聆听与理解的角度出发,因此MIR也被称为音乐信息学(Music Informatics)或机器听觉(Machine Listening)。

那么让机器能“听懂”音乐后我们能做到什么呢?我们来听一段不太一样的“劲歌金曲”:

这是Deezer出品的声源分离工具Spleeter的一小段demo。在一首完整的歌曲里,如果我们能让机器分辨出那些声音是由歌手演唱,哪些是伴奏,就能像视频里这样把歌曲的演唱和伴奏分离开来。


了解声音工程朋友应该知道,我们在制作歌曲的时候通常是会将不同乐器用不同的麦克风,分成不同的音轨来录制后,再经过混音这一过程制作成一条合成的音频的。如果用料理来类比,这个过程就好比与将不同的原材料混合、烘焙,制作出食物的成品。然而如果我们将这个过程反过来,从做好的番茄炒蛋里把鸡蛋、番茄、油分离出来,并且得到完整的原材料,这就是声源分离所能做到的。

然而了解过高中物理的热力学定律或者学过信息论的同学应该知道,这样的熵减过程是违反熵增定律的:不可能从一杯50度的温水中分离出半杯0度的冰水和半杯100度的开水。那么我们如何能做到将声音的番茄炒蛋分解成声音的番茄和声音的蛋呢?这就要讲到声音知识的重要性了。

我们知道声音,或者说声波,本质上是空气或其他介质产生的规律性的震动,而不同的发声物体的震动规律也有所不同。比如架子鼓的敲击声是短促有力的,并且几乎没有音调(当然学鼓的朋友知道鼓皮也是要调音的);而小提琴的声音则悠长均匀,音调十分明显。

基于这样的现象,我们可以让算法学习不同乐器的频谱特征,从而分离出不同乐器,或者伴奏与人声。

不同的乐器具有不同的短时频谱特征。左起每列:单簧管、失真吉他、人声、笛子、钢琴、萨克斯、小号、小提琴




接下来再为大家介绍一个很多人想要拥有的技能:扒谱。

很多学吉他的朋友都会有一首梦想自己能够演奏出来的曲子(一定不是海阔天空)。但包括我在内,许多人初学吉他的时候也经常会有一个困扰:上哪找谱子呢?这时如果能让算法帮我从这首歌的音频里面分析出来每个小节用的是什么和弦,那我成为吉他大师不就指日可待了吗!

是的!现在扒谱也能让机器帮你做!请看一个我自己做的demo:

弹一个简单的C大调1645,算法就能识别出我所弹的BPM,节奏型,以及每一拍所弹的是什么和弦!是不是非常的炫酷呢!(并不)当然在这背后所需要的是信号处理知识和音乐知识的高度结合,如果大家有兴趣的话,笔者之后可以为大家继续讲解。

和弦信息就藏在这样的矩阵里

除了声源分离和和弦识别之外,MIR还有十分多的应用:听歌识曲、抄袭识别、旋律提取、甚至也能进行音乐创作;而当这一切和人工智能(神经网络)结合以后,又能创造出更多脑洞大开的成果!这里再和大家分享一个8bit音乐自动生成算法LakhNES


这里展示的所有音乐都是用神经网络学习8bit音乐样本后自动生成出来的。也许再过一段时间,甚至连8bit游戏都能自动生成了。

不知道有多少朋友听说过《GEB》这本融合了计算机、逻辑学、图形设计和音乐的奇书,书中当时所探讨的看似风马牛不相及的音乐、人工智能和艺术,正在发生着可能连作者也未曾设想到的奇妙融合。


感谢您的阅读,这是我第一次在matters投稿,搬运了一篇之前写过的小小科普文章。期待能和matters的朋友们有更多的交流!

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

第一个支持了这篇作品
加载中…

发布评论