肖艷+王虎
【摘要】 本文對(duì)基于哼唱的小規(guī)模MIDI音樂檢索系統(tǒng)的各個(gè)模塊進(jìn)行了詳細(xì)的闡述,匹配模塊中以相對(duì)音高序列作為音樂旋律的特征進(jìn)行匹配,并通過實(shí)驗(yàn)驗(yàn)證系統(tǒng)的性能。實(shí)驗(yàn)表明,該檢索系統(tǒng)能取得較滿意的結(jié)果。
【關(guān)鍵字】 MIDI音樂 相對(duì)音高序列 哼唱檢索
Abstract: This paper elaborated different modules of small MIDI music retrieval system based on the humming. In the matching module, it used relative pitch sequence as characteristics of the music melody. It also verified the performance of the system through the experiment. And experiments showed that the system can obtain satisfactory results.
Key words: The MIDI music; Relative pitch sequence; Hum to retrieve
引言
哼唱檢索(QBH)是在歌曲數(shù)據(jù)庫(kù)中檢索到用戶哼唱旋律并將結(jié)果反饋給用戶的系統(tǒng)。在一個(gè)標(biāo)準(zhǔn)的哼唱檢索查詢中,用戶要從一個(gè)大型的音樂錄音數(shù)據(jù)庫(kù)中找到一首歌曲。如果用戶不記得歌手或歌曲的名稱來進(jìn)行元數(shù)據(jù)查詢,自然選擇對(duì)麥克風(fēng)哼唱,來表現(xiàn)歌曲旋律的一部分,然后使用哼唱檢索系統(tǒng)檢索歌曲。
MIDI文件記錄的是音樂演奏的指令序列,向演奏者標(biāo)注出演奏時(shí)間、樂器、音符和方式。midi作為數(shù)字音樂文件,本身只有樂器旋律而沒有人聲,所以使用midi主旋律就可以表示歌曲旋律,比從WAV中提取的主旋律更準(zhǔn)確。WAV格式在本文中只是作為用戶哼唱音頻的輸入格式。
相對(duì)音高序列是指序列的后一個(gè)音高同前一個(gè)音高進(jìn)行比較,它能反映音符的音高特征。用相對(duì)音高序列作為旋律的特征在中小型音樂檢索效果方面很不錯(cuò)。
一、基于哼唱的小規(guī)模MIDI音樂檢索系統(tǒng)框架
本文基于哼唱的小規(guī)模MIDI音樂檢索系統(tǒng)主要分為四部分:第一部分是MIDI歌曲數(shù)據(jù)庫(kù)的建立,即用戶哼唱的旋律在檢索時(shí)所逐一進(jìn)行匹配的MIDI歌曲數(shù)據(jù)庫(kù);第二部是旋律特征提取,這里的特征提取既包含MIDI歌曲庫(kù)中的歌曲特征提取又包含用戶哼唱時(shí)的旋律特征提取;第三部分是特征匹配,是將用戶哼唱的旋律特征與MIDI歌曲庫(kù)中的MIDI歌曲特征進(jìn)行比較;第四部分是將MIDI歌曲庫(kù)中和哼唱旋律相似的音樂名稱輸出。
1.1歌曲庫(kù)建立
首先在網(wǎng)絡(luò)上收集10首MIDI格式的音樂構(gòu)成MIDI歌曲庫(kù)。當(dāng)然,對(duì)于整個(gè)基于哼唱的音樂檢索系統(tǒng)來說,10首歌曲是遠(yuǎn)遠(yuǎn)不夠的,這主要是因?yàn)樵谙到y(tǒng)搜索階段,系統(tǒng)搜索的復(fù)雜度和準(zhǔn)確度與歌曲數(shù)目呈負(fù)相關(guān),但是因?yàn)楸菊撐闹饕懻摰氖腔诤叱腗IDI音樂檢索的整體過程,為部分此方面學(xué)習(xí)人員提供一個(gè)思路,因此10首歌曲和1000或10000首并不會(huì)有太大差別。
1.2旋律特征提取
這里的旋律特征提取包含兩個(gè)方面,分別是MIDI歌曲庫(kù)中MIDI音樂的特征提取、用戶哼唱的旋律特征提取。由于MIDI歌曲庫(kù)中的歌曲是MIDI格式的,用戶哼唱的旋律是wav格式的,所以下面將分開介紹兩者的特征提取步驟。由于相對(duì)音高序列能夠反映音符的音高特征,所以將旋律特征提取轉(zhuǎn)換成求旋律的相對(duì)音高序列即可。
用戶哼唱的旋律其相對(duì)音高序列是通過比較相鄰音符的過零率得到的。用戶 哼唱的旋律其相對(duì)音高序列提取步驟:
1)可調(diào)參數(shù)。設(shè)定計(jì)算過零率前加入的白噪聲的信噪比、對(duì)有毛刺的過零率結(jié)果進(jìn)行的低通濾波器的截止頻率、上述低通濾波器的開關(guān)、對(duì)過零率結(jié)果進(jìn)行門限判決的門限設(shè)定。
2)過零率計(jì)算。音頻頻率越高,過零也越高。
3)濁音區(qū)間端點(diǎn)檢測(cè)。首先判斷第一個(gè)點(diǎn)是高過零點(diǎn)還是低過零點(diǎn)。當(dāng)?shù)谝粋€(gè)點(diǎn)是高過零點(diǎn)時(shí),第一個(gè)點(diǎn)被舍棄。始點(diǎn)從第二點(diǎn)開始,終點(diǎn)從第三點(diǎn)開始。認(rèn)為第一個(gè)端點(diǎn)應(yīng)該是清音或者靜音的開始,后面的端點(diǎn)是清音與濁音交替;當(dāng)?shù)谝粋€(gè)點(diǎn)是低過零點(diǎn)時(shí),始點(diǎn)從第一點(diǎn)開始,終點(diǎn)從第三點(diǎn)開始。認(rèn)為第一個(gè)端點(diǎn)應(yīng)該是濁音段的開始,后面的端點(diǎn)是清音與濁音交替。
4)除野點(diǎn)。將持續(xù)時(shí)間小于100ms的濁音段認(rèn)為是野點(diǎn),忽略掉。
5)求取tempo以及在每個(gè)tempo內(nèi)求一個(gè)平均絕對(duì)音高(Hz)。
6)轉(zhuǎn)換成相對(duì)音高(音階)。
MIDI歌曲庫(kù)中MIDI音樂的相對(duì)音高序列的提取過程:
(1) 驗(yàn)證文件格式。驗(yàn)證MIDI歌曲庫(kù)中的MIDI音樂是否是單聲道的midi format0,然后讀取所有音符(包括靜音段)的音高、通道、持續(xù)時(shí)間(即deltatime的值,時(shí)鐘個(gè)數(shù)),讀取所有的 Note On和Note Off消息。事件的deltatime作為上一個(gè)事件的持續(xù)時(shí)間,我們默認(rèn)時(shí)間都是Note On和Note Off交替進(jìn)行。如果有幾個(gè)音符同時(shí)發(fā)聲的情況,第二個(gè)音符開始發(fā)聲時(shí)認(rèn)為前一個(gè)音符結(jié)束,再遇到它的note off消息時(shí)我們將會(huì)忽略。note on時(shí)間的deltatime表示如果不為0,認(rèn)為是前面有靜音的地方。
2)提取所有音符。
3)統(tǒng)計(jì)音符中1/16、1/8、1/4等各種音符的個(gè)數(shù)。
4)對(duì)音符量化。將0音符的音高認(rèn)為是前一個(gè)音符的音高。
5)轉(zhuǎn)為相對(duì)音高序列。
6)把文件名和相對(duì)音高序列存入庫(kù)中。
1.3旋律匹配
首先依次讀取MIDI歌曲庫(kù)中的10首歌曲的MIDI音符序列,通過旋律特征提取得到相對(duì)音高序列,然后在歌曲中尋找與用戶哼唱旋律最小距離的片段即最相似的片段,然后再尋找最相似的片段起始位置并計(jì)算錯(cuò)誤字符數(shù)。
旋律匹配的具體步驟是:
1)依次讀取MIDI歌曲庫(kù)中midi音符序列的相對(duì)音高序列。
2)遍歷尋找出10首歌曲中與用戶哼唱旋律的相對(duì)音高序列最低差錯(cuò)的序列。
3)尋找最相似的片段起始位置,并計(jì)算錯(cuò)誤字符數(shù)。
4)顯示歌曲名和錯(cuò)誤音符數(shù)。
二、系統(tǒng)實(shí)驗(yàn)驗(yàn)證
在實(shí)驗(yàn)中,我們輸入哼唱的一小段“北京歡迎你”旋律,導(dǎo)進(jìn)檢索系統(tǒng)過后,系統(tǒng)將檢索用戶哼唱的歌曲和MIDI數(shù)據(jù)庫(kù)中的歌曲進(jìn)行對(duì)比,再按照相似度的大小進(jìn)行排序 ,把相似度最高的前5首的歌曲名列表返回給檢索用戶。實(shí)驗(yàn)結(jié)果是基于Matlab2012b 仿真平臺(tái)進(jìn)行的,如下圖所示。
三、總結(jié)
通過實(shí)驗(yàn)結(jié)果可以看到,當(dāng)用戶哼唱歌曲“北京歡迎你”的一段旋律時(shí),檢索系統(tǒng)將MIDI歌曲庫(kù)中的“北京歡迎你”等前5首歌曲的名稱反饋給用戶,并且“北京歡迎你”歌曲名稱排列在第一位。此結(jié)果表明該系統(tǒng)在小規(guī)模數(shù)據(jù)庫(kù)中的應(yīng)用識(shí)別率較高。
參 考 文 獻(xiàn)
[1]魯帆.基于哼唱的音樂檢索系統(tǒng)[D].西安:西安建筑科技大學(xué),2011.
[2]郭洪波.音樂哼唱檢索關(guān)鍵技術(shù)研究[D].西安:西北大學(xué),2004
[3]孫潔.基于哼唱的MIDI音樂檢索系統(tǒng)的研究[D].西安:西安建筑科技大學(xué),2013.
[4]曹亮.海量音樂的哼唱檢索研究[D].北京:北京郵電大學(xué),2015.
[5]徐霽,袁旭海.一個(gè)音樂檢索系統(tǒng)的研究與實(shí)現(xiàn)[J].寧波大學(xué)學(xué)報(bào)(理工版),2007,20(3):293-296.