伍寅峰,張明
(上海海事大學信息工程學院,上海 201306)
音樂作為一種重要的數(shù)據(jù)形式,充斥著新一代人的生活和工作,傳統(tǒng)的音樂檢索采用的是文本注釋的方法進行標記,但是由于標記的復雜性和標記者的主觀性,傳統(tǒng)的音樂檢索技術已經逐漸走下歷史的舞臺。哼唱檢索(Query By Humming,QBH)作為一種新興的檢索方法由于其方便簡單的特性被廣大用戶所接受,它是指用戶哼唱歌曲的某個片段作為查詢輸入,然后從歌曲數(shù)據(jù)庫中檢索出相對應的音樂。因此,相對傳統(tǒng)的以文本注釋的搜索方法,哼唱檢索更能提高用戶的搜索體驗。
對于哼唱檢索來說,特征的提取好壞對檢索的結果影響巨大,大量研究證明對于歌曲來說,旋律是其本質的特征,音高、音長和節(jié)奏是旋律的重要屬性。1995年,Ghias[1]展示了首個QBH系統(tǒng),創(chuàng)造性的將歌曲轉換為音調輪廓信息進行匹配,利用三個字符S、U、D來表示音樂的旋律輪廓。McNab等[2,3]增加了對音樂節(jié)奏信息的提取提高檢索成功率。Blackburn[4]、Roland[5]和Shih[6]等發(fā)展了McNab的方法,使用基于樹的數(shù)據(jù)庫搜索技術來提高搜索精度和速度。隨后Shih[7]在其QBH系統(tǒng)中使用了隱馬爾科夫模型,這項技術已經被成功應用到語音識別等領域。Zhu等[8]用動態(tài)時間規(guī)整(Dy?namic Time Warping,DTW)索引技術將演唱歌曲直接與數(shù)據(jù)庫中的歌曲進行比較。
通過以上的研究分析發(fā)現(xiàn),以往的研究方法總是集中于搜索準確率或搜索時間某一點上,很難從兩者之間做出平衡,搜索精度高的算法往往運行時間過長,而搜索時間很短的算法精度卻不高,本文在上述研究的基礎上,首先改進了基于短時自相關法的基音估值算法,然后使用一種新的線性伸縮方法進行音高輪廓的匹配。實驗表明,使用該算法提取的音高輪廓進行音樂檢索匹配時,有較好的搜索精度,對于一定程度的嘈雜壞境具有較強的適應性。本文的哼唱檢索系統(tǒng)整體框架如圖1所示。
圖1 哼唱檢索處理框架
本文對哼唱信息處理的過程分成3步:預處理、基音提取、旋律匹配。
預處理部分包括預加重、加窗分幀和降噪等操作。
(1)預加重
對輸入的語音信號進行預加重的目的主要是為了加重語音高頻部分,去除聲門激勵和口鼻輻射的影響,使信號的頻譜變得平坦。本文的預加重是在語音信號數(shù)字化后,在參數(shù)分析之前在計算機里用具有6dB/倍頻程的提升高頻特性的一階FIR高通數(shù)字濾波器來實現(xiàn)[9],其表達式如式(1)所示:
其中u為預加重系數(shù)。
(2)加窗分幀
對于窗函數(shù)的選擇,由于矩形窗的頻譜泄露較嚴重,所以我們采用更加平滑的漢明窗,其表達式如式(1)所示(其中N為幀長)
(3)降噪
對語音信號中加性噪聲的抑制方法有多種。本文采用最小均方誤差估計語音增強方法,它是由Yariv Ephraim和David Malah[10]于1985年提出,是一種對特定的失真準則和后驗概率不敏感的估計方法,能有效地降低音樂噪聲的干擾。
短時自相關函數(shù)是對信號進行短時相關分析時最常用到的特征函數(shù)。音樂信號s(m)經窗長為N的窗口截取為一段加窗信號Sn(m),對其進行分幀,Sn(m)為一幀內的信號,定義Sn(m)的自相關函數(shù)Rn(k)為:
由于信號的短時自相關函數(shù)在基音周期的整數(shù)倍位置上會出現(xiàn)峰值,因此可以通過檢測峰值的位置來提取基音周期值?;诙虝r自相關法進行基音提取是目前比較常見的基音提取算法,但是這種方法有著很明顯的缺陷:
(1)聲道共振峰有時會嚴重影響激勵信號的諧波結構。
(2)語音信號本身是準周期性的,而且其波形的峰值點或過零點受共振峰結構和噪聲的影響。
鑒于此,我們提出一種改進的基于短時自相關法的基音周期提取算法,在傳統(tǒng)方法的基礎上,進行預處理,實現(xiàn)對基音周期的準確提取。本文對語音信號先進行中心削波處理,同時在中心削波法的基礎上,再采用三電平削波法,從而大大節(jié)省了計算時間。
中心削波函數(shù)如式(4)所示:
三電平削波函數(shù)如式(5)所示
實驗表明,將削波后的序列 f(x)用短時自相關函數(shù)估計基音周期,在周期位置的峰值更加尖銳,可以有效地減少倍頻或半頻錯誤,同時計算時間會大大縮短。
基于以上處理,即可較好地求出每一幀哼唱信號的基音頻率,然后使用下式轉換成半音單位:
其中,freq是以Hz為單位的基頻值。
一個音符總會延續(xù)若干幀,得到每一幀的音高之后,可采取加權求特征值的方式得到每個音符的音高。設一個音符由n幀構成,每幀的音高分別是P1,P2,…,Pn,則每一幀的權重定義如下:累加具有相同音高幀的權重,權重最大者即為整個音符的音高,進而得出音高輪廓,圖2是作者哼唱的一段音樂的音高輪廓和時域波形。
得到音高輪廓后,我們就可以與音樂數(shù)據(jù)庫中的歌曲進行旋律匹配,音樂數(shù)據(jù)庫中的每一首歌曲也必須事先轉換成音高輪廓的形式,旋律匹配的目的在于找到與我們哼唱片段最相似的目標音高輪廓。其中相似度的大小取決于我們所用到的距離函數(shù),距離越小,則相似度越高。在計算兩段音高的距離時,一些問題不可忽視:每個人唱歌的音高基準不一樣,女生唱歌的key比較高,而男生比較低;每個人唱歌的速度也不一樣,唱歌的快慢可能都與數(shù)據(jù)庫中的歌曲速度不同。
圖2 哼唱片段的音高輪廓與時域波形
對于第一個問題,可以將兩段音高都平移到同一個音高基準,再進行比對。對于第二個問題,假設速度的變化是均勻的,此時就可以采用線性伸縮算法來進行比對。
在不切音符情況下,最簡單高效的匹配算法就是線性伸縮,其原理就是以線性方式伸展或收縮哼唱片段音高輪廓來搜索數(shù)據(jù)庫中的歌曲,其算法過程如下:
(1)使用內插法,將哼唱片段的音高輪廓進行線性的伸展或收縮,例如伸縮比例可以是從0.5到1.5,跳距是0.25,共產生5個版本。
(2)將這5個處理過的音高輪廓和歌曲數(shù)據(jù)庫中的一首歌曲的音高輪廓進行比對,得到了5個距離,取距離最小者,作為哼唱片段的音高輪廓和這首歌的距離。
(3)對歌曲庫中的所有歌曲進行比較,距離最短的既是與哼唱片段的最佳匹配,匹配結果如圖3所示。
從上面我們可以看出,線性收縮算法的匹配準確率在于伸縮系數(shù)的跳距,跳距越小,則匹配的準確度會隨之上升,但是匹配的時間在到達一個閾值后會呈線性增長。同時當用戶哼唱速度快慢不一時,線性伸縮的效果也會受到很大的影響?;谶@兩個問題,本文對線性伸縮的匹配準則做出了改進,提出了限定閾值的多分段式線性伸縮算法,當用戶哼唱的速度快慢不一時,對哼唱速度發(fā)生明顯變化的點進行分割,這樣在短時間內分割出來的哼唱片段的速度變化可以看作是均勻的,同時我們需要限定一個閾值,用來限制分割的段數(shù),分割的段數(shù)與跳距的大小選擇呈反比關系。下面對限定閾值的多分段式線性伸縮算法的過程作具體闡述:
(1)給定閾值α,閾值的選擇不應過大,應由哼唱片段的實際質量做出衡量。哼唱片段的質量越高閾值取值可越小,反之則越大。但不可過大,實驗證明,一旦閾值選取過大,匹配時間會呈線性增長。
(2)根據(jù)閾值α將目標音高輪廓和哼唱片段音高輪廓切割成α段,先對第一段進行處理。
圖3 線性伸縮的匹配結果示意
(3)使用線性內插將哼唱片段的音高輪廓線性伸展或收縮,跳距θ根據(jù)閾值的大小判斷,跳距θ和閾值α總是呈現(xiàn)正反比關系。本文給出一種選擇方法。
σ2和σ1分別表示伸縮比例,伸縮比例的一般在0到2之間選取,本文選取的伸縮比例范圍是0.5至1.5。
(4)將n個伸縮后的哼唱片段與歌曲數(shù)據(jù)庫中的一首歌曲的音高輪廓數(shù)據(jù)比較,獲到n個距離,將其中的最小值作為目標音高輪廓和哼唱片段音高輪廓之間的最小距離Dist1。
(5)對于之后的 α-1段重復步驟(3)和步驟(4)的操作,得到α-1段的最小距離Dist2,Dist3,…,Distα。
(6)相加所有的獨立最小距離得到最終距離 DistSum=Dist1+Dist2+…+Distα。
(7)與數(shù)據(jù)庫中所有歌曲進行步驟(1)到步驟(6)的操作,為了哼唱片段匹配過程的一致性,應選擇與以上操作相同的閾值α和跳距θ,進而得到m個DistSum。
(8)比較m個DistSum,最小者則是我們要檢索的目標歌曲。
實驗證明,該算法能很好地解決跳距的選擇問題和哼唱速度不均的問題。
為了測試本文所提出的檢索方法的有效性,本文基于MIR-QBSH數(shù)據(jù)集(MIREX競賽用于QBSH任務的語料庫)上進行了相關實驗,MIR-QBSH數(shù)據(jù)集包含48個地面實況MIDI文件和約195個主題的4431個查詢片段,測試片段都是頻率為8kHz、8位的單聲道WAV文件。所有實驗均在主頻為2.3GHz的Intel Core i5-6300HQ CPU、內存為 8GB、顯示適配器為NVIDIA GeForce GTX 960M的PC上完成,使用的系統(tǒng)是Windows10,64位,編程語言采用C++。
為了能更加客觀地表示新算法的執(zhí)行效率,我們選擇了目前使用較多的兩種旋律匹配算法:字符串匹配算法和DTW匹配算法作為比較,比較結果如圖4所示。
從圖中我們可以看到,三種旋律匹配算法中,DTW匹配算法作為當前最主流的匹配算法,其準確率達到了最高,限定閾值的多分段線性伸縮算法其次,字符串匹配算法排在最后,但是DTW算法卻因為其繁雜的計算過程而在搜索時間上遠落后于其他兩種算法,如表1所示。新算法在匹配準確率上雖然稍遜于DTW匹配算法,但是在搜索時間上卻取得了勝利,綜合兩方面考慮,新算法在現(xiàn)實生活中更加具有實用性。
表1 三種方法檢索時間對比
同時我們選擇了10位未經專業(yè)音樂訓練的測試人員,男女各5人,每人隨機哼唱數(shù)據(jù)庫中的一首歌曲,哼唱片段的長度在7秒至15秒之間不等。對哼唱結果的成功率我們進行了統(tǒng)計,統(tǒng)計結果如表2所示。
表2 哼唱檢索實驗結果
實驗結果表明,該系統(tǒng)能夠很好地對哼唱片段進行識別,并能給出滿意的結果。
圖4 三種不同的匹配算法比較
本文在分析現(xiàn)有的基音提取算法的基礎上,提出了當前算法的不足,并加以改進,使其能夠更好地為旋律匹配提供支持。同時在旋律匹配算法的選擇上,提出了新的限定閾值額多分段線性伸縮算法,在提升匹配準確率的同時降低了計算量,在匹配正確率和搜索時間兩者之間做出了平衡。接下來如何在不犧牲搜索時間的基礎上進一步提升匹配準確率,需要進一步深入的研究。
參考文獻:
[1]Ghias A,Logan J,Chamberlin D,et al.Query By Humming:Musical Information Retrieval in an Audio Database[C].ACM International Conference on Multimedia.ACM,1995:231-236.
[2]Mcnab R J,Smith L A,Witten I H,et al.Towards the Digital Music Library:Tune Retrieval From Acoustic Input[J],1996:11-18.
[3]Mcnab R J,Smith L A,Witten I H,et al.Tune Retrieval in the Multimedia Library[J].Multimedia Tools&Applications,2000,10(2-3):113-132.
[4]Blackburn S,Deroure D.A Tool for Content Based Navigation of Music[C].ACM International Conference on Multimedia.ACM,1998:361-368.
[5]Rolland P Y,Raskins G,Ganascia J G.Music Content-based Retrieval:an Overview of Melodiscoc Approach And Systems[C].ACM Multimedia Conference,1999.
[6]Shih H H,Zhang T,Kuo C C J.Real-Time Retrieval of Songs from Musical Databases with Query-by-Humming[J].
[7]Shih H H,Narayanan S S,Kuo C C J.An HMM-based Approach to Humming Transcription[C].IEEE International Conference on Multimedia and Expo,2002.ICME'02.Proceedings.IEEE,2002:337-340 vol.1.
[8]Zhu Y,Shasha D.Warping Indexes with Envelope Transforms fFor Query by Humming[C].Proceedings of the 2003 ACM SIGMOD International Conference on Management of data.ACM,2003:181-192.
[9]周明全,耿國華,王小鳳,李鵬.基于內容的音頻檢索技術[M].北京:科學出版社,2014:29-29
[10]Ephraim Y,Malah D.D Malah,Speech Enhancement Using a Minimum Mean-Square Error Short-Time Spectral Amplitude Estimator[J].IEEE Trans.Acoust.Speech Signal Process 32,1109-1121[J].IEEE Transactions on Acoustics Speech&Signal Processing,1985,32(6):1109-1121.