欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種音高跟蹤和播放方法及其系統(tǒng)的制作方法

文檔序號:2829523閱讀:297來源:國知局
專利名稱:一種音高跟蹤和播放方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及音高跟蹤(Pitch Tracking)技術(shù),尤其涉及在一種音高跟蹤和播放系統(tǒng)中進(jìn)行音符切分與量化的方法背景技術(shù)好的音樂不僅可以培育高雅的審美情趣,而且也是緩解壓力的一種非常積極的方式,在現(xiàn)代社會中有著重要作用。隨著數(shù)字音效處理技術(shù)的發(fā)展,音樂創(chuàng)作和保存方式也不斷發(fā)展。通常可以聽到人們不自覺的哼唱,其實(shí)哼唱是一種最自然和最直接的方式去進(jìn)行音樂創(chuàng)作或音樂查詢,這需要將哼唱的信號改編成音樂樂譜并通過一個(gè)簡易裝置進(jìn)行回放。在一般的哼唱系統(tǒng)中,包括哼唱識別和編曲兩大部分,在過去一段時(shí)間里主要力量集中在提高哼唱識別的準(zhǔn)確度上。
哼唱識別,即捕捉音高信息和節(jié)奏變化,離不開音高跟蹤技術(shù)。音高也可以稱作音調(diào)或基音頻率,表征發(fā)濁音時(shí)聲帶振動的頻率。濁音指由聲帶準(zhǔn)周期振動發(fā)出的聲音,可以獲得相應(yīng)的音高;而清音則指聲帶沒有振動發(fā)出的聲音,沒有音高參數(shù)。
現(xiàn)有的音高跟蹤技術(shù)在時(shí)域和頻域利用統(tǒng)計(jì)和非統(tǒng)計(jì)信號處理等多種方法實(shí)現(xiàn),但是仍存在以下缺點(diǎn)1)音高跟蹤方法結(jié)果多以圖表、文本等形式表示,沒有合適的裝置將跟蹤結(jié)果轉(zhuǎn)換成聲音播放;2)音高跟蹤裝置的音符(Note,如簡譜中的“1,2,3,4,5,6,7--do,re,mi,fa,so,la,xi”)切分不夠準(zhǔn)確,音高識別不夠準(zhǔn)確;3)音高跟蹤算法過于復(fù)雜,所占用系統(tǒng)內(nèi)存較大,往往需要較大的哼唱數(shù)據(jù)庫,并不適用于嵌入式系統(tǒng)。
公開日為2005年4月20日的中國專利申請CN200410049328公開了一種哼唱編曲系統(tǒng)及其方法。主要指將輸入的哼唱信號編寫為標(biāo)準(zhǔn)樂譜再次呈現(xiàn)出來。但該專利存在以下缺點(diǎn)1)只是將哼唱信號編寫為標(biāo)準(zhǔn)樂譜,并不能進(jìn)行聲音播放;2)音高跟蹤裝置的音符切分不夠準(zhǔn)確;3)音符切分與識別算法為統(tǒng)計(jì)式馬可夫模型,且需要數(shù)據(jù)庫參數(shù)匹配,算法比較復(fù)雜,占用資源高,不能應(yīng)用于嵌入式系統(tǒng),使得整個(gè)系統(tǒng)應(yīng)用受限。
公告日為1999年11月16日的美國專利US5986199公開了一種音樂數(shù)據(jù)聲音輸入設(shè)備,一種體現(xiàn)方式為預(yù)置音符從聲音輸入信號中識別和選擇,同時(shí)輔助的音符信息(包括音符和音符持續(xù)長度等參數(shù))也從聲音輸入信號中提取,輔助的音符信息用于生成綜合引擎參數(shù),該參數(shù)修改預(yù)置音符,提供合成音符輸出。另一種體現(xiàn)方式為音符切分的特征向量用于選擇預(yù)置文件,該文件系指一種來自樂器預(yù)置檔案庫的特殊樂器文件。根據(jù)音符切分,從樂器預(yù)置文件中選擇預(yù)置音符,生成的音符輸出與指定的樂器或樂器組相對應(yīng)。但該專利采用簡單峰值檢測算法,音符切分不準(zhǔn)確。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于提供一種音高跟蹤和播放方法和系統(tǒng),可以將跟蹤結(jié)果直接轉(zhuǎn)換成聲音播放,并適宜于嵌入式系統(tǒng)使用。
為了解決上述技術(shù)問題,本發(fā)明提供了一種音高跟蹤和播放系統(tǒng),包括用于接收輸入的聲音并對其做采樣和分幀處理的語音輸入處理模塊,用于檢測每一語音幀的音高和能量的音高和能量檢測模塊,用于根據(jù)能量檢測結(jié)果完成音符切分的音符切分模塊,以及用于將完成切分的音符轉(zhuǎn)換成樂譜的樂譜轉(zhuǎn)換模塊,其特征在于,該系統(tǒng)還包括語音合成模塊,用于將轉(zhuǎn)換成的樂譜合成為樂器數(shù)字界面文件并進(jìn)行播放。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述音高和能量檢測模塊進(jìn)一步包括預(yù)處理單元、歸一化互相關(guān)函數(shù)計(jì)算單元、后處理單元和基音頻率搜索單元,其中,該預(yù)處理單元采用兩階低通濾波器進(jìn)行濾波。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述互相關(guān)函數(shù)計(jì)算單元進(jìn)行互相關(guān)函數(shù)的計(jì)算是隔點(diǎn)進(jìn)行的。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述基音頻率搜索單元在搜索時(shí)采取隔點(diǎn)搜索,且其搜索范圍在20-120之內(nèi)。
進(jìn)一步地,上述系統(tǒng)還可具有以下特點(diǎn)所述音符切分模塊包括波峰檢測模塊、主控制模塊、音符切分模塊、存儲模塊和雙峰值判定模塊,其中所述波峰檢測模塊,用于統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的能量大于臨界值的語音幀的個(gè)數(shù),如該個(gè)數(shù)大于第三閾值,則判定這些語音幀對應(yīng)的一段能量曲線構(gòu)成一個(gè)波峰,該段曲線上最大的能量值為該波峰的峰值,該段曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,該波峰的峰值和谷值位置分別為該峰值和該谷值對應(yīng)的語音幀;所述存儲模塊用于保存波峰的參數(shù)以及濁音段的起始和結(jié)束位置;所述雙峰值判定模塊用于判斷第二波峰峰值與第一波峰谷值之差和第一波峰的峰值與谷值之差的比值是否大于第一閾值,以及第一波峰和第二波峰的峰值位置之間的語音幀個(gè)數(shù)是否大于第二閾值,如果均是,則返回的判定結(jié)果為成功,否則返回失敗的判定結(jié)果;所述主控制模塊用于對能量大于臨界值的連續(xù)語音幀構(gòu)成的每一濁音段進(jìn)行音符切分,進(jìn)一步包括第一控制單元、第二控制單元和第三控制單元,其中第一控制單元,用于從濁音段的起始位置開始,調(diào)用波峰檢測模塊,如檢測不到波峰,則結(jié)束該濁音段的處理,否則以檢測到的第一個(gè)波峰為第一波峰,將該濁音段起始位置及第一波峰的峰值、谷值、峰值位置和谷值位置保存到所述存儲模塊,觸發(fā)第二控制單元繼續(xù)處理;第二控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,則將濁音段起始位置輸出到音符切分模塊,觸發(fā)第三控制單元繼續(xù)處理,否則,將該濁音段起始和結(jié)束位置輸出到音符切分模塊;第三控制單元,將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,調(diào)用雙峰值判定模塊,如果返回的判定結(jié)果為成功,觸發(fā)第四控制單元繼續(xù)處理,否則觸發(fā)第五控制單元繼續(xù)處理;第四控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,將第一波峰谷值位置輸出到音符切分模塊,并用第二波峰的參數(shù)覆蓋掉保存的第一波峰的相應(yīng)參數(shù),觸發(fā)第三控制單元繼續(xù)處理;否則將第一波峰谷值位置和濁音段結(jié)束位置輸出到音符切分模塊;第五控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,以第一波峰和第二波峰峰值中的大值替換掉第一波峰的峰值,以該大的峰值后的一個(gè)谷值或兩個(gè)谷值中的最小值替換掉第一波峰的谷值,第一波峰的峰值位置和谷值位置更新為新的峰值和谷值對應(yīng)的語音幀,然后觸發(fā)第三控制單元繼續(xù)處理;否則將濁音段結(jié)束位置輸出到音符切分模塊;所述音符切分模塊用于以濁音段處理過程中輸出的兩個(gè)相鄰位置為一個(gè)音符的起始和結(jié)束位置,完成對該濁音段的音符切分。
相應(yīng)地,本發(fā)明提供的音高跟蹤和播放方法,包括以下步驟(a)對輸入聲音做采樣和分幀處理;(b)檢測每一語音幀的音高和能量;(c)根據(jù)能量檢測結(jié)果完成音符切分,然后根據(jù)檢測出的音高將音符切分結(jié)果轉(zhuǎn)換成樂譜;(d)將轉(zhuǎn)換得到的樂譜合成為樂器數(shù)字界面文件,并進(jìn)行播放。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b)檢測語音幀的音高時(shí),進(jìn)一步分為以下步驟(b1)對分幀處理后的語音信號進(jìn)行預(yù)處理,包括去均值和低通濾波處理,且采用兩階低通濾波器進(jìn)行濾波;
(b2)將低通濾波后的語音能量與一個(gè)閾值進(jìn)行比較,如高于該閾值,則判斷為濁音,轉(zhuǎn)到步驟(b3),否則,執(zhí)行步驟270;(b3)計(jì)算出每幀延遲的濁音信號的歸一化互相關(guān)函數(shù)值ρ(t);(b4)進(jìn)行后處理,得到相關(guān)性最大的ρ(t)及對應(yīng)的最佳延遲T;(b5)基音頻率搜索,即檢測相關(guān)性最大的ρ(t)所對應(yīng)的時(shí)間延遲的樣點(diǎn)t是否在搜索范圍內(nèi),如果在該范圍內(nèi),執(zhí)行步驟(b6),否則,執(zhí)行步驟(b7);(b6)認(rèn)為該幀語音為濁音,輸出最佳延遲T,再根據(jù)時(shí)間與頻率的關(guān)系,由該T可以換算出該幀語音對應(yīng)的音高值,結(jié)束;(b7)認(rèn)為該幀語音為清音,令音高為0,結(jié)束。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b3)進(jìn)行互相關(guān)函數(shù)值的計(jì)算時(shí)是隔點(diǎn)進(jìn)行的。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(b5)在進(jìn)行基音頻率搜索時(shí)采取隔點(diǎn)搜索,且其搜索范圍在20-120之內(nèi)。
進(jìn)一步地,上述方法還可具有以下特點(diǎn)所述步驟(c)進(jìn)行音符切分時(shí),對能量大于臨界值的連續(xù)語音幀構(gòu)成的每一濁音段,執(zhí)行以下步驟(c1)以第一個(gè)語音幀為該濁音段的起始位置,如檢測到波峰,將第一個(gè)檢測到的波峰作為第一波峰,記錄該濁音段起始位置及第一波峰的峰值、谷值、峰值位置和谷值位置,執(zhí)行下一步,如檢測不到波峰,結(jié)束;(c2)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,則輸出濁音段起始位置,執(zhí)行步驟(c3),否則輸出該濁音段起始和結(jié)束位置,執(zhí)行步驟(c6);(c3)將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,判斷是否第二波峰峰值與第一波峰谷值之差和第一波峰的峰值與谷值之差的比值大于第一閾值,且第一波峰和第二波峰的峰值位置之間的語音幀個(gè)數(shù)大于第二閾值,如果是,執(zhí)行步驟(c4),否則執(zhí)行步驟(c5);
(c4)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,輸出第一波峰谷值位置,并用第二波峰的參數(shù)覆蓋掉保存的第一波峰的相應(yīng)參數(shù),返回步驟(c3),否則,輸出第一波峰谷值位置和濁音段結(jié)束位置,執(zhí)行步驟(c6);(c5)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,以第一波峰峰值和第二波峰峰值中的大值覆蓋掉第一波峰的峰值,以該大的峰值后的一個(gè)谷值或兩個(gè)谷值中的小值覆蓋掉第一波峰的谷值,第一波峰的峰值位置和谷值位置更新為新的峰值和谷值對應(yīng)的語音幀,然后返回步驟(c3),否則,輸出該濁音段結(jié)束位置,執(zhí)行步驟(c6);(c6)以輸出的兩個(gè)相鄰位置為一個(gè)音符的起始和結(jié)束位置,完成對該濁音段的音符切分。
其中,所述步驟(a)~(e)進(jìn)行波峰檢測時(shí),是逐一比較相鄰兩個(gè)語音幀的能量大小,統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的能量大于臨界值的語音幀的個(gè)數(shù),如該個(gè)數(shù)大于第三閾值,則判定這些語音幀對應(yīng)的一段能量曲線構(gòu)成一個(gè)波峰,該段曲線上最大的能量值為該波峰的峰值,該段曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,該波峰的峰值和谷值位置分別為該峰值和該谷值對應(yīng)的語音幀,該濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀為該波峰的起始位置。
采用本發(fā)明方法和系統(tǒng),可以直接將人聲哼唱作為輸入,輸出即為MIDI曲,這樣將無需執(zhí)行其他轉(zhuǎn)化處理就可以感受音高的變化。本發(fā)明還通過對音高檢測部分的簡化,使得系統(tǒng)內(nèi)存占用小,可以應(yīng)用于嵌入式系統(tǒng)。此外,通過在音符切分的過程中,可進(jìn)行抗干擾、有重點(diǎn)有層次的雙峰值檢測和引入了更有效的檢測參數(shù),可提高音符切分的準(zhǔn)確率。


圖1是本發(fā)明實(shí)施例音高跟蹤和播放系統(tǒng)的結(jié)構(gòu)框圖。
圖2是本發(fā)明實(shí)施例音高跟蹤和播放方法的整體流程圖。
圖3是作為示例的一個(gè)音高曲線的示意圖。
圖4是本發(fā)明實(shí)施例采用歸一化互相關(guān)函數(shù)的基音檢測算法的流程圖。
圖5是本發(fā)明實(shí)施例音符切分和轉(zhuǎn)成樂譜所用的能量和音高曲線圖。
圖6是本發(fā)明實(shí)施例音符切分的流程圖。
圖7是本發(fā)明實(shí)施例音符切分裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式
本發(fā)明應(yīng)用于PC機(jī)及嵌入式系統(tǒng),主要用于跟蹤人聲哼唱,例如用“啦”哼唱,也可用于某些電子樂器。系統(tǒng)輸入為人聲,輸出為Midi樂曲,Midi是Musical-instrument-digital-interface(樂器數(shù)字界面)的簡稱,是一種記錄樂譜的文件格式。
如圖1所示,本實(shí)施例的音高跟蹤和播放系統(tǒng)包括以下模塊語音輸入處理模塊,用于接收輸入的聲音并對其做采樣和分幀處理,輸出到音高和能量檢測模塊。
音高和能量檢測模塊,用于檢測出每一語音幀的音高和能量,得到輸入聲音的音高曲線和能量曲線,然后輸出到音符切分模塊。
音符切分模塊,用于根據(jù)能量檢測結(jié)果完成音符切分,輸出到樂譜轉(zhuǎn)換模塊。
樂譜轉(zhuǎn)換模塊,用于將完成切分的音符轉(zhuǎn)換成樂譜,輸出到語音合成模塊。
語音合成模塊,用于將轉(zhuǎn)換成的樂譜合成為MIDI文件并進(jìn)行播放。
如圖2所示,本實(shí)施例音高跟蹤和播放方法的整體流程包括以下步驟步驟10,對輸入聲音做采樣和分幀處理;可以通過硬件系統(tǒng)的麥克,以8KHz采樣率、16bit采集人聲哼唱作為輸入,也可提高采樣率到16KHz。通常,對語音的分析和處理是在短時(shí)性的基礎(chǔ)上,因此需要對輸入的聲音做分幀處理。本實(shí)施例對輸入的聲音(8KHz采樣率、16bits表示)進(jìn)行分幀(frames)時(shí),每一幀為20ms。
步驟20,音高和能量檢測;音高也稱作基音頻率,在語音處理領(lǐng)域中音高檢測和估計(jì)是非常重要的一個(gè)問題。目前,音高檢測有很多非常成熟的算法實(shí)現(xiàn),主要分為時(shí)域、頻域以及其他流行方法。
語音信號的特征是隨時(shí)間變化的,只有在一短時(shí)間間隔內(nèi)保持相對平穩(wěn)。因此,需要檢測出每一語音幀的音高和能量,得到輸入聲音的音高曲線和能量曲線。
步驟30,音符切分與轉(zhuǎn)成樂譜經(jīng)過音高檢測得到一個(gè)音高曲線,圖3是一個(gè)示例,表示了音高隨時(shí)間的變化,有的音符單獨(dú)表示,有的音符連在一起需要切分,音符切分需要結(jié)合音高和能量檢測結(jié)果方可完成。
音高曲線雖然看起來非常直觀,但是作為表征豐富的音符變化的參數(shù)仍然不足以使人有切身感受,本實(shí)施例的系統(tǒng)不僅能夠進(jìn)行音高檢測而且能夠把處理結(jié)果實(shí)時(shí)的播放出來,使人對自己的音符有了全方位的感受,從而拓寬了其應(yīng)用領(lǐng)域。例如可以作為有聲調(diào)語言的對比學(xué)習(xí),或通過哼唱檢索歌曲,或者智能電子玩具等,這就需要將音符切分結(jié)果轉(zhuǎn)換成樂譜播放。
步驟40,利用通常合成技術(shù),將轉(zhuǎn)換得到的樂譜合成為MIDI文件,并進(jìn)行播放。
對電子樂器的聲音也可按上述步驟同樣處理。
在上述步驟20中,本實(shí)施例的歸一化互相關(guān)函數(shù)(NCCF)的基音檢測算法和現(xiàn)有方法基本相同,區(qū)別點(diǎn)將在以下步驟中重點(diǎn)介紹,請參照圖4,該基音檢測算法包括以下步驟步驟210,對分幀處理后的語音信號進(jìn)行預(yù)處理,包括去均值、1000Hz低通濾波處理;步驟220,逐幀進(jìn)行清濁音判斷將低通濾波后的語音能量與一個(gè)閾值進(jìn)行比較,如高于該閾值,則判斷為濁音,轉(zhuǎn)到步驟230,否則,執(zhí)行步驟270;
步驟230,計(jì)算歸一化互相關(guān)函數(shù)通過以下公式計(jì)算出每幀延遲的濁音信號的歸一化互相關(guān)函數(shù)值ρ(t)ρ(t)=Σn=0N-1s(n)s(n-1)Σn=0N-1s2(n)Σn=0N-1s2(n-t),t∈
]]>其中,s(n)表示語音信號,N為信號幀長,一幀語音是20ms,經(jīng)過8kHz采樣,則N=160,t為時(shí)間延遲的樣點(diǎn),t在
范圍內(nèi)分為三個(gè)區(qū)域,在每個(gè)區(qū)域內(nèi)隔點(diǎn)計(jì)算ρ(t)值,并比較原始信號和它的延遲信號之間的相似(相關(guān))程度,得出一個(gè)最為相似的ρ(t)。三個(gè)區(qū)域共得到三個(gè)ρ(t)值、各自對應(yīng)的時(shí)間延遲的樣點(diǎn)以及對應(yīng)的延遲時(shí)間。
步驟240,后處理比較三個(gè)ρ(t)值,得到相關(guān)性最大的ρ(t)及對應(yīng)的最佳延遲T;步驟250,基音頻率搜索檢測相關(guān)性最大的ρ(t)所對應(yīng)的時(shí)間延遲的樣點(diǎn)t是否在[20,120]范圍內(nèi),如果在該范圍內(nèi),執(zhí)行步驟260,否則,執(zhí)行步驟270;步驟260,認(rèn)為該幀語音為濁音,輸出最佳延遲T,再根據(jù)時(shí)間與頻率的關(guān)系,由該T可以換算出該幀語音對應(yīng)的音高值。
步驟270,認(rèn)為該幀語音為清音,令音高為0,結(jié)束。
相應(yīng)地,可以將音高和能量檢測模塊劃分為預(yù)處理單元、歸一化互相關(guān)函數(shù)計(jì)算單元、后處理單元、基音頻率搜索單元和音高輸出單元,和現(xiàn)有的單元相比,有以下特點(diǎn)現(xiàn)有的預(yù)處理單元采用了5階橢圓低通濾波器和一個(gè)數(shù)值濾波器,本實(shí)施例將原有的5階橢圓低通濾波器改為Haar小波基的兩階低通濾波器,截止頻率設(shè)為1000Hz,并去除數(shù)值濾波器,從而大大減少了運(yùn)算復(fù)雜度。
互相關(guān)函數(shù)計(jì)算非常復(fù)雜,現(xiàn)有互相關(guān)函數(shù)計(jì)算單元通常是每一點(diǎn)都要計(jì)算一次相關(guān)函數(shù),而本實(shí)施例的該單元是隔點(diǎn)進(jìn)行相關(guān)運(yùn)算,降低了一半的運(yùn)算量。
現(xiàn)有的基音頻率搜索單元的搜索范圍為20-147,本實(shí)施例的該單元?jiǎng)t將搜索范圍縮小到20-120內(nèi)(也可以更小一點(diǎn))并采取隔點(diǎn)搜索,減少了高頻基音檢測誤差和減少運(yùn)算。
音高檢測部分是復(fù)雜度最大的部分,本實(shí)施例通過上述單元的改進(jìn),在不影響檢測精度的前提下降低了復(fù)雜度,從而使得本發(fā)明可以應(yīng)用于嵌入式系統(tǒng)。
上述步驟30中的音符切分是本發(fā)明的一個(gè)重點(diǎn),下面將詳細(xì)介紹。
A,音符切分的目的對于音高曲線需要轉(zhuǎn)化為一個(gè)個(gè)音符(如簡譜“1,2,3,4......”)即樂譜才能進(jìn)行播放,而只有少數(shù)情況是一段音高對應(yīng)一個(gè)音符,多數(shù)情況是一段音高對應(yīng)幾個(gè)音符,這就需要進(jìn)行音符切分,才能完成樂譜。
B,音符切分的背景當(dāng)人采用歌詞清唱時(shí),音高曲線變得比較復(fù)雜,一方面受到音高變化的影響,另一方面對于音色的變化(或者轉(zhuǎn)音)也會影響音高曲線的起伏變化,加強(qiáng)了切分音符的難度。例如,一首曲子本身有著音高的高低變化,同樣的音高采用鋼琴和吉他演奏效果并不同,這就是音色不同的影響,同樣一首曲子可以通過哼“啦”、“嗒”演唱,也可以通過唱歌詞來演唱,后者歌詞是變化的,要比前者的音高曲線變化更復(fù)雜。本實(shí)施例方法主要用于完成前者“啦”、“嗒”演唱的歌曲。
C,現(xiàn)有的音符切分方法音符切分是為了找到一個(gè)個(gè)音符,又因?yàn)槊總€(gè)音符在起始階段能量較大,然后能量開始下降、維持,直到消失或被下一個(gè)音符能量所掩蔽,這就是本系統(tǒng)選擇峰值檢測算法的原因,如圖4所示。
峰值檢測是用來檢測信號中能量較大的峰值位置,現(xiàn)有的技術(shù)有A)小波變換算法,小波變換是傳統(tǒng)傅立葉變換的繼承和發(fā)展,主要應(yīng)用在信號處理、圖像處理、語音處理等多個(gè)領(lǐng)域,但是實(shí)現(xiàn)比較復(fù)雜。
B)簡單峰值檢測,或者幅度包絡(luò)檢測,通過一階導(dǎo)數(shù)、二階導(dǎo)數(shù)決定一個(gè)峰值,此方法雖然簡單但抗干擾性能較差。
C)通過峰峰值、半峰值和峰谷值等參數(shù)檢測峰值,已有應(yīng)用在音符切分技術(shù)上,雖然所得到的結(jié)果比較穩(wěn)定,但對于語音信號中的多峰(信號中的一個(gè)峰值周圍存在小峰)檢測不準(zhǔn)。
D)本實(shí)施例的音符切分方法本實(shí)施例在上述峰值檢測C)的基礎(chǔ)上進(jìn)行了改進(jìn),主要表現(xiàn)在以下三個(gè)方面1)預(yù)處理首先將檢測出的各個(gè)語音幀的能量值依次輸入一個(gè)一階低通濾波器進(jìn)行濾波,過濾掉能量曲線中的毛刺,以提高抗干擾性和檢測效果;2)雙峰值檢測請參照圖5,整個(gè)能量曲線上有能量大于臨界值的語音幀和能量小于臨界值的語音幀,在音符切分時(shí)只對能量大于臨界值的連續(xù)語音幀進(jìn)行處理,文中稱其為濁音段,該連續(xù)語音幀中第一個(gè)和最后一個(gè)語音幀即為該濁音段的起始位置和結(jié)束位置。在能量曲線上,能量可以用幅度或功率來表征,較佳地,能量的臨界值可以取為26dB~30dB,但本發(fā)明不限于此。
下面以一個(gè)濁音段為例對本實(shí)施例的雙峰值檢測方法進(jìn)行說明。如圖6所示,該流程包括以下步驟步驟300,從濁音段起始位置,即第一個(gè)語音幀開始,判斷在該濁音段是否檢測到第一個(gè)波峰,如果是,執(zhí)行步驟310,否則,直接結(jié)束;在整個(gè)音符切分的過程中都需要進(jìn)行波峰檢測,因此先介紹一下本實(shí)施例采用的波峰檢測方法逐一比較語音幀序列中前一個(gè)語音幀與后一個(gè)語音幀的能量大小關(guān)系,統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的語音幀的個(gè)數(shù),如果該個(gè)數(shù)大于設(shè)定的閾值(該閾值較佳為5~9,本實(shí)施例為7),則認(rèn)為這些語音幀對應(yīng)的能量曲線構(gòu)成一個(gè)波峰。該段能量曲線上最大的能量值為該波峰的峰值,該段能量曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,峰值和谷值位置分別為峰值和谷值對應(yīng)的語音幀,波峰的起始位置即為上述濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀。
如果能量連續(xù)上升段和隨后的能量連續(xù)下降段涉及的語音幀個(gè)數(shù)小于等于所述閾值,則認(rèn)為這些語音幀對應(yīng)的能量曲線是一個(gè)小突波,不對其進(jìn)行處理。
步驟310,將檢測到的第一個(gè)波峰作為第一波峰,記錄該濁音段起始位置和該第一波峰的相關(guān)參數(shù),包括該波峰的峰值、谷值、峰值位置和谷值位置;步驟320,繼續(xù)檢測,判斷在檢測到能量小于臨界值的語音幀之前是否檢測出下一波峰,如果否,表示在該濁音段結(jié)束前已沒有波峰,執(zhí)行步驟330,如果檢測出下一波峰,輸出該濁音段起始位置(步驟320a),執(zhí)行步驟340;步驟330,判定該濁音段對應(yīng)于一個(gè)音符,輸出該濁音段的起始位置和結(jié)束位置,結(jié)束;步驟340,將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,判斷第一波峰和第二波峰的峰值能量差比和峰峰間距是否大于預(yù)設(shè)的閾值,如果是,執(zhí)行步驟350,否則,執(zhí)行步驟380;第一波峰和第二波峰的峰值能量差比是這樣計(jì)算的將第二波峰峰值減去第一波峰谷值的差,除以第一波峰峰值減去第一波峰谷值的差,得到的比值即為該兩個(gè)波峰的峰值能量差比。當(dāng)峰值能量差比小于相應(yīng)閾值時(shí),則認(rèn)為當(dāng)前第二波峰是在第一波峰下降段出現(xiàn)的一個(gè)小突波,不對應(yīng)于一個(gè)音符。用于和計(jì)算出的峰值能量差比比較的閾值較佳為0.1825~0.3125,本實(shí)施例取0.1875。
兩個(gè)波峰的峰峰間距是指兩個(gè)峰值位置之間的語音幀個(gè)數(shù),用于和計(jì)算出的該語音幀個(gè)數(shù)比較的閾值較佳為5~9,本實(shí)施例為7。如峰峰間距小于該閾值則表示第二波峰和第一波峰非常接近,不認(rèn)為第一波峰和第二波峰分別對應(yīng)于一個(gè)單獨(dú)的音符。
當(dāng)然,上述兩個(gè)條件,即峰值能量差比和峰峰間距也可以單獨(dú)使用,或者采用其它的雙峰值檢測條件,也能起到濾去過渡成分的功效。
步驟350,繼續(xù)檢測,判斷在檢測到能量小于臨界值的語音幀之前是否檢測出下一波峰,如果否,表示在該濁音段結(jié)束前已沒有波峰,執(zhí)行步驟360,如果檢測出下一波峰,執(zhí)行步驟370;步驟360,認(rèn)定第一波峰和第二波峰分別對應(yīng)于一個(gè)音符,輸出第一波峰谷值位置和濁音段結(jié)束位置,結(jié)束;步驟370,認(rèn)定第一波峰對應(yīng)于一個(gè)音符,輸出其谷值位置,同時(shí)用第二波峰的各項(xiàng)參數(shù)替換掉保存的第一波峰的各項(xiàng)參數(shù),即將原第二波峰作為新的第一波峰,返回步驟340;步驟380,繼續(xù)檢測,判斷在檢測到能量小于臨界值的語音幀之前是否檢測出下一波峰,如果否,表示在該濁音段結(jié)束前已沒有波峰,執(zhí)行步驟390,如果檢測出下一波峰,執(zhí)行步驟400;步驟390,判定第一波峰對應(yīng)于一個(gè)音符,輸出該濁音段的結(jié)束位置,結(jié)束;步驟400,根據(jù)當(dāng)前記錄的第一波峰和第二波峰的參數(shù)更新第一波峰的參數(shù),返回步驟340;在更新第一波峰參數(shù)時(shí),本實(shí)施例是以第一波峰峰值和第二波峰峰值中的大值替換掉第一波峰的峰值,以該大的峰值后的一個(gè)谷值或兩個(gè)谷值中的小值替換掉第一波峰的谷值,第一波峰的峰值位置和谷值位置更新為新的峰值和谷值對應(yīng)的語音幀。
在完成檢測或在檢測過程中,根據(jù)輸出的濁音段起始、結(jié)束位置和波峰的谷值位置就可以進(jìn)行音符切分,在一個(gè)濁音段上,輸出的兩個(gè)相鄰位置即為一個(gè)音符的起始和結(jié)束位置。
一般情況下,兩個(gè)峰值之間總有一些過渡成分,包括小突波和平緩下降(屬于第一個(gè)峰值的延續(xù))、抖動和不規(guī)則的上升曲線(屬于第二個(gè)峰值的起始)等,采用雙峰值檢測有效地處理了過渡成分,因此提高了傳統(tǒng)的峰值檢測算法的準(zhǔn)確率。
本實(shí)施例采用如圖7所示的音符切分裝置來實(shí)現(xiàn)上述音符切分的方法,包括一階低通濾波器(該單元可選)、波峰檢測模塊、主控制模塊、音符切分模塊、存儲模塊和雙峰值判定模塊,其中所述一階低通濾波器,用于對檢測出的語音幀序列中各個(gè)語音幀的能量進(jìn)行濾波,所述波峰檢測模塊和主控制模塊基于該濾波后的語音幀能量進(jìn)行處理;所述波峰檢測模塊,用于統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的能量大于臨界值的語音幀的個(gè)數(shù),如該個(gè)數(shù)大于第三閾值,則判定這些語音幀對應(yīng)的一段能量曲線構(gòu)成一個(gè)波峰,該段曲線上最大的能量值為該波峰的峰值,該段曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,該波峰的峰值和谷值位置分別為該峰值和該谷值對應(yīng)的語音幀;所述存儲模塊用于保存波峰的參數(shù)以及濁音段的起始和結(jié)束位置;所述雙峰值判定模塊用于判斷第二波峰峰值與第一波峰谷值之差和第一波峰的峰值與谷值之差的比值是否大于第一閾值,以及第一波峰和第二波峰的峰值位置之間的語音幀個(gè)數(shù)是否大于第二閾值,如果均是,則返回的判定結(jié)果為成功,否則返回失敗的判定結(jié)果;所述主控制模塊用于對能量大于臨界值的連續(xù)語音幀構(gòu)成的每一濁音段進(jìn)行音符切分,進(jìn)一步包括第一控制單元、第二控制單元、第三控制單元、第四控制單元和第五控制單元,其中第一控制單元,用于從濁音段的起始位置開始,調(diào)用波峰檢測模塊,如檢測不到波峰,則結(jié)束該濁音段的處理,否則以檢測到的第一個(gè)波峰為第一波峰,將該濁音段起始位置及第一波峰的峰值、谷值、峰值位置和谷值位置保存到所述存儲模塊,觸發(fā)第二控制單元繼續(xù)處理;第二控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,則將濁音段起始位置輸出到音符切分模塊,觸發(fā)第三控制單元繼續(xù)處理,否則,將該濁音段起始和結(jié)束位置輸出到音符切分模塊;
第三控制單元,將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,調(diào)用雙峰值判定模塊,如果返回的判定結(jié)果為成功,觸發(fā)第四控制單元繼續(xù)處理,否則觸發(fā)第五控制單元繼續(xù)處理;第四控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,將第一波峰谷值位置輸出到音符切分模塊,并用第二波峰的參數(shù)替換掉保存的第一波峰的相應(yīng)參數(shù),觸發(fā)第三控制單元繼續(xù)處理;否則將第一波峰谷值位置和濁音段結(jié)束位置輸出到音符切分模塊;第五控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,根據(jù)第一波峰和第二波峰的參數(shù)更新第一波峰的參數(shù)(見圖6中步驟370),觸發(fā)第三控制單元繼續(xù)處理;否則將濁音段結(jié)束位置輸出到音符切分模塊;所述音符切分模塊用于以濁音段處理過程中輸出的兩個(gè)相鄰位置為一個(gè)音符的起始和結(jié)束位置,完成對該濁音段的音符切分。
有時(shí)波峰之間會的一些小突波,在實(shí)施例中是將前一波峰的谷值位置作為該波峰對應(yīng)音符的結(jié)束位置。不過,在其它實(shí)施方式中,也可以將后一波峰的起始位置作為前一波峰對應(yīng)音符的結(jié)束位置,這反應(yīng)的流程上在步驟340要記錄第二波峰的起始位置,并在步驟360和步驟370中先用第二波峰的起始位置替換掉第一波峰的谷值位置,再輸出該替換后的第一波峰谷值位置。反映在裝置上,則第三控制單元還記錄第二個(gè)波峰的起始位置,而第四控制單元先用第二波峰的起始位置替換掉第一波峰的谷值位置,再輸出替換后的該第一波峰的谷值位置。
總體流程中的步驟30還要將切分完的音符轉(zhuǎn)成MIDI樂譜,方法如下眾所周知,簡譜中每個(gè)音階內(nèi)的“1,2,3,4,5,6,7--do,re,mi,fa,so,la,xi”都對應(yīng)了一個(gè)頻率值,而按照樂理中的十二平均律對應(yīng)于不同的MIDI值,例如Octave5(八度音階)Midi Pitch
415.30HZ G5#So5#---MIDI 68440.00HZ A5La5 ---MIDI 69466.16HZ A5#La5#---MIDI 70MIDI樂譜需要音符信息,包括音符的長度和音符的音高均值。
音符的長度,是根據(jù)對濁音段進(jìn)行音符切分時(shí)輸出的兩個(gè)相鄰位置之間的語音幀個(gè)數(shù)得到的,這些位置可能是峰值起始位置、谷值位置或濁音段起始、結(jié)束位置。
音符的音高均值,是根據(jù)對濁音段進(jìn)行音符切分時(shí)輸出的兩個(gè)相鄰位置找到對應(yīng)的音高曲線,計(jì)算該段曲線音高的平均值得到的。例如,輸出的兩個(gè)相鄰位置為10、35(用語音幀序號表示),P(n)為音高曲線中第n個(gè)語音幀的音高值,則該音符的音高均值為Pitch=[P(10)+P(11)+...+P(35)]/(35-10)將音高均值轉(zhuǎn)換為相應(yīng)的頻率fpitch=fx/Pitch,其中fx為采樣頻率。
因此,首先通過音符的音高得到相應(yīng)的頻率值(或音階Octave值),然后量化到簡譜中的“1,2,3......”,最后通過十二平均律公式MIDI=69+12×log2[(FS/440)×fpitch]即可得到MIDI的音高。例如,系統(tǒng)得到一個(gè)音符的音高為430HZ,那么首先將它量化成Octave5中的A5 La5,然后就可以采用事先通過十二平均律公式計(jì)算好的MIDI 69表示。
綜上所述,本發(fā)明可以應(yīng)用于PC機(jī)及嵌入式系統(tǒng),可以跟蹤人聲哼唱信號及某些電子樂器,通過時(shí)域自相關(guān)音高檢測(Pitch Detection)算法和基于能量的音符分割使得系統(tǒng)占用資源較少,方法簡單,使用方便靈活。
權(quán)利要求
1.一種音高跟蹤和播放系統(tǒng),包括用于接收輸入的聲音并對其做采樣和分幀處理的語音輸入處理模塊,用于檢測每一語音幀的音高和能量的音高和能量檢測模塊,用于根據(jù)能量檢測結(jié)果完成音符切分的音符切分模塊,以及用于將完成切分的音符轉(zhuǎn)換成樂譜的樂譜轉(zhuǎn)換模塊,其特征在于,該系統(tǒng)還包括語音合成模塊,用于將轉(zhuǎn)換成的樂譜合成為樂器數(shù)字界面文件并進(jìn)行播放。
2.如權(quán)利要求1所述的音高跟蹤和播放系統(tǒng),其特征在于,所述音高和能量檢測模塊進(jìn)一步包括預(yù)處理單元、歸一化互相關(guān)函數(shù)計(jì)算單元、后處理單元和基音頻率搜索單元,其中,該預(yù)處理單元采用兩階低通濾波器進(jìn)行濾波。
3.如權(quán)利要求2所述的音高跟蹤和播放系統(tǒng),其特征在于,所述互相關(guān)函數(shù)計(jì)算單元進(jìn)行互相關(guān)函數(shù)的計(jì)算是隔點(diǎn)進(jìn)行的。
4.如權(quán)利要求2或3所述的音高跟蹤和播放系統(tǒng),其特征在于,所述基音頻率搜索單元在搜索時(shí)采取隔點(diǎn)搜索,且其搜索范圍在20-120之內(nèi)。
5.如權(quán)利要求1所述的音高跟蹤和播放系統(tǒng),其特征在于,所述音符切分模塊包括波峰檢測模塊、主控制模塊、音符切分模塊、存儲模塊和雙峰值判定模塊,其中所述波峰檢測模塊,用于統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的能量大于臨界值的語音幀的個(gè)數(shù),如該個(gè)數(shù)大于第三閾值,則判定這些語音幀對應(yīng)的一段能量曲線構(gòu)成一個(gè)波峰,該段曲線上最大的能量值為該波峰的峰值,該段曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,該波峰的峰值和谷值位置分別為該峰值和該谷值對應(yīng)的語音幀;所述存儲模塊用于保存波峰的參數(shù)以及濁音段的起始和結(jié)束位置;所述雙峰值判定模塊用于判斷第二波峰峰值與第一波峰谷值之差和第一波峰的峰值與谷值之差的比值是否大于第一閾值,以及第一波峰和第二波峰的峰值位置之間的語音幀個(gè)數(shù)是否大于第二閾值,如果均是,則返回的判定結(jié)果為成功,否則返回失敗的判定結(jié)果;所述主控制模塊用于對能量大于臨界值的連續(xù)語音幀構(gòu)成的每一濁音段進(jìn)行音符切分,進(jìn)一步包括第一控制單元、第二控制單元和第三控制單元,其中第一控制單元,用于從濁音段的起始位置開始,調(diào)用波峰檢測模塊,如檢測不到波峰,則結(jié)束該濁音段的處理,否則以檢測到的第一個(gè)波峰為第一波峰,將該濁音段起始位置及第一波峰的峰值、谷值、峰值位置和谷值位置保存到所述存儲模塊,觸發(fā)第二控制單元繼續(xù)處理;第二控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,則將濁音段起始位置輸出到音符切分模塊,觸發(fā)第三控制單元繼續(xù)處理,否則,將該濁音段起始和結(jié)束位置輸出到音符切分模塊;第三控制單元,將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,調(diào)用雙峰值判定模塊,如果返回的判定結(jié)果為成功,觸發(fā)第四控制單元繼續(xù)處理,否則觸發(fā)第五控制單元繼續(xù)處理;第四控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,將第一波峰谷值位置輸出到音符切分模塊,并用第二波峰的參數(shù)覆蓋掉保存的第一波峰的相應(yīng)參數(shù),觸發(fā)第三控制單元繼續(xù)處理;否則將第一波峰谷值位置和濁音段結(jié)束位置輸出到音符切分模塊;第五控制單元,用于調(diào)用波峰檢測模塊,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,以第一波峰和第二波峰峰值中的大值替換掉第一波峰的峰值,以該大的峰值后的一個(gè)谷值或兩個(gè)谷值中的最小值替換掉第一波峰的谷值,第一波峰的峰值位置和谷值位置更新為新的峰值和谷值對應(yīng)的語音幀,然后觸發(fā)第三控制單元繼續(xù)處理;否則將濁音段結(jié)束位置輸出到音符切分模塊;所述音符切分模塊用于以濁音段處理過程中輸出的兩個(gè)相鄰位置為一個(gè)音符的起始和結(jié)束位置,完成對該濁音段的音符切分。
6.一種音高跟蹤和播放方法,包括以下步驟(a)對輸入聲音做采樣和分幀處理;(b)檢測每一語音幀的音高和能量;(c)根據(jù)能量檢測結(jié)果完成音符切分,然后根據(jù)檢測出的音高將音符切分結(jié)果轉(zhuǎn)換成樂譜;(d)將轉(zhuǎn)換得到的樂譜合成為樂器數(shù)字界面文件,并進(jìn)行播放。
7.如權(quán)利要求6所述的音高跟蹤和播放方法,其特征在于,所述步驟(b)檢測語音幀的音高時(shí),進(jìn)一步分為以下步驟(b1)對分幀處理后的語音信號進(jìn)行預(yù)處理,包括去均值和低通濾波處理,且采用兩階低通濾波器進(jìn)行濾波;(b2)將預(yù)處理后的語音能量與一個(gè)閾值進(jìn)行比較,如高于該閾值,則判斷為濁音,轉(zhuǎn)到步驟(b3),否則,執(zhí)行步驟(b7);(b3)計(jì)算出每幀延遲的濁音信號的歸一化互相關(guān)函數(shù)值ρ(t);(b4)進(jìn)行后處理,得到相關(guān)性最大的ρ(t)及對應(yīng)的最佳延遲T;(b5)基音頻率搜索,即檢測相關(guān)性最大的ρ(t)所對應(yīng)的時(shí)間延遲的樣點(diǎn)t是否在搜索范圍內(nèi),如果在該范圍內(nèi),執(zhí)行步驟(b6),否則,執(zhí)行步驟(b7);(b6)認(rèn)為該幀語音為濁音,輸出最佳延遲T,再根據(jù)時(shí)間與頻率的關(guān)系,由該T換算出該幀語音對應(yīng)的音高值,結(jié)束;(b7)認(rèn)為該幀語音為清音,令音高為0,結(jié)束。
8.如權(quán)利要求7所述的音高跟蹤和播放方法,其特征在于,所述步驟(b3)進(jìn)行互相關(guān)函數(shù)值的計(jì)算時(shí)是隔點(diǎn)進(jìn)行的。
9.如權(quán)利要求7所述的音高跟蹤和播放方法,其特征在于,所述步驟(b5)在進(jìn)行基音頻率搜索時(shí)采取隔點(diǎn)搜索,且其搜索范圍在20-120之內(nèi)。
10.如權(quán)利要求6或8所述的音高跟蹤和播放方法,其特征在于,所述步驟(c)進(jìn)行音符切分時(shí),對能量大于臨界值的連續(xù)語音幀構(gòu)成的每一濁音段,執(zhí)行以下步驟(c1)以第一個(gè)語音幀為該濁音段的起始位置,如檢測到波峰,將第一個(gè)檢測到的波峰作為第一波峰,記錄該濁音段起始位置及第一波峰的峰值、谷值、峰值位置和谷值位置,執(zhí)行下一步,如檢測不到波峰,結(jié)束;(c2)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,則輸出濁音段起始位置,執(zhí)行步驟(c3),否則輸出該濁音段起始和結(jié)束位置,執(zhí)行步驟(c6);(c3)將檢測出的下一波峰作為第二波峰,記錄其峰值、谷值、峰值位置和谷值位置,判斷是否第二波峰峰值與第一波峰谷值之差和第一波峰的峰值與谷值之差的比值大于第一閾值,且第一波峰和第二波峰的峰值位置之間的語音幀個(gè)數(shù)大于第二閾值,如果是,執(zhí)行步驟(c4),否則執(zhí)行步驟(c5);(c4)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,輸出第一波峰谷值位置,并用第二波峰的參數(shù)覆蓋掉保存的第一波峰的相應(yīng)參數(shù),返回步驟(c3),否則,輸出第一波峰谷值位置和濁音段結(jié)束位置,執(zhí)行步驟(c6);(c5)繼續(xù)檢測,如在檢測到能量小于臨界值的語音幀之前檢測出下一波峰,以第一波峰峰值和第二波峰峰值中的大值覆蓋掉第一波峰的峰值,以該大的峰值后的一個(gè)谷值或兩個(gè)谷值中的小值覆蓋掉第一波峰的谷值,第一波峰的峰值位置和谷值位置更新為新的峰值和谷值對應(yīng)的語音幀,然后返回步驟(c3),否則,輸出該濁音段結(jié)束位置,執(zhí)行步驟(c6);(c6)以輸出的兩個(gè)相鄰位置為一個(gè)音符的起始和結(jié)束位置,完成對該濁音段的音符切分。其中,所述步驟(a)~(e)進(jìn)行波峰檢測時(shí),是逐一比較相鄰兩個(gè)語音幀的能量大小,統(tǒng)計(jì)從濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀開始的能量連續(xù)上升段和隨后的能量連續(xù)下降段所涉及的能量大于臨界值的語音幀的個(gè)數(shù),如該個(gè)數(shù)大于第三閾值,則判定這些語音幀對應(yīng)的一段能量曲線構(gòu)成一個(gè)波峰,該段曲線上最大的能量值為該波峰的峰值,該段曲線上最后一個(gè)語音幀的能量值為該波峰的谷值,該波峰的峰值和谷值位置分別為該峰值和該谷值對應(yīng)的語音幀,該濁音段起始語音幀或前一能量下降段最后一個(gè)語音幀為該波峰的起始位置。
全文摘要
一種音高跟蹤和播放方法和系統(tǒng),包括用于接收輸入的聲音并對其做采樣和分幀處理的語音輸入處理模塊,用于檢測每一語音幀的音高和能量的音高和能量檢測模塊,用于根據(jù)能量檢測結(jié)果完成音符切分的音符切分模塊,以及用于將完成切分的音符轉(zhuǎn)換成樂譜的樂譜轉(zhuǎn)換模塊,以及語音合成模塊,用于將轉(zhuǎn)換成的樂譜合成為樂器數(shù)字界面文件并進(jìn)行播放。這樣可以直接將人聲哼唱作為輸入,輸出即為MIDI曲。進(jìn)一步地通過在音高檢測的預(yù)處理時(shí)采用兩階低通濾波器進(jìn)行濾波,隔點(diǎn)進(jìn)行互相關(guān)函數(shù)的計(jì)算,縮小基音頻率的搜索范圍等措施,可以使本發(fā)明適用于嵌入式系統(tǒng)。
文檔編號G10H5/00GK101093661SQ200610086470
公開日2007年12月26日 申請日期2006年6月23日 優(yōu)先權(quán)日2006年6月23日
發(fā)明者王貴平 申請人:凌陽科技股份有限公司, 北京北陽電子技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
锦州市| 延吉市| 若羌县| 施甸县| 虹口区| 织金县| 宜兰县| 漾濞| 永福县| 兰坪| 工布江达县| 邻水| 固原市| 墨脱县| 边坝县| 新晃| 平原县| 安阳市| 黑山县| 南岸区| 罗源县| 隆德县| 七台河市| 库伦旗| 中西区| 荔浦县| 广宁县| 镇赉县| 榆社县| 阜宁县| 蒙阴县| 错那县| 永兴县| 内江市| 互助| 清丰县| 商洛市| 滕州市| 聂拉木县| 连山| 武强县|