本發(fā)明涉及一種基于動(dòng)態(tài)時(shí)間伸縮算法的哼唱旋律識(shí)別方法,屬于語(yǔ)音識(shí)別領(lǐng)域。
背景技術(shù):
在基于內(nèi)容的音樂(lè)信息檢索研究中,哼唱旋律識(shí)別方法是其核心算法和研究重點(diǎn),識(shí)別方法的性能對(duì)識(shí)別效率和識(shí)別結(jié)果有著直接的影響。在對(duì)歌曲名或者歌手不熟悉的情況,通過(guò)哼唱旋律識(shí)別我們可以十分方便快捷的根據(jù)個(gè)人哼唱查詢(xún)到相應(yīng)歌曲。同時(shí)它在歌曲的曲調(diào)分析和演唱者的演唱水平打分等方面也有十分廣泛的應(yīng)用。在哼唱旋律識(shí)別方法中,我們既要考慮哼唱語(yǔ)音中的音符增減與音高偏差現(xiàn)象,又要考慮用戶(hù)可以在歌曲的任意時(shí)段進(jìn)行哼唱。因此采用適當(dāng)?shù)淖R(shí)別策略和匹配方法十分重要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于動(dòng)態(tài)時(shí)間伸縮算法的哼唱旋律識(shí)別方法,其可以有效地根據(jù)哼唱者哼唱的語(yǔ)音信息識(shí)別出歌曲的信息。本發(fā)明采用以下技術(shù)方案:
一種基于動(dòng)態(tài)時(shí)間伸縮算法的哼唱旋律識(shí)別方法,包括以下步驟:
(1)語(yǔ)音信息預(yù)處理。將哼唱的語(yǔ)音信息進(jìn)行去噪,預(yù)加重和加窗分幀等操作,提高語(yǔ)音信號(hào)的質(zhì)量,使信號(hào)的高頻部分變得平坦,語(yǔ)音信號(hào)整體平穩(wěn),便于后續(xù)的分析;
(2)特征提取。對(duì)經(jīng)過(guò)上述步驟處理過(guò)的語(yǔ)音信號(hào)進(jìn)行端點(diǎn)檢測(cè)和mfcc系數(shù)提取等操作,可以把代表語(yǔ)音信號(hào)本質(zhì)特征的參數(shù)抽取出來(lái),得到哼唱輸入旋律的特征序列;
(3)基于旋律特征的快速篩選。本方法根據(jù)歌曲的半音差作為特征旋律。首先根據(jù)歌曲的音高起伏計(jì)算一首歌的最高音和最低音的半音差。刪除目標(biāo)音樂(lè)庫(kù)中與待測(cè)旋律半音差相差較大的歌曲。通過(guò)此步驟,快速刪除一部分歌曲,提高旋律識(shí)別過(guò)程;
(4)基于編輯距離的快速篩選。首先將哼唱輸入旋律的特征序列依據(jù)音高差,轉(zhuǎn)換成字符串序列,與目標(biāo)音樂(lè)庫(kù)中經(jīng)過(guò)基于旋律特征快速匹配篩選剩下的歌曲進(jìn)行計(jì)算編輯距離。剔除距離相差較大的歌曲;
(5)基于改進(jìn)的動(dòng)態(tài)時(shí)間伸縮算法的精確識(shí)別。在哼唱識(shí)別中,并不能簡(jiǎn)單地將哼唱輸入旋律的特征序列與目標(biāo)模板序列進(jìn)行比較,因?yàn)楹叱咴诤叱锌赡艽嬖诟鞣N各樣的哼唱錯(cuò)誤,如添加音符,刪除音符等,因此對(duì)模板進(jìn)行時(shí)間規(guī)劃十分重要。動(dòng)態(tài)時(shí)間伸縮算法通過(guò)不斷的計(jì)算兩矢量的距離以尋找最優(yōu)的匹配路徑,所以得到的兩矢量是累計(jì)距離最小的規(guī)整整數(shù),這保證了他們之間存在最大的聲學(xué)相似特征。但是動(dòng)態(tài)時(shí)間伸縮算法存在檢索時(shí)間慢,所需存儲(chǔ)空間大等問(wèn)題,因此本方法針對(duì)上述問(wèn)題從端點(diǎn)松弛,跨句檢索,代價(jià)函數(shù)等幾個(gè)方面對(duì)動(dòng)態(tài)時(shí)間伸縮算法進(jìn)行改進(jìn)。通過(guò)改進(jìn)后的動(dòng)態(tài)時(shí)間伸縮算法實(shí)現(xiàn)了哼唱旋律的精確識(shí)別。
本發(fā)明的優(yōu)點(diǎn):
1、本發(fā)明引入了跨句檢索和尾端點(diǎn)松弛,減少了動(dòng)態(tài)時(shí)間伸縮算法所需時(shí)間的20%。
2、本發(fā)明在動(dòng)態(tài)時(shí)間伸縮算法的代價(jià)函數(shù)計(jì)算中引入了音長(zhǎng)的特征,使命中率在原有的基礎(chǔ)上提高了5%。
3、本發(fā)明在不限制用戶(hù)哼唱方式或者節(jié)奏較不準(zhǔn)確的情況下,相較于原算法具有更好的魯棒性。
4、本發(fā)明針對(duì)傳統(tǒng)的動(dòng)態(tài)時(shí)間伸縮算法在跨句檢索,端點(diǎn)松弛等方面進(jìn)行了改進(jìn),并在算法的代價(jià)函數(shù)計(jì)算中引入了音長(zhǎng)特征,從整體上提高了哼唱旋律識(shí)別算法的性能,提高了識(shí)別效率。
附圖說(shuō)明
圖1為本發(fā)明的方法流程圖。
圖2為本發(fā)明動(dòng)態(tài)時(shí)間伸縮算法原理圖。
圖3為本發(fā)明計(jì)算所需網(wǎng)格示意圖。
圖4為本發(fā)明尾端點(diǎn)松弛路徑圖。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為達(dá)成預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)本發(fā)明提出的其具體實(shí)施方式、結(jié)構(gòu)、特征及其功效,詳細(xì)說(shuō)明如后。
如圖1所示,一種基于動(dòng)態(tài)時(shí)間伸縮算法的哼唱旋律識(shí)別方法,包括以下步驟:
(1)語(yǔ)音信息預(yù)處理。將哼唱的語(yǔ)音信息進(jìn)行去噪,預(yù)加重和加窗分幀等操作,提高語(yǔ)音信號(hào)的質(zhì)量,使信號(hào)的高頻部分變得平坦,語(yǔ)音信號(hào)整體平穩(wěn),便于后續(xù)的分析;
(2)特征提取。對(duì)經(jīng)過(guò)上述步驟處理過(guò)的語(yǔ)音信號(hào)進(jìn)行端點(diǎn)檢測(cè)和mfcc系數(shù)提取等操作,可以把代表語(yǔ)音信號(hào)本質(zhì)特征的參數(shù)抽取出來(lái),得到哼唱輸入旋律的特征序列;
(3)基于旋律特征的快速篩選。本方法根據(jù)歌曲的半音差作為特征旋律。首先根據(jù)歌曲的音高起伏計(jì)算一首歌的最高音和最低音的半音差。刪除目標(biāo)音樂(lè)庫(kù)中與待測(cè)旋律半音差相差較大的歌曲。通過(guò)此步驟,快速刪除一部分歌曲,提高旋律識(shí)別過(guò)程;
(4)基于編輯距離的快速篩選。首先將哼唱輸入旋律的特征序列依據(jù)音高差,轉(zhuǎn)換成字符串序列,與目標(biāo)音樂(lè)庫(kù)中經(jīng)過(guò)基于旋律特征快速匹配篩選剩下的歌曲進(jìn)行計(jì)算編輯距離。剔除距離相差較大的歌曲;
(5)基于改進(jìn)的動(dòng)態(tài)時(shí)間伸縮算法的精確識(shí)別。在哼唱識(shí)別中,并不能簡(jiǎn)單地將哼唱輸入旋律的特征序列與目標(biāo)模板序列進(jìn)行比較,因?yàn)楹叱咴诤叱锌赡艽嬖诟鞣N各樣的哼唱錯(cuò)誤,如添加音符,刪除音符等,因此對(duì)模板進(jìn)行時(shí)間規(guī)劃十分重要。動(dòng)態(tài)時(shí)間伸縮算法通過(guò)不斷的計(jì)算兩矢量的距離以尋找最優(yōu)的匹配路徑,所以得到的兩矢量是累計(jì)距離最小的規(guī)整整數(shù),這保證了他們之間存在最大的聲學(xué)相似特征。但是動(dòng)態(tài)時(shí)間伸縮算法存在檢索時(shí)間慢,所需存儲(chǔ)空間大等問(wèn)題,因此本方法針對(duì)上述問(wèn)題從端點(diǎn)松弛,跨句檢索,代價(jià)函數(shù)等幾個(gè)方面對(duì)動(dòng)態(tài)時(shí)間伸縮算法進(jìn)行改進(jìn)。通過(guò)改進(jìn)后的動(dòng)態(tài)時(shí)間伸縮算法實(shí)現(xiàn)了哼唱旋律的精確識(shí)別。
上述步驟(4)基于編輯距離的快速篩選原理如下:
首先將哼唱輸入旋律的特征序列依據(jù)音高差,轉(zhuǎn)換成包含(e,u,x,s,d,b,t)的字符串序列,與目標(biāo)音樂(lè)數(shù)據(jù)庫(kù)中經(jīng)過(guò)基于旋律特征快速篩選剩下的歌曲計(jì)算編輯距離。編輯距離是一種基于動(dòng)態(tài)規(guī)劃思想的方法,其原理是特征序列x與特征序列y的編輯距離,定義為從x變換到y(tǒng)所需的最少基本操作數(shù),這里的基本操作包括:
(a)替換x中一個(gè)字符被y中對(duì)應(yīng)字符串替換掉;
(b)插入y中一個(gè)字符插入到x中,使x長(zhǎng)度加1;
(c)刪除x中一個(gè)字符,是x長(zhǎng)度減1。
具體計(jì)算公式如下所示:
ed(a(i),b(j))=ed(a,b)ifx=y(tǒng)
ed(a(i),b(j))=min(ed(a(i),b(j))+2,ed(a(i-1),b(j))+1,ed(a(i),b(j-1))+1)
ifx≠y
其中a,b為兩特征字符串,ed試計(jì)算a,b減累計(jì)距離的矩陣。
上述步驟(5)基于改進(jìn)的動(dòng)態(tài)時(shí)間伸縮算法的精確識(shí)別原理如下:
動(dòng)態(tài)時(shí)間伸縮算法通過(guò)不斷的計(jì)算兩矢量的距離以尋找最優(yōu)的匹配路徑,所以得到的兩矢量是累計(jì)距離最小的規(guī)整整數(shù),這保證了他們之間存在最大的聲學(xué)相似特征。動(dòng)態(tài)時(shí)間伸縮算法原理如圖2所示。但由于在實(shí)際的匹配過(guò)程中很多實(shí)際的網(wǎng)格點(diǎn)是不需到達(dá)的,因此圖2的菱形是一種路徑限制的方式,這樣在菱形之外的格點(diǎn)所對(duì)應(yīng)的匹配距離是不需要計(jì)算的,另外也沒(méi)有必要保存相應(yīng)的數(shù)據(jù),可以減少所需的存儲(chǔ)空間。同事,威力進(jìn)一步減少所需的計(jì)算量,每一個(gè)格點(diǎn)所需的匹配計(jì)算只用到了前一列的三個(gè)網(wǎng)格,如圖3所示。這里假設(shè)有兩個(gè)特征序列需進(jìn)行動(dòng)態(tài)時(shí)間伸縮算法計(jì)算,待匹配特征序列為
x={x1,x2,·,xn},模板特征序列為y={y1,y2,·,yn},d為代價(jià)函數(shù),具體計(jì)算公式如下:
d(i,j)=min(d(i-2,j-1)+di-2,j-1,d(i-1,j-1)+di-1,j-1,d(i-1,j-2)+di-1,j-2)
上述公式中d是代價(jià)韓式,具體計(jì)算公式如下:
di-1,j-1=abs(xi-yj)
di-2,j-1=abs(xi-1+xi-yj)+c1
di-1,j-2=abs(yj-1+yj-xi)+c2
其中,d為計(jì)算x與y之間積累距離的矩陣,c1,c2為平衡因子,目的是平衡插入或刪除音符所帶來(lái)的代價(jià)。
當(dāng)兩個(gè)模板進(jìn)行匹配后,即從距離累積矩陣中的最后一行的最小值進(jìn)行回溯,從該最小值往前一次找到每一次所累積的前面三點(diǎn)的最小值,當(dāng)返回起始匹配點(diǎn)時(shí),則產(chǎn)生了一條最佳匹配路線。而匹配矩陣的最后一行的最小值,就是兩個(gè)模板的距離。
傳統(tǒng)的動(dòng)態(tài)時(shí)間伸縮算法都是對(duì)語(yǔ)音進(jìn)行頭對(duì)頭,尾對(duì)尾的匹配,但是用戶(hù)哼唱的旋律可能存在音符插入或者缺失的情況,因此無(wú)法確定明確的尾端點(diǎn)。本文提出了尾端點(diǎn)松弛的方法,具體原理如下:
設(shè)p為首端點(diǎn)未知,n為哼唱輸入旋律特征序列包含的特征個(gè)數(shù),w1,w2分別為在長(zhǎng)度為n的情況下所允許插入音符和刪除音符的錯(cuò)誤個(gè)數(shù)。在首端點(diǎn)確定的情況下,尾端點(diǎn)區(qū)間為{(p+n-w2),(p+n+w1)},增加路徑限制條件,計(jì)算(p+n-w2)和(p+n+w1)位置之間的兩特征向量距離,選擇之間最小值并記錄,尾端點(diǎn)松弛路徑如圖4。
傳統(tǒng)用于哼唱識(shí)別的動(dòng)態(tài)時(shí)間伸縮算法只考慮了音高的特征,而忽略了音長(zhǎng)的特征。本方法為了提高哼唱識(shí)別的識(shí)別率,同時(shí)考慮到哼唱者哼唱歌曲是可能會(huì)出現(xiàn)哼唱節(jié)奏對(duì)于標(biāo)準(zhǔn)庫(kù)中的歌曲節(jié)奏或快或慢的情況,將音長(zhǎng)引入了代價(jià)函數(shù)的計(jì)算。
設(shè)哼唱輸入旋律的特征序列為x={(tx1,ty1)(tx2,ty2)·(txm,tym)},目標(biāo)數(shù)據(jù)庫(kù)中的歌曲特征序列為y={(rx1,ry1)(rx2,ry2)·(rxn,ryn)},txi,rxj為對(duì)應(yīng)的音高差序列,tyi,ryj為對(duì)應(yīng)的音長(zhǎng)比序列。改進(jìn)的代價(jià)函數(shù)計(jì)算如下:
di-1,j-1=u*abs(txi-rxj)+(1-u)*abs(tyi-ryj)*km
di-2,j-1=u*abs(txi-1+txi-rxj)+(1-u)*abs((tyi*tyi-1)/(1+tyi-1)-ryj)*km+c3
di-1,j-2=u*abs(rxj-1+rxj–txi)+(1-u)*abs((ryj*ryj-1)/(1+ryj-1)-ryi)*km+c4
其中c3,c4為平衡因子,u為引入的權(quán)值。本方法發(fā)現(xiàn)音高特征比音長(zhǎng)特征更為準(zhǔn)確,所以設(shè)定u>0.5。km為平均音高差與平均音長(zhǎng)比的比值。
上面所述的實(shí)施方式僅僅是對(duì)本發(fā)明的優(yōu)選實(shí)施方式進(jìn)行描述,并非對(duì)本發(fā)明的范圍進(jìn)行限定,在不脫離本發(fā)明設(shè)計(jì)精神前提下,本領(lǐng)域普通工程技術(shù)人員對(duì)本發(fā)明方案做出的各種變形和改進(jìn),均應(yīng)落入本發(fā)明的權(quán)利要求書(shū)確定的保護(hù)范圍內(nèi)。