方一鳴,何培宇,方安成,鄧茗月,潘帆
(四川大學(xué)電子信息學(xué)院,成都 610065)
耳鳴是在沒有外界聲音刺激時的一種主觀聽覺感知[1],可導(dǎo)致患者睡眠障礙、焦慮、注意力不集中,嚴(yán)重影響患者的生活質(zhì)量。由于目前耳鳴發(fā)病機制尚不確定[2],因此,還沒有治療耳鳴的明確手段。音樂療法是一種無創(chuàng)傷性的治療方法,由于其無副作用且方法柔和,而廣泛應(yīng)用于耳鳴的臨床治療[3]。
目前,國外針對耳鳴的音樂療法主要包括Neuromonics耳鳴療法(neuromonics tinnitus treatment, NTT)[4]、切跡濾波音樂(tailor-made notched music,TMNM)療法[5]、海德堡神經(jīng)音樂療法[6]。但上述幾種方法適用范圍有限、方案復(fù)雜,且使用的音樂都需重復(fù)播放[4,6-7],易喚起患者的不良記憶及潛在負面情緒,達不到預(yù)期的減壓效果[8]。根據(jù)人工創(chuàng)作的音樂具有自相似特性[9],程冉等[10]使用LS文法、陳杰梅等[11]基于五聲音階和混沌、徐媛媛等[12]基于IFS分形算法和分解和弦、金寧敏等[13]基于超混沌算法、蔡麗等[14]基于迭代系統(tǒng)、漆蕾宇等[15]使用IFS分形算法從音樂的曲調(diào)、節(jié)奏以及和聲三方面來生成理論上無限長,具有自相似特點,又不完全重復(fù)的耳鳴康復(fù)音樂。然而以上方法生成的音樂可聽性不足,并且存在著音高突變的缺陷。隨著技術(shù)的發(fā)展,Chen等[16]基于已有音樂片段和長短期記憶(LSTM)生成相似不完全重復(fù),且能更好滿足耳鳴患者偏好的音樂,并臨床驗證了合成相似不重復(fù)音樂對治療耳鳴具有一定的效果。但是,該方法仍然存在著合成音樂不自然、拼接痕跡明顯、每首原始音樂都需要專門設(shè)計和訓(xùn)練一組LSTM模型等問題,因而不便于臨床上的推廣應(yīng)用。
針對上述問題,本研究提出一種以患者偏好的音樂為基礎(chǔ),無需訓(xùn)練且適用于所有原始音樂的耳鳴治療音樂合成方法。該方法使用字節(jié)對編碼對原始音樂主旋律聲部的信息進行編碼,將音樂表示成詞向量的組合形式,即音樂塊的組合形式。同時,本研究對馬爾科夫鏈狀態(tài)轉(zhuǎn)換過程可能會失去下一個轉(zhuǎn)移狀態(tài)的問題進行了改進,提出可以連續(xù)進行狀態(tài)轉(zhuǎn)換的自更新馬爾科夫鏈。將字節(jié)對編碼后的音樂塊作為自更新馬爾科夫鏈的狀態(tài),利用自更新馬爾科夫鏈的狀態(tài)轉(zhuǎn)移來生成任意時長音樂。
仿真及試聽結(jié)果表明,本研究方法不僅理論上可以生成無限長、相似且不完全重復(fù)的滿足耳鳴治療的音樂,且生成模型簡單并具有普適性,生成的音樂聽感自然、無拼接痕跡、和原曲相似度高,可滿足音樂偏好的需求。
在音樂的生成過程中需要將音樂切分成塊,但是預(yù)先制定的切分方法并非適用于每首音樂,因此,本研究采用字節(jié)對編碼(byte pair encoding,BPE)自動學(xué)習(xí)音符及和弦間的最佳組合方式,使得切分后的音樂塊中的音符、和弦之間存在更強的依存關(guān)系。
BPE算法最早用于數(shù)據(jù)壓縮,原理是找到常見的可以組成單詞的子字符串,又稱子詞,然后將每個詞用這些子詞來表示。BPE中最基本的子詞就是所有字符的集合,如{a,b,…,z,A,B,…,Z}。之后,通過不斷統(tǒng)計文本中所有相鄰子詞的出現(xiàn)次數(shù),選出出現(xiàn)頻率最高的一對子詞,并將這一對子詞組合起來視為一個新的子詞,使用文本中未出現(xiàn)過的符號代替這一對子詞,直到滿足某個停止條件,如:統(tǒng)計詞對的頻率最高不超過某個頻率閾值,其算法流程見圖1。
圖1 BPE算法流程Fig.1 BPE algorithm flow chart
1.2.1馬爾科夫鏈 馬爾科夫鏈可以根據(jù)當(dāng)前狀態(tài)預(yù)測未來狀態(tài),在多種狀態(tài)之間進行狀態(tài)轉(zhuǎn)移,本研究利用該特性實現(xiàn)理論上無限長音樂的生成。
馬爾科夫鏈?zhǔn)且唤M具有馬爾科夫性質(zhì)的離散隨機變量集合,馬爾科夫性質(zhì)指將來的狀態(tài)僅與當(dāng)前時刻的狀態(tài)有關(guān),而與過去時刻的狀態(tài)無關(guān)。即對于一個隨機過程{Xn,n∈T},若隨機變量的取值都在可數(shù)集I內(nèi),對于任意的非負整數(shù)n∈T,條件概率滿足式(1):
p(Xn+1|Xn,…,X1)=P(Xn+1|Xn)
(1)
則{Xn,n∈T}被稱為馬爾科夫鏈,可數(shù)集I∈Z被稱為狀態(tài)空間,馬爾科夫鏈在狀態(tài)空間內(nèi)的取值稱為狀態(tài)。
當(dāng)狀態(tài)也離散取值,系統(tǒng)在時刻n處于狀態(tài)i,在時刻n+1處于狀態(tài)j的概率可表示為:
τij=P[Xn+1=j|Xn=i]
(2)
此情況下,條件概率τij稱為轉(zhuǎn)移概率,其中,i,j∈I,這樣的馬爾科夫鏈稱為離散馬爾科夫鏈。若一個離散馬爾科夫鏈的狀態(tài)空間是有限的,則它所有的轉(zhuǎn)移概率可以組成一個馬爾科夫轉(zhuǎn)移概率矩陣:
(3)
1.2.2自更新馬爾科夫鏈 原音樂信息中,音樂塊是順序出現(xiàn)的,所以在使用馬爾科夫鏈進行狀態(tài)轉(zhuǎn)移時,除了最后一個音樂塊可能會出現(xiàn)缺少下一個轉(zhuǎn)移狀態(tài)的情況外,其余每個音樂塊至少都有一個轉(zhuǎn)移狀態(tài)。針對最后一個音樂塊沒有下一個轉(zhuǎn)移狀態(tài)的特殊情況,本研究利用音樂前后的相似性,將該音樂塊前一個音樂塊作為下一個狀態(tài)自動更新馬爾科夫鏈,并且為了避免生成音樂時進入死循環(huán),觀察前一個音樂塊的轉(zhuǎn)移狀態(tài)數(shù)是否大于等于2,若小于2,則將此音樂塊的前一個音樂塊也作為一種轉(zhuǎn)移狀態(tài)更新馬爾科夫轉(zhuǎn)移矩陣,直到當(dāng)前音樂塊的前一個音樂塊的轉(zhuǎn)移狀態(tài)數(shù)大于等于2為止。在原始音樂局部轉(zhuǎn)移狀態(tài)數(shù)較少時,也可使用該方法來豐富局部音樂塊轉(zhuǎn)移狀態(tài),以生成更好的音樂。
圖2 自更新馬爾科夫鏈原理Fig.2 Automatic updating Markov chain schematic diagram
音樂由一個或者多個聲部組成,在獨唱或者獨奏中只有一個聲部在發(fā)揮作用,而在合唱或者器樂合奏中樂曲由多個聲部組成。然而在多聲部中,通常只有一個演奏主旋律的聲部,其他聲部起伴奏作用。本研究在選取整首音樂后,都將第一個聲部作為主旋律聲部。首先,對MIDI音樂主旋律聲部的音符、和弦進行編號,采用字符對編碼將音樂分割成塊;其次,利用這些音樂塊來構(gòu)造馬爾科夫轉(zhuǎn)移矩陣;最后,使用自更新馬爾科夫鏈生成任意長度的滿足耳鳴治療需求的音樂。圖3為本研究生成耳鳴康復(fù)音樂的流程圖。
圖3 耳鳴康復(fù)音樂合成過程
MIDI是一種標(biāo)準(zhǔn)化的數(shù)據(jù)格式,易操作且數(shù)據(jù)存儲量小。因此,本研究選取的音樂皆為MIDI格式。本研究通過abcMIDI包,提取MIDI音樂主旋律聲部的音符、和弦,將音符、和弦按照前后出現(xiàn)的順序進行編號,并使用編號后的數(shù)字代替原音符、和弦,得到數(shù)字化后的音樂信息。
BPE最早用于數(shù)字壓縮,目前在自然語言處理中多被用于分詞。MIDI音樂由音符、和弦構(gòu)成,音符、和弦在音樂中有一定的組成和順序關(guān)系,而雜亂無章的音符和和弦無法組合成悅耳的音樂。因此,本研究利用BPE可不斷統(tǒng)計迭代高頻出現(xiàn)的字節(jié)對的特點,對數(shù)字化后的音樂信息中出現(xiàn)的高頻音樂元素進行組合,將數(shù)字化后的音樂按照原有的順序劃分成音樂塊。
以編號后的音符、和弦為例。將一小段音樂的音符、和弦按照前后出現(xiàn)順序進行數(shù)字編號,并且使用編號后的數(shù)字代替原音符、和弦,得到一段數(shù)字文本:{3,3,3,28,16,3,3,3,28,3,10}。利用BPE進行編碼的步驟為:設(shè)定BPE停止條件為相鄰字節(jié)對最高出現(xiàn)次數(shù)不超過1,將單個數(shù)字作為子詞,統(tǒng)計相鄰子詞出現(xiàn)次數(shù),此時“3,3”出現(xiàn)頻率最高,使用“-1”來代替“3,3”,文本變?yōu)椋簕-1,3,28,16,-1,3,28,3,10},此時“3,28”出現(xiàn)頻率最高,使用“-2”來代替“3,28”,文本變?yōu)椋簕-1,-2,16,-1,-2,3,10},此時“-1,-2”出現(xiàn)頻率最高,使用“-3”來代替“-1,-2”,文本變?yōu)椋簕-3,16,-3,3,10}。最后,所有相鄰子詞的出現(xiàn)次數(shù)都為1,得到最終的文本數(shù)據(jù):{-3,16,-3,3,10}。BPE解碼時按照相反的順序進行更新替換即可。
本研究對數(shù)字化后的音樂信息,統(tǒng)計其相鄰數(shù)字出現(xiàn)的頻率,將出現(xiàn)頻率最高的數(shù)字對進行合并,替換成音樂信息中未出現(xiàn)過的數(shù)字,直到統(tǒng)計數(shù)字對的最高頻率不超過設(shè)定閾值。實驗表明,當(dāng)閾值設(shè)置為1時,生成音樂的效果最好。
本研究使用馬爾科夫轉(zhuǎn)移矩陣描述生成音樂的自更新馬爾科夫鏈。在馬爾科夫轉(zhuǎn)移矩陣中,將每個音樂塊作為一種狀態(tài),實驗中假設(shè)下一個音樂塊出現(xiàn)的概率只和前一個出現(xiàn)的音樂塊有關(guān)。
馬爾科夫轉(zhuǎn)移矩陣構(gòu)建過程如下:首先,統(tǒng)計BPE編碼后的音樂塊種類N,并對音樂塊按照出現(xiàn)順序進行1至N編號,重復(fù)出現(xiàn)的音樂塊編號和第一次出現(xiàn)的該音樂塊編號一樣。統(tǒng)計N種音樂塊之間的轉(zhuǎn)移頻數(shù),得到N種音樂塊之間的轉(zhuǎn)移概率。然后構(gòu)建一個N×N大小的矩陣,矩陣最左上角元素為(1,1),矩陣元素(i,j)表示編號為i的音樂塊轉(zhuǎn)移到編號為j的音樂塊的概率。觀察此N×N大小的矩陣元素(N,N)的值是否為0。若為0,則使用自更新馬爾科夫鏈的更新規(guī)則添加新的狀態(tài)轉(zhuǎn)移,并以此更新狀態(tài)轉(zhuǎn)移矩陣。最后得到生成的馬爾科夫轉(zhuǎn)移矩陣,隨機選擇一個音樂塊作為開始,根據(jù)此馬爾科夫轉(zhuǎn)移矩陣生成任意長度的音樂(在耳鳴的臨床治療中,可根據(jù)患者的治療時間來生成相應(yīng)時長的對應(yīng)音樂)。
首先,將馬爾科夫鏈生成的任意長度的音樂進行BPE解碼;然后,按照數(shù)字與原始音符、和弦的對應(yīng)關(guān)系將數(shù)字還原成原始的音符、和弦;最后賦予這些音符、和弦和原始音樂一樣的音樂信息,即音色、音符持續(xù)時間、音符速度等,如此便獲得和原曲相似且任意長度的滿足耳鳴治療需求的音樂。
本研究從1/f波動和分形兩個角度對合成音樂進行客觀分析。1/f波動分析表明,合成音樂能讓人感到愉悅放松并具有較高的舒適感,音樂的分形分析表明,合成音樂具有相似不重復(fù)性,即合成音樂像人工創(chuàng)作的音樂一樣具有前后自相似的特點[17],能夠避免喚醒耳鳴患者的記憶,以上分析表明,本研究合成音樂作為耳鳴康復(fù)音樂具有較強的合理性。最后通過試聽分析,對合成音樂的聽覺效果進行主觀檢驗,表明合成的音樂流暢、自然。
1/f波動是一種具有舒適感的波動,可通過譜密度S(f)與頻率f的關(guān)系表示,譜密度S(f)表示信號在頻率f處的均方根變化。具體見式(4):
S(f)∝f-β
(4)
對上式兩邊取對數(shù),得到:
log(S(f))∝-βlog(f)
(4)
研究表明,大多數(shù)令人愉悅的音樂都是1/f波動,且?guī)缀跛械囊魳沸啥荚谀7?/f波動,當(dāng)0.5<β<1.5時,信號即滿足1/f波動[18]。
圖4是生成音樂的音調(diào)值和音符時值的功率譜擬合曲線,兩個擬合曲線對應(yīng)的β值分別是0.8987、0.9019,均在(0.5,1.5)范圍內(nèi),即生成的音樂是一種舒適且可讓人感到放松的1/f波動信號。
圖4 音調(diào)值序列和音符時值序列功率譜密度擬合曲線
3.3.1分形維度分析 分形特征之一是自相似但不完全重復(fù),即整體與局部的高度相似[19],可以此檢驗合成的耳鳴康復(fù)音樂是否滿足自相似、非重復(fù)的要求。在音樂中,相鄰音符的音程i及其出現(xiàn)的頻率F(i)若滿足下述函數(shù),則此關(guān)系稱為分形。其中,C是常數(shù),D是音樂的分形維度。
(6)
將上述等式兩邊同時取對數(shù),得到:
logF(i)=C′-Dlogi
(7)
由此可知,logi和logF(i)是以-D為斜率的線性關(guān)系。
圖5是本研究生成音樂中i與F(i)之間的對數(shù)關(guān)系的擬合曲線,可見,logi與logF(i)基本呈線性關(guān)系,斜率為-2.207。
圖5 音樂分形結(jié)構(gòu)分析
3.3.2旋律輪廓分析 旋律輪廓描述了旋律的整體形狀,比準(zhǔn)確的音程信息更容易認識與記憶。本研究使用音符作為最小單位來代表旋律輪廓。圖6是生成較短時間的音樂的旋律輪廓,其中縱坐標(biāo)是音符的音調(diào)值,橫坐標(biāo)是音符的序列值。圖7是生成較長時間音樂的旋律輪廓。觀察兩段旋律輪廓可以看出,音樂旋律前后相似且旋律自然,生成的長時間音樂并非音符的簡單重復(fù)。音樂的音高在一定范圍內(nèi)變化,未出現(xiàn)音高突變的情況。即生成的音樂滿足相似且不重復(fù)的特性,無音高突變,滿足耳鳴治療音樂的要求。
圖6 短時間音樂的旋律輪廓
圖7 長時間音樂的旋律輪廓
本次試聽實驗采用文獻[16]和原始音樂拼接的音樂作為對照。假設(shè)一段2 min的音樂為耳鳴患者的偏好音樂,分別根據(jù)該原始音樂使用本研究和文獻[16]的方法合成時長為30 min的音樂Frag_1、Frag_2,并將這段2 min的原始音樂首尾相連,拼接成30 min的音樂Frag_3。30名試聽人員根據(jù)試聽結(jié)果分別在相似不重復(fù)、重復(fù)、流暢、舒緩、與原曲最相似五項要素中選擇出最符合該音樂特性的要素。其中,相似不重復(fù)和重復(fù)只能二選一,與原曲最相似這項要素,F(xiàn)rag_1、Frag_2之間只能選擇一個,F(xiàn)rag_3不參與該項選擇。流暢與舒緩全選、全不選、選其一皆可。
表1 音樂片段試聽
試聽結(jié)果表明,本研究合成的音樂具有令人舒緩、相似不重復(fù)的特性,與仿真結(jié)果相吻合。同時彌補了臨床上需反復(fù)播放音樂,以及現(xiàn)有方法生成音樂不自然的缺陷。然而該試聽結(jié)果是對耳鳴康復(fù)音樂的主觀檢驗,還未完全應(yīng)用到實際臨床中,后續(xù)在臨床中還需根據(jù)患者的具體情況調(diào)節(jié)相關(guān)參數(shù),以達到更好的效果。
本研究提出了一種基于BPE和馬爾科夫鏈的耳鳴康復(fù)音樂合成新方法。該方法簡單,可生成任意時長且適用于所有MIDI格式的音樂,便于臨床上的推廣。仿真及試聽結(jié)果表明,該方法生成的音樂是一種能讓人感到舒緩的1/f波動,在滿足患者個性化偏好的同時,整體相似但不重復(fù),彌補了臨床上需重復(fù)播放有限時長音樂的問題,在聽感體驗上也更加流暢自然。因此,本研究提出的音樂合成方法對使用音樂療法治療耳鳴具有一定的借鑒意義。