付 鵬,鄧小偉,周 力,余征躍
(1.上海交通大學 船舶海洋與建筑工程學院,上海200240;2.上海民族樂器一廠,上海201101)
中國傳統民族樂器是中國文化的瑰寶,而古箏作為其中最具有代表性的樂器之一,其普及率在我國所有民族樂器中位居前列,對弘揚中國民族文化有著極為重要的意義。
截止目前,業界暫未建立完整的古箏聲音品質評價體系,主要依靠專家的主觀評價來確定古箏音質的好壞,無法滿足生產和流通的需求。音質的主觀評價是指,一組被測人聽同一段聲音后,將內心對音質的主觀感受予以語言或文字表達。主觀評價主要通過實驗方法獲得,具體包括排序法、評分法、成對比較法、語義細分法等[1]。但由于每位專家的經歷和體驗存在差異,他們使用的主觀評價指標不盡相同。即使對同一指標,各位專家的理解也不一樣。這導致主觀評價的隨意性和偶然性較大[2]。
為了解決主觀評價的這些缺點,國內外學者將問題分解為構建適當的特征、規定合理的聲學特征與主觀指標之間的關系兩部分,提出了一些將聲音品質與聲學特征量化分析的方法。這些方法包括通過頻譜質心來描述人對音色的感知和聲音信號之間關聯[3],以及通過合成音樂的方式,定量地修改聲音信號,更系統地將聲學特征與音色感知相關聯[4-6]。還有用來提取聲音信號中多維描述符的工具箱被設計出來,為了方便在大型聲音數據庫中尋找音色與多維聲學特征的關系[7]。
這些方法的特征基于手工設計(Hand-crafted)。但要通過手工設計來構建出針對目標任務辨別度大、相關性高、魯棒性強的特征難度較大[8]。而深度神經網絡因為其具有自動提取局部特征的能力,可以將構造特征和構建特征與聲音品質關系這兩個問題進行聯合優化。所以近年來,在處理音頻信號相關問題時,利用各類頻譜圖作為輸入的深度學習方法已經得到了廣泛的應用[9-11]。又由于音頻數據的特殊性,其本身就可視為一種時間序列,故有多人嘗試卷積循環神經網絡(Convolution Recurrent Neural Network,CRNN)在處理音頻數據中的可行性[12-13]。這是一種將深度學習中的卷積神經網絡(Convolutional Neural Network,CNN)和循環神經網絡(Recurrent Neural Network,RNN)融合使用的神經網絡。
本文將在此基礎上,利用深度學習設計一種可以對古箏音質進行量化評價的方法。首先,通過實驗構建古箏音質評價的數據集,確定由5 個主觀評價指標構成的古箏總體評價體系,并將這五個指標作為量化的對象。然后,使用CNN中的深度殘差網絡(Residual Network,ResNet)和RNN中的長短時記憶網絡(Long short-term memory,LSTM)聯合構成的CRNN 網絡模型,將預處理后的古箏音頻信息作為輸入,綜合多位專家對各指標的評價結果作為模型監督,訓練CRNN模型。最后,檢驗模型在樂器聲音品質量化中的效果。
深度殘差網絡(ResNet)的設計,是為了解決深度學習模型中的層數堆疊到一定數量之后,單純層數的增加有時不僅難以提升模型效果,還會導致預測能力大幅降低的問題[14]。
其主要思想是在網絡中增加了如圖1所示的直連結構,使后層網絡可以直接得到前層網絡的輸入。圖中,X為上層輸入,F(X)為將輸入X經兩層卷積層變換后的輸出。該結構使得模型在多層網絡下依舊能保證信息的完整性,并且整個網絡只需要學習輸入和輸出之間的殘差,簡化了每層的學習目標和難度。最終該結構使得模型可以通過大幅增加深度獲得與之對應增長的預測性能。并且即使在相同深度下,使用深度殘差網絡的模型性能也比普通的深度學習模型有著很大的提升。

圖1 深度殘差網絡的直連結構
普通的神經網絡只能單獨地處理每個輸入,前后輸入之間是完全無關的。但是,在本文的音質評價任務中,音頻數據在時間維度上的前后邏輯是個重要的信息,而RNN能夠更好地處理這類任務。
長短時記憶網絡是RNN 中的一種。其基礎子結構如圖2所示。圖中,Xt為輸入,ht為輸出。普通RNN能夠處理一定的短序列問題,但由于沒有記憶功能,只是簡單輸入的堆疊,較早的信息很難被傳遞到當前序列中。所以,普通RNN難以處理長序列任務。而LSTM 采用圖2 所示的結構,使用輸入門、遺忘門、輸出門3種門來保持和控制信息,以便更好地處理長短期序列[15]。

圖2 LSTM基礎結構
古箏聲音品質主觀指標的量化方法流程如圖3所示。聲音信號輸入后,可以獲得一個代表音質好壞的向量,以此作為古箏聲學品質各指標的量化結果。

圖3 量化方法流程框圖
由于古箏音質評價任務的特殊性,現公開范圍內暫無相關成熟的數據集。所以,本文首先要對所需數據集進行構建。數據集的構建包括兩個部分,一部分是對古箏音頻數據進行采集,另一部分是對音頻數據的聲音品質進行標定。
(1)音頻數據的采集
隨機挑選符合出廠要求的22把古箏后,進行隨機編號。邀請專業古箏演奏者分別使用每一把古箏按照標準化的內容進行彈奏,并且盡量保證彈琴力度和節奏的統一性。彈奏音頻全程使用SONY PCM-D50錄音棒進行錄制,采樣標準為16位脈沖編碼調制(Pulse Code Modulation,PCM)音頻格式,采樣頻率為44.1 kHz。錄制地點為廠商的專用錄音室。
(2)聲音品質的標定
為了最大程度地減少主觀評價的隨意性和偶然性,我們邀請了6 位古箏專家對每把古箏彈奏的音質進行綜合評價。首先對專家們的評價進行整理,包括整合相同含義、不同表達的術語,舍棄一些極少使用且意義不明的指標。然后結合查找到的文獻資料和國家標準[16-17],確定了古箏的總體評價由“純凈度,圓潤度,明亮度,平衡度,柔和度”5個主觀評價指標構成。
最后,綜合整理6 位專家在這5 個指標上的評價,對每把古箏進行標定。具體方法為,忽略在某個指標上沒有評價的專家后,分別計算每個指標上專家認為好或者壞的個數,數量多的作為這個指標的標定結果。
在音頻領域中,CNN 輸入一般是二維的頻譜圖,可以對局部特征進行提取,學習局部特征的關聯性。
語譜圖是頻譜圖中的一種,通過對音頻數據做短時傅里葉變換(Short-Time Fourier Transform,STFT)得到,計算前需要確定STFT 的幾個必要參數:
nfft:對時域數據x(n)做傅立葉變換(Fourier Transform,FFT)時,一幀所包含的采樣點個數,一般應取2 的冪次。音樂相關的音頻數據在做FFT 時,幀長最好在20 ms~93 ms 之間,由于錄音時的采樣頻率sr 為44.1 kHz,為了滿足上述幀長條件,選擇nfft等于4 096。
hop_length:定義每兩幀之間的滑移值,一般取FFT分辨率的1/4,也就是1 024。
其算法流程如圖4所示,通過對聲音信號分幀,加窗做FFT,最后堆疊而成。

圖4 短時傅里葉變換算法流程
圖像是語譜圖的一種可視化表達,其實際是一個以橫軸為時間、縱軸為頻率的二維數據,對應二維點的值代表幅值。語譜圖同時包含了聲音的時域、頻域信息,保留了聲音信號的絕大多數特征,所以本文中選擇其作為CNN的輸入。
為了將數據輸入到神經網絡中,需要將原始音頻信號通過短時傅里葉變換得到的語譜圖分割為長寬分別為h和w的片段。根據公式(1)和公式(2),語譜圖所能表達的最大時間和最高頻率與語譜圖大小的轉換關系,可以知道每個語譜圖片段均可表達時間維度[ 0,tmax]和頻率維度的信息。對于當前的音頻數據,在時間維度,每個片段分割為3秒恰好涵蓋了每個單音從起始到衰減的整個過程。在頻率維度,對于音域范圍為73 Hz到1 174 Hz的古箏來說,2 400 Hz 可以覆蓋到絕大部分的基頻和倍頻能量。所以將語譜圖分割為長寬均為224的片段。求得tmax=3s,fmax=2 400 Hz,可以滿足上面的要求。


為了檢測神經網絡學習的效果,還需將數據分為訓練集、驗證集、測試集3個部分。其中訓練集用于訓練模型,驗證集用于模型訓練時判斷模型是否收斂,測試集用來測試模型優劣。本文采取的方法是,將每把琴的語譜圖隨機分為連續的,長度比為7:2:1的片段。將第一份歸入訓練集,第二份歸入驗證集,第三份歸入測試集。
由于缺少相關公開數據集,數據集只能自己采集,這就不可避免地導致數據集在種類和數量上都少于成熟的數據集。為了豐富數據,增強神經網絡模型的性能,防止神經網絡模型過擬合,本文對原始數據集進行數據增強。
具體來說,本文采用在訓練和預測時隨機分割的方法來替代事先由人工將音頻分割成224×224的片段。根據每把古箏原始音頻數據的長度,平均每把琴的音頻數據可以被分為3 000份~4 000份。
對于分割后的數據,為了增加模型對一些部分頻率信息丟失和含噪聲的聲音片段的魯棒性,本文參考由Google提出的音頻數據增強方法[18]:
(1)應用頻率屏蔽,對每個輸入片段屏蔽連續f個頻率維度[f0,f0+f],屏蔽即對其置0。其中f從[ 0,20 ]中隨機選擇,f0從[ 0,fmax-f]中隨機選擇。
(2)應用時間屏蔽,對每個輸入片段屏蔽連續t個時間維度[t0,t0+t],其中t從[ 0,20 ]中隨機選擇,t0從[ 0,tmax-t]中隨機選擇。
CRNN 模型結構包含CNN 和RNN,其中CNN選擇ResNet,RNN 使用LSTM。搭建好的CRNN 模型結構為先通過ResNet對語譜圖提取出局部特征,之后將其繼續輸入給LSTM提取時序特征。
當前任務需要在主觀評價的5個維度上同時做出判斷。所以,本文選擇使用多任務聯合學習的方式,將每個主觀評價指標作為子任務進行并行學習。
具體的實現方法是,在CRNN結構設計完成后,將其提取到的特征輸入給全連接層共同預測出5維向量x,之后分別經由公式(3)計算得出每個主觀評價指標較好的概率。

將作為最后各項指標的量化結果。
本文CRNN 模型的損失函數以交叉熵(Cross entropy)函數為基礎,設計構建針對5維指標的損失函數:

其中:yi代表每個指標綜合專家意見的標定結果,其取值0為該指標較差,1為該指標較好。
該損失函數在指標較好,即yi等于1時,為關于的單調遞減函數。在yi等于0時,為關于單調遞增函數。即無論實際指標為何種結果,預測該指標與實際結果相同的概率越大,損失越小。所以,模型的目的從抽象的評價指標的判斷轉為具體的對損失函數L的最小值最優化問題。
模型訓練時,根據2.4 提到的數據增強方法,先由網絡自己隨機選擇語譜圖分割位置,并將連續的5張大小均為224×224 的語譜圖在通道上堆疊形成224×224×5 的特征圖作為模型的輸入。訓練過程中,神經網絡通過計算損失函數L的梯度,對其中的參數進行更新,實現尋找L的最小值的目的。為了使模型得到更快更好的訓練效果,采用ADAMS 優化器對模型進行優化,并設置初始學習率為3×10-4。
在音頻收集時我們得到了6位專家對每把古箏的評價結果,但由于部分專家對古箏音質評價的態度較為嚴謹,不輕易評價古箏聲音在這5 個指標中的好壞。所以,最終選擇了給予有效評價最多的4位專家,計算各位專家評價與古箏各項指標標定結果相比的準確率,如表1所示。
將測試集中數據輸入給構建的CRNN模型進行計算后,得到模型輸出的向量x。根據公式(3)可以分別得到五個指標好壞的概率。設置閾值為0.5,當待預測指標的概率值>05時,判斷其為好,反之為壞。計算模型在各項指標上預測結果與古箏各項指標標定結果相比的準確率,如表2所示。

表2 每位專家評價在各項指標上的準確率/(%)

表2 CRNN模型評價的準確率/(%)
由表1和表2對比可以看出,每位專家在各項指標的準確率在70%和80%之間,而根據CRNN模型得到的準確率均大于85%。CRNN模型預測各項指標的準確率均優于由單一專家主觀評價的準確率,達到多位專家主觀評價的綜合效果。
CRNN模型最后得出的結果實際為每個指標好壞的概率,因此我們可以將作為得分對每個指標做進一步量化。
另外挑選高低兩種檔次的古箏分別錄制其音頻樣本,通過本文CRNN 量化方法分別得到兩把琴5個評價指標的得分,如表3所示。

表3 不同檔次古箏的量化得分
將得分畫成雷達圖如圖5 所示,可以直觀地區分出兩者的差異。高檔琴的各項指標得分都較高且分值均勻,而低檔琴雖有個別指標得分較高,但其他指標表現較差。由此可以直觀清晰地看出兩把琴的優劣,達到主觀評價的效果。

圖5 不同檔次古箏的評價圖
本文通過設計實驗收集古箏音頻數據和專家們對其聲音品質的判斷,提出了一種基于CRNN 模型的聲音品質主觀評價量化方法。通過對比分析和實際應用發現,該方法可以較為準確地對古箏的聲音品質作出量化,并且由于使用了數據增強的手段,所以同時具有較好的噪聲魯棒性。相比于多位專家主觀評價的傳統方法,本文提出的方法有著方便快捷,成本更低的優點。
深度學習方法對數據集質量和數量的要求較高,目前這方面的公開數據集仍較為稀缺。本文以古箏為對象已經驗證了該量化方法的可行性,但由于數據采集的單一性,其泛化能力可能不足。未來針對這些問題,會進一步收集更多樣化的數據加入。優化出更為準確且泛化性更高的模型,提高量化準確度。該方法除可應用于古箏等民族樂器主觀評價外,也可以對西洋樂器聲音品質的主觀評價量化有借鑒作用。