人工智慧作曲、演算法作曲指南
mixlab無界社群裡曾經討論過一個話題:
在移動端APP設計中,很少考慮音效,是不是因為音效的創作成本太高,如果用AI自動生成音效優化ux的體驗,此方案的可行性如何?
為了探索AI自動生成音效的方法,我“抓”了limber一塊完成了此篇內容,給大家介紹演算法作曲相關的技術,涉及生成藝術相關的技術、產品、體驗,著重梳理了核心技術及創意玩法。
作者們:
shadow
跨界設計師 / 全棧工程師 / 智慧產品架構師 /...
limber
機器學習研究員 / 古典音樂Composer/">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(領域特定語言),然後用它來創作易於理解的音樂作品。文法經常包含巨集觀層次的規則,例如和聲和節奏。( ofollow,noindex">mixlab此前更新過一篇建築生成中用Grammars方法來生成的文章,可點選進一步瞭解 )。
5.4
E volutionary 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根據我們的心情即時創作的音樂。
以上為全文。
近期活動推薦 :
快!TensorFlow、黑客馬拉松、DevFest千人大會 ,GDG DevFest 2018在召喚你
--------------------------------------
mixlab 無界社群 是一所面向未來的實驗室,它提倡“ 跨界創新,開放成長 ”的理念。
—— 跨界 開放 互助 學習 思維 創新。
目前社群彙集了1500+跨學科人群, 主要來自GoogleBrain、微軟、華為、阿里魯班、騰訊、曠視、三角獸、物靈科技、眾安保險、美團、360等科技人才、設計師及CEO和投資人; 高校分佈MIT、Oxford、Cambridge、CMU、UoM、清華、上交大、同濟等學生及教師群體; 學科跨越機器學習、自然語言處理、量化交易、物聯網、區塊鏈、前端、後端、產品經理、UI設計、建築設計、服裝設計、珠寶設計、音樂、藝術等。
社群典型的使用者技能為:
ML00:小程式開發、AI+設計
ML04: 演算法作曲
ML05:AI變臉
ML07:WebGL+Three.js資料視覺化
ML14:增長黑客
ML16:機器學習
ML37:AR
ML41:人工智慧+音樂
ML44:珠寶設計+引數化設計
ML83:量化交易、數字貨幣交易
ML109:Arduino、processing
ML113:人工智慧+服裝設計
ML206:VR/AR
ML245:建築設計智慧化
詳細介紹 點選以下卡片:
mixlab期待您的加入!
讓你具備無限可能……
不 讚賞 下?
不 點下廣告 ?
不 轉發 下?