mixlab无界社区里曾经讨论过一个话题: 在移动端APP设计中,很少考虑音效,是不是因为音效的创作成本太高,如果用AI自动生成音效优化ux的体验,此方案的可行性如何?
为了探索AI自动生成音效的方法,我“抓”了limber一块完成了此篇内容,给大家介绍算法作曲相关的技术,涉及生成艺术相关的技术、产品、体验,着重梳理了核心技术及创意玩法。
作者们:
shadow
跨界设计师 / 全栈工程师 / 智能产品架构师 /...
limber
机器学习研究员 / 古典音乐Composer / Oxford PhD /...
1 机器能有创造力吗?
观点1
机器不具有真正意义的「创造力」
有一个streotype,认为「创造力」是人类的独有的东西,在爱德华·威尔逊的《创造的起源》一书中提出了创造源自一个冲动。机器不如人,因为机器不会犯错,即使是引入「概率」的AI,假如程序正常,它也不大会偏离正轨,但人会,因为人毕竟不是机器。
观点2
「理解力」可以被假装
在约翰·希尔勒的《Minds, Brains, and Programs》一书中介绍的著名的思想实验「Chinese Room」(中文屋子)。 一个对中文一窍不通的,以英语作母语的人被关闭在一只有两个通口的封闭房间中。房间里有一本用英文写成,从形式上说明中文文字句法和 文法 组合规则的手册,以及一大堆中文符号。房外的人不断向房间内递进用中文写成的问题。房内的人便按照手册的说明,将中文符号组合成对问题的解答,并将答案递出房间。
约翰·希尔勒认为,尽管房里的人甚至可以以假乱真,让房外的人以为他是中文的母语用户,然而他压根不懂中文。而在上面的过程中,房外人所扮演的角色相当于程序员,房中人相当于计算机,而手册则相当于计算机程序。而正如房中人不可能通过手册理解中文一样,计算机也不可能通过程序来获得理解力。
然而房间外的人误以为机器具有理解力。
综合2个观点,没有必要让机器具有哲学意义上的「创造力」,只需要“假装”具有创造能力就好了。我们放宽对创造力的定义,将创造定义为:推陈出新。只要数据做的好,推陈出新的创造是可以做到的。
2 生成艺术,数学/算法之美
人工智能作曲与生成艺术的一些思想是相通的,因而我们需要了解生成艺术相关的内容。
生成艺术
生成艺术的代表是视觉艺术方面的生成。我们了解下算法与视觉美学。自古以来数学与艺术就有着紧密的关系,有规律的数字组合可以创造出使人愉悦的艺术作品,在建筑设计中的比例或音乐的旋律都有所体现。甚至可以说,我们的世界是建立在数学之上的。举个例子:
玫瑰曲线公式:
在极坐标下可表示为ρ=a*sin(nθ),a为定长,n为整数。
我们可以用玫瑰曲线绘制一朵花。
数学有很多值得探索的视觉之美。
3 用大数据创作歌词、乐曲、视觉风格
除了数学/算法,我们还需要了解数据思维,数据可以帮助我们挖掘更多的潜在规律,一个音乐家/设计师的经验最多只有80年,而数据,可以是汇集大量音乐家/设计师的经验,代表的经验是更为丰富的、甚至是全球的经验。有一个典型的案例:
2017年 Spotify 全球榜 Top 2的一首容纳了千万伤心事的歌曲《Not Easy》,这首歌主创是格莱美获奖制作人 Alex Da Kid,最特别的地方在于它的共同创作者还有IBM Watson。
在 Watson帮助下,Alex很快完成了整首歌的创作,演绎出 “心碎”这种复杂的情绪。人机协作的过程,我们总结一下:
STEP1
音乐主题的挖掘
利用Watson 的语义分析对过去 5 年的文本、文化和音乐数据进行了分析,从中捕捉时代的热点话题以及流行的音乐主题,最终帮助Alex锁定了这次音乐创作的核心—“心碎”;
STEP2
歌词创作
在歌词创作阶段,利用Watson 的情感洞察分析了过去 5 年内26000首歌的歌词,了解每首歌曲背后的语言风格、社交流行趋势和情感表达,同时分析了博客、推特等社交媒体上的 UGC 内容,了解受众对“心碎”这个主题的想法和感受,从而辅助人类创作歌词。
STEP3
数据洞察乐曲规律
在乐曲创作阶段,Watson在26000歌曲中分析其中的节奏、音高、乐器、流派,并建立关系模型帮助 Alex 发现不同声音所反映出的不同情感,探索“心碎”的音乐表达方式;
STEP4
探寻图像与色彩规律
在最后的专辑封面设计阶段,设计师要如何表现“心碎”?Watson 利用色彩分析,对海量专辑的封面设计进行分析,启发Alex将音乐背后的情绪表达转化为图像和色彩,从而合作完成了专辑封面制作。
4 EMI人工智能音乐作曲系统
早在1981的时候,David Cope 创造了人工智能音乐作曲系统(EMI,Experiments in Musical Intelligence)。
网址:http://artsites.ucsc.edu/faculty/cope/experiments.htm
David Cope是美国作家,作曲家,科学家,也是加州大学圣克鲁斯分校的音乐教授。Cope还是音乐科技公司Emeritus of Recombinant Inc的联合创始人和首席技术官。他的主要研究人工智能和音乐,主要的创作方向是通过作曲家创造力和计算机算法之间的协同,生成音乐作品。
Cope最初的想法是创建一个计算机程序,该程序能够感受到他的整体音乐风格以及追踪当前作品的想法的能力,以便在任何给定的时刻,Cope可以请求下一个音符,下一个音符,接下来的十个音量等等。
Cope尝试了基于规则的方法以及重组匹配的方法进行音乐生成。规则的方法,是一种为每种新风格的音乐编写新的规则集,来生成音乐的方法。虽然使用这种方法创作的一些音乐确实相当成功,但其大部分音乐产品同样没有趣味,也不令人满意。而重组的方法,可以简单地定义为通过将现存音乐重新组合成新的逻辑而产生新音乐的方法。
在1997年,斯坦福大学的一次演讲中,他用EMI模仿巴赫弹奏了一曲,普通听众可能根本分辨不出,到底是机器生成的还是巴赫自己创作的。David Cope被认为是AI作曲教父,而且他对AI作曲的未来充满信心,正确的算法将有助于解锁人类无法完成的歌曲创作新表达。下面介绍一下EMI的工作原理:
采用的是模式匹配,它将音乐片段分割成更小的片段并进行分析,找出相似的声音并进行分类。包括以下几步:
STEP1
解构
分析音乐,并分解成「部件」
STEP2
分类
把分解的「部件」进行相似性的计算,归类
STEP3
重组
通过把「部件」进行重组,从而产生新的音乐
5 算法作曲,及相关方法
Algorithmic composition
算法作曲,是使用算法创造音乐的一种技术,使用一些看似于音乐无关的算法或数据来创作音乐,例如分形,L-系统,统计模型(如正态分布),人口的普查数据,地理位置数据,磁场数据等。
目前有许多解决方案,有各自的优点,但仍没有一种解决方案是效果最佳,得到大家公认的。下面对一些方法进行介绍,主要有5种方法:
Translational Models
Mathematical Models
Grammars
Evolutionary Methods
Hybrid Systems
5.1 Translational Models
如果你听过「建筑是凝固的音乐」,对这类方法肯定不会陌生,有点类似于类比的方法,我们把建筑空间的转换“翻译”为声音,从而生成音乐。此类方法将信息从非音乐媒介“翻译”成声音,可以是基于规则或随机生成。通常,算法会结合音乐理论从媒介中提取对应的数据来生成音乐。要把音乐的概念转化为算法/数据的概念。例如,将图片转化为声音,根据图片的色彩变化或者明度变化。除了图片,另一个例子是文本转化为音乐,通过使用机器学习从文本中提取情感(正面或负面),用于对应和弦方面的情感,产生轻微(悲伤)或主要(快乐)的和弦曲调。
5.2 Mathematical Models
数学模型基于数学方程式和随机事件。通过数学创造音乐的最常见方式是随机过程。在随机模型中,一段音乐是由非确定性方法构成的。组成过程仅由作曲家通过配置可能性参数,作为随机事件的权重。随机算法的例子是马尔可夫链和高斯分布。音乐也可以通过自然的规律生成,例如混沌中的分形理论,以分形来创造自然的音乐曲调。
5.3 Grammars
基于语言的文法,音乐也可以作为一种具有独特语法的语言看待。作曲的过程首先构建音乐语法类似于构建音乐的DSL(领域特定语言),然后用它来创作易于理解的音乐作品。文法经常包含宏观层次的规则,例如和声和节奏。(mixlab此前更新过一篇建筑生成中用Grammars方法来生成的文章,可点击进一步了解)。
5.4 Evolutionary Methods
音乐是通过进化过程来创作的。通过突变和自然选择,不同的解决方案进化演变成适合的音乐作品,很多人都引入了Evolution Method来做一个筛选。让算法把不好的方案移除,并从过程中演化出新的解决方案。然而这种方案的弱点也十分明显,如何定义一个「好的方法」,假如我引入了太多的规则,会不会出现过于单调?以及最重要的问题——音乐的跌宕起伏感如何表达?
5.5 Hybrid Systems
基于单一算法模型的程序很少可以成功创建令人满意的结果。因而,往往通过组合各种方法,来形成混合的系统,用于音乐的生成。比较经典的,例如Deepjazz的方法是用LSTM(一种Sequence to Sequence Learning)生成一些东西,再结合遗传算法来对结果进一步优化,筛掉一些效果不好对音乐。
limber注释:然而LSTM生成的东西其实是没有什么可解释性的。你跟我说你Learn from the sequence,那好我问你,你到底Learn了啥?谁都答不上来。但是为了make sense,引入了遗传算法来进行演化推动进行,筛掉一些效果不好的音乐,然而问题其实还是很明显,遗传算法该通过如何的套路来进行筛选?你凭什么说这个音乐是“好听的?”。假如你投入很多的规则进去,那么你得到的东西不过是“符合这些规则”的结果而已。
6 算法作曲前端技术栈
想要玩转生成艺术以及算法作曲,我们需要掌握canvas,webgl,glsl等,这里介绍一些比较容易入手的前端技术。
6.1 p5.js
Processing的JS版本。适合艺术家/设计师使用的前端框架,简单几个命令就可以完成艺术创作。
https://p5js.org/
6.2 sketch.js
另一个类似于p5.js的简单易用的创意编程JS框架。
https://github.com/soulwire/sketch.js
6.3 gif.js
我们有时需要导出生成结果,利用前端生成GIF动图的JS库可以方便地导出GIF。
https://github.com/jnordberg/gif.js
6.4 A-Frame
threejs的高级封装库,3d图形的生成,或用于AR、VR。
https://aframe.io/
6.5 blotter.js
用着色器语言生成字体特效。
https://blotter.js.org/ 6.6 tonejs
Tone.js是一个在浏览器中创建交互式音乐的框架。
https://tonejs.github.io/
6.7 wavesurfer.js
wavesurfer.js是一个用于音频波形可视化的框架,基于Web Audio API和HTML5 Canvas构建。
https://wavesurfer-js.org/
6.8 magenta.js
magenta.js是一个基于TensorFlow.js构建的,在浏览器中使用WebGL加速运行的,用于通过Magenta模型生成音乐和艺术的JS框架。包括MusicVAE,MelodyRNN,DrumsRNN和ImprovRNN。
https://github.com/tensorflow/magenta-js
7 需要了解的深度学习技术
7.1 技术核心RNN
RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。例如时间序列数据,是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。一个显著的特点就是后面的数据跟前面的数据有关系。借鉴了在文本生成,手写和素描等领域的以RNN为技术核心的探索,将这个想法应用到音乐中诞生了乐曲旋律自动补全工具magenta,一个旋律自动补全工具。这个技术最明显的应用是自动完成,设定音乐旋律的开头部分,让机器即兴地延续。
7.2 NSynth神经合成器
Neural Audio Synthesis
NSynth可帮助音乐工作者,藉由直觉控制各种声音表情与强弱,同时模拟不同乐器的声音,任意排列组合于创作之中。
其所使用的数据集是一组大量的带标记的音符,从各个乐器的音高和速度范围采样。对比传统语音合成器借助手工设计的组件比如振荡器(oscillator)和波表(wavetable)生成语音;NSynth 则是通过从超过30万的数据中直接学习,获取特征。
7.3 WaveNet
WaveNet: A Generative Model for Raw Audio
在2016年,Google旗下DeepMind实验室推出了WaveNet深度神经网络,用于“生成能够产生比现有技术更好、更逼真的,语音原始音频波形”。Google利用WaveNet技术,以英文/日文更新了Google Assistant的语音功能,可选择男性或女性。对于音乐生成,跟语音的合成是类似的。了解下WaveNet,它是一个端到端的TTS(text to speech)的生成模型,类似于早期的pixel RNN和Pixel CNN,声音元素是一个点一个点生成的。在WaveNet中最重要的概念就是带洞因果卷积(dialated causal convolutions)。因果卷积的意义就是WaveNet在生成t时刻的元素时,只能使用0到t-1时刻的元素值。
7.4 WaveGAN
生成对抗网络被广泛用于合成逼真图像,但是在音频生成领域几乎没有进行过探索。18年年初WaveGAN被提出,WaveGAN可以从人类语音的小词汇中产生可理解的单词,以及合成来自其他领域的音频,例如鸟类发声,鼓和钢琴。
WaveGAN基于在图像合成中的应用而闻名的DCGAN架构,是一种对音频合成的新的解决方案。
也许某一天我们打开音乐app,所播放的都是AI根据我们的心情即时创作的音乐。
以上为全文。