能識(shí)別音樂自動(dòng)成譜的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及能識(shí)別音樂自動(dòng)成譜的方法,屬于音樂音高識(shí)別、多音識(shí)別、自動(dòng)形成 曲譜等技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 音高識(shí)別技術(shù)具有廣泛的用途,可用于調(diào)音器、樂曲識(shí)別、以及音頻文件轉(zhuǎn)換等方 面。在樂器的調(diào)音器中,主要會(huì)運(yùn)用到單音的音高識(shí)別技術(shù),利用諧波峰值法識(shí)別聲音的基 頻,檢查樂器音高頻率是否有所偏移,但此技術(shù)實(shí)現(xiàn)的音高識(shí)別只能識(shí)別到單音,如果同時(shí) 響起幾個(gè)音高將無法識(shí)別。而在樂曲識(shí)別的應(yīng)用中,會(huì)利用音高識(shí)別技術(shù)粗略識(shí)別用戶哼 唱的旋律,以此作為識(shí)別依據(jù)搜索并匹配相關(guān)歌曲。在數(shù)字音頻文件中,一般分為波形音頻 文件(包括mp3、wav等)和MIDI樂器數(shù)字接口文件,其中波形音頻文件僅僅記錄該音頻的 波形錄制信息,MIDI文件則是記錄音樂的曲譜信息,目前,人們還沒有有效的方法把波形音 頻文件轉(zhuǎn)換為MIDI文件,只能依靠熟悉音樂的專業(yè)人士靠聽覺經(jīng)驗(yàn)重新寫出原來的曲譜。
[0003] 目前應(yīng)用于音高識(shí)別的技術(shù)主要有諧波峰值法、并行處理法、小波分析法等。其中 諧波峰值法是針對(duì)頻域諧波作分析,優(yōu)點(diǎn)是方法直觀可實(shí)現(xiàn)、運(yùn)算量不大,但由于依賴于能 量最大的諧波作為入手分析點(diǎn),無法分析多音識(shí)別的情況,同時(shí)由于樂器發(fā)音經(jīng)常諧波偏 移,經(jīng)常出現(xiàn)分析出的基頻不準(zhǔn)確的情況。并行處理法是針對(duì)時(shí)域進(jìn)行音頻分析,根據(jù)基音 和基音的諧波在時(shí)間軸上進(jìn)行周期性有規(guī)律疊加的原理,估算兩個(gè)波峰之間的距離,由此 計(jì)算出音頻周期,優(yōu)點(diǎn)是運(yùn)算和實(shí)現(xiàn)都比較簡(jiǎn)單,缺點(diǎn)是結(jié)果不穩(wěn)定。小波分析法則是利用 小波變換作深入的分析頻域特征,提取基音,其優(yōu)點(diǎn)是準(zhǔn)確率較高,缺點(diǎn)是運(yùn)算量太大。
[0004] 而多音估計(jì)技術(shù),一直都是音樂識(shí)別中的難點(diǎn),自70年代的斯坦福大學(xué)學(xué)者 Moore開始研宄起,大阪大學(xué)80年代的"音樂信號(hào)的感覺信息提取"研宄項(xiàng)目、麻省理工學(xué) 院的Hawley和Martin項(xiàng)目、東京大學(xué)的Kashino項(xiàng)目、密西根大學(xué)的Sterian項(xiàng)目、達(dá)拉 漠大學(xué)的Douglas Nunn項(xiàng)目等都相應(yīng)取得了研宄突破,但始終未有一個(gè)運(yùn)算簡(jiǎn)單、高效可 信,在發(fā)音數(shù)上具有魯棒性,兼容各種樂器的方法可應(yīng)用于非實(shí)驗(yàn)室的小型運(yùn)算設(shè)備軟件, 如智能手機(jī)、智能平板、可嵌入式設(shè)備等。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供能識(shí)別音樂自動(dòng)成譜的方法,本發(fā)明獨(dú)創(chuàng)了一種可根據(jù)音 高識(shí)別結(jié)果,逆向估算出原來曲譜的技術(shù),最終完整實(shí)現(xiàn)自動(dòng)識(shí)別音頻音樂自動(dòng)形成曲譜 的方法。此技術(shù)可應(yīng)用于作曲創(chuàng)作自動(dòng)成譜、樂器演奏練習(xí)檢查等場(chǎng)景。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下: 能識(shí)別音樂自動(dòng)成譜的方法,包括如下步驟: (1)作環(huán)境噪音頻譜分析,其中能量值單位取分貝(dB),對(duì)環(huán)境噪音進(jìn)行一段時(shí)間的 采樣,記錄環(huán)境噪音在此段時(shí)間內(nèi)的平均頻譜能量值分布A以及每個(gè)頻率段能量在時(shí)間分 布的標(biāo)準(zhǔn)差值V,在之后的步驟會(huì)根據(jù)以上兩個(gè)數(shù)據(jù)分布擬定每個(gè)頻率段的發(fā)聲能量閥值 TTL。原則是:在某個(gè)頻率段的噪音能量平均值越高,發(fā)聲能量閥值越高;噪音能量標(biāo)準(zhǔn)差 值越高,發(fā)聲能量閥值越高。一般會(huì)按以下公式擬定發(fā)聲能量閥值:TTL=A x P + V x Q;其 中P、Q都是按經(jīng)驗(yàn)取的固定值,可根據(jù)環(huán)境調(diào)節(jié),一般取P=3, Q=l。
[0007] (2)追蹤整體頻譜變化,實(shí)時(shí)檢查是否有發(fā)音趨勢(shì)。設(shè)定有效的發(fā)音頻率范圍,標(biāo) 準(zhǔn)鋼琴發(fā)音的基頻頻域范圍約為27. 5HZ到4186HZ,考慮到基頻偏移并預(yù)留4~5倍諧頻的 頻域空間,一般設(shè)定有效的發(fā)音頻率范圍為20HZ到20000HZ。計(jì)算在該范圍內(nèi)當(dāng)前頻譜超 過發(fā)聲能量閥值的面積Area,如果該面積大于預(yù)設(shè)的面積閥值A(chǔ)ttl,則認(rèn)為音頻此時(shí)具有 發(fā)音趨勢(shì),否則認(rèn)為當(dāng)前音頻依然是靜音。
[0008] (3)追蹤每個(gè)音高的頻譜變化,實(shí)時(shí)檢查哪些是音高發(fā)聲。針對(duì)每個(gè)潛在發(fā)聲的音 高,分析該音高的基頻和諧頻是否存在區(qū)間能量的峰值,且該峰值必須大于發(fā)聲能量閥值 才被納入計(jì)算,根據(jù)峰值是否存在以及峰值的大小,計(jì)算每個(gè)音高可能發(fā)聲的置信度L。接 著檢查置信度最大的音高是否滿足兩個(gè)條件:1)此時(shí)該音高的置信度值L突然從平穩(wěn)或下 降狀態(tài)變成劇增狀態(tài),即滿足(當(dāng)前的置信度值L要大于前一幀的置信度值的一定倍數(shù)1|), 并且滿足(前一幀的置信度值要在之前一小段時(shí)間內(nèi)的置信度均值的一定比例范圍內(nèi),即 前一幀的置信度呈平穩(wěn)或下降狀態(tài));2)置信度最大值占所有音高置信度值總和的比例是 否大于閥值,即滿足條件。如果符合以上兩個(gè)條件,則認(rèn)為該音高在此時(shí)發(fā)聲,同時(shí)消除該 音高的基頻和諧頻的峰值對(duì)其他音高的影響,計(jì)算其他音高的置信度值,對(duì)余下置信度最 大值的音高循環(huán)以上兩個(gè)條件的判斷,繼續(xù)尋找發(fā)聲的音高,直至沒法滿足以上兩個(gè)條件 終止。
[0009] (4)繼續(xù)追蹤已發(fā)聲音高的頻譜變化,檢查之前的發(fā)聲判斷是否誤判。在樂器發(fā)聲 中,一般一個(gè)音高發(fā)聲后在較短時(shí)間內(nèi)都會(huì)有延續(xù),設(shè)定時(shí)間長(zhǎng)度t為檢查誤判的時(shí)間范 圍,如果發(fā)現(xiàn)發(fā)聲音高在這段時(shí)間內(nèi)置信度值衰減過快,則認(rèn)為該音高發(fā)聲為誤判。即判斷 條件,其中是該音高發(fā)聲時(shí)的置信度值,是發(fā)聲后經(jīng)過的時(shí)間,是一個(gè)固定值,可根據(jù)每幀 采樣時(shí)間間隔、音高、環(huán)境等因素調(diào)節(jié)衰退閥值的大小。如果非實(shí)時(shí)分析,而是針對(duì)完整音 頻文件的誤判分析,步驟可插在步驟(3)中每次判斷音高發(fā)聲后。
[0010] (5)依據(jù)以上步驟獲得的發(fā)聲音高數(shù)據(jù)、發(fā)聲時(shí)間數(shù)據(jù),估算曲譜的速度、調(diào)式以 及音符類型。
[0011] 速度估算的原則是使每個(gè)音符的實(shí)際時(shí)長(zhǎng)盡量靠近估算的音符時(shí)長(zhǎng)。方法如下: 1)預(yù)設(shè)速度范圍,一般樂曲的速度范圍是每分鐘30~240個(gè)四分拍;2)針對(duì)每個(gè)速度 值,根據(jù)每次音高發(fā)聲的時(shí)間間隔,估算該音符的時(shí)長(zhǎng)類型,限定時(shí)長(zhǎng)類型為全音符、二分 音符、四分音符、八分音符、十六分音符,通過合理擬定每類時(shí)長(zhǎng)類型的時(shí)間長(zhǎng)度范圍,如果 有時(shí)長(zhǎng)超過全音符的則用全音休止符填充多余空白的時(shí)長(zhǎng),據(jù)此可以把所有音符都?xì)w納到 以上時(shí)長(zhǎng)類型中;3)計(jì)算每個(gè)音符實(shí)際時(shí)長(zhǎng)和該速度下標(biāo)準(zhǔn)時(shí)長(zhǎng)的偏差值,其中是音符實(shí) 際時(shí)長(zhǎng),是標(biāo)準(zhǔn)時(shí)長(zhǎng);4)比較所有速度下偏差值總和,取最小偏差值下的速度為估算速度。 [0012] 調(diào)式估算的原則是,首先使得增減音盡量少出現(xiàn),其次使得在該調(diào)式下常用的五 音(do、re、mi、so、la)比例最多,最后是盡量少的升降調(diào)。方法如下: 1)針對(duì)12個(gè)大小調(diào)(由于每個(gè)大調(diào)可等價(jià)于一個(gè)小調(diào),故直接固定判斷為某大調(diào)),判 斷在該調(diào)式下出現(xiàn)的增減音個(gè)數(shù)n、五音個(gè)數(shù)m、該調(diào)式升降號(hào)數(shù)d(正數(shù)表示升號(hào)數(shù),負(fù)數(shù) 表示降號(hào)數(shù));2)篩選出增減音個(gè)數(shù)最小的調(diào)式,如果存在兩個(gè)或以上調(diào)式同時(shí)符合,則繼 續(xù)篩選;3)進(jìn)一步篩選出五音個(gè)數(shù)最多的調(diào)式,如果依然存在兩個(gè)或以上調(diào)式同時(shí)符合, 則繼續(xù)篩選;4)進(jìn)一步篩選出升降號(hào)數(shù)最少的,如果最終依然存在升降號(hào)數(shù)一樣的兩個(gè)調(diào) 式,則篩選出升調(diào)的調(diào)式。
[0013] 音符類型估計(jì)的原則是,如實(shí)記錄音符時(shí)長(zhǎng)并使得曲譜美觀,少出現(xiàn)跨越小節(jié)的 音符。方法如下: 1)限定時(shí)長(zhǎng)類型有全音符、二分音符加點(diǎn)、二分音符、四分音符加點(diǎn)、四分音符、八分 音符加點(diǎn)、八分音符、十六分音符,定義每個(gè)時(shí)長(zhǎng)類型對(duì)應(yīng)真實(shí)時(shí)長(zhǎng)范圍,把所有音符歸納 到以上時(shí)長(zhǎng)類型中;2)根據(jù)音符順序,把合適數(shù)量的音符歸納到一小節(jié)中。如果出現(xiàn)音符 時(shí)長(zhǎng)超過全音符,則讓該音符時(shí)長(zhǎng)變?yōu)榈竭_(dá)小節(jié)結(jié)束前時(shí)長(zhǎng)類型,余下時(shí)長(zhǎng)用休止符填充; 如果出現(xiàn)音符跨越小節(jié),且結(jié)束點(diǎn)在小節(jié)開頭的八分拍以內(nèi),則把該音符時(shí)長(zhǎng)改變?yōu)樵谇?一個(gè)小節(jié)結(jié)束;如果出現(xiàn)音符結(jié)束點(diǎn)在小節(jié)結(jié)尾的最后一個(gè)八分拍以內(nèi)的,而且下一個(gè)音 符時(shí)長(zhǎng)超過或等于四分音符,則讓下一個(gè)音符直接出現(xiàn)在下一個(gè)小節(jié)的開頭。
[0014] 依據(jù)以上步驟,可最終實(shí)現(xiàn)識(shí)別音高并估算出曲譜的速度、調(diào)式、音符信息,生成 曲譜。
[0015] 與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果: (1)本發(fā)明運(yùn)用音高識(shí)別技術(shù),利用全新的頻譜分析方法,可滿足多音識(shí)別的要求,運(yùn) 用于手機(jī)軟件、可嵌入式設(shè)備中。
[0016] (2)本發(fā)明獨(dú)創(chuàng)了一種可根據(jù)音高識(shí)別結(jié)果,逆向估算出原來曲譜的技術(shù),最終完 整實(shí)現(xiàn)自動(dòng)識(shí)別音頻音樂自動(dòng)形成曲譜的方法。此技術(shù)可應(yīng)用于作曲創(chuàng)作自動(dòng)成譜、樂器 演奏練習(xí)檢查等場(chǎng)景。
[0017] (3)本發(fā)明針對(duì)實(shí)時(shí)音頻流和完整音頻文件皆可以分析,運(yùn)算和實(shí)現(xiàn)都比較簡(jiǎn)單, 而且結(jié)果高效可信,兼容多種樂器,具有突出的實(shí)質(zhì)性特點(diǎn)和顯著的進(jìn)步。
【具體實(shí)施方式】
[0018] 下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明,本發(fā)明的實(shí)施方式包括但不限于下列實(shí) 施例。 實(shí)施例
[0019] 能識(shí)別音樂自動(dòng)成譜的方法,針對(duì)實(shí)時(shí)音頻流和完整音頻文件皆可以分析,本實(shí) 施例以實(shí)時(shí)音頻流分析作說明,采樣率為44100HZ,以2048個(gè)樣本點(diǎn)為一組進(jìn)行一次樣本 分析,即每次樣本分析的間隔時(shí)間約0. 04644秒(樣本間隔時(shí)間=1秒+采樣率)。
[0020] (1)在識(shí)別之前,先會(huì)對(duì)環(huán)境噪音進(jìn)行采樣,持續(xù)時(shí)間為0. 5秒,即約有10次樣本 分析數(shù)據(jù),具體方法如下: 每次樣本分析數(shù)據(jù)是該樣本時(shí)點(diǎn)區(qū)域的頻譜能量值分布(X軸是頻率,Y軸是能量值), 并且由此可計(jì)算出10次樣本的均值u(x)和平均方差值,其中N=10,是第i次樣本分析在頻 率x對(duì)應(yīng)的能量值,是頻率x對(duì)應(yīng)的能量值在10次采樣分析中的均值。由此可計(jì)算出發(fā)聲 能量閥值TTL的分布,,其中取P=3, Q=l。
[0021] (2)接著開始實(shí)時(shí)識(shí)別音樂,實(shí)時(shí)檢查是否有發(fā)音趨勢(shì),具體方法如下: 在之后每次的樣本分析中,將針對(duì)其頻譜計(jì)算頻譜面積S,公式為,其中,M代表每次樣 本分析的樣本點(diǎn)個(gè)數(shù),即M=2048,L是樣本分析中的頻率精度,頻率精度=采樣率+2+樣 本點(diǎn)個(gè)數(shù),約L=10. 77,通過比較樣本分析實(shí)時(shí)的頻譜面積S與發(fā)聲能量閥值的頻譜面積, 如果,則認(rèn)為此時(shí)具有發(fā)音趨勢(shì),Attl是可調(diào)節(jié)的經(jīng)驗(yàn)值。
[0022] (3)接著針對(duì)每個(gè)可能發(fā)聲的音高值進(jìn)行檢查,注