呂小姣,張玉梅,楊紅紅,吳曉軍
(1.民歌智能計算與服務技術文化和旅游部重點實驗室,陜西 西安710119;2.陜西師范大學計算機科學學院,陜西 西安710119;3.陜西師范大學現代教學技術教育部重點實驗室,陜西 西安710062)
隨著計算機技術的發展,音頻信號分析、分類檢索和音頻信號合成已經成為語音研究領域的熱點話題,各種機器學習分類算法都為音樂分類問題提供了很好的解決辦法。中國民歌是歷史和歲月的積淀,中國傳統文化的精髓也都在民歌上體現得淋漓盡致。由于各個區域的語言和生活習俗不盡相同,不同的地域也就形成了各式各樣風格的民歌[1]。在時代發展的潮流中,越來越多的人們開始追求流行音樂,而忘卻了先輩們留下來的非物質文化遺產——民歌。因此,對于中國民歌的分類和保護工作必須提上日程,大力推廣民歌,讓越來越多的人了解民歌,了解中華民族不同地域的優秀傳統文化。
在音樂分類問題上,國外在關于樂器和流派的分類問題上進行了深入研究,國內研究人員則主要聚焦于中國傳統戲曲、傳統民樂和民歌的分類[2]。數據集的創建是進行分類實驗的基礎。Tzanetakis等[3]構建的數據集GTZAN包含了10個音樂流派的歌曲,目前該數據集已成為音樂分類研究常用的一個公開數據集。在音樂分類的特征選擇問題上,由于語音的特征較多,所以要將不同的音頻特征進行組合分析與比較。Sujeet等[4]在印度2種民間音樂的分類問題上,提取民歌的音色、頻譜和節拍作為特征進行分類。盧堅等[5]針對音樂特征進行了綜合性的分析,包括音調、響度、諧度等感覺特征與梅爾頻率倒譜系數等,并考察這些特征在分類中的性能表現。張一彬等[6]使用音頻處理技術,提取了戲曲數據的短時能量、過零率和譜通量等構建特征向量。在眾多關于音樂分類的研究中,支持向量機SVM(Support Vector Machine)是被使用最多的分類算法。Sujeet等[4]、張一彬等[6]、Agostini等[7]以及劉怡等[8]分別在民間音樂、戲曲、樂器和民歌的分類研究中都使用了SVM分類算法,但是他們都是使用經典的SVM算法,并沒有對SVM的參數進行優化。
基于以上分析,以往民歌分類研究中還存在數據集不完整、音頻特征單一以及分類方法的參數未進行優化等問題,這使得最終的分類效果不理想。因此,本文提出基于距離排序的DUPSO-DSVM(Dissipative Uniform Particle Swarm Optimization—Distance sorted Support Vector Machine)算法,對SVM的核心參數以及參數訓練時間進行優化,并針對民歌分類問題中的民歌數據集創建及數據預處理、民歌特征參數提取和民歌分類方法展開研究。
數據的搜集和數據集的創建為分類研究提供原材料,分類器的訓練常常對數據資源數量的要求比較高?;ヂ摼W上針對中國民歌分類問題的相關研究比較少,也很難找到合適的公開民歌數據集。本文的民歌數據集由作者構建,選擇廣東、廣西、貴州、湖南、江西、內蒙古、青海、陜北、四川和西藏共10個地域的民歌構建分類實驗的數據集。
MP3格式的音樂文件采樣率和精度都比較高,然而較高的音頻采樣率會使得特征提取的開銷過大,而且每個音樂文件含有許多無關的標簽信息,這些無關信息會干擾到實驗結果。因此,在實驗之前,要對音頻數據的采樣頻率、聲道數、采樣精度等進行格式轉換。數據集預處理的過程如圖1所示。

Figure 1 Preprocessing of the dataset
數據集的預處理過程是:首先將民歌文件進行無關標簽的刪除;然后對民歌文件進行30 s切分保存,為了保持實驗結果的有效性,將切分后不足30 s的音頻文件刪除;最后對音頻文件進行文件格式轉換。整個民歌數據集共有2 500個音頻數據文件,每個地域民歌類型有250個音頻文件。
音頻信號研究的首要工作是抽取在分類問題上有區分度的特征系數,一般較為常見的特征系數包括短時參數(短時能量、短時過零率等)、線性預測系數、梅爾頻率倒譜系數MFCC(Mel-scale Frequency Cepstral Coefficient)和線性預測倒譜系數LPCC(Linear Predictive Cepstral Coefficient)等[9],其中MFCC和LPCC特征系數更加符合聽覺規律和發聲原理。
(1)MFCC。
MFCC在語音信號研究中是一種常見的特征函數。由于人的聽覺在不同頻率信號上的敏感度差異明顯,所以當2個響度不同的信號同時通過人耳時,響度較低的成分會受到較高響度信號的影響而使人不易察覺,這就是掩蔽效應[10]。因此,要對音頻的高頻到低頻部分進行濾波,得到語音的輸入特征,這樣的特征符合聽覺模型的特點,又對信號沒有過多的限制和假設[11]。實際頻率f與其梅爾頻率Mel(f)的關系如式(1)所示:
Mel(f)=2595 lg(1+f/700)
(1)
由于音頻信號的非穩態特性,在對其進行研究分析時不能夠直接應用到識別系統中,應該先經過預處理進行加工。以一段陜北民歌為例,MFCC的提取步驟如圖2所示。

Figure 2 Process of MFCC extraction
(2)LPCC。
線性預測倒譜系數LPCC是線性預測系數的倒譜域表現形式[12],它基于發聲原理,能夠很好地描述元音,但是較難描述輔音且不易抗噪[13]。LPCC參數是根據全極點模式對線性預測系數LPC(Linear Prediction Coefficient)遞推而得到的,遞推公式如式(2)所示:
(2)
其中,c1,…,cn表示n個LPCC特征系數,a1,…,ap表示p個LPC特征系數。
(3)短時平均能量。
語音信號的能量不是一直穩定的,它會隨著時間的改變而變化,尤其是清、濁音之間的能量明顯不一樣[14],所以分析短時平均能量可以描述語音的能量特征變化。一段音頻信號在某時刻的短時平均能量定義如式(3)所示:
(3)
其中,x(m)表示語音信號,w(n1)表示加窗函數,一般選擇矩形窗或漢明窗,N表示窗長。短時平均能量不僅能夠作為區分清音和濁音的特征參數,也能夠作為輔助的特征參數用于語音識別。
(4)短時平均過零率。
音頻信號的過零率是語音信號每一幀采樣點的值正、負變化的頻數,能夠度量信號頻率,直觀形象地反映出語音中的噪音信息[15]。一般情況下,音樂的過零率比語音信號的過零率高。假設語音信號x(n2)分幀后有yi(n2),L表示幀長,則短時平均過零率的定義如式(4)所示:
1≤i≤fn
(4)
其中,fn表示分幀后的總幀數,sgn[·]表示符號函數,如式(5)所示:
(5)
DUPSO算法在搜尋最優參數時會出現訓練時間過長的問題,本文提出民歌快速分類算法DUPSO-DSVM,通過對支持向量進行預選取來減少訓練樣本,以此優化參數的訓練時間。
SVM在處理非線性回歸、模式識別和分類等問題方面應用廣泛,它的基本原理是統計學習理論[16]。C-SVC(C-Support Vector Classification)算法是較為常見的二分類支持向量機算法,其中C表示懲罰系數,其建立過程如下:
(1)設數據的訓練集為式(6):
T={(x1,y1),…,(xi1,yi1)…,
(xl,yl)}∈(X×Y)l
(6)
其中,xi1∈X=Rn,yi1∈Y={-1,1},i1=1,2,…,l,xi1表示特征向量,yi1表示類別標簽。
(2)選擇合適的核函數K(xi1,xj1)和懲罰系數C,建立如式(7)所示的模型:
(7)
K(xi1,xj1)=exp(-g‖xi1-xj1‖2)
(8)

(9)
(4)構造決策函數如式(10)所示:
(10)
因此,當SVM選擇徑向基核函數完成民歌的分類任務時,民歌的分類正確率往往會受到懲罰系數C和核函數參數g的影響,所以本文選擇使用DUPSO算法優化SVM的參數,以此取得更好的民歌分類效果。
支持向量往往存在于2類樣本的相鄰邊界區域,所以本文將利用2類樣本的距離排序對邊界向量進行選擇,以此達到支持向量預選取的目的[17]。基于距離排序的支持向量預選取算法的步驟如下所示:
步驟1假設有待分類的陜北民歌和四川民歌數據樣本,提取它們的40維MFCC、12維LPCC、1維短時平均能量參數以及1維短時平均過零率參數構成54維特征向量,再加上1維的民歌類別標簽組成集合T:
T={(x1,1,x1,2,…,x1,54,y1),…,
(xN,1,xN,2,…,xN,54,yN)}
按照7∶3的比例將數據集劃分成訓練集和測試集,將民歌的訓練集按照標簽分成2類,即:

步驟2根據式(10)計算出2類民歌的特征向量構成的訓練樣本的距離矩陣,如式(11)所示:
d(xii,xji)=
(11)
其中,K(xii,xji)表示核函數,用于將非線性可分的民歌樣本映射到高維空間,使得樣本線性可分,選擇徑向基核函數,其表達式如式(12)所示:
(12)
其中,σ表示函數的寬度參數,用以控制函數的徑向作用范圍。
步驟3對距離矩陣中的每個元素按照從小到大的順序排序,在排序的過程中元素關聯的民歌樣本點不能重復,即每個民歌樣本點在排序中只出現1次。
步驟4在排好的序列中抽取一定比例的前z個元素所關聯的2z個民歌樣本點作為訓練樣本進行訓練。
粒子群優化PSO(Particle Swarm Optimization)算法的思想最初是來自對鳥類捕食行為的討論[18]。雖然PSO算法的效率比遺傳算法等的效率高,但是它的缺點是容易陷入極值。PSO算法的基本思想是在多維空間中移動一組粒子,以在復雜空間中搜索粒子位置的最優解。它的粒子速度Vid(t)和位置Xid(t)的更新公式分別如式(13)和式(14)所示:
Vid(t+1)=ωVid(t)+c′1r1[Pid(t)-Xid(t)]+
c′2r2[Pgd(t)-Xid(t)]
(13)
Xid(t+1)=Xid(t)+Vid(t+1)
(14)
其中,id表示粒子的序號,c′1和c′2表示學習系數,r1和r2表示0~1的隨機值,ω表示慣性權重,t表示當前的迭代次數,Pid(t)表示粒子當前的個體最優值,Pgd(t)表示種群當前的全局最優值。
均勻動態粒子群優化UPSO(Uniform Search Particle Swarm Optimization)算法[19]在優化函數特別是非均勻多峰函數時具有更快的收斂速度和更優的算法穩定性。耗散粒子群優化DPSO(Dissipative Particle Swarm Optimization)算法[20]在PSO算法中引入一個排斥的過程,根據某種確定的概率,重新定位粒子的位置和速度,能夠提升種群中粒子的多樣性,從而防止粒子過早成熟。
由于實驗中的粒子極值通常是非均勻的,所以在UPSO算法的基礎上引入DPSO算法的排斥過程,形成耗散均勻搜索粒子群優化DUPSO(Dissipative Uniform Particle Swarm Optimization)算法[21],可以解決預測參數的全局優化問題。但是,DUPSO算法在進行參數優化時,訓練數據量過大會導致訓練時間較長的問題。
DUPSO算法對于粒子位置和速度的更新原理,不僅可以為提升種群的多樣性做出更有利的貢獻,而且還能夠使種群中粒子的分布更加均勻[22]。本文將DUPSO算法與DSVM算法進行結合,對SVM中的2個參數C和g以及算法的訓練時間進行優化。優化算法的流程圖如圖3所示,算法具體的步驟如下:

Figure 3 Flow chart of folk songs fast classification using DUPSO-DSVM
步驟1首先將提取到的40維MFCC、12維LPCC、1維短時平均能量參數以及1維短時平均過零率參數構成的54維特征向量進行預處理和歸一化。
步驟2使用DSVM算法對10類民歌按照一對余的分類方法進行支持向量的預選取。首先根據式(10)的樣本距離計算規則計算出2類樣本的距離矩陣,然后對距離矩陣進行排序,在排序過程中距離矩陣元素關聯的每個民歌樣本點只能出現1次,在排好的序列中按照57%的比例選擇前z個元素所關聯的2z個民歌樣本組成訓練集。
步驟3初始化支持向量機的參數C和g,選擇徑向基核函數作為DSVM算法的核函數,建立DSVM算法民歌分類模型。
步驟4對種群中每個粒子的初始位置Xid(0)和初始速度Vid(0)進行隨機初始化,然后計算出各個粒子的適應度F(Xid(0)),并且令第id個粒子的當前最優值Pid(0)=Xid(0),將使得F(Xid(0))的值最小的粒子位置Xid(0)作為種群的全局最優值。
步驟5根據DUPSO算法的更新規則式(14)和式(15)對粒子個體的位置Xid(t)和速度Vid(t)進行更新:
Vid(t+1)=ωVid(t)+
c[rPid(t)+(1-r)Pgd(t)-Xid(t)]
(15)
其中,c表示學習系數,r表示0~1的隨機值,ω表示慣性權重,t表示當前的迭代次數。
步驟6獲取粒子的個體最優值Pid(t)和種群的全局最優值Pgd(t),并計算當前時刻粒子的適應度值。若F(Xid(t)) 步驟7若訓練達到迭代次數,則將利用DUPSO算法求得的最優參數值C和g代入DSVM算法,在10個地域的民歌測試集上進行分類預測,否則返回步驟5繼續進行迭代。 商家回應:您反饋的食材問題小店非常重視,小店選用食材都是當天采購,絕對新鮮的。這個問題希望您可以和小店取得聯系,將事情核實。一定給您滿意的結果。 為了驗證DUPSO-DSVM民歌分類算法的有效性,本節針對不同的語音特征和分類方法進行研究和比較,以確定出適用于中國地域民歌的最佳分類方法。實驗硬件平臺為Intel?CoreTMi7處理器,主頻為2.9 GHz,內存為16 GB,在Windows操作系統上運行Matlab R2019a。 實驗首先提取廣東、廣西、貴州、湖南、江西、內蒙古、青海、陜北、四川和西藏10個地域民歌的40維MFCC、12維LPCC、1維短時平均能量和1維短時平均過零率參數共54維特征作為特征向量。整個民歌數據集共有2 500個樣本,每種民歌包含250個樣本,每個樣本數據為55維,前54維是音頻特征,最后1維為DSVM算法的分類標簽,1~10分別代表10個不同地域的民歌類型,將民歌的特征向量按照7∶3隨機分成訓練集和測試集。 Table 1 Classification results of folk songs of algorithms using different characteristics 圖4~圖7分別展示了以廣東、廣西、貴州、陜北和四川5個地域民歌的MFCC、LPCC、短時平均能量和短時平均過零率特征參數值。 Figure 4 MFCC values of ten regional folk songs 對連續的語音信號經過預加重、分幀加窗、快速傅里葉變換等一系列處理操作后得到5個地域民歌的MFCC參數。由圖4可以看出,同一地域民歌中MFCC在每一幀信號中的幅值都不一樣。從整體來看,5個不同地域民歌的幅值變化情況更是大不相同。 語音特征系數LPCC能夠很好地描述人的發聲原理,在民歌分類問題上,具有很好的魯棒性。由圖5可以看出,廣東民歌的LPCC參數比較集中,而四川民歌的則表現得較為離散。 Figure 5 LPCC values of ten regional folk songs 對5個不同地域的民歌進行分幀,計算出每一幀的短時平均能量,將分幀后每一幀的時間計算出來,繪制出民歌的短時平均能量圖。由圖6可以看出,廣東民歌的短時平均能量變化較為突出,而陜北民歌的短時平均能量變化則不太明顯。 Figure 6 Short-term average energy values of ten regional folk songs 連續語音信號中過零意味著信號在時域的波形通過時間軸,因為高頻率意味著較高的短時平均過零率,低頻意味著較低的短時平均過零率,可以認為清、濁音和短時平均過零率的高低有關。所以,通過對圖7中不同地域民歌短時平均過零率進行分析,能夠區分出不同地域民歌中的清音和濁音。 Figure 7 Short-term zero-crossing rates of ten regional folk songs 將MFCC、LPCC、短時平均能量和短時平均過零率這4種特征分別進行組合,選擇支持向量機作為分類算法,進行10個地域民歌的分類實驗,通過仿真結果得到每一種特征組合下的民歌分類正確率,組合情況如表1所示。 機器學習領域的分類算法很多。為了選擇出最適合解決民歌分類問題的分類器,本節根據提取的40維MFCC、12維LPCC、1維短時平均能量以及1維短時平均過零率參數,共54維參數組成的特征向量,分別使用支持向量機、K近鄰分類器、樸素貝葉斯分類器、決策樹分類器和BP神經網絡在民歌數據集上進行仿真實驗。圖8為民歌分類算法的基本步驟。 Figure 8 Process of folk songs classification algorithms 根據式(16),可以得到上述5種分類器在民歌數據集上的分類正確率,如表2所示。 Table 2 Classification results of folk songs with different classification algorithms (16) 從表2可以看出,SVM的分類預測率為72.4%,而決策樹的正確率最低,這表明SVM在民歌分類問題中是一種非常有效的分類器。 5.3.1 PSO-SVM分類算法的仿真結果 采用PSO算法進行SVM參數優化時,初始種群設置為20,迭代次數為100,學習因子c′1=1.5,c′2=1.7。實驗得到的適應度曲線、民歌測試集的分類預測結果、預測偏差和混淆矩陣等結果如圖9~圖12所示。 Figure 9 Fitness curve of PSO-SVM algorithm 圖9適應度曲線表明,在訓練過程中粒子的最佳正確率達到了78.69%,此時懲罰因子C和核函數參數g的最優值分別為74.56和3.13。圖10中測試集的樣本數目為750,通過預測分類和實際分類的比較結果可以得出最終測試集的分類正確率達到了83.2%,相比優化前的72.4%提高了10.8%。 Figure 10 Actual and prediction classification plots of PSO-SVM algorithm on test set 圖11的預測偏差表明,實驗的分類結果達到了不錯的效果。圖12混淆矩陣的每一個矩陣元素Xa,b表示的是實際類別為a預測類別為b的民歌數量。顯然,混淆矩陣的對角線元素就代表預測準確的民歌數量,由混淆矩陣可以看出類別1和類別2的分類正確率最高,即廣東民歌和廣西民歌的分類正確率最好。 Figure 11 Prediction bias plot of PSO-SVM algorithm on test set Figure 12 Confusion matrix of PSO-SVM algorithm 5.3.2 DUPSO-SVM分類算法的仿真結果 采用DUPSO算法優化SVM參數并進行民歌分類得到的適應度曲線、民歌測試集的分類預測結果和混淆矩陣結果如圖13~圖15所示。 Figure 13 Fitness curve of DUPSO-SVM algorithm 本節對民歌分類算法DUPSO-SVM在民歌分類問題上的有效性進行驗證,對10個地域風格的民歌進行分類實驗。圖13適應度曲線表明,在訓練過程中粒子的最佳正確率達到了79.49%,此時懲罰因子C和核函數參數g的最優值分別為94.59和2.26。圖14表明,測試集的分類正確率達到了84%,相比標準PSO算法的83.2%提高了0.8%。圖15混淆矩陣表明了每一種地域風格的民歌的分類正確率,可以看出廣東民歌和廣西民歌的分類正確率最高,均為94.7%。 Figure 14 Prediction bias plot of DUPSO-SVM algorithm on test set Figure 15 Confusion matrix of DUPSO-SVM algorithm 5.3.3 DUPSO-DSVM分類算法的仿真結果 保持測試集不變,本節對訓練集中的數據利用DSVM算法進行支持向量預選取,選擇1 000個樣本組成訓練集,利用DUPSO-DSVM算法進行樣本訓練,得到的實驗結果如表3所示。 Table 3 Experimental results of DUPSO-DSVM algorithm 從表3可以看出,DUPSO-SVM算法相對于PSO-SVM算法的分類正確率提高了0.8%,但是訓練時間也增加了975 s。在經過支持向量預選取算法的優化之后,訓練數據由1 750個樣本減少為1 000個訓練樣本,DUPSO-SVM的參數優化時間為9 065 s,而DUPSO-DSVM算法參數優化時間為2 380 s,其優化時間只占DUPSO-SVM算法優化時長的26.26%。DUPSO-DSVM算法大大縮短了參數的優化時間,但仍保持著較高的分類正確率,相對于僅使用SVM進行分類的分類正確率提高了3.73%。 本文基于DUPSO-DSVM算法對中國民歌的分類問題進行研究。首先,收集了10個不同地域共2 500條民歌數據資源,創建數據集并進行數據預處理;然后,對民歌進行特征分析提取,確定了將40維MFCC、12維LPCC、1維短時平均能量和1維短時平均過零率參數共54維特征作為特征向量;最后,使用本文提出的基于距離排序的DUPSO-DSVM快速分類算法與5種經典的分類算法進行比較。實驗結果表明,DUPSO-SVM算法使得民歌的分類正確率最終達到了84%;DUSPO-DSVM算法使得參數訓練時間只占優化前時間的26.26%,在民歌快速分類方面取得了良好的效果。5 仿真實驗

5.1 音頻特征對比




5.2 分類算法對比



5.3 DUPSO-DSVM快速分類算法分析








6 結束語