付 鵬,鄧小偉,周 力,余征躍
(1.上海交通大學(xué) 船舶海洋與建筑工程學(xué)院,上海200240;2.上海民族樂(lè)器一廠,上海201101)
中國(guó)傳統(tǒng)民族樂(lè)器是中國(guó)文化的瑰寶,而古箏作為其中最具有代表性的樂(lè)器之一,其普及率在我國(guó)所有民族樂(lè)器中位居前列,對(duì)弘揚(yáng)中國(guó)民族文化有著極為重要的意義。
截止目前,業(yè)界暫未建立完整的古箏聲音品質(zhì)評(píng)價(jià)體系,主要依靠專家的主觀評(píng)價(jià)來(lái)確定古箏音質(zhì)的好壞,無(wú)法滿足生產(chǎn)和流通的需求。音質(zhì)的主觀評(píng)價(jià)是指,一組被測(cè)人聽同一段聲音后,將內(nèi)心對(duì)音質(zhì)的主觀感受予以語(yǔ)言或文字表達(dá)。主觀評(píng)價(jià)主要通過(guò)實(shí)驗(yàn)方法獲得,具體包括排序法、評(píng)分法、成對(duì)比較法、語(yǔ)義細(xì)分法等[1]。但由于每位專家的經(jīng)歷和體驗(yàn)存在差異,他們使用的主觀評(píng)價(jià)指標(biāo)不盡相同。即使對(duì)同一指標(biāo),各位專家的理解也不一樣。這導(dǎo)致主觀評(píng)價(jià)的隨意性和偶然性較大[2]。
為了解決主觀評(píng)價(jià)的這些缺點(diǎn),國(guó)內(nèi)外學(xué)者將問(wèn)題分解為構(gòu)建適當(dāng)?shù)奶卣?、?guī)定合理的聲學(xué)特征與主觀指標(biāo)之間的關(guān)系兩部分,提出了一些將聲音品質(zhì)與聲學(xué)特征量化分析的方法。這些方法包括通過(guò)頻譜質(zhì)心來(lái)描述人對(duì)音色的感知和聲音信號(hào)之間關(guān)聯(lián)[3],以及通過(guò)合成音樂(lè)的方式,定量地修改聲音信號(hào),更系統(tǒng)地將聲學(xué)特征與音色感知相關(guān)聯(lián)[4-6]。還有用來(lái)提取聲音信號(hào)中多維描述符的工具箱被設(shè)計(jì)出來(lái),為了方便在大型聲音數(shù)據(jù)庫(kù)中尋找音色與多維聲學(xué)特征的關(guān)系[7]。
這些方法的特征基于手工設(shè)計(jì)(Hand-crafted)。但要通過(guò)手工設(shè)計(jì)來(lái)構(gòu)建出針對(duì)目標(biāo)任務(wù)辨別度大、相關(guān)性高、魯棒性強(qiáng)的特征難度較大[8]。而深度神經(jīng)網(wǎng)絡(luò)因?yàn)槠渚哂凶詣?dòng)提取局部特征的能力,可以將構(gòu)造特征和構(gòu)建特征與聲音品質(zhì)關(guān)系這兩個(gè)問(wèn)題進(jìn)行聯(lián)合優(yōu)化。所以近年來(lái),在處理音頻信號(hào)相關(guān)問(wèn)題時(shí),利用各類頻譜圖作為輸入的深度學(xué)習(xí)方法已經(jīng)得到了廣泛的應(yīng)用[9-11]。又由于音頻數(shù)據(jù)的特殊性,其本身就可視為一種時(shí)間序列,故有多人嘗試卷積循環(huán)神經(jīng)網(wǎng)絡(luò)(Convolution Recurrent Neural Network,CRNN)在處理音頻數(shù)據(jù)中的可行性[12-13]。這是一種將深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)融合使用的神經(jīng)網(wǎng)絡(luò)。
本文將在此基礎(chǔ)上,利用深度學(xué)習(xí)設(shè)計(jì)一種可以對(duì)古箏音質(zhì)進(jìn)行量化評(píng)價(jià)的方法。首先,通過(guò)實(shí)驗(yàn)構(gòu)建古箏音質(zhì)評(píng)價(jià)的數(shù)據(jù)集,確定由5 個(gè)主觀評(píng)價(jià)指標(biāo)構(gòu)成的古箏總體評(píng)價(jià)體系,并將這五個(gè)指標(biāo)作為量化的對(duì)象。然后,使用CNN中的深度殘差網(wǎng)絡(luò)(Residual Network,ResNet)和RNN中的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long short-term memory,LSTM)聯(lián)合構(gòu)成的CRNN 網(wǎng)絡(luò)模型,將預(yù)處理后的古箏音頻信息作為輸入,綜合多位專家對(duì)各指標(biāo)的評(píng)價(jià)結(jié)果作為模型監(jiān)督,訓(xùn)練CRNN模型。最后,檢驗(yàn)?zāi)P驮跇?lè)器聲音品質(zhì)量化中的效果。
深度殘差網(wǎng)絡(luò)(ResNet)的設(shè)計(jì),是為了解決深度學(xué)習(xí)模型中的層數(shù)堆疊到一定數(shù)量之后,單純層數(shù)的增加有時(shí)不僅難以提升模型效果,還會(huì)導(dǎo)致預(yù)測(cè)能力大幅降低的問(wèn)題[14]。
其主要思想是在網(wǎng)絡(luò)中增加了如圖1所示的直連結(jié)構(gòu),使后層網(wǎng)絡(luò)可以直接得到前層網(wǎng)絡(luò)的輸入。圖中,X為上層輸入,F(xiàn)(X)為將輸入X經(jīng)兩層卷積層變換后的輸出。該結(jié)構(gòu)使得模型在多層網(wǎng)絡(luò)下依舊能保證信息的完整性,并且整個(gè)網(wǎng)絡(luò)只需要學(xué)習(xí)輸入和輸出之間的殘差,簡(jiǎn)化了每層的學(xué)習(xí)目標(biāo)和難度。最終該結(jié)構(gòu)使得模型可以通過(guò)大幅增加深度獲得與之對(duì)應(yīng)增長(zhǎng)的預(yù)測(cè)性能。并且即使在相同深度下,使用深度殘差網(wǎng)絡(luò)的模型性能也比普通的深度學(xué)習(xí)模型有著很大的提升。
圖1 深度殘差網(wǎng)絡(luò)的直連結(jié)構(gòu)
普通的神經(jīng)網(wǎng)絡(luò)只能單獨(dú)地處理每個(gè)輸入,前后輸入之間是完全無(wú)關(guān)的。但是,在本文的音質(zhì)評(píng)價(jià)任務(wù)中,音頻數(shù)據(jù)在時(shí)間維度上的前后邏輯是個(gè)重要的信息,而RNN能夠更好地處理這類任務(wù)。
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)是RNN 中的一種。其基礎(chǔ)子結(jié)構(gòu)如圖2所示。圖中,Xt為輸入,ht為輸出。普通RNN能夠處理一定的短序列問(wèn)題,但由于沒(méi)有記憶功能,只是簡(jiǎn)單輸入的堆疊,較早的信息很難被傳遞到當(dāng)前序列中。所以,普通RNN難以處理長(zhǎng)序列任務(wù)。而LSTM 采用圖2 所示的結(jié)構(gòu),使用輸入門、遺忘門、輸出門3種門來(lái)保持和控制信息,以便更好地處理長(zhǎng)短期序列[15]。
圖2 LSTM基礎(chǔ)結(jié)構(gòu)
古箏聲音品質(zhì)主觀指標(biāo)的量化方法流程如圖3所示。聲音信號(hào)輸入后,可以獲得一個(gè)代表音質(zhì)好壞的向量,以此作為古箏聲學(xué)品質(zhì)各指標(biāo)的量化結(jié)果。
圖3 量化方法流程框圖
由于古箏音質(zhì)評(píng)價(jià)任務(wù)的特殊性,現(xiàn)公開范圍內(nèi)暫無(wú)相關(guān)成熟的數(shù)據(jù)集。所以,本文首先要對(duì)所需數(shù)據(jù)集進(jìn)行構(gòu)建。數(shù)據(jù)集的構(gòu)建包括兩個(gè)部分,一部分是對(duì)古箏音頻數(shù)據(jù)進(jìn)行采集,另一部分是對(duì)音頻數(shù)據(jù)的聲音品質(zhì)進(jìn)行標(biāo)定。
(1)音頻數(shù)據(jù)的采集
隨機(jī)挑選符合出廠要求的22把古箏后,進(jìn)行隨機(jī)編號(hào)。邀請(qǐng)專業(yè)古箏演奏者分別使用每一把古箏按照標(biāo)準(zhǔn)化的內(nèi)容進(jìn)行彈奏,并且盡量保證彈琴力度和節(jié)奏的統(tǒng)一性。彈奏音頻全程使用SONY PCM-D50錄音棒進(jìn)行錄制,采樣標(biāo)準(zhǔn)為16位脈沖編碼調(diào)制(Pulse Code Modulation,PCM)音頻格式,采樣頻率為44.1 kHz。錄制地點(diǎn)為廠商的專用錄音室。
(2)聲音品質(zhì)的標(biāo)定
為了最大程度地減少主觀評(píng)價(jià)的隨意性和偶然性,我們邀請(qǐng)了6 位古箏專家對(duì)每把古箏彈奏的音質(zhì)進(jìn)行綜合評(píng)價(jià)。首先對(duì)專家們的評(píng)價(jià)進(jìn)行整理,包括整合相同含義、不同表達(dá)的術(shù)語(yǔ),舍棄一些極少使用且意義不明的指標(biāo)。然后結(jié)合查找到的文獻(xiàn)資料和國(guó)家標(biāo)準(zhǔn)[16-17],確定了古箏的總體評(píng)價(jià)由“純凈度,圓潤(rùn)度,明亮度,平衡度,柔和度”5個(gè)主觀評(píng)價(jià)指標(biāo)構(gòu)成。
最后,綜合整理6 位專家在這5 個(gè)指標(biāo)上的評(píng)價(jià),對(duì)每把古箏進(jìn)行標(biāo)定。具體方法為,忽略在某個(gè)指標(biāo)上沒(méi)有評(píng)價(jià)的專家后,分別計(jì)算每個(gè)指標(biāo)上專家認(rèn)為好或者壞的個(gè)數(shù),數(shù)量多的作為這個(gè)指標(biāo)的標(biāo)定結(jié)果。
在音頻領(lǐng)域中,CNN 輸入一般是二維的頻譜圖,可以對(duì)局部特征進(jìn)行提取,學(xué)習(xí)局部特征的關(guān)聯(lián)性。
語(yǔ)譜圖是頻譜圖中的一種,通過(guò)對(duì)音頻數(shù)據(jù)做短時(shí)傅里葉變換(Short-Time Fourier Transform,STFT)得到,計(jì)算前需要確定STFT 的幾個(gè)必要參數(shù):
nfft:對(duì)時(shí)域數(shù)據(jù)x(n)做傅立葉變換(Fourier Transform,F(xiàn)FT)時(shí),一幀所包含的采樣點(diǎn)個(gè)數(shù),一般應(yīng)取2 的冪次。音樂(lè)相關(guān)的音頻數(shù)據(jù)在做FFT 時(shí),幀長(zhǎng)最好在20 ms~93 ms 之間,由于錄音時(shí)的采樣頻率sr 為44.1 kHz,為了滿足上述幀長(zhǎng)條件,選擇nfft等于4 096。
hop_length:定義每?jī)蓭g的滑移值,一般取FFT分辨率的1/4,也就是1 024。
其算法流程如圖4所示,通過(guò)對(duì)聲音信號(hào)分幀,加窗做FFT,最后堆疊而成。
圖4 短時(shí)傅里葉變換算法流程
圖像是語(yǔ)譜圖的一種可視化表達(dá),其實(shí)際是一個(gè)以橫軸為時(shí)間、縱軸為頻率的二維數(shù)據(jù),對(duì)應(yīng)二維點(diǎn)的值代表幅值。語(yǔ)譜圖同時(shí)包含了聲音的時(shí)域、頻域信息,保留了聲音信號(hào)的絕大多數(shù)特征,所以本文中選擇其作為CNN的輸入。
為了將數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò)中,需要將原始音頻信號(hào)通過(guò)短時(shí)傅里葉變換得到的語(yǔ)譜圖分割為長(zhǎng)寬分別為h和w的片段。根據(jù)公式(1)和公式(2),語(yǔ)譜圖所能表達(dá)的最大時(shí)間和最高頻率與語(yǔ)譜圖大小的轉(zhuǎn)換關(guān)系,可以知道每個(gè)語(yǔ)譜圖片段均可表達(dá)時(shí)間維度[ 0,tmax]和頻率維度的信息。對(duì)于當(dāng)前的音頻數(shù)據(jù),在時(shí)間維度,每個(gè)片段分割為3秒恰好涵蓋了每個(gè)單音從起始到衰減的整個(gè)過(guò)程。在頻率維度,對(duì)于音域范圍為73 Hz到1 174 Hz的古箏來(lái)說(shuō),2 400 Hz 可以覆蓋到絕大部分的基頻和倍頻能量。所以將語(yǔ)譜圖分割為長(zhǎng)寬均為224的片段。求得tmax=3s,fmax=2 400 Hz,可以滿足上面的要求。
為了檢測(cè)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的效果,還需將數(shù)據(jù)分為訓(xùn)練集、驗(yàn)證集、測(cè)試集3個(gè)部分。其中訓(xùn)練集用于訓(xùn)練模型,驗(yàn)證集用于模型訓(xùn)練時(shí)判斷模型是否收斂,測(cè)試集用來(lái)測(cè)試模型優(yōu)劣。本文采取的方法是,將每把琴的語(yǔ)譜圖隨機(jī)分為連續(xù)的,長(zhǎng)度比為7:2:1的片段。將第一份歸入訓(xùn)練集,第二份歸入驗(yàn)證集,第三份歸入測(cè)試集。
由于缺少相關(guān)公開數(shù)據(jù)集,數(shù)據(jù)集只能自己采集,這就不可避免地導(dǎo)致數(shù)據(jù)集在種類和數(shù)量上都少于成熟的數(shù)據(jù)集。為了豐富數(shù)據(jù),增強(qiáng)神經(jīng)網(wǎng)絡(luò)模型的性能,防止神經(jīng)網(wǎng)絡(luò)模型過(guò)擬合,本文對(duì)原始數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)。
具體來(lái)說(shuō),本文采用在訓(xùn)練和預(yù)測(cè)時(shí)隨機(jī)分割的方法來(lái)替代事先由人工將音頻分割成224×224的片段。根據(jù)每把古箏原始音頻數(shù)據(jù)的長(zhǎng)度,平均每把琴的音頻數(shù)據(jù)可以被分為3 000份~4 000份。
對(duì)于分割后的數(shù)據(jù),為了增加模型對(duì)一些部分頻率信息丟失和含噪聲的聲音片段的魯棒性,本文參考由Google提出的音頻數(shù)據(jù)增強(qiáng)方法[18]:
(1)應(yīng)用頻率屏蔽,對(duì)每個(gè)輸入片段屏蔽連續(xù)f個(gè)頻率維度[f0,f0+f],屏蔽即對(duì)其置0。其中f從[ 0,20 ]中隨機(jī)選擇,f0從[ 0,fmax-f]中隨機(jī)選擇。
(2)應(yīng)用時(shí)間屏蔽,對(duì)每個(gè)輸入片段屏蔽連續(xù)t個(gè)時(shí)間維度[t0,t0+t],其中t從[ 0,20 ]中隨機(jī)選擇,t0從[ 0,tmax-t]中隨機(jī)選擇。
CRNN 模型結(jié)構(gòu)包含CNN 和RNN,其中CNN選擇ResNet,RNN 使用LSTM。搭建好的CRNN 模型結(jié)構(gòu)為先通過(guò)ResNet對(duì)語(yǔ)譜圖提取出局部特征,之后將其繼續(xù)輸入給LSTM提取時(shí)序特征。
當(dāng)前任務(wù)需要在主觀評(píng)價(jià)的5個(gè)維度上同時(shí)做出判斷。所以,本文選擇使用多任務(wù)聯(lián)合學(xué)習(xí)的方式,將每個(gè)主觀評(píng)價(jià)指標(biāo)作為子任務(wù)進(jìn)行并行學(xué)習(xí)。
具體的實(shí)現(xiàn)方法是,在CRNN結(jié)構(gòu)設(shè)計(jì)完成后,將其提取到的特征輸入給全連接層共同預(yù)測(cè)出5維向量x,之后分別經(jīng)由公式(3)計(jì)算得出每個(gè)主觀評(píng)價(jià)指標(biāo)較好的概率。
將作為最后各項(xiàng)指標(biāo)的量化結(jié)果。
本文CRNN 模型的損失函數(shù)以交叉熵(Cross entropy)函數(shù)為基礎(chǔ),設(shè)計(jì)構(gòu)建針對(duì)5維指標(biāo)的損失函數(shù):
其中:yi代表每個(gè)指標(biāo)綜合專家意見的標(biāo)定結(jié)果,其取值0為該指標(biāo)較差,1為該指標(biāo)較好。
該損失函數(shù)在指標(biāo)較好,即yi等于1時(shí),為關(guān)于的單調(diào)遞減函數(shù)。在yi等于0時(shí),為關(guān)于單調(diào)遞增函數(shù)。即無(wú)論實(shí)際指標(biāo)為何種結(jié)果,預(yù)測(cè)該指標(biāo)與實(shí)際結(jié)果相同的概率越大,損失越小。所以,模型的目的從抽象的評(píng)價(jià)指標(biāo)的判斷轉(zhuǎn)為具體的對(duì)損失函數(shù)L的最小值最優(yōu)化問(wèn)題。
模型訓(xùn)練時(shí),根據(jù)2.4 提到的數(shù)據(jù)增強(qiáng)方法,先由網(wǎng)絡(luò)自己隨機(jī)選擇語(yǔ)譜圖分割位置,并將連續(xù)的5張大小均為224×224 的語(yǔ)譜圖在通道上堆疊形成224×224×5 的特征圖作為模型的輸入。訓(xùn)練過(guò)程中,神經(jīng)網(wǎng)絡(luò)通過(guò)計(jì)算損失函數(shù)L的梯度,對(duì)其中的參數(shù)進(jìn)行更新,實(shí)現(xiàn)尋找L的最小值的目的。為了使模型得到更快更好的訓(xùn)練效果,采用ADAMS 優(yōu)化器對(duì)模型進(jìn)行優(yōu)化,并設(shè)置初始學(xué)習(xí)率為3×10-4。
在音頻收集時(shí)我們得到了6位專家對(duì)每把古箏的評(píng)價(jià)結(jié)果,但由于部分專家對(duì)古箏音質(zhì)評(píng)價(jià)的態(tài)度較為嚴(yán)謹(jǐn),不輕易評(píng)價(jià)古箏聲音在這5 個(gè)指標(biāo)中的好壞。所以,最終選擇了給予有效評(píng)價(jià)最多的4位專家,計(jì)算各位專家評(píng)價(jià)與古箏各項(xiàng)指標(biāo)標(biāo)定結(jié)果相比的準(zhǔn)確率,如表1所示。
將測(cè)試集中數(shù)據(jù)輸入給構(gòu)建的CRNN模型進(jìn)行計(jì)算后,得到模型輸出的向量x。根據(jù)公式(3)可以分別得到五個(gè)指標(biāo)好壞的概率。設(shè)置閾值為0.5,當(dāng)待預(yù)測(cè)指標(biāo)的概率值>05時(shí),判斷其為好,反之為壞。計(jì)算模型在各項(xiàng)指標(biāo)上預(yù)測(cè)結(jié)果與古箏各項(xiàng)指標(biāo)標(biāo)定結(jié)果相比的準(zhǔn)確率,如表2所示。
表2 每位專家評(píng)價(jià)在各項(xiàng)指標(biāo)上的準(zhǔn)確率/(%)
表2 CRNN模型評(píng)價(jià)的準(zhǔn)確率/(%)
由表1和表2對(duì)比可以看出,每位專家在各項(xiàng)指標(biāo)的準(zhǔn)確率在70%和80%之間,而根據(jù)CRNN模型得到的準(zhǔn)確率均大于85%。CRNN模型預(yù)測(cè)各項(xiàng)指標(biāo)的準(zhǔn)確率均優(yōu)于由單一專家主觀評(píng)價(jià)的準(zhǔn)確率,達(dá)到多位專家主觀評(píng)價(jià)的綜合效果。
CRNN模型最后得出的結(jié)果實(shí)際為每個(gè)指標(biāo)好壞的概率,因此我們可以將作為得分對(duì)每個(gè)指標(biāo)做進(jìn)一步量化。
另外挑選高低兩種檔次的古箏分別錄制其音頻樣本,通過(guò)本文CRNN 量化方法分別得到兩把琴5個(gè)評(píng)價(jià)指標(biāo)的得分,如表3所示。
表3 不同檔次古箏的量化得分
將得分畫成雷達(dá)圖如圖5 所示,可以直觀地區(qū)分出兩者的差異。高檔琴的各項(xiàng)指標(biāo)得分都較高且分值均勻,而低檔琴雖有個(gè)別指標(biāo)得分較高,但其他指標(biāo)表現(xiàn)較差。由此可以直觀清晰地看出兩把琴的優(yōu)劣,達(dá)到主觀評(píng)價(jià)的效果。
圖5 不同檔次古箏的評(píng)價(jià)圖
本文通過(guò)設(shè)計(jì)實(shí)驗(yàn)收集古箏音頻數(shù)據(jù)和專家們對(duì)其聲音品質(zhì)的判斷,提出了一種基于CRNN 模型的聲音品質(zhì)主觀評(píng)價(jià)量化方法。通過(guò)對(duì)比分析和實(shí)際應(yīng)用發(fā)現(xiàn),該方法可以較為準(zhǔn)確地對(duì)古箏的聲音品質(zhì)作出量化,并且由于使用了數(shù)據(jù)增強(qiáng)的手段,所以同時(shí)具有較好的噪聲魯棒性。相比于多位專家主觀評(píng)價(jià)的傳統(tǒng)方法,本文提出的方法有著方便快捷,成本更低的優(yōu)點(diǎn)。
深度學(xué)習(xí)方法對(duì)數(shù)據(jù)集質(zhì)量和數(shù)量的要求較高,目前這方面的公開數(shù)據(jù)集仍較為稀缺。本文以古箏為對(duì)象已經(jīng)驗(yàn)證了該量化方法的可行性,但由于數(shù)據(jù)采集的單一性,其泛化能力可能不足。未來(lái)針對(duì)這些問(wèn)題,會(huì)進(jìn)一步收集更多樣化的數(shù)據(jù)加入。優(yōu)化出更為準(zhǔn)確且泛化性更高的模型,提高量化準(zhǔn)確度。該方法除可應(yīng)用于古箏等民族樂(lè)器主觀評(píng)價(jià)外,也可以對(duì)西洋樂(lè)器聲音品質(zhì)的主觀評(píng)價(jià)量化有借鑒作用。