国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

音頻哼唱檢索技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)

2016-04-09 02:03:30天津廣播電視臺(tái)石家瑞
電子世界 2016年5期
關(guān)鍵詞:基音音高音符

天津廣播電視臺(tái) 石家瑞

?

音頻哼唱檢索技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)

天津廣播電視臺(tái) 石家瑞

【摘要】通過(guò)文字輸入音頻屬性信息進(jìn)行音頻檢索無(wú)法滿足通過(guò)音樂(lè)的旋律進(jìn)行檢索的需求,因此基于內(nèi)容的音頻檢索應(yīng)運(yùn)而生。研究、設(shè)計(jì)并實(shí)現(xiàn)一套基于內(nèi)容的音頻哼唱檢索技術(shù),對(duì)音頻進(jìn)行分割處理,基音提取,旋律編碼和旋律匹配,完成音頻搜索。在實(shí)驗(yàn)中,通過(guò)對(duì)輸入語(yǔ)音的處理、匹配,以85.5%的相似度成功檢索出目標(biāo)音頻,為今后音頻哼唱檢索技術(shù)的實(shí)際應(yīng)用提供依據(jù)和保證。

【關(guān)鍵詞】音頻;哼唱;檢索技術(shù)

0 引言

隨著數(shù)字化和網(wǎng)絡(luò)化的快速發(fā)展,音頻的檢索已經(jīng)隨著大眾的需要從一維擴(kuò)展到多維。傳統(tǒng)的音頻檢索需要用戶輸入音頻的屬性信息,包括名稱、演唱者、年代等文本信息進(jìn)行檢索,然而用戶熟悉某些歌曲的旋律和風(fēng)格,但是并不知道名稱和主唱,運(yùn)用傳統(tǒng)的屬性信息進(jìn)行檢索無(wú)法滿足他們的需求。因此,通過(guò)音頻內(nèi)容進(jìn)行檢索的方法應(yīng)運(yùn)而生。哼唱檢索作為基于內(nèi)容的音頻檢索的一種,需要用戶哼唱某一段音樂(lè),這段音樂(lè)作為一種非語(yǔ)義符號(hào)表示且非結(jié)構(gòu)化的二進(jìn)制碼流輸入到計(jì)算機(jī)中,通過(guò)搜索引擎去尋找一些歌曲,并將歌曲中包含用戶所哼唱的旋律和風(fēng)格的歌曲反饋給用戶。

本文詳細(xì)研究并介紹了哼唱檢索的流程和所用方法,并通過(guò)程序演示,以實(shí)驗(yàn)形式完成了哼唱檢索過(guò)程。

1 哼唱檢索流程

哼唱檢索的流程是:用戶通過(guò)一個(gè)麥克風(fēng)哼唱一段音樂(lè),這段音樂(lè)以音頻數(shù)據(jù)的方式被采集到了計(jì)算機(jī)里面,被分割成一個(gè)個(gè)片段,這些片段又分別對(duì)應(yīng)了一個(gè)個(gè)的音符[1]。之后就能找出這些片段的基因頻率,獲得哼唱片段的旋律信息,將哼唱的旋律信息與音樂(lè)庫(kù)中音樂(lè)的旋律信息進(jìn)行匹配比較,并將相關(guān)度最高的一首或幾首樂(lè)曲作為檢索結(jié)果返回給用戶,流程如圖1-1所示:

圖1-1 哼唱檢索流程

2 哼唱檢索方法

2.1音頻切割

音頻分割的方法是:在得到輸入信號(hào)的對(duì)數(shù)能量曲線之后,對(duì)其進(jìn)行平滑處理,再由曲線的極值求出有聲區(qū)的能量閾值,接著就能根據(jù)音符的對(duì)應(yīng)關(guān)系將輸入信號(hào)分割成小片段,圖2-1所示。

這種分割方法要求用戶在每個(gè)音符直接按留出一定的空隙,但這種要求不一定都會(huì)滿足,因?yàn)橛脩舭l(fā)音不準(zhǔn)或者哼唱的很連貫,各個(gè)音符之間沒(méi)有停頓,就無(wú)法在能量上來(lái)區(qū)別各個(gè)音符,這都會(huì)導(dǎo)致這種方法的失效或者不理想。但是人們通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),音頻的倒譜的峰值隨著時(shí)間也有起伏,而且能夠反映出靜音和非靜音的邊界,如圖2-2所示,所以在進(jìn)行音頻分割時(shí)一般綜合考慮能量曲線和倒譜峰值曲線,這樣能夠得到最好的分割效果[2],如圖2-3所示。

圖2-1 能量曲線以及音符分割結(jié)果

圖2-2 倒譜峰值曲線

圖2-3 能量曲線和倒譜曲線綜合考慮的結(jié)果

2.2基音提取

音符分割完成以后,就要進(jìn)行基音的提取了。人類聲音的頻率一般大于60Hz,而小于1000Hz,所以可以利用哼唱信號(hào)良好的周期性特性,采用時(shí)域的自相關(guān)方法,來(lái)求取每一幀哼唱信號(hào)的基頻信息,然后再將其轉(zhuǎn)換成半音單位[3]:

其中,freq是以Hz為單位的基頻值。

半音是音樂(lè)中常用的表示音高的單位,MIDI中所采用的音高表示也與此相同。接下來(lái)的計(jì)算方法所采用的音高單位都是半音。

一般一個(gè)音符都包含若干個(gè)幀,在得到每一幀的音高之后,可以采用加權(quán)求特征值的辦法來(lái)求得每個(gè)音符的特征值,比如一個(gè)音符由n幀組成,這些幀的編號(hào)為,則每一幀的權(quán)重系數(shù)為[4]:

采用自相關(guān)算法對(duì)哼唱信號(hào)進(jìn)行基音提取的流程如圖2-4所示。

圖2-4 基音提取流程

一般情況下是用固定長(zhǎng)度的窗來(lái)對(duì)語(yǔ)音信號(hào)進(jìn)行分幀的,然后再計(jì)算每一幀的基音周期。但是漢語(yǔ)的語(yǔ)調(diào)會(huì)發(fā)生變化,因而基音周期的變化范圍也很大,如果用固定窗長(zhǎng)來(lái)進(jìn)行計(jì)算,得不到良好的短時(shí)特性。鑒于此,可以采用長(zhǎng)度可變的窗來(lái)進(jìn)行計(jì)算,因?yàn)橄噜弾幕糁芷谧兓淮?,所以可以把每一幀的窗長(zhǎng)設(shè)為前一幀窗長(zhǎng)的3倍。

2.3旋律編碼

在得到哼唱數(shù)據(jù)的基音信息之后,就需要根據(jù)各個(gè)音符的音高來(lái)進(jìn)行旋律編碼了。旋律編碼是指在進(jìn)行音樂(lè)檢索時(shí),把輸入音頻以及音頻庫(kù)中的音頻的樂(lè)曲旋律用一種中間形式來(lái)表示出來(lái),比如音符序列。旋律編碼完成之后,就可以采用這種中間形式的數(shù)據(jù)來(lái)進(jìn)行匹配計(jì)算了[5]。

為了降低檢索的難度,在進(jìn)行旋律編碼時(shí),可以在音高這個(gè)檢索特征之外再加上一個(gè)節(jié)奏特征,也即每個(gè)音符的時(shí)間信息,這樣一來(lái)使用雙特征來(lái)進(jìn)行檢索,效率更高,困難程度也降低了。根據(jù)一般人的哼唱特點(diǎn),在采用節(jié)奏信息時(shí),只考慮每個(gè)音符的出現(xiàn)時(shí)間,而不考慮它們的結(jié)束時(shí)間。

2.4旋律匹配

旋律編碼完成之后,就可以進(jìn)行旋律匹配了,線性對(duì)齊匹配法的具體思路是[6]:先把兩段旋律在時(shí)間軸上伸展到相同的長(zhǎng)度,然后把它們發(fā)聲時(shí)刻接近的音符對(duì)齊,分析旋律在節(jié)奏上的相似性之后,繼續(xù)比較兩段等長(zhǎng)旋律在每個(gè)時(shí)間點(diǎn)上音高頻率的距離。因?yàn)椴捎玫氖且舾卟钪祦?lái)作為檢索特征的,所以就可以忽略哼唱者的音調(diào)高低問(wèn)題。然后把節(jié)奏和音高兩方面的信息綜合考慮就能夠很容易得到相似度的匹配結(jié)果了。

因?yàn)闄z索特征是節(jié)奏和音高的組合,假設(shè)為(P,T),經(jīng)過(guò)旋律編碼得到的旋律序列為,而音頻庫(kù)中的旋律為。其中,P和Q表示音高差,T和U表示音符發(fā)聲時(shí)刻,而且:

(2-3)中第一個(gè)式子可以通過(guò)前面的說(shuō)明很容易的得出,第二個(gè)約束條件規(guī)定了兩段旋律的音符數(shù)不能相差過(guò)多。

2.4.1節(jié)奏匹配

在進(jìn)行節(jié)奏匹配時(shí),首先要將(P,T)在時(shí)間上進(jìn)行線性變換,和(Q,U)對(duì)齊,然后通過(guò)對(duì)齊的音符總數(shù)占總音符數(shù)的比例來(lái)確定兩段旋律在節(jié)奏上的相似度。假設(shè)變換后的音符序列為(R,V),其算法如下[7]:

①初始化:

②線性變換:

③對(duì)齊判斷:

跳轉(zhuǎn)到④,否則跳轉(zhuǎn)到⑤。

④將(P,T)的第i個(gè)音符與(Q,U)的第j個(gè)音符對(duì)齊。

跳轉(zhuǎn)到⑥。

⑦計(jì)算節(jié)奏相似度,結(jié)束。

對(duì)齊的音符數(shù)占總音符數(shù)的比例就是節(jié)奏上的相似度。一般情況下旋律的首尾音符都是對(duì)齊的,所以計(jì)算時(shí)把首尾的4個(gè)音符去掉。其中的a表示對(duì)齊誤差,經(jīng)驗(yàn)值為0.3。也就是說(shuō)如果兩個(gè)音符在時(shí)間上的距離小于其音符延時(shí)的30%,就可以認(rèn)為它們是對(duì)齊的[8]。

2.4.2高音匹配

節(jié)奏匹配完成后,就可以進(jìn)行音高的匹配了。經(jīng)過(guò)上面的運(yùn)算,(P,T)轉(zhuǎn)換成(R,V),其中(R,V)和(Q,U)在時(shí)間上完全等長(zhǎng)。音高的匹配過(guò)程就是比較(R,V)與(Q,U)在對(duì)應(yīng)時(shí)刻上的音高差值。和節(jié)奏相似度一樣,音高的相似度也是根據(jù)音高接近的旋律片段占總旋律的比例得到的。其計(jì)算過(guò)程如下:

表3-1 輸入音頻的特征序列表

①初始化。

跳轉(zhuǎn)到②;

跳轉(zhuǎn)到②;

⑤計(jì)算音高相似度,結(jié)束。

旋律的節(jié)奏信息只是記錄了音符的開始時(shí)間,并沒(méi)有記錄它的持續(xù)時(shí)間或結(jié)束時(shí)間,因此最后一個(gè)音符的長(zhǎng)度一般設(shè)定為前面音符的長(zhǎng)度的平均值。其中函數(shù)的定義如下:

節(jié)奏匹配和音高匹配完成之后,把它們的數(shù)值相加,就能得到兩段旋律的總匹配度:

至此,哼唱檢索的所有算法都已完成,只要將哼唱輸入的旋律信息與音頻庫(kù)中的音頻的旋律信息進(jìn)行匹配比較,并將其中匹配程度最高的幾首音頻作為最終結(jié)果反饋給用戶,就完成了了一次完整的哼唱檢索。

3 實(shí)驗(yàn)分析

3.1實(shí)驗(yàn)準(zhǔn)備

音頻檢索程序是在Microsoft Visual Studio平臺(tái)下用C++語(yǔ)言開發(fā)的一套對(duì)輸入音頻特征序列提取、特征值比對(duì)的程序,通過(guò)該程序可檢索出與輸入音頻特征匹配的目標(biāo)音頻,以完成搜索任務(wù)。

測(cè)試音頻均為WAV格式。從話筒哼唱一段音樂(lè)并保存,記錄音頻為test-fragment.wav,該音頻作為音頻檢索的輸入數(shù)據(jù)源。樂(lè)曲庫(kù)中保存了大量WAV格式的樂(lè)曲和音頻,作為檢索庫(kù)中的被檢索數(shù)據(jù)源。

3.2實(shí)驗(yàn)過(guò)程

從輸入音頻提取特征值,整理成特征值序列表,與樂(lè)曲庫(kù)中的各個(gè)樂(lè)曲特征序列表比對(duì),找到相似度最高的樂(lè)曲,即為檢索結(jié)果。

首先,對(duì)輸入音頻進(jìn)行分割,以512Byte為一個(gè)片段,輸入音頻被分割成1347個(gè)片段,計(jì)算512bit×1347≈689kB,實(shí)際的輸入音頻為674KB,略小,原因是在切割過(guò)程中每個(gè)片段加入了相應(yīng)的校驗(yàn)和序號(hào)信息,便于后續(xù)處理。

3.3實(shí)驗(yàn)結(jié)果

經(jīng)過(guò)FFT變換和轉(zhuǎn)碼等一系列過(guò)程,提取出輸入音頻的特征值如表3-1所示。

表3-1列出了輸入音頻的特征值序列。其中,“幀序列”表示提取特征值所在的片段,位數(shù)從1至1347;“字節(jié)位”表示在該幀序列中所在的字節(jié)位,位數(shù)從1至512;“特征值”表示相應(yīng)的能量特征值。

從樂(lè)曲庫(kù)中每條歌曲對(duì)應(yīng)的特征序列表,與輸入序列按照指定的幀序列的字節(jié)位進(jìn)行比對(duì),找到與相應(yīng)字節(jié)位特征值差異最小的特征序列,該特征序列所對(duì)應(yīng)的樂(lè)曲即為檢索結(jié)果。圖3-1列出了檢索音頻幀序列誤差分布。大部分誤差集中在20%以內(nèi),少數(shù)誤差高達(dá)50%,出現(xiàn)誤差的原因是由于哼唱音頻的音調(diào)、音色、節(jié)奏因個(gè)人嗓音的不同和節(jié)奏的把控而產(chǎn)生差異。誤差平均值為14.5%,即音頻相似度達(dá)85.5%。而音頻的檢索結(jié)果也正是哼唱者所要查找的音頻。

圖3-1 音頻幀序列誤差分布圖

4 結(jié)束語(yǔ)

基于內(nèi)容的音頻哼唱檢索,實(shí)現(xiàn)了將音符分割成若干片段,對(duì)每個(gè)片段進(jìn)行基音提取,對(duì)提取出的頻率進(jìn)行旋律編碼形成特征值序列,并與樂(lè)曲庫(kù)的歌曲進(jìn)行特征值序列匹配,返回檢索結(jié)果。通過(guò)編寫程序并運(yùn)行音頻實(shí)例,實(shí)現(xiàn)了基于哼唱的音頻檢索實(shí)驗(yàn),匹配率高,為今后哼唱檢索在實(shí)際中的應(yīng)用提供依據(jù)和保證。

參考文獻(xiàn)

[1]潘復(fù)平,趙慶衛(wèi),顏永紅.一個(gè)基于語(yǔ)音識(shí)別的音頻檢索系統(tǒng)的實(shí)現(xiàn)[J].聲學(xué)技術(shù)增刊,2005,24:428~432.

[2]歲駿,歐智堅(jiān).一種高效的語(yǔ)音關(guān)鍵詞檢索系統(tǒng)[J].通信學(xué)報(bào),2006,27(2):113~118.

[3]A.V.奧本海姆,R.W.謝弗.數(shù)字信號(hào)處理(董士嘉,楊耀增)[M].北京:科學(xué)出版社,1980,45~46.

[4]Reynolds DA,Rose RC.Robust.Text-independent Speaker Identification Using Gausian Mixture Speaker Models.IEEE Speech and Audio Processing,1995(1):72~83.

[5]吳春輝,黃胤科,鐘寶榮.基于內(nèi)容的音頻檢索技術(shù)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2006,4.

[6]L.A.Smith,R.J.McNab.I.H.Witten.Music Information Retrieval Using Audio Input.Proc AAAI Spring Symposium on Intelligent Integration and Use of Text, Image,Video,and Audio Corpora,Stanford,CA,1996:12~16

[7]R.J.McNab,L.A.Smith,I.H.Witten,C.L.Henderson,Cunningham S.J. Towards the Digital Music Library:Tune Retrieval from Acoustic Input.Proc Digital Libraries’96,1996:11~18.

[8]李國(guó)輝等,基于內(nèi)容的音頻檢索與分類[J].計(jì)算機(jī)工程與應(yīng)用,2002,(7):54~57.

石家瑞(1977—),男,天津人,高級(jí)工程師,現(xiàn)供職于天津廣播電視臺(tái),研究方向:廣播電視工程。

作者簡(jiǎn)介:

猜你喜歡
基音音高音符
喬治·克拉姆《大宇宙Ⅲ》音高組織分析
里蓋蒂《小提琴協(xié)奏曲》中的“雙律制音高組織”研究
一串快樂(lè)的音符
基于基音跟蹤的語(yǔ)音增強(qiáng)研究
春天的音符
改進(jìn)音高輪廓?jiǎng)?chuàng)建和選擇的旋律提取算法
音樂(lè)是一種特殊的語(yǔ)言——聊聊音高的魅力
學(xué)與玩(2017年5期)2017-02-16 07:06:28
音符(兩首)
讀寫算(上)(2016年9期)2016-02-27 08:44:58
樂(lè)理小知識(shí)
小演奏家(2014年11期)2014-12-17 01:18:52
一種改進(jìn)的基音周期提取算法
福泉市| 永善县| 沂源县| 分宜县| 赣榆县| 南投县| 深水埗区| 施秉县| 铅山县| 且末县| 伊金霍洛旗| 津市市| 拜城县| 镶黄旗| 富阳市| 温州市| 大洼县| 邢台县| 大宁县| 房山区| 彭水| 眉山市| 五河县| 砀山县| 徐水县| 绵阳市| 晋江市| 崇礼县| 涟源市| 额敏县| 天长市| 灵川县| 吉木萨尔县| 治县。| 昆明市| 革吉县| 迁西县| 德清县| 铜陵市| 广平县| 昂仁县|