近日托《集合啦!动物森友会》、重轻老师和少多老师的福,让游戏内的语音合成火了一把。借着这股东风,想和大家介绍一下与其相关的一些背后故事:动森的制作人员是如何想到这样来处理声音的?语音、音乐又如何与科技发生联系?程序员懂了乐理以后能做出什么脑洞大开的玩意?
作为一个研一的新人,笔者在此恬不知耻地斗胆为大家介绍一下这一音乐、信号处理和机器学习的交叉学科:音乐信息提取 (Music Information Retrieval,简称MIR)。
那么让机器能“听懂”音乐后我们能做到什么呢?我们来听一段不太一样的“劲歌金曲”:
听过声音工程节目的朋友应该知道,我们在制作歌曲的时候通常是会将不同乐器用不同的麦克风,分成不同的音轨来录制后,再经过混音这一过程制作成一条合成的音频的。如果用料理来类比,这个过程就好比与将不同的原材料混合、烘焙,制作出食物的成品。然而如果我们将这个过程反过来,从做好的番茄炒蛋里把鸡蛋、番茄、油分离出来,并且得到完整的原材料,这就是声源分离所能做到的(也可以使用疯狂钻石)。
然而了解过高中物理的热力学定律或者学过信息论的同学应该知道,这样的熵减过程是违反熵增定律的:不可能从一杯50度的温水中分离出半杯0度的冰水和半杯100度的开水。那么我们如何能做到将声音的番茄炒蛋分解成声音的番茄和声音的蛋呢?这就要讲到声音知识的重要性了。
我们知道声音,或者说声波,本质上是空气或其他介质产生的规律性的震动,而不同的发声物体的震动规律也有所不同。比如架子鼓的敲击声是短促有力的,并且几乎没有音调(当然学鼓的朋友知道鼓皮也是要调音的);而小提琴的声音则悠长均匀,音调十分明显。
基于这样的现象,我们可以让算法学习不同乐器的频谱特征,从而分离出不同乐器,或者伴奏与人声。
接下来再为大家介绍一个很多人想要拥有的技能:扒谱。
很多学吉他的朋友都会有一首梦想自己能够演奏出来的曲子(一定不是海阔天空)。但包括我在内,许多人初学吉他的时候也经常会有一个困扰:上哪找谱子呢?这时如果能让算法帮我从这首歌的音频里面分析出来每个小节用的是什么和弦,那我成为吉他大师不就指日可待了吗!(并不
是的!现在扒谱也能让机器帮你做!请看一个我自己做的demo:
弹一个简单的C大调1645,算法就能识别出我所弹的BPM,节奏型,以及每一拍所弹的是什么和弦!是不是非常的炫酷呢!(并不)当然在这背后所需要的是信号处理知识和音乐知识的高度结合,如果大家有兴趣的话,笔者之后可以为大家继续讲解。
这里展示的所有音乐都是用神经网络学习8bit音乐样本后自动生成出来的。也许再过一段时间,甚至连8bit游戏都能自动生成了。
最后感谢您的阅读,由于笔者的水平所限只能为各位先介绍到这里。第一次投稿,如果各位感兴趣或者想拍砖的话请在评论区给我留言,非常感谢!
评论区
共 32 条评论热门最新