董興寧,蔡宇航
(江蘇大學計算機科學與通信技術(shù)學院,鎮(zhèn)江212013)
隨著科技的進步,多媒體技術(shù)的不斷發(fā)展,人們對音樂的追求在不斷地提高。然而,現(xiàn)今并沒有一款專門的應(yīng)用可以做到分離歌曲的人聲與伴奏,這使得許多人在聽歌時不能切換到伴奏狀態(tài)進行哼唱和練習。此外,歌曲人聲分離還可用于自動歌者識別、音樂標注、音樂的去噪與增強、基于內(nèi)容的音樂檢索等方面。因此,開發(fā)歌曲人聲分離的軟件勢在必行。
對于實際歌曲中的復雜聲音,由于其聲源的復雜性和多樣性,加之可能存在的背景噪聲的干擾,使對于這一領(lǐng)域的研究還不夠成熟。目前主流的人聲分離算法大致可分為基于時頻分解的分離技術(shù)和基于基音分解的分離技術(shù)。在時頻分解領(lǐng)域,Vembu[1]用非負矩陣分解(Non-negative Matrix Factorization,NMF)來重組混合頻譜中的不同音源,該方法能有效地進行簡單的音樂分離,但當樂器數(shù)量增加時效果就會明顯下降;在基音分解領(lǐng)域,Hsu[2]利用基音檢測算法來檢測人聲部分,然后將人聲的基音反復迭代以優(yōu)化人聲和伴奏的分離效果;但其學習模型需要足夠多的數(shù)據(jù)進行先驗分離,且精確的基音檢測本身仍是一個未解決的問題。
圖1 為本系統(tǒng)算法的總體設(shè)計路線:首先對原始音頻進行預處理,然后提取人聲特征,并放入搭建好的語音模型中訓練學習,最后輸出降噪處理后的人聲流和樂聲流。
以下就四個重要的技術(shù)環(huán)節(jié)做分開闡述。
由于原始歌曲存在格式、碼率、噪聲等問題,不能直接放入模型中訓練,故須進行預處理,其中包含了預加重,分幀和加窗的操作。預加重(Pre-emphasis)是發(fā)
送端對輸入信號高頻分量的提升,其目的是補償高頻分量在傳輸過程中的過大衰減。由于語音信號具有短時平穩(wěn)性,故把其分為一些短段進行處理,即分幀操作;同時為了避免丟失語音信號間的動態(tài)信息,在相鄰幀之間須留有一段重疊區(qū)域,即幀移;然后逐幀乘以窗函數(shù),以增加每幀左端和右端的連續(xù)性,避免出現(xiàn)吉布斯效應(yīng)。本文所設(shè)置的幀長為30ms,幀移為15ms,所加的窗函數(shù)為漢明窗。
預處理完成后,須提取語音信號的梅爾頻率倒譜(Mel-scale Frequency Cepstral Coefficients,MFCC)特征,作為訓練模型的輸入。Mel 頻率倒譜參數(shù)能很好地反映人耳聽覺系統(tǒng)的非線性特性,并在特征提取過程中利用了歌唱者的音調(diào)特性,是用于人聲特征提取最有效的特征之一。
MFCC 的提取分為以下幾個步驟:快速傅里葉變換(Fast Fourier Transformation,F(xiàn)FT)、三角帶通濾波,離散余弦變換(Discrete Cosine Transform,DCT)和動態(tài)差分參數(shù)提取。其中,F(xiàn)FT 是為了將語音信號從時域信息轉(zhuǎn)換為更易處理的頻域能量分布;三角帶通濾波是為了對頻譜進行平滑化,突顯原語音的共振峰;DCT 是為了計算L 階的Mel 參數(shù),這里的L 階是指MFCC 的系數(shù)階數(shù),本文選取為12;最后,分別提取該系數(shù)的一階差分和二階差分,得到整段音頻的MFCC 特征。
(5)當數(shù)據(jù)到達入口隧道路由器ITR后,對其實行解封裝,并將解封裝后的數(shù)據(jù)發(fā)至主機X。至此,端到端的交互過程全部完成。
本模型是一個由多層全連接組成的循環(huán)神經(jīng)網(wǎng)絡(luò),該部分用于學習上文得到的人聲特征,并通過多層的非線性結(jié)構(gòu)不斷優(yōu)化學習,最后根據(jù)訓練完成的隱層表達來重構(gòu)人聲和伴奏部分。具體而言,本模型的RNN 網(wǎng)絡(luò)共分為3 層,除最后一層由tanh 函數(shù)激活外,其余各層均由relu 函數(shù)激活。同時選取了Adam優(yōu)化器作為優(yōu)化算法,使得模型能夠自動調(diào)整學習率;最后,選用了二值時頻掩蔽函數(shù)作為損失函數(shù),其公式如下所示,其中代表模型在第t 幀的輸出,y1t和y2t代表在t 時刻的純凈人聲與伴奏聲,?是一個性能常量。式中第一、三個平方差旨在使分離后的人聲、樂聲與純凈的人聲、樂聲進一步接近;其余的平方差旨在使分離后的人聲、樂聲包含更少的混聲。
本模型首先輸入混合信號x_mixed,藉由其內(nèi)部進行非負矩陣分解,計算合成等操作初步得到2 個輸出,分別對應(yīng)著的人聲流和樂聲流,然后和純凈人聲、樂聲頻段進行二值運算,將結(jié)果送入到Adam 算法優(yōu)化器中進行調(diào)整,最后反饋給RNN 的網(wǎng)絡(luò)進一步優(yōu)化和學習。
為了進一步提高分離后的音頻質(zhì)量,須對得到的人聲流和樂聲流進行降噪處理,然后再做快速傅里葉逆變換(IFFT)得到相應(yīng)的人聲、樂聲輸出。本文選取了Berouti 的改進譜減法進行降噪處理,即用帶噪信號的頻譜減去噪聲信號的頻譜;其公式如下所示,其中PS( w )為輸入的語音頻譜,Pn( w )為估計的噪音頻譜,D( w )為差值頻譜,α 為相減因子。
由于相減后D( w )可能會出現(xiàn)負值,故須通過以下公式進行相應(yīng)的調(diào)整,其中PS'( w )為最終確定的語音頻譜,β 為頻譜下限閾值參數(shù),max()為求最大值函數(shù)。
圖1 系統(tǒng)算法流程圖
本文采用了兩種方法構(gòu)造可供訓練與測試的數(shù)據(jù)集。部分數(shù)據(jù)直接來源于MIR lab 的MIR-1K 數(shù)據(jù)集,該數(shù)據(jù)集由1000 余個歌曲片段構(gòu)成,人聲和伴奏聲分別存放在不同的通道里,且每個歌曲均為16kHz 的采樣率,均為wav 格式,片段長度由4~13s 不等;但該數(shù)
據(jù)集大多為偏抒情性質(zhì)的歌曲,缺少重金屬、搖滾類等背景嘈雜的音頻;故剩余數(shù)據(jù)仿照MIR-1K 的制作方法,多選取上述所欠缺類型的音樂,采用人聲清唱+伴奏獨播的方式合成,并將其放在兩個通道,手動分片后添加了標簽。其目的是豐富總體數(shù)據(jù)集的多樣性,提高整體模型的訓練效果。
根據(jù)上文第一節(jié)所介紹的技術(shù)路線,首先構(gòu)造相應(yīng)的RNN 模型;并將數(shù)據(jù)集分為訓練集(70%)和測試集(30%),在模型訓練完成后,輸入測試集數(shù)據(jù),得到待測試的人聲組和樂聲組輸出。
首先進行有效性分析;隨機抽取測試結(jié)果中的16組歌曲,將輸出的人聲流、樂聲流和原歌曲在經(jīng)過聲道分離后的人聲流、樂聲流同時進行波形輸出,比較分離前后的波形圖。
其次進行性能對比評價分析;這里采用了平均主觀意見分(Mean Opinion Score,MOS)作為評價分離后音頻質(zhì)量的主要指標。MOS 是目前最被廣泛使用的語音評定方法,其評分的標準主要包括人聲與伴奏的分離程度、信噪比、失真程度等;它的取值范圍為[0,5],其結(jié)果從低到高共分為1~5 共5 個等級,1 為差,2 為一般,3 為正常,4 為好,5 為最好。在實際環(huán)境中人們交談的MOS 值一般在2.0~3.0 之間,此時人耳很難辨別出差異;低于此閾值則信號衰落的較為明顯,人耳可明確分辨。
本實驗中,采用PESQ 算法估算歌曲的MOS 值。PESQ 是國際電信聯(lián)盟(International Telecommunication Union,ITU)提出的一種語音質(zhì)量客觀評價算法,與MOS 評分的相關(guān)度達到了0.97。其算法具體步驟如圖2 所示:首先將參照語音信號和待測語音信號調(diào)整至標準聽覺電平,再進行輸入濾波,并將兩個信號的時間對齊,然后進行聽覺轉(zhuǎn)換,并將轉(zhuǎn)換之后的輸入和輸出信號差值通過認知模型再處理,計算出最終的PESQ 分值,即PESQMOS 值。
圖2 PESQ算法流程圖
計算最后PESQ 得分的公式如下所示,其中dsym為對稱干擾,dasym為非對稱干擾;PESQMOS 值的最終范圍為[-0.5,4.5]:
所有的實驗都在Windows 10 操作系統(tǒng)下完成,開發(fā)語言為Python 3.6.0,深度學習框架為TensorFlow-GPU 1.10.0,編譯器為MSVC 2015 update 3;批量訓練的數(shù)量設(shè)置為96,總迭代次數(shù)設(shè)置為80000;而再約50000 次迭代后loss 值趨于穩(wěn)定,表明訓練完成。
有效性分析:隨機抽取測試結(jié)果中的部分歌曲,以abjones_2.wav 歌曲為例,其分離前后的波形圖如圖3所示。對比分離前后的樂聲波形(子圖1 和子圖2)與人聲波形(子圖3 與子圖4),可以發(fā)現(xiàn)分離后的人聲流和樂聲流與原始音頻的波形幾乎一致,且在背景音樂中也沒有殘留的人聲基音及其諧波分量,反映出該算法能有效地實現(xiàn)人聲與樂聲的分離。
圖3 abjones_2.wav原歌曲與分離后歌曲的波形對比圖
性能對比評價分析:隨機抽取測試結(jié)果中的10 組歌曲,按上文實驗設(shè)置中的方法計算其PESQMOS 值,其中參照方法如表1 所示,所得結(jié)果如表2 所示。
表1 參照方法
表2 10 組歌曲的PESQMOS 值
由表2 可知,對比原歌曲,分離后的人聲流和樂聲流的PESQMOS 評分均在2.6-3.6 分之間,平均得分約為3.0 分左右,即所謂的“正常”等級。在該等級下,分離后的信號失真程度較低,人耳不易辨別出差異,其效果近似于全速率的語音編碼無線通信的話音質(zhì)量(MOS 值一般為3.1-3.2),可以達到實際的應(yīng)用需求。同時注意到,對比原歌曲MOS 值1.15 分的均分,本算法分離后音頻間的MOS 值更低,為0.59 分,這說明了本算法分離后的人聲與樂聲之間無關(guān)性更強,冗雜的混音更小,一定程度上體現(xiàn)了本算法的優(yōu)越性。
本文以網(wǎng)站的形式將上述成果落地,系統(tǒng)的整體設(shè)計如圖4 所示。
圖4 系統(tǒng)設(shè)計實現(xiàn)圖
在網(wǎng)站主頁面中植入了一個浮動框架(iframe),作為提示用戶輸入歌曲位置、進行下載操作的交互窗口。其頁面的書寫主要為HTML 語言,并使用了CSS語言進行美化,使用了JavaScript 腳本語言處理部分控件和事件。
本文采用了Python Web 的Django 框架作為支持后臺腳本運行的語言。Django 是一個開放源代碼的Web 應(yīng)用框架,采用了MVC 的框架模式,并擁有多個組件及許多功能強大的第三方插件,這使得Django 具有很強的可擴展性。
本文采用了Django 框架中的表單機制進行前后端交互,通過統(tǒng)一資源定位符(Uniform Resource Locator,URL)進行前端控件名稱和后端處理函數(shù)的綁定,以此實現(xiàn)文件上傳、文件處理、文件下載、頁面轉(zhuǎn)移的功能。本系統(tǒng)還引入了Session 機制,其目的是為了防止有多個用戶在使用網(wǎng)頁時,所可能產(chǎn)生的數(shù)據(jù)冗雜或混亂的問題,以提高網(wǎng)站的并發(fā)性和健壯性。
考慮到實際應(yīng)用中用戶上傳歌曲的復雜性,本文選擇了多種類型的音樂進行了驗證和測試,包括中文樂曲(曲1~2)、現(xiàn)場錄制樂曲(曲3)、男女合唱樂曲(曲4)、英文樂曲(曲5),其結(jié)果如表3 所示;由于各歌曲清唱人聲的獲取難度遠大于伴奏資源,本文只將分離后的歌曲伴奏與原聲伴奏進行了對比,并計算其MOS值;各歌曲及相應(yīng)的伴奏音頻均來源于正版授權(quán)音樂。
表3 5 首歌曲的分離效果評估
由表3 可知,對于時長在5 分鐘(300 秒)內(nèi)的歌曲,本系統(tǒng)的處理時間一般小于80 秒,處理速度較快;同時,本系統(tǒng)分離后的人聲與樂聲音頻大小相比原歌曲均有超過半數(shù)的下降,這有效地節(jié)省了內(nèi)存;此外,分離后的伴奏聲與原歌曲的MOS 評分均在2.9 分左右,與實驗值接近,說明其分離失真程度并不影響實際使用體驗。這些都說明本系統(tǒng)能較好地完成歌曲人聲與伴奏分離的任務(wù)。
本文設(shè)計并實現(xiàn)了一個基于循環(huán)神經(jīng)網(wǎng)絡(luò)的歌曲旋律與人聲分離系統(tǒng),通過MFCC 提取特征參數(shù),利用RNN 進行建模學習,并進行實驗驗證了該算法的有效性,最終遷移實現(xiàn)了相應(yīng)的Web 端系統(tǒng),完成了將原歌曲分成人聲流和樂聲流的目標。該系統(tǒng)操作簡單,分離的樂曲較清晰、混音小,且具有較高的用戶友好性;但本系統(tǒng)所得到的輸出音頻質(zhì)量仍不是最好,且在線處理的耗時較長,未來可通過進一步調(diào)整參數(shù)以優(yōu)化訓練模型,及裁剪神經(jīng)網(wǎng)絡(luò)以縮短后端處理時間,從而提高整體系統(tǒng)的處理效果和吞吐速度。