井音吉,李圣辰
(北京郵電大學 電子工程學院,北京 100876)
當下人工智能技術飛速發(fā)展,在很多領域都已經取得了超越人類的成績,人們進而思考計算機是否可以像人類一樣進行如美術創(chuàng)作、音樂創(chuàng)作等藝術創(chuàng)作.計算機自動作曲其實是算法作曲的狹義概念,從廣義上來說,算法作曲是指在創(chuàng)作音樂時,利用算法思維對音樂要素進行合理地組織,從兩兩音符的音程關系到音樂的音樂結構都符合音樂的邏輯.計算機應用普及后,人們將算法的思想寫為計算機語言,利用計算機來實現算法的功能,目前的算法作曲系統(tǒng)也都是利用計算機進行生成音樂,所以目前自動作曲可以認為就是算法作曲.計算機自動作曲的歷史可以追溯到1959年,Hiller等[1]利用計算機自動地作曲,隨后Xenakis[2]創(chuàng)作了使用隨機模型來學習音樂特征順序進而生成音樂的系統(tǒng).1981年,作曲家Cope[3]開始了音樂智能實驗(Experiments in Musical Intelligence,EMI),他利用計算機來學習自己創(chuàng)作的樂曲,試圖為自己創(chuàng)作音樂提供靈感,隨后Cope發(fā)現該系統(tǒng)同樣可以學習生成不同風格的音樂.自Cope的EMI系統(tǒng)得到關注后,對計算機自動作曲的研究有了顯著的增長,大量的方法被用到音樂的生成系統(tǒng)中,如隨機過程、啟發(fā)式算法以及人工神經網絡等.時至今日,谷歌的Magenta項目利用深度學習的方法來生成音樂.目前有大量的文章提出了各種各樣的算法與系統(tǒng)來實現自動作曲,同時也有多篇綜述文章對自動作曲技術進行回顧,2000年,Diaz-Jerez[4]將自動作曲方法從數學的角度進行劃分,將2000年前的自動作曲方法分為隨機過程算法(其中主要利用了馬爾科夫鏈)、混沌理論、利用噪聲的方法、數論、細胞自動機以及進化算法幾類.Nierhaus[5]在2009年對自動作曲做了詳盡的綜述,該綜述先對算法的歷史做了回顧,從算法的產生講到計算機實現算法的發(fā)展,最后再到計算機作曲系統(tǒng)的產生,作者從哲學以及自然科學的角度進行了闡述,接著作者以不同算法為分類方式將自動作曲算法分為了馬爾科夫模型、生成語法模型、轉移網絡、混沌理論、進化算法、細胞自動機、人工神經網絡和機器學習等類型,針對每一種分類作者給出了算法的簡單介紹并列舉了一些典型的系統(tǒng).Fernndez[6]于2013年引入了人工智能(Artificial Intelligence,AI)的概念對自動作曲進行綜述,說明人工智能的概念已經在作曲中形成,該綜述依然是利用不同的算法進行分類.Lopez-Rincon[7]在對AI生成音樂的綜述中介紹了用深度學習、生成對抗網絡這些最新的人工智能方法生成音樂的方式.Briot[8]更是直接對利用深度學習生成音樂的方法進行了回顧,總結了現有的典型的深度學習系統(tǒng)及其在音樂自動生成上的應用.針對自動作曲的綜述不止有從算法上進行分類的,Herremans[9]在算法分類基礎上更細化地從生成的音樂特征角度,將自動作曲分成了生成旋律、和聲、節(jié)奏的系統(tǒng);作者還從系統(tǒng)是否有與人的交互、是否表達了情感以及生成的樂曲是否可以用器樂演奏對自動作曲系統(tǒng)進行了分類.Liu等[10]的綜述將作曲分成3個組成部分,分別是旋律、伴奏以及曲式,并且分別從這3個角度對計算機自動作曲進行了回顧.
通過對以上自動作曲文獻綜述的回顧,可以發(fā)現自動作曲伴隨著各種算法的發(fā)展而發(fā)展,尤其是近年來深度學習算法的成功應用,利用深度學習生成音樂的結構也層出不窮,而以往的綜述文章往往只針對系統(tǒng)來對計算機自動作曲進行回顧,并沒有完全對計算機實現音樂生成的系統(tǒng)進行介紹,使得人們無法全面地理解計算機自動作曲系統(tǒng)的工作流程,因此本文在Kirke提出的“針對音樂表現力的計算機系統(tǒng)”模型基礎上,總結得到了“計算機自動作曲系統(tǒng)”模型,利用該模型,人們可以了解到計算機如何實現自動作曲,以及實現自動作曲需要的技術.但本文并沒有詳細介紹每個系統(tǒng)的工作原理,這是本文的局限性.
在對生成具有表現力的音樂的計算機系統(tǒng)進行回顧時,Kirke[11]提出了一個可以涵蓋絕大多數系統(tǒng)的模型,該模型包含了“樂曲樣本”、“樂理分析”、“音樂背景”、“模式識別”、“音樂理論”、“樂器模型”和“聲音合成”7個部分,如圖1(a)所示.在此模型的基礎上,本文提出了“計算機自動作曲系統(tǒng)”模型,如圖1(b)所示.“音樂樣本”指的是現有的音樂數據,這些音樂可以是音頻格式的或者是符號格式的.將音樂樣本輸入到“音樂分析”模塊中,音樂分析有兩個功能:首先是對音樂樣本進行處理,給計算機提供可以進行分析的數據;其次,該模塊還從樂理的層面對樣本進行分析,分析音樂的結構,比如韻律的結構、旋律的結構與和聲的結構.“音樂背景”模塊在計算機自動作曲系統(tǒng)中指的是一首樂曲所包含的情緒或者是風格,情緒可以是歡快的,也可以是悲傷的;風格可以指某一特定風格的樂曲比如爵士樂、古典樂和搖滾樂,也可以是指中國音樂、西方音樂.“作曲系統(tǒng)”和“作曲理論”是密不可分的,可以進行學習的系統(tǒng)接受“音樂背景”、“作曲理論”的信息進行學習用來改進作曲理論,“作曲理論”是整個模型的核心,它包含了一系列的規(guī)則來控制樂曲的表現力,這些規(guī)則可以由“作曲系統(tǒng)”學習得到也可以直接由樂理知識得到,進而指導計算機生成音樂.“承載媒體”指的是計算機系統(tǒng)得到的音樂的承載格式,多數系統(tǒng)是生成符號形式的音樂,也有系統(tǒng)直接生成音頻形式的音樂.然后“音樂評價”模塊對生成的音樂進行評價并反饋給作曲系統(tǒng),從而提升系統(tǒng)的性能.
無論是人類還是計算機都需要根據已有的音樂進行學習,進而創(chuàng)作音樂,這些被學習的音樂就叫做音樂樣本.音樂的記載形式有很多種,從早期的樂譜到之后的模擬音頻存儲,如黑膠唱片、磁帶,再到現代廣為使用的數字音頻文件如MP3、WAV格式的音樂,以及為了解決電聲樂器之間通信而提出的樂曲數字接口(Musical Instrument Digital Interface,MIDI).針對計算機自動作曲,音樂大致可以分為兩種格式:一種是音頻波形格式;另一種是符號格式.
音頻信號是音樂最直接的表示方式,其可以是原始音頻信號(波形),也可以是通過傅里葉變換處理的音頻頻譜.音頻信號的生成一直是一個極具挑戰(zhàn)的任務,原始音頻信號的維數往往與有效語義級信號的維數相差很大.一般地,原始音頻信號的高維性首先通過將其壓縮成譜特征或手工設計的特征來處理,并在這些特征上定義生成模型.然而,當產生的信號最終被轉成音頻波形時,樣本質量往往會下降,需要大量且專業(yè)的校正工作.目前利用音頻波形信號作為樣本輸入生成音樂的研究有文獻[12-16].Amiot等[17]利用了離散傅里葉變換在頻譜上改變音樂的節(jié)奏.因為音樂需要更多考慮的是音樂要素之間的排列關系,而這些音樂要素可以用符號進行描述,并且人類也是基于符號化的音樂要素進行作曲的,所以目前自動作曲多是考慮符號化的音樂樣本.
目前大多數生成音樂的系統(tǒng)和實驗都側重于符號表示,音樂樣本有很多符號化存儲格式,每個系統(tǒng)使用的符號表示也不盡相同,下面我們總結最常見的幾種符號表示形式.
2.2.1 MIDI
她仰頭靜靜看著我,臉色蒼白而憔悴,唇邊仍滲出血跡,手帕觸碰到嘴角,她身體發(fā)出輕微顫抖。她一定需要溫熱的液體安定悲傷的中樞神經,我起身走到桌邊,在玻璃杯里放了兩朵胎菊,以沸水沖之,邊墊上茶托移到她面前邊說:“小心燙?!?/p>
MIDI,即樂器數字接口,是20世紀80年代初為解決電子樂器之間的通信問題而提出的.MIDI是編曲界最廣泛的音樂標準格式,可稱為“計算機能理解的樂譜”.MIDI中存儲的是控制音符參數的指令,比如控制音符起始、音高、音量大小等.這些指令以十六進制存儲,圖2展示了一個音符在MIDI中的形式.MIDI是符號化音樂樣本中最流行的格式,存在著大量的資源,目前大多數自動作曲系統(tǒng)都使用MIDI音樂作為音樂樣本[18-21].
2.2.2 文本
音樂可以用文本表示,并作為文本處理,如MusicXML和ABC記譜法.和MIDI不同,文本格式的音樂方便易讀,并且可以很清楚地表明音樂的要素,如小節(jié)的表示.Sturm等[22]就在凱爾特人音樂生成系統(tǒng)中采用了ABC記譜法,并且對ABC記譜法做了一些改動,使之可以表達更為豐富的音樂信息.
2.2.3 功能譜(Lead sheet)
功能譜是流行音樂(爵士、流行等)一種重要的表示格式.一個功能譜的一頁或幾頁就能表達出一段完整的音樂,并且可以表示指定相應和弦標簽(和聲)的注釋,也可以添加歌詞、作曲家名字、風格和節(jié)奏等信息.Eck等[23]的藍調生成系統(tǒng)就利用了功能譜格式的音樂樣本作為輸入樣本,Liu等[24]則直接生成了功能譜格式的音樂.
2.2.4 數據集
用于自動作曲研究的常用數據集見表1.
表1 自動作曲常用數據集Tab.1 Common datasets for automated composition
1) 獨熱編碼(One-hot encoding):要將音樂信息交給計算機來處理,首先需要將音樂信息數字化.為了解決此問題,我們可以利用獨熱編碼.獨熱編碼的思想是定義一串二進制數,該二進制數長度等于待賦值對象的類別數,二進制數中只有一位是“1”,其余均是“0”.對于用“piano roll”表示的音樂,其本身自然以one-hot的方式展現;對于用“類MIDI形式”表示的音樂,可以對每一個音符事件進行one-hot編碼.
處理MIDI格式的音樂需要一些特殊的工具來提高效率.下面介紹一些常用的處理MIDI格式音樂的第三方程序包(即在計算機程序語言如python中,利用該程序包可以很方便地處理MIDI格式的音樂):Mido是較為基礎的處理包;pretty-midi是Raffel等[31]在mido基礎上進一步簡化了操作方式,按軌來處理信息,處理方式更加直觀,目前谷歌Magenta項目就是基于pretty-midi處理MIDI信息的,python-midi對MIDI的操作很全面,但是操作方式不是很直觀;music21是一個較為完善的處理包,不僅可以進行MIDI生成,也可以顯示樂譜等.以上程序包都是基于python程序語言的,每種程序包各有優(yōu)勢,研究者可以選擇合適的程序包使用.
音樂分析模塊接受音樂樣本,會對音樂樣本進行預處理并分析其音樂結構.預處理將格式各異的音樂樣本處理為計算機易處理的數據形式,分析音樂的結構信息如節(jié)拍、小節(jié)以及樂句,并將這些結構信息作用于作曲系統(tǒng)上,使生成的音樂具有更好的質量.
1) 鋼琴卷簾窗(Piano roll):將音樂信息轉換為piano roll是最常見的方式之一,鋼琴卷簾窗如圖3(a) 所示,橫坐標代表音符持續(xù)時間,縱坐標代表音高值(音高值與鋼琴鍵音高相對應),目前常見的做法是取十六分音符作為最小的時長單位,將音樂劃分成piano roll,但這種方法無法區(qū)分同一音高下,該音符是一個長音符還是多個短音符相連.因此,還需添加一個維度的信息表示該音符是否與先前的音符相連.使用piano roll表示的優(yōu)點在于:表示后的音樂既可以看成是由音符組成的1-D序列信息,也可以將一段音樂的piano roll看成一個整體,作為類似圖像的2-D信息,這樣就可以適應不同算法的輸入要求.
2) 類MIDI形式的表示:該方法利用類似MIDI中音符事件“始”或“終”的形式,將音樂表示為一連串的音符事件信息,該形式沒有piano roll直觀,但是可以表示出更豐富的音樂信息,比如可以添加音樂力度和音符時移,進而添加音樂表現力信息.圖3(b)所示為文獻[32]中采用的類MIDI表示方法.
藥敏結果采用WHONET5.6進行數據分析;采用SPSS19.0進行統(tǒng)計分析,計數資料采用例和構成比(%)描述,組間比較采用 χ2檢驗,P<0.05 為差異具有統(tǒng)計學意義。
2.2.5 符號音樂處理工具
2) 詞嵌入(Word embedding):使用one-hot編碼得到的數據簡單明了,但當數據類別分布不均勻時,會使得one-hot編碼后的數據過于稀疏,并且當數據類別較多時,會使輸入數據的維度過大,這兩點都會對算法的性能造成影響;此外,one-hot編碼不能很好地描述不同類別輸入數據之間的關系.為了解決以上問題,人們引入了詞嵌入技術.詞嵌入技術將一個高維向量空間嵌入到一個維數低得多的連續(xù)向量空間,這樣不僅會有效地解決輸入數據維度的問題,還可以通過訓練,使得相關的詞語的詞向量之間建立關聯(lián).
音樂分析的另一個作用是分析音樂數據中的音樂結構,將結構信息送入系統(tǒng)使得系統(tǒng)更好地生成音樂.人們根據樂理知識定義如小節(jié)或者樂句等結構,并選用特定的符號標注在音樂數據中.Makris等[33]提出的系統(tǒng)可用來生成節(jié)奏序列,并且在生成的過程中添加低音線和節(jié)拍作為條件信息來表示是否開始了新的小節(jié),實驗表明系統(tǒng)在添加了這種條件后提高了生成的音樂的質量.Lattner等[34]根據拍號來定義在重拍的時候需要有音符開始,如四四拍的音樂,在生成音樂時,就需要在第1拍和第3拍有新的音出現,該系統(tǒng)同樣為音樂的整體結構提供了限制信息,比如AABA的結構.Deepbach系統(tǒng)[35]用到了延音記號,可以幫助生成更連續(xù)的樂句.
基于規(guī)則的自動作曲系統(tǒng)能讓人們根據音樂理論知識定義一系列規(guī)則,并用此規(guī)則指導音樂要素的排列與組合,這些規(guī)則可以限定音高的范圍,節(jié)奏的排列以及和弦的進行.Steedman[39]設計了一種生成爵士風格和弦序列的語法,利用該語法可以將最初的樂句重寫成新的音樂樂句.鄧陽等[85]將伊·斯波索賓的和聲理論體系與動態(tài)規(guī)劃相結合,基于和弦進行的邏輯優(yōu)化目標函數,根據旋律生成和弦.Quick等[86]提出了針對和聲與韻律結構的生成語法,該語法利用樂句的時間來參數化規(guī)則,利用共享節(jié)點的圖結構生成重復的樂句.Herremans等[83]結合了巴洛克時期奧地利作曲家Johann Fux的理論來生成旋律,他們在目標函數中利用了這些規(guī)則,并且使用了變鄰域搜索算法來加強規(guī)則之間的緊密性,隨后Herremans等[87]又添加了新的規(guī)則并擴展了系統(tǒng).
1) 由人將某一風格的固定規(guī)則、情緒涉及到的音樂心理學知識應用到作曲系統(tǒng)中.Zhu等[36]利用一種交互式的遺傳算法來生成具有特定情緒的音樂,他們采用了演奏家演奏樂譜時的規(guī)則[37]系統(tǒng)作為評價規(guī)則,該系統(tǒng)模擬了音樂家使用的演奏原則.Onisaw等[38]使用了一種交互進化算法生成快樂或悲傷的旋律來反映用戶的感受,他們得到的結論是歡快的旋律比悲傷的旋律更難評估,因為前者需要考慮更多的因素.同樣可以根據某種音樂風格的特定性,定義相應的規(guī)則加入作曲系統(tǒng)中來生成具有某一特定風格的音樂.Steedman[39]設計了一種生成爵士風格和弦序列的語法,利用該語法可以將最初的樂句重寫成新的樂句.Jaques等[40]在循環(huán)神經網絡自動作曲系統(tǒng)后添加了強化學習部分,在強化學習中加入音樂理論來指導生成特定風格的音樂.
2) 要想利用規(guī)則指導系統(tǒng),系統(tǒng)設計者需要對情緒與音樂的關系以及音樂風格特點有著很好的理解,需要專業(yè)的音樂理論基礎,實現難度較大.另一種獲得某種特定風格音樂的方式是直接從音樂樣本中學習音樂的風格與情緒信息,讓系統(tǒng)在某一特定風格的音樂數據中進行學習,進而生成對應風格的音樂.目前很多研究選用巴赫風格的鋼琴曲作為音樂樣本,Liang[30]的BachBot系統(tǒng)與Hadjeres等[35]的DeepBach系統(tǒng)都是直接用巴赫鋼琴曲訓練系統(tǒng)來生成巴赫風格的音樂.
第四,要注意雞群非特異性的抗病力提高。在疾病發(fā)生的過程中,除了外界的環(huán)境和病原因素外,雞群自身的抗病水平也是一個重要的因素。這就要求我們養(yǎng)殖場要加強雞群的保健工作,保健的目的就是要通過使用適當的手段調節(jié)雞群的免疫系統(tǒng),增強免疫系統(tǒng)的機能,完善機體非特異性免疫屏障。當前行之有效的方案是使用促進免疫力,扶正驅邪的中藥同時輔以生物制劑的使用,提高機體的免疫力和抗病力,以達到減少發(fā)病的目的。
該模塊還為另一項音樂生成的任務提供了信息,即音樂風格轉換.將已有的音樂轉換為另一種風格并不直接生成音樂元素,而是通過改變原音樂中的音樂元素來改變風格.Dai等[41]對音樂風格轉換進行了綜述,給出了音樂風格轉換的定義、重點問題和難點問題.Nakamura等[42]利用機器翻譯的思想,在音樂語言模型基礎上提出了風格統(tǒng)計公式來進行風格轉換,并且修改模型來表示原有音樂與轉移風格后音樂的相似性.
與其說這些公關危機是D&G所謂的因為不了解中國而產生的誤會,不如說暴露了其深入其骨髓的以自我為中心和對中國的刻板成見。誠如網友所言,他們口口聲聲說“愛中國”,不過是愛中國的錢罷了。
從數學和物理學角度來看,難以預測的系統(tǒng)特定狀態(tài)稱為“混沌”.狹義的混沌理論也稱為非線性動力學理論,建立混沌模型的數學系統(tǒng)可以是用非線性差分方程表示的迭代系統(tǒng),也可以是連續(xù)流,用非線性微分方程表示,其中軌道是連續(xù)的、不間斷的曲線.利用混沌系統(tǒng)來生成音樂的原理就是建立混沌理論與音樂之間的映射關系,這涉及到了數論、分形學、邏輯方程等一系列數學知識,近年來已經鮮有文章對此進行研究,已有利用混沌理論進行自動作曲的研究見文獻[43-48].
Von Neumann等[49]提出了細胞自動機的概念,該模型以生物的自我繁殖機制為基礎.細胞自動機中一切都是離散的,也就是說系統(tǒng)中空間、時間和屬性只能是有限狀態(tài)的.細胞自動機有兩個最基本的性質:
1) 一個規(guī)則的n維晶格,晶格中的每個細胞在給定的時間都有一個離散的狀態(tài);
2) 由一組規(guī)則控制的動態(tài)行為.這些規(guī)則根據相鄰單元格的狀態(tài)決定后續(xù)時間步驟的單元格狀態(tài).
圖3為冷氣循環(huán)流程。冷氣循環(huán)流程是指當通過壓縮機的操作點達到S2時,為防止壓縮機操作點接近或達到S1,從壓縮機出口冷卻器或分離罐的下游將壓縮機出口氣體通過喘振控制調節(jié)閥循環(huán)到壓縮機入口,增大壓縮機流量以避免喘振工況的發(fā)生。相對于熱氣循環(huán)系統(tǒng),冷氣循環(huán)系統(tǒng)流程使壓縮機出口管道系統(tǒng)有較大的容積,由于較大的管路系統(tǒng)體積,系統(tǒng)各參數的變化相對較慢(主要為壓力、溫度參數),喘振系統(tǒng)獲得變化的工藝信號的時間相對較長,在一定程度上降低了壓縮機喘振系統(tǒng)的反應速度,不利于在壓縮機緊急停車時喘振的控制。但在壓縮機啟動過程中,在一定程度上延長了啟動時的循環(huán)時間,降低了對壓縮機啟動時間的限制要求。
細胞自動機中的細胞就像存儲設備,存儲自動機的狀態(tài).最簡單的情況是每個細胞只有兩種可能的狀態(tài),通常是0(“死”)或1(“活”);在更復雜的細胞自動機中,細胞可以有更多的狀態(tài).控制細胞自動機動態(tài)行為的規(guī)則作用于晶格中的每個細胞,并考慮到每個細胞相鄰細胞的狀態(tài).圖4(a)解釋了細胞自動機的工作原理,圖中的最小方塊結構代表一個細胞,其中:黑色方塊代表“1”,白色方塊代表“0”,最上面有8個大的矩形,每個矩形中有4個細胞,上面3個細胞代表當前時刻的細胞以及該細胞左右兩邊的細胞的狀態(tài),即是“黑色”還是“白色”的方塊,下面的一個方塊則是該細胞在此規(guī)則下下一個狀態(tài)的輸出,如第1個矩形代表著當前時刻細胞的狀態(tài)為黑色,左邊細胞的狀態(tài)為黑色,右邊細胞的狀態(tài)為黑色,輸出為黑色.我們稱該圖展示的細胞自動機的規(guī)則為150規(guī)則,因為下面一列輸出的0與1組合對應的十進制數為150,圖中呈三角形結構的則是在150規(guī)則下細胞自動機進化時的每一行的輸出.
利用細胞自動機進行自動作曲可以將細胞與音高建立映射,進化的每一行表示一個節(jié)拍,這樣細胞自動機每次輸出的結果就代表著一個節(jié)拍的音高.Beyls[50]最先將細胞自動機應用在自動作曲,他為定義相鄰的細胞建立了其他方法.此外,在計算下一個狀態(tài)時,他考慮了單元格以前的更多狀態(tài),將人們選擇的音高分配給細胞從而建立音高與細胞的映射關系.如果進化的下一步音高值不變則該進化的時間為該音符的時值.隨后Beyls[51-52]引入了2維細胞自動機,能夠實時更改不同的參數來生成音樂,并將細胞自動機與遺傳算法結合起來.Millen[53-54]用1維到3維細胞自動機自動生成音樂,其中MIDI中音高值和持續(xù)時間值被映射到了細胞上.Orton等[55]在細胞自動機上用了交互式的方式生成音樂.利用細胞自動機自動作曲的弊端在于無法生成特定風格的音樂,因為很難利用細胞自動機去分析語料庫中的信息.
隨機過程用來描述一系列依賴于時間隨機事件的關系,這組事件稱為“狀態(tài)空間”,而這組參數稱為“參數空間”.如果一個隨機過程的狀態(tài)是有限的,那么這個隨機過程被稱作隨機鏈,在隨機鏈中每個離散時間t都有一個隨機變量x.馬爾科夫鏈就是一種特殊的隨機鏈,馬爾科夫鏈中的下一個時刻狀態(tài)Xt+1與且僅與當前狀態(tài)Xt有關,從tm時刻的狀態(tài)Xtm=i到tm+1時刻的狀態(tài)Xtm+1=j的概率為
P(Xtm+1=j|Xtm=i)=pij(tm,tm+1).
(1)
馬爾科夫鏈還可以用狀態(tài)轉移圖(圖4(b)),或者轉移概率矩陣(圖4(c))來表示.在自動作曲中,轉移概率矩陣表示了音樂要素(如音長、音高)之間的關系,進而可以利用這種關系生成樂曲,使用的概率矩陣可以通過統(tǒng)計已有音樂數據庫得到.Pinkerton等[56]最先使用馬爾科夫模型進行音樂創(chuàng)作,他們根據39首簡單的童謠的語料庫建立了一個1階馬爾科夫模型“Banal Tune-Maker”,該模型可以生成類似于該童謠風格的音樂.近期Ackereman等[57]創(chuàng)造了ALYSIA系統(tǒng)來幫助人們生成旋律和歌詞,ALYSIA系統(tǒng)使用隨機森林的方式來訓練馬爾科夫模型.馬爾科夫模型是自動作曲中很常用的方式,利用馬爾科夫模型來生成旋律的研究可見文獻[56,58-66],利用馬爾科夫模型生成和聲的研究可見文獻[2,28,67-74],利用馬爾科夫模型進行音樂節(jié)奏生成的研究可見文獻[75-76].
但是馬爾科夫模型也有一些缺點,如輸出音樂的風格和質量在很大程度上取決于語料庫的性質,在構建較長的序列上效果并不是很好,并且如果使用高階馬爾可夫模型,那么一個經常被忽視的缺陷是高階馬爾可夫模型不能準確地描述低階模型中提供的信息,盡管如此,馬爾可夫模型還是很適合某些音樂任務.
遺傳算法作為一類特殊的進化算法,是一種基于自然界系統(tǒng)建模的隨機搜索的策略.算法基本模型的靈感來自達爾文的進化論,解決問題的策略源于類似生物進化中的染色體交叉、變異等過程.遺傳算法的術語包括“選擇”、“突變”、“適者生存”等,這些術語體現了算法的原理以及它們與生物選擇過程的密切關系.遺傳算法在計算機中模擬進化過程,可以用來解決那些難以進行數學建模的任務或沒有明確的優(yōu)越規(guī)則系統(tǒng)的問題.下面先介紹一些遺傳算法中的基本概念,通常把亟待解決的問題以數學方式建模為數學問題,那么這個問題的一個可行解被稱為一條“染色體”;一個可行解中的元素或者變量被稱為該染色體上的“基因”;用“適應度函數”來評價染色體的優(yōu)劣;“交叉”是指兩條染色體上的基因進行互換;“變異”是指隨機修改染色體上的基因;“復制”是指將適應度最高的幾條染色體直接原封不動地復制給下一代.整個遺傳算法的實現過程如圖5所示,算法的過程描述如下:
2018年年初,16歲華裔天才少女朱易奪得全美花滑錦標賽新人組女單冠軍,超出第2名高達35分,成為令西方矚目的新星。然而,她卻毅然放棄在美國的發(fā)展機會,9月底加入中國國家隊,成為偶像——“冰上蝴蝶”陳露的弟子,力爭沖刺2022年北京冬奧會,為祖國奪金。而在這背后,是“科學大神”父親的夢想,一直在激勵著她!
1) 隨機產生n條染色體的起始種群;
序列到序列模型(Sequence to Sequence,Seq2Seq)在機器翻譯任務中被提出,解決了源語言語句與目標語言語句長度不同的問題[101].Seq2Seq包含了一個編碼器(encoder)和一個解碼器(decoder),編碼器對源序列進行編碼得到一個維度相對低一些的中間向量,解碼器根據該中間向量得到對應的目標序列,這種翻譯模型要求數據是成對的,并且成對的數據間需要存在聯(lián)系,對于音樂來說,和弦進行與旋律、節(jié)奏型與音高線,或者復調音樂中的不同聲部都是互相關聯(lián)的序列信息,并且這些序列并不一定都是等長的,所以利用Seq2Seq可以有效地構建這種關系.微軟[102]利用Seq2Seq生成流行音樂,根據流行音樂和弦進行影響旋律、節(jié)奏型影響旋律的特點提出了基于和弦的節(jié)奏和旋律交叉生成(Chordbased Rhythm and Melody Cross-Generation,CRMCG)模型,該模型包括音高編碼器、節(jié)奏編碼器、和弦編碼器3個編碼器,還包括音高解碼器和節(jié)奏解碼器2個解碼器,生成節(jié)奏時將上一時刻的節(jié)奏與音高送到對應的編碼器中進行編碼,再將編碼后的輸出送入節(jié)奏解碼器中得到當前時刻的節(jié)奏輸出,生成音高時同理,區(qū)別在于生成音高時解碼器會接受和弦編碼器的信息.在這樣生成旋律的基礎上,文獻[102]還提出了基于多任務學習的多樂器聯(lián)合編曲(Multi-Instrument Co-Arrangement generation,MICA)模型,并且取得了很好的效果,生成的音樂通過了圖靈測試.
3) 選擇操作舍棄適應度低的染色體,保留適應度高的染色體,并決定哪些染色體進行“復制”操作,哪些進行“交叉”操作,哪些進行“變異”操作;
第二天,越秀在書桌上發(fā)現一大堆碎紙,這紙都是秀容月明用來練字的,跟往常不同,秀容月明都把紙撕了。越秀拼湊了幾張,也沒瞧出他寫的是什么字。
4) 經過“復制”、“交叉”和“變異”操作后得到下一個種群;
5) 重新計算適應度,并進行迭代,直至得到輸出結果.
利用神經網絡自動作曲的原理是將數據輸入給神經網絡,定義神經網絡輸出與音樂要素的映射關系,定義預期輸出結果,訓練神經網絡使得神經網絡輸出逐步接近預期值,訓練完成后,將神經網絡的輸出映射為音樂要素,進而得到音樂.目前有很多研究利用了不同結構的神經網絡進行自動作曲,這些結構又大致可以分為兩種:一種是選取不同類型的神經網絡,針對不同類型神經網絡的特點對音樂數據進行分析建模,如使用循環(huán)神經網絡(Recurrent Neural Network,RNN)、卷積神經網絡(Convolutional Neural Network,CNN)以及使用了Self-Attention機制的神經網絡,這里不同類型的神經網絡是作為一種特征提取器,目的是從大量的音樂信息中提取到重要的信息;另一種是選取不同的深度學習模型來對音樂建模,如采用機器翻譯模型中的“序列到序列(Seq2Seq)模型”,或者是深度生成模型,如限制性玻爾茲曼機(Restricted Boltzmann Machine,RBM)、變分自編碼器(Variational Autoencoder,VAE)以及生成對抗網絡(Generative Adversarial Networks,GAN).這些深度學習模型中的神經網絡層又可以選取RNN或CNN等不同類型的神經網絡,所以神經網絡類型的選擇與深度學習模型的選擇對自動作曲算法都至關重要.
5.6.5 RBM
2) 隨機交換元素的順序得到Bb,F,Ab,Gb;
面對長形式圖書閱讀過程中的問題,圖書出版業(yè)結合互聯(lián)網時代閱讀的大環(huán)境,開始從供給側的角度做相應的對接。
學生乙:沿高把三角形剪成兩個小等腰三角形,拼成一個邊長為8÷2=4的正方形,如圖3,原三角形面積等于正方形面積,列式為(8÷2)×(8÷2)=16(平方厘米)。
3) 根據參考模式刪除了Gb,得到Bb,F,Ab;
4) 隨機修改首個元素得到Eb,F,Ab;
5) 將每一輪得到的結果拼接輸出可得到(Gb,Bb,F,Ab)i=1(Bb,F,Ab,Gb)i=2(Bb,F,Ab)i=3(Eb,F,Ab)i=4.
Horner等的系統(tǒng)雖然很簡單,但是得到的音樂結果很好地證明了利用遺傳算法進行自動作曲的可行性,到目前為止已經有了大量的研究利用遺傳算法進行自動作曲.Eigenfeldt[78]提出了一種基于遺傳算法的重組組合體,利用混合方法解決適應度的問題,他提出使用神經網絡分類器或者從被分析的語料庫中提取規(guī)則,從而從語料庫本身派生出適應度規(guī)則.有些系統(tǒng)的方法是建立在某一特定領域或子領域已建立的規(guī)則的基礎上的.Kunimatsu等[79]提出了一種基于遺傳規(guī)劃的音樂作曲模型.在這項研究中,他們考慮了和弦發(fā)展中布魯斯風格的抑揚頓挫的特點.他們的系統(tǒng)將遺傳算法中的樹結構中的節(jié)點用音符表示,階度用時長表示.適應度函數主要考慮兩種比較:一種是和弦和旋律中的高音的比較;另一種是尋找部分和弦級數的熵函數的相似性.文獻[80-81]利用人對生成音樂的評價作為適應度函數,而文獻[82-84]則利用遺傳算法進行自動作曲.
遺傳算法最大的問題在于適應度函數的選取,適應度評價直接影響到生成音樂的質量,所以如何選取適應度函數,以及適應度函數選取是否合理是影響遺傳算法在自動作曲領域能否有好的發(fā)展的重要因素.
在計算機自動作曲系統(tǒng)中,音樂背景指的是一首樂曲所包含的情緒或者是風格.該“音樂背景”模塊可以由兩種方式生成音樂的背景信息.
如果利用既定的規(guī)則,那么生成的音樂始終會在一個范圍內,生成的音樂會略顯單調,并且多個規(guī)則之間很有可能會相互沖突,導致算法無法進行下去.所以基于規(guī)則的系統(tǒng)往往與其他作曲算法相結合,可以利用樂理規(guī)則作為遺傳算法的適應度函數,根據樂理規(guī)則指導人工神經網絡系統(tǒng)進行學習.這樣在盡量符合樂理規(guī)則的情況下,通過其他算法引入隨機性,會大大提高生成音樂的多樣性.
當下人工神經網絡中的深度學習技術在圖像識別、語音理解、機器翻譯、文本生成等諸多領域取得了令人矚目的成就,深度學習已經成了人工智能領域中炙手可熱的技術.伴隨著深度學習技術的迅速發(fā)展,利用深度學習技術來自動生成音樂也是當下最熱門的研究方向之一.神經網絡屬于機器學習的一種,其是由神經元組成的廣泛并且互連的網絡[88].神經元采用的是McCulloch提出的“M-P神經元模型”[89],在該模型中,輸入通過帶有權重的連接傳遞給神經元,神經元將輸入與自身的“閾值”比較,再通過“激活函數”得到輸出,將這些神經元按一定的層次結構相連便構成了神經網絡.圖6(a)~(c)依次展示了神經元、激活函數和神經網絡.將神經網絡輸出和預期輸出的比較結果反饋給神經網絡,神經網絡改變連接權重使得輸出不斷接近預期輸出,這種方式稱為神經網絡的學習過程,連接權重的參數存儲著學到的知識.深度學習增加了神經網絡隱藏層的數量,閾值與連接權重等參數也隨之增加,增強了神經網絡的學習能力.
在自動作曲中利用遺傳算法則需要考慮遺傳算法過程中每個步驟對應的音樂意義,Horner等[77]首次利用遺傳算法進行自動作曲,其系統(tǒng)選擇了6種參考模式并使用“輸出的音高與參考模式音高的一致性”以及“輸出長度與預期長度的關系”作為適應度函數,如開始輸入的音高序列為Gb,Bb,F,Ab,Db,參考模式為F,Ab,Eb,則:
5.6.1 RNN
RNN是用來處理序列數據的神經網絡[90],神經網絡的隱藏層會受之前時刻隱藏層狀態(tài)的影響.音樂信息正是隨時間進行的序列數據,因此RNN很適合用來處理音樂信息.1994年,Mozer[91]的CONCERT系統(tǒng)是第一個利用RNN進行作曲的系統(tǒng),但RNN只能記憶短時間的信息,因此生成的音樂質量一般.之后Hochereiter等于2002年在RNN結構中加入了“長短時記憶單元(Long Short-Term Memory,LSTM)[92]”(LSTM在神經元中加入了“門”來控制“記憶”和“遺忘”信息,因此可以記憶更長時間的信息)來生成藍調音樂的旋律與伴奏,在生成旋律與伴奏時,先隨機選擇一個和弦作為輸入,由系統(tǒng)生成下一個和弦,再將生成的和弦作為輸入繼續(xù)送到網絡中,如此依次生成和弦序列.LSTM已經成為應用RNN進行作曲的系統(tǒng)中最常用的方法.Makris等[33]將LSTM與普通的神經網絡結合生成節(jié)奏,RNN負責學習鼓的部分,普通神經網絡負責學習低音線以及節(jié)拍的結構.Sun等[93]為神經網絡添加了樂理限制使得生成的音樂更加合理.近年來利用RNN生成音樂依然是熱門的研究方向,相關研究見文獻[35,94,96-97].
5.6.2 CNN
CNN是用來處理類似“網格結構”的數據的神經網絡[90],該網絡至少需要在網絡結構中的一層使用卷積運算.CNN首先在計算機視覺領域取得了極大的成功,在計算機視覺領域圖像被看作2維的像素網格,隨后CNN也被用在對序列數據進行建模,這時序列信息被看作在時間維度上的1維網格.Lecun在論文中首先使用了“卷積”一詞來描述其網絡結構.利用CNN進行自動作曲大多是將多聲部的樂譜轉換為鋼琴卷簾窗的表示,再將一個小節(jié)或多個小節(jié)的鋼琴卷簾窗看作一個2維的圖像,進而利用CNN在該表示下對音樂信息進行處理.Yang等[20]與Dong等[21]利用生成對抗的思想進行自動作曲,其生成器和判別器均使用了CNN.Huang等[98]發(fā)現人類在創(chuàng)作音樂的時候往往會把動機隨意地寫在各處作為草稿,而且有時會重新回到草稿上,對動機進行修改并且對動機之間進行連接.為了模仿人類作曲家作曲的特點,本文使用了卷積神經網絡來實現音樂的填補工作,用吉布斯采樣的方法來重寫樂譜.CNN因為不需要滿足RNN在時間上的串行運算關系(即上一時刻的狀態(tài)會參與到當前時刻的運算),所以CNN可以并行計算,其運算速率比RNN的較快.
5.6.3 Self-Attention
在場地方面,社工組織開展服務需要一定的場地支持。在廣州市政府頒布的《實施辦法》也明確提出“在場地設備保障方面,各街道要整合現有的街鎮(zhèn)文化站、工療站、黨員活動中心、社區(qū)星光老年之家等社區(qū)服務場地資源。通過整合、新建、置換、租賃等方式,根據實際需要,多渠道解決服務中心場地,盤活國有產權閑置場地,通過‘租金’或象征性租金的方式用于街道家庭綜合服務中心建設⑤?!边@一政策文件在一定程度上解決了社工組織開展服務所需的場地支持。
自注意力(Self-Attention)機制是從機器翻譯中Attention機制演化而來的,Attention機制通過加權求和的方式解決了翻譯問題中源語言語句與目標語言語句中單詞對齊的問題[99],Self-Attention通過加權求和的思想計算一句話中每個單詞與其他單詞之間的聯(lián)系,以此來替代RNN抽取序列信息的特征.Google[100]提出了Transformer結構,該結構完全摒棄了RNN結構,只使用了Self-Attention機制,該網絡結構可以更容易學習到每個句子中單詞的長距離依賴關系,在機器翻譯任務的表現超過了以往各種形式的RNN與CNN,并且與RNN相比,Transformer結構可以高效地并行計算.Transformer結構在自然語言處理問題上的優(yōu)異表現使得研究者自然而然地將其用在自動作曲上,其中Huang等[32]提出的算法可以減少對計算機內存的使用,使Transformer可以生成距離更長的序列.本文用改進后的Transformer來生成復調音樂,取得了很好的效果,可以從生成的音樂中明顯發(fā)現音樂結構的相似性,說明網絡學到了音樂中更長距離的依賴關系.
5.6.4 Seq2Seq
2) 計算每條染色體的適應度,決定是否結束算法;
1) 根據參考模式刪除了Db,得到Gb,Bb,F,Ab;
RBM是一種隨機人工神經網絡,由可見層和多個隱藏層組成,它可以學習輸入集上的概率分布從而實現生成功能.限制性是相對原有的玻爾茲曼機來說的,限制性體現在模型必須為二分圖,即可見層之間沒有連接,隱藏層之間沒有連接,連接只存在于可見層與隱藏層之間.RBM與自編碼器結構的區(qū)別在于:1) RBM沒有輸出層,輸入層即為輸出層;2) RBM是隨機的;3)RBM中的數值計算是布爾型的(即非0即1的操作).Boulanger-Lewandowski等[29]利用了RBM生成復調音樂,并利用數據對RBM進行訓練,訓練完成后可以通過塊吉布斯采樣對RBM進行采樣進而得到音樂.Lattner等[34]提出的系統(tǒng)使用RBM來學習樂曲語料庫的局部音樂結構,比如織體這種特性,再通過約束條件學習一些更全局的結構,例如AABA樂曲結構.
5.6.6 VAE
自編碼器(Autoencoder)是一種要求輸出層和輸入層神經元數量相等的網絡結構.自編碼器由編碼器和解碼器組成,編碼器將輸入壓縮為低維的隱藏向量,解碼器將該低維度的向量解碼為與原輸入同維度的輸出,利用這種編解碼關系,解碼器可以實現生成的功能.Bretan等[103]利用有多個隱藏層的“堆疊自編碼”自動生成旋律.VAE在自編碼器的基礎上增加了限制條件,使得隱藏層輸出的隱藏向量強制服從高斯分布,之后解碼器學習隱藏向量中高斯分布與真實樣本之間的關系.于是,在生成音樂的過程中,我們只需要給解碼器輸入一個服從高斯分布的向量,解碼器就可以生成我們需要的樣本.利用VAE的結構,我們很容易進行一些生成工作,目前也有很多研究利用VAE進行音樂的生成.現有的VAE模型很難對序列的長距離依賴關系進行建模.為了解決這個問題,Roberts等[27]提出使用分層解碼器,首先將輸入轉換為子序列的向量,然后利用這些向量獨立地生成每一個子序列.Brunner等[104]提出了基于VAE的自動作曲模型MIDI-VAE,該模型能夠處理具有多個樂器音軌的復調音樂,并結合音符的持續(xù)時間和速度對音樂進行建模.MIDI-VAE可以自動地將一首樂曲的音高、力度和樂器由古典風格轉變?yōu)榫羰匡L格,從而實現對音樂風格的轉換.Wang等[105]提出了VAE的一種新變體,即用模塊化的方式設計模型結構來生成音樂.
堅持黨的領導,是國有企業(yè)的獨特優(yōu)勢,是國有企業(yè)必須堅持的一項重大政治原則。黨的重心在基層,活力在基層。面對新時期黨組織的重大任務與責任,以抓重點、多舉措、重實效的工作思路,探索將“活力黨建”落細于企業(yè)管理,傳遞活力、動力、能力,逐步形成體系、形成文化,讓黨建成為生產經營的源泉和永動機,從而實現以黨建活力提升率先發(fā)展活力,凝聚科學發(fā)展合力,激發(fā)創(chuàng)新發(fā)展動力[1]。
區(qū)塊鏈或許有可能顛覆現有平臺,具有成為運行新模式基礎的可能性。通過從現有流程中減少中間環(huán)節(jié),減輕保存紀錄和管理交易對賬等的行政工作,就能有效降低成本。這樣,企業(yè)從降低成本中獲利,又為提供區(qū)塊鏈服務的參與者創(chuàng)造了新的收入,這個模式就可以運行起來了。
5.6.7 GAN
GAN[106]是近來深度學習技術中最熱門的研究方向之一,GAN最初用在圖像生成上,網絡由“生成器”和“判別器”兩個神經網絡組成,生成器輸入隨機噪聲得到輸出,再將“生成器的輸出”與“現實中的真實圖像”送入判別器中進行真假判斷,判斷的結果反饋給生成器和判別器,進而生成器會學習到如何生成更加真實的圖像,判別器也被逐漸訓練,可以更好地分辨圖像來自生成器還是來自真實的圖片庫中.生成器和判別器在這種對抗的訓練中達到平衡,即判別器無法判斷出圖像的來源,此時生成器可以輸出相當真實的圖像.為了解決GAN為生成序列數據時梯度無法從判別器傳遞到生成器的問題,研究者提出了很多方案,如SeqGAN[107]、ReGAN[108]、MailGAN[109]等.也有很多利用GAN的思想生成音樂的工作,如Olof Mogren[19]利用生成對抗的思想,結合RNN對時序信息處理的特性,提出了連續(xù)循環(huán)生成對抗網絡(Continuous-RNN-GAN)來生成古典復調音樂.Brunner等[110]利用GAN實現了音樂風格的轉換.CNN利用卷積的操作多用在圖像領域,但是仍然有很多研究結合CNN與GAN來生成音樂,如Liu等[24]利用循環(huán)卷積的GAN學習從功能譜和MIDI中提出的3個音樂特征,該模型可以生成8小節(jié)長的功能譜.Dong等[21]的MuseGAN使用了CNN和GAN的結構來生成音樂.為了對音樂由低緯度到高緯度的不同特征進行建模,MuseGAN把音樂分為樂段、樂句、小節(jié)、節(jié)拍和像素這5個由高至低的層級,在生成的時候逐層進行生成,每條音軌之間相對獨立的同時又需要相互配合,這樣MuseGAN的輸入為兩個噪聲向量:一個輸入給所有音軌;一個輸入給單獨的音軌.在小節(jié)的處理上采用同樣的方法,最后將所有音軌的輸出合并在一起送到判別器中訓練.同樣使用了CNN與GAN的結構還有MidiNet[20],其使用了兩種方法來保證生成音樂具有創(chuàng)造性:1) 生成器中控制因素——和聲只加在生成器中間一層卷積層中,從而降低和聲走向對旋律的控制;2) 降低特征匹配正則化中的兩種控制參數,使得生成的旋律與數據庫中原有的旋律保持不同.
通過以上對神經網絡自動作曲系統(tǒng)的回顧,可以發(fā)現目前利用神經網絡進行自動作曲的系統(tǒng)往往融合了很多種結構的神經網絡,利用不同結構的特性來提高生成音樂的質量,這也是自動作曲技術未來發(fā)展的趨勢所在.
自動作曲中的“作曲理論”是與人類“作曲理論”相對應的概念,但二者并不是同一概念.作曲系統(tǒng)是根據人們對音樂的理解定義的算法,這些算法的輸出具有音樂美感,是一種“自上而下”的方法,“基于規(guī)則的自動作曲系統(tǒng)”可以認為是這種方法.而“作曲理論”是從作曲系統(tǒng)中學習得到的,可以是基于馬爾科夫模型中的概率轉移矩陣或者是遺傳算法中經過一輪輪迭代后的染色體,也可以是人工神經網絡中的所有參數,是“自下而上”的方法.在這些算法中,作曲理論更像是一個“黑盒模型”,即人們并不能理解作曲系統(tǒng)中參數的音樂意義,但這些參數確實存儲著生成音樂的信息.這種“黑盒模型”的優(yōu)勢是不需要掌握過多專業(yè)的樂理知識,門檻較低,而且可以利用模型從數據中學到作曲理論,在當下互聯(lián)網大數據時代凸顯了其優(yōu)勢.但是正是因為“黑盒”問題,人們無法建立模型參數與音樂要素之間的聯(lián)系,導致生成音樂的可控性降低,因此,此類“黑盒模型”作曲系統(tǒng)與作曲理論之間的關系亦是自動作曲技術未來研究的方向之一.
生成音樂的承載媒體有兩種格式,分別是符號與原始音頻波形.一般來說,輸出音樂的格式與輸入音樂的格式相對應.符號格式的音樂在生成后,需要利用特定的合成或者播放軟件來轉換為人耳可聽見的音樂并播放,然后人們對生成音樂進行評價,若直接生成音頻格式的音樂則不需要轉換.但是若要利用計算機對生成的音樂進行客觀地統(tǒng)計,那么音頻格式的音樂只能采用音樂信息檢索技術(Music Information Retrieval,MIR)再對音頻進行分析,而符號格式的音樂則可以很容易地被轉換為計算機可以處理的數據.
由于音樂具有高度結構化、復雜且連續(xù)的特點,到目前為止,計算機生成音樂的研究主要集中在生成符號化音樂上.但只生成符號化的音樂,如果從演奏音樂的角度來看便顯得不夠豐富,因為每個音符的力度、時長在由不同的演奏家演奏音樂時都會有不同,這些細微的差別正是音頻文件的音樂和樂譜等符號化音樂的區(qū)別.Kalchbrenner等[12]使用單層的循環(huán)神經網絡依次預測波形的下一個樣本點來生成音頻,Chung等[13]將潛在隨機變量加入一個循環(huán)神經網絡的隱藏層,提升了網絡對結構化序列信息建模的能力.Van Den Oord等[14]提出了一種根據之前所有的音頻樣本來預測當前的音頻樣本,直接生成原始音頻波形的深度卷積神經網絡WaveNet.WaveNet的核心部分是因果卷積,因為因果性,網絡可以保證生成的每一個音頻樣本都只取決于之前的樣本.WaveNet可以用在文本轉語音(Text to Speech,TTS)系統(tǒng),也可用于直接生成音樂.在生成語音信號上,WaveNet取得了很好的效果,但是在生成音樂上,由于WaveNet直接生成的是波形,所以生成的聲音有很多非樂音,并且在音符之間的銜接上仍十分不自然.與WaveNet沒有考慮音樂構成的元素不同,Mehri等[15]提出了一個端到端的生成音頻波形的模型SampleRNN.原始音頻信號的建模極具挑戰(zhàn)性,因為音頻波形信號包含了很多不同尺度的結構,相鄰樣本之間以及相隔數千個樣本之間存在相關性,為了解決這個問題,SampleRNN模型提出了多層模型,每一層處理一個時間維度上的數據,最底層處理音頻樣本級別的信息,每高一層要處理的信息在時間范圍上越來越長,在時間分辨率上越來越低.由WaveNet和SampleRNN生成的音樂并沒有在以秒為單位的數量級上展現出音樂結構,而這些時間尺度上的結構正是音樂的本質之一.目前基于自回歸方法生成音頻文件的音樂性最強的系統(tǒng)是Dieleman等[16]提出的自回歸離散自編碼器(Autoregressive Discrete Autoencoders,ADAs).在典型的確定性自編碼器中,學習到的表示信息內容僅受編碼器和解碼器容量的限制,因為該表示是實值的(如果是非線性的,甚至可以將大量信息壓縮成單個標量值).當音樂以音頻信號的形式呈現時,這種結構在不同的時間尺度上表現出來,從毫秒級波形的周期性到一段跨度為幾分鐘的音樂的形式.為這個結構化序列中的所有時間相關性建模是極具挑戰(zhàn)的任務.
音樂評價對于自動作曲非常重要,驗證生成的音樂有更高的質量是對系統(tǒng)性能更出色的證明.但是音樂評價卻是自動作曲中最困難的部分,因為音樂本身就很難評價,音樂評價可以分為“客觀評價”和“主觀評價”,目前來說并沒有公認的客觀評價體系,而人主觀的聽力測試也與被試者的年齡、性別、性格以及受音樂教育程度等諸多因素有很大的關系,所以如何評價作曲系統(tǒng)創(chuàng)作的音樂也一直是研究者想要解決的問題.下面通過對文獻的回顧,總結目前較為常用的評價方式.合理的客觀評價方式也是未來自動作曲研究的一個重要方向.
Sun等[93]提出了3個客觀評價指標來衡量生成的音樂質量,這3個指標分別是:1) 全音階的音符占總音符的比率;2) 一個八度間的音程百分比;3) 一個八度間的三和弦百分比.
Jaques[111]根據Gauldin[112]提出的作曲理論規(guī)則制定了幾個客觀評價指標:如分數越接近于0越好的指標——重復的音符占比與不在調性內的音符占比;分數越接近于100越好的指標——從根音開始的音符占比、不和諧跳音的解決程度、動機內的音符占比以及重復動機內的音符占比.
大數據處理已被廣泛應用于各個領域,人們已為此開發(fā)多個框架來加速不同類型的數據處理應用。由于一個大數據處理集群往往運行多個不同類型數據處理任務,公平資源共享是大部分平臺所采用的資源配置策略[1]。然而,不同類型任務對服務質量的需求是不同的,絕對公平并不總是終端用戶和服務提供商的最佳選擇。例如,實時數據流分析,需要快速完成任務;而綜合決策系統(tǒng),則主要關注系統(tǒng)吞吐量。
Dong等[21]在MuseGAN系統(tǒng)中提出了5點客觀指標,并且被很多文獻[24,113]使用,這5點指標為:1) Empty Bars(EB),即空的小節(jié)數;2) Used Pitch Classes(UPC),即每個小節(jié)的音高種類、數量;3) Qualified Note(QN),代表著高質量音符與總體音符數的比率(音符時長要長于等于十六分音符,音符時值過短表示音樂過于碎片化);4) Tonal Distance(TD),表示兩個音軌之間的和諧程度,和諧程度用Harte等[114]提出的比較兩個音軌的色度特征之間的距離來表示;5) Drum Pattern(DP),即八分音符和十六分音符的占比,因為這兩種音符時值是搖滾樂中常用的鼓的音符時長.
微軟小冰團隊[102]也提出了幾點客觀指標:1) 音符準確率,即在同一時刻,生成音符和數據庫中音符相同的數量與總音符數量的比值;2) Levenshtein相似度,即Levenshtein距離[115],是通過計算將一個序列更改為另一個序列所需的單字符編輯(插入、刪除或替換)的最小數量來度量的,它通常用來測量兩個序列之間的差別;3) 音符的均方誤差分布,用來衡量音樂中的音符分布情況.
主觀評價是指選擇人類聽眾對生成的音樂進行聽力測試,并用李克特量表[21,26-27]對音樂進行打分,然后對得到的分數進行檢驗,然后進一步地分析分數與音樂質量之間的聯(lián)系.如可以利用克魯斯卡爾-沃利斯檢驗(Kruskal-Wallis Test,亦稱“K-W檢驗”、“H檢驗”等),該檢驗可以判斷兩個以上的樣本是否來自同一個概率分布,還可以利用威爾科克森符號秩檢驗來檢測成對數據是否有顯著差異.目前有一些平臺可以對計算機生成的音樂進行主觀評價,如CrowAI平臺(https:∥www.crowdai.org),該平臺是生成音樂挑戰(zhàn)的一部分.該挑戰(zhàn)旨在對不同算法生成的MIDI文件進行評級,該平臺讓評估者給2個30s的音樂片段打分,而該30s的片段可能是從自動作曲系統(tǒng)生成的1h音樂中隨機選擇出來的,也可能是從John Sankey,Chorales和Nottingham等數據庫中挑選的.
本文根據“針對音樂表現力的計算機系統(tǒng)”模型提出了“計算機自動作曲系統(tǒng)”模型,該模型包括了“音樂樣本”、“音樂分析”、“音樂背景”、“作曲系統(tǒng)”、“作曲理論”、“承載媒體”和“音樂評價”7個部分.本文利用此模型的層次對計算機自動作曲的文獻進行了回顧,可以發(fā)現該模型很好地描述了計算機自動作曲系統(tǒng)的架構.與此同時,本文給出了模型中的每個模塊的簡略介紹、所使用的重點技術、面臨的難點問題以及未來發(fā)展的研究熱點.對“音樂樣本”模塊,本文總結了符號格式音樂的常用數據庫;對“音樂分析”模塊,本文給出了幾種常用的MIDI處理程序擴展包;對“評價方式”模塊,本文總結了常用的客觀及主觀評價方法.本文并沒有給出系統(tǒng)用到的每一種音樂表示方式以及系統(tǒng)的詳細說明,但研究者依然可以根據本文的模型迅速地理清自動作曲中涉及到的問題、技術以及發(fā)展方向,這對初探自動作曲領域的研究者有著很好的幫助.
致謝:本文是2019年度上海市音樂聲學藝術重點實驗室委托科研項目(SKLMA-2019-02)研究成果,同時也是北京市中聞律師事務所周唯團隊與北京郵電大學嵌入式人工智能實驗室關于“計算機輔助作曲技術應用及其法律風險”研究項目的成果.感謝以上單位對本文的支持!