范靜
(阜陽師范大學(xué)音樂舞蹈學(xué)院,安徽 阜陽 236037)
鋼琴作為最受歡迎的樂器之一,不但愛好者數(shù)量眾多,還在其他領(lǐng)域占據(jù)著重要的位置,是目前為止發(fā)展較為快速的樂器之一。鋼琴的種類與品牌層出不窮,對鋼琴的設(shè)計要求也越來越高。關(guān)于鋼琴指法識別或標(biāo)注方法的研究有益于提高演奏技巧,許多學(xué)者開展了鋼琴指法標(biāo)注算法的研究。其中,Moryossef等[1]研究了基于機器視覺技術(shù)的鋼琴指法提取方法,在公共視頻和 MIDI 文件中,將深度學(xué)習(xí)計算機視覺模型轉(zhuǎn)移到域外數(shù)據(jù),通過生成式對抗網(wǎng)絡(luò)增強視覺模型進行鋼琴指法的自動標(biāo)注。葉素芬等[2]研究了穿戴式鋼琴彈奏手套智能感知與手勢識別技術(shù),以慣性數(shù)據(jù)手套與紅外檢測桿的輸出作為數(shù)據(jù)樣本,針對鋼琴彈奏手勢特性,進行多模態(tài)手勢特征的提取并采用分層識別算法改善識別效果。上述方法能夠為指法標(biāo)注提供參考依據(jù),但是在和弦指法識別的準(zhǔn)確度方面有待進一步完善,為此本文設(shè)計了考慮音符序列的鋼琴演奏和弦指法自動標(biāo)注算法。該算法利用音符序列,對鋼琴演奏和弦音樂信號進行動態(tài)壓縮處理,將其轉(zhuǎn)換為Chroma頻譜,以減少輸出維數(shù)。通過PCA(principle component analysis)方法抑制噪聲,完成和弦指法信號的預(yù)處理。在此基礎(chǔ)上,分析演奏頻率譜的基本特點,集合分散的音符,按照頻率的大小分布自動尋找標(biāo)記位置。在頻率一定、序列不變的條件下完成歸一化處理,完成標(biāo)注音符區(qū)域分配,以提高指法標(biāo)注的準(zhǔn)確性。為了保持和弦彈奏的穩(wěn)定狀態(tài),增加了判決的概率,構(gòu)建了指法標(biāo)注模型,完成音符序列的轉(zhuǎn)換。將和弦音符引入波爾茲曼機模型中,提取和弦指法特征,再根據(jù)音符的主要特征預(yù)測和弦指法,通過分幀波動的次數(shù)與頻率形成1個新的序列并完成和弦指法的自動標(biāo)注。
在對和弦指法自動標(biāo)注之前,對音符序列進行預(yù)處理,主要預(yù)處理過程如下。
首先,對鋼琴演奏的和弦音樂進行處理,獲得頻譜,由于音樂信號在振幅上存在很大的動態(tài)差異,因此采用了動態(tài)范圍壓縮的方法,對其進行自適應(yīng)調(diào)整[3]。
其次,把自增益調(diào)整后的線性頻譜轉(zhuǎn)換成Chroma頻譜,與傳統(tǒng)的方法相比,在抽取Chroma時,不需要對數(shù)據(jù)進行標(biāo)準(zhǔn)化處理,這樣可以保持原有的線性頻譜特征,同時也能減少輸出的維數(shù)。
在對數(shù)壓縮公式中,Chroma頻譜的振幅被壓縮,其表達式如公式(1)所示:
Z=lg(1+C·Chroma)
(1)
式中:C代表壓縮程度。在此步驟之后,每個音符都會有1個振幅壓縮的Chroma特征系數(shù)[4]。
由于在訓(xùn)練時,每個音符都會有1個特征矩陣,如果不將其全部選出,就會造成較大的特征訓(xùn)練誤差,并且不能保證每個特征都具有代表性。為使第二階段的無監(jiān)督學(xué)習(xí)更好地掌握有效的特征矢量,提出基于起點的識別算法。該算法將和弦的起點作為基礎(chǔ),從鋼琴曲譜的特征矩陣中提取出1個特征矢量,并利用該矢量構(gòu)造1個新的特征矩陣,作為訓(xùn)練的輸入特性。其主要功能是在不進行訓(xùn)練的情況下,確保音符特征仍是全幅值壓縮后的Chroma頻譜。PCA的白化是一種常用的預(yù)處理方法,用于消除關(guān)聯(lián)和減少數(shù)據(jù)的尺寸。PCA白化矩陣是通過初始點采樣矩陣進行降維處理,然后通過PCA空間進行方差標(biāo)準(zhǔn)化從而獲得。在此階段,采用最大值池和求均值的方法,對PCA降維后的特征矩陣進行無監(jiān)督學(xué)習(xí),得到“詞袋”的特征矢量[5]。
最后,經(jīng)過前面的步驟,獲得經(jīng)過 PCA白化處理后的 Chroma特性,該特性是基于已有的知識進行人工設(shè)計的,因此在本步驟中,采用降噪編碼器進行處理。噪聲抑制的自動編碼是典型的瓶頸模式[6],以隱藏層為實際輸出。在訓(xùn)練過程中,最佳參數(shù)權(quán)重矩陣W和偏差向量b如公式(2)所示:
(2)
經(jīng)過上述預(yù)處理后,將鋼琴演奏和弦放置在三維空間中,序列表中的標(biāo)注看作空間內(nèi)的元素[7]。假設(shè)在任意和弦上標(biāo)注的序列處于靜止?fàn)顟B(tài),那么關(guān)于和弦尺度函數(shù)的表達式如公式(3)所示:
(3)
式中,Xi代表標(biāo)注的定位,并且在序列中處于最高位,占據(jù)和弦的主要部分。采用基于區(qū)域劃分的標(biāo)注布局方法,將標(biāo)注區(qū)域劃分為8個區(qū)域,每個圖形覆蓋的節(jié)點都均勻分布。通過對和弦的控制將標(biāo)注的位置簡單化,以免出現(xiàn)音符互相碰撞與丟失[8],因此,將其轉(zhuǎn)化到二維平面進行分區(qū)域標(biāo)注,以減少音符之間的碰撞。經(jīng)過分區(qū)處理之后,簡化標(biāo)注布局,在標(biāo)注區(qū)域內(nèi)會出現(xiàn)同一類型的標(biāo)注。為此,對同一類型的標(biāo)注采用排序的方式重新排布,以達到完全避免碰撞的目的。在排布上,采用標(biāo)注定義點作為每個區(qū)域的索引值,以形成相應(yīng)的標(biāo)注體。該階段的處理主要是分析出演奏頻率譜的基本特點,在頻率一定、序列不變的條件下完成歸一化處理[9]。在此基礎(chǔ)上,采集接收到的聲音信號,利用和弦的變化來推測演奏的節(jié)點,調(diào)整到相應(yīng)的幅度,減少誤差的產(chǎn)生,通過儀器的自動編輯對音符序列進行預(yù)處理,流程如圖1所示。
圖1 音符序列預(yù)處理流程
按照圖1中的步驟將和弦的長度縮減,融合重復(fù)的音符,檢測標(biāo)注出的每個音符位置[10],構(gòu)成1個動態(tài)的音符序列矩陣,表達式如公式(4)所示:
A=lg(1+C′·Chroma)
(4)
式中:A代表矩陣;C′代表縮減參數(shù)。
在處理序列時由于影響因素居多,偶爾會產(chǎn)生噪聲,因此要使用可以降噪的自動編輯器來識別和弦指法,以便過濾掉嘈雜的噪音,將音樂調(diào)整至正常曲調(diào)。假設(shè)儀器檢測到的頻譜信號序列中的音符與指法相對應(yīng),那么兩者之間的關(guān)系式如公式(5)所示:
(5)
式中:y(k)代表映射函數(shù);k代表系數(shù);fr代表頻譜;fb代表噪聲函數(shù);N代表待連接權(quán)重。
將分散的音符集合按照頻率的大小進行分布,之后音樂信號就會根據(jù)音符的排列自動找到自身標(biāo)注位置,減少和弦上的空缺,剩余的信號就會填補空余的標(biāo)注位置,為后續(xù)指法自動標(biāo)注提供參考。
經(jīng)過預(yù)處理后的標(biāo)注指法不會出現(xiàn)手指間距離過大的問題,也不會在演奏過程中發(fā)生手指交錯交叉的誤差。在此條件下建立指法標(biāo)注模型[11],一方面糾正了指法變換過于緩慢的問題,另一方面提高了演奏的整體效率,使得加入音調(diào)時更加自然與迅速,包括音樂的升降調(diào)銜接更加順暢,從其他角度上看,增加了判決的概率,原理模型如圖2所示。
圖2 指法標(biāo)注模型的構(gòu)建
但在建模過程中,手指間的升降與轉(zhuǎn)換會影響節(jié)奏的變化,導(dǎo)致和弦出現(xiàn)差錯。為了提高指法標(biāo)注的準(zhǔn)確率并獲取相應(yīng)的信息,在各個參數(shù)不影響計算的前提下利用指法轉(zhuǎn)換的規(guī)律得到音符序列的轉(zhuǎn)移概率,如公式(6)所示:
P(β?K)=det(Mβ)
(6)
式中:K代表概率模型;Mβ代表音樂片段。
當(dāng)集合中的音符序列輸入模型中時,系統(tǒng)就會隨機出現(xiàn)1個與之匹配的指法標(biāo)注方法,然后檢測指法標(biāo)注的正確性,自動形成矩陣。矩陣中的每個音符元素都代表著不同的信息,與集體過濾相比,獨立的音符序列對指法的自動標(biāo)注來說效果更好。
假設(shè)矩陣中的元素用y1表示,利用序列中的音符位置推算出參數(shù)的位置[12],那么音符的最初狀態(tài)的表達式如公式(7)所示:
(7)
音符會根據(jù)矩陣的指示跳到特定的路線上,去除噪聲的干擾,那么在模型中標(biāo)注的參數(shù)范圍如公式(8)所示:
σn(i)=Smax(it=i|i1,…,in,…,λ)
i=1,2,…,n
(8)
式中:Smax代表參數(shù)的最大值;λ代表特征向量。在該范圍內(nèi)的所有音符序列都能被轉(zhuǎn)換,但模型會選擇最符合標(biāo)準(zhǔn)的序列,剩余的其他路線就會被舍棄,使和弦維持穩(wěn)定狀態(tài)。
經(jīng)過上述處理后,提取和弦指法特征。波爾茲曼機是一種無向性模型,主要包含輸入層與隱藏層,這兩層彼此連接,內(nèi)部不存在聯(lián)系[13]。在訓(xùn)練后,隱藏層能夠?qū)W習(xí)到輸入層的概率分布模式,獲得輸入層的特性。本文的學(xué)習(xí)模式主要是不受監(jiān)督模式,如果將和弦引入該模型中,它就可以提取聲音特性,并對其重建。因此,在多層次的深度學(xué)習(xí)模型中,波爾茲曼機往往被看作是用于抽取前一層次的輸入特征的方法,但是,如果把原始的輸入(聲音)與其分類(社區(qū)標(biāo)記)一起輸入波爾茲曼機,通過輸入和標(biāo)記的聯(lián)合分配就能夠?qū)崿F(xiàn)學(xué)習(xí)。假設(shè)生成的波爾茲曼機含有n個隱節(jié)點,輸入數(shù)據(jù)為d維音頻特征,形成的概率分布函數(shù)如公式(9)所示:
(9)
式中:x、y、h分別表示節(jié)點、標(biāo)簽和隱藏節(jié)點;Z代表歸一化系數(shù);E代表散度參數(shù)。
將Dtrain作為整合訓(xùn)練集集合,為了達到目標(biāo)函數(shù)極小值,需要保證負(fù)對數(shù)似然最少[14],負(fù)對數(shù)似然函數(shù)計算式如公式(10)所示:
(10)
式中:p(xi,yi)代表樣本x、y的聯(lián)合分布參數(shù)。
為了使目標(biāo)函數(shù)值最小,本文提出基于隨機梯度遞減的計算式,如公式(11)所示:
(11)
式中:?、θ分別代表連接權(quán)重系數(shù)和特征權(quán)重。
此次研究的目的是實現(xiàn)和弦指法自動標(biāo)注,基于上述函數(shù),獲得的是語音特性和社區(qū)標(biāo)記結(jié)合的非概率分布情況。因此,對目標(biāo)函數(shù)進行轉(zhuǎn)換,將p(x,y)替換為p(y/x),具體計算式如公式(12)所示:
(12)
與產(chǎn)生波爾茲曼機類似,在訓(xùn)練和識別波爾茲曼機時,也可以采用比較散度法來求出其特征值。
鋼琴演奏和弦包括多個音符與曲調(diào),根據(jù)其內(nèi)容劃分為多個種類,基于其多樣性特征,根據(jù)音符的主要特征來預(yù)測和弦指法。構(gòu)建特征函數(shù)標(biāo)記音符序列的變化情況,根據(jù)分幀波動的次數(shù)與頻率形成1個新的序列[15],預(yù)測出標(biāo)注指法。
(13)
式中:x代表任意點;α代表序列中的向量。
在執(zhí)行標(biāo)注任務(wù)時,若新加入1段和弦就會導(dǎo)致新的序列節(jié)點出現(xiàn),那么就要過濾全部的隱藏節(jié)點才能形成1個穩(wěn)定的音符序列。假設(shè)節(jié)點的數(shù)量為N,空間維度為n,輸入編輯器中的音樂用M來表示,那么序列的重新分布計算式如公式(14)所示:
(14)
式中:A代表延遲點數(shù);e代表產(chǎn)生的能量;m代表不能自主標(biāo)注的數(shù)量。式中所有參數(shù)都是成比例變化的,單個音符或者多個音符的序列節(jié)點改變會影響整首樂曲。為了確保樂曲的演奏質(zhì)量,需要找出序列中相同的2個片段相互補償,這樣會增大標(biāo)注的準(zhǔn)確率與靈敏度。
在集合中所有音符序列形成的矩陣都是有方向和有順序的,因此可以通過空間向量來構(gòu)成和弦自動標(biāo)注指法,使其自動完成標(biāo)注。那么,建立的標(biāo)注函數(shù)如公式(15)所示:
(15)
由于指法具有隨機性,音符序列的預(yù)測可能會出現(xiàn)誤差,集合預(yù)測可能出現(xiàn)的誤差,形成誤差集合,尋找誤差最小的音符序列,將誤差概率用公式(16)表示為
Pu=
(16)
式中:θ代表特征參數(shù);N′代表音符數(shù)量;ot與ot-1代表相鄰序列。
為了確定指法標(biāo)注的準(zhǔn)確性,需要降低誤差概率。找到音符序列的初始位置,計算出與終點的差值,記作Δi,將序列中的音符相互比較,找到峰值,作為預(yù)測的標(biāo)準(zhǔn)值。重復(fù)以上所有步驟,直到得到最佳標(biāo)注指法為止,計算式如公式(17)所示:
(17)
式中:Sa代表指法的速度;b代表誤差因子;fa代表分隔函數(shù);d代表音符距離。經(jīng)驗證,當(dāng)指法標(biāo)注誤差在20~40時,演奏和弦的指法標(biāo)注最優(yōu)。同時在切分中會存在一些不必要的片段,與預(yù)測的標(biāo)注有較大出入,因此要消除多余的音符,還要保證音頻不被損傷,仍然可以被識別。得到預(yù)測的樣本音符序列后就要立即預(yù)處理,將點的集合傳輸?shù)骄庉嬈髦?,那么形成的函?shù)計算式如公式(18)所示:
(18)
當(dāng)函數(shù)持續(xù)發(fā)生變化時,需要即時記錄。將函數(shù)即時記錄的計算結(jié)果輸入編輯器中。為使本文方法的指法標(biāo)注更接近人工標(biāo)注的結(jié)果,需要進行后續(xù)加工。在維特比算法中,根據(jù)初始指法的先驗,確定初始狀態(tài),再用遞推方法求最大可能路徑,從而限制了后續(xù)指法的選擇。指法標(biāo)注的后續(xù)加工計算式如公式(19)所示:
(19)
如果上一次的手指指位是固定的,則根據(jù)上次的指位提升下一次指法標(biāo)注。在固定指位不換手的情況下,沒有其他的指法選擇。因此,此時可以擴大指位范圍,增加每一次選擇的指法,以此實現(xiàn)和弦指法自動標(biāo)注。
為驗證此次研究的和弦指法自動標(biāo)注算法的有效性,將基于機器視覺技術(shù)的鋼琴指法自動識別方法(文獻[1])和穿戴式鋼琴彈奏手套智能感知與手勢識別方法(文獻[2])作為對照組。
實驗數(shù)據(jù)集合使用亞馬遜網(wǎng)站的媒體統(tǒng)計數(shù)據(jù),使用者可以根據(jù)自己的喜好,在不同的標(biāo)簽上標(biāo)注不同的風(fēng)格,比如“孤獨”“快節(jié)奏”等。本研究共選擇915個10 s的視頻,并從中抽取100個片段進行指法標(biāo)注。
此次實驗中,采用的指標(biāo)主要如下。
一致率指標(biāo),可將各時間點算法標(biāo)記的指法和手工標(biāo)記的比例進行運算,其結(jié)果與正確率相似,指數(shù)越高,則運算結(jié)果越好,公式表示如下:
(20)
式中:z、q分別代表人工標(biāo)注指法序列和算法的標(biāo)注指法序列;n代表序列長度;Λ為異或運算。
P-score指標(biāo),主要計算標(biāo)準(zhǔn)和弦的序列與待標(biāo)注和弦節(jié)點的序列之間的有限互相關(guān)的總數(shù),容差在間隔中值的20%左右,在該指標(biāo)內(nèi)認(rèn)為是正確的。其算法為預(yù)先構(gòu)建40個25 s長的序列,公式表示如下:
(21)
式中,ai代表互相關(guān)函數(shù)。
不可彈指法占比衡量的是不可彈指法的占比,在指法標(biāo)注過程中首先需要避免不可彈指法,從而在諸多指法序列中尋找最優(yōu)的指法,公式表示如下:
(22)
式中:md代表分段次數(shù);ψ1、ψ2代表不可彈指法數(shù)量。
3種方法的一致率結(jié)果如圖3所示。
圖3 一致率對比
3種方法的P-score指標(biāo)結(jié)果如圖4所示。
圖4 P-score指標(biāo)對比
3種方法的不可彈指法占比結(jié)果如圖5所示。
圖5 不可彈指法占比對比
通過圖3、圖4、圖5能夠發(fā)現(xiàn),本文提出的算法標(biāo)注結(jié)果一致率提升較多,不可彈指法占比下降,P-score指標(biāo)也較低。由此能夠看出,本文提出的算法能夠提升和弦指法標(biāo)注的一致率,原因是本文提出的算法預(yù)先對和弦序列進行處理,增加了整體搜索的可選路徑,相較于另外2種方法來說,效果更好。
基于上述過程本文完成了鋼琴演奏和弦指法自動標(biāo)注算法的研究。本文提出的算法能夠計算出音符之間的距離,高效分離出序列中的音符,得到譜中的和弦變化,找到其主要特征,準(zhǔn)確地識別出正確的序列,然后與校驗后的指法相呼應(yīng),多余的音符可視為和弦的起點與終點,繼續(xù)組成新的音符序列,最后促使其自動標(biāo)注。實驗結(jié)果也證明,本文提出的算法是有效的,可滿足設(shè)計需求。然而,研究時間有限,還有不足之處,在后續(xù)研究中將重點研究和弦標(biāo)注的影響因素,以進一步提高和弦指法標(biāo)注的效果。