基于FPGA的卡拉OK打分系統完整設計
摘要
本文引用地址:http://dyxdggzs.com/article/201706/348698.htm隨著(zhù)生活水平的不斷提高,卡拉OK練歌房在我國已經(jīng)非常普遍??ɡ璒K機的自動(dòng)評分功能往往會(huì )引起一些人的興趣,覺(jué)得機器能夠自動(dòng)評分是件挺神奇的事。但同時(shí)也會(huì )發(fā)現它有一個(gè)很大的缺點(diǎn)--評分不太準。本項目立足于近幾年出現的一些數據處理和控制集成芯片,將一些語(yǔ)音信號處理的專(zhuān)用算法應用到評分系統中來(lái),以改進(jìn)現行系統,增強評分的準確性。
- 研究背景
近年來(lái)隨著(zhù)我國經(jīng)濟的飛速發(fā)展,人民的生活水平不斷地提高。全國各地的KTV產(chǎn)業(yè)蓬蓬勃勃的發(fā)展,大街小巷隨處可見(jiàn)KTV練歌房的身影。而我們的鄰邦韓國和日本,KTV產(chǎn)業(yè)更是龐大,到卡拉OK練歌房唱日本民歌甚至已經(jīng)逐步演變?yōu)槿毡镜囊环N民族風(fēng)俗。正是由于卡拉OK目前如此的流行,促使卡拉OK設備生產(chǎn)商對這個(gè)領(lǐng)域進(jìn)行大量的投入和研發(fā),因此卡拉OK系統不斷地得到完善,功能也不斷地增強。從上世紀90年代開(kāi)始,人們逐漸開(kāi)始關(guān)注卡拉OK的自動(dòng)評分功能。當演唱完一首歌以后,經(jīng)過(guò)一段延遲時(shí)間,機器便能自動(dòng)算出一個(gè)分數來(lái),這始終是一件讓人覺(jué)得挺有意思的事情。
當這個(gè)想法被一個(gè)叫唐駿的中國留學(xué)生提出并付諸實(shí)踐后,立即在日本引起了巨大的轟動(dòng)。人們普遍都感到非常的新奇,都想嘗試嘗試這種有趣的機器,這就造就了第一個(gè)買(mǎi)下這項專(zhuān)利的三星公司的卡拉OK設備的銷(xiāo)售量的飛漲,甚至有人評價(jià)說(shuō)是這項發(fā)明挽救了當時(shí)處在市場(chǎng)危機中的三星公司。不過(guò),過(guò)了一段時(shí)間人們發(fā)現這種機器有一種問(wèn)題——評分不準。后來(lái)這項專(zhuān)利的發(fā)明者唐駿也公開(kāi)表示,該系統的評分效果不是很準確,演唱時(shí)只要盡力模仿唐駿的聲音就一定能得到高分。
正是由于這套系統的這些缺點(diǎn)與不足,后來(lái)又有很多專(zhuān)家學(xué)者陸續投入到語(yǔ)音打分系統的研究中來(lái),激起了一次研究卡拉OK打分系統的熱潮——1990年到1998年。這些研究人員主要是日本人,因為日本的卡拉OK非常的盛行。在這期間,他們申請了將近十幾項專(zhuān)利,不過(guò)沒(méi)有發(fā)表過(guò)一片論文,畢竟這是一個(gè)可以賺大錢(qián)的東西。這些專(zhuān)利可以分為以下幾類(lèi):
從時(shí)域波形出發(fā),對演唱者的音頻信號和機器自帶的原唱信號進(jìn)行采樣,然后比較各個(gè)采樣點(diǎn)的大小,如果比較一致則得分高,否則得分低。
從能量的角度出發(fā),對演唱者的音頻信號和伴奏音樂(lè )分別用A/D進(jìn)行數字化,然后對兩種數字信號的規格化能量進(jìn)行比較和差異測量,最后根據兩者差異情況給分。
從頻域分析的角度出發(fā),首先將機器自帶原唱信號與伴奏樂(lè )聲進(jìn)行小波變換,再將演唱者的音頻信號與伴奏音樂(lè )進(jìn)行小波變換。比較兩次得到的頻譜信號的分布情況,越是一致則得分越高。
到98年以后,這一領(lǐng)域才逐漸開(kāi)始降溫,也沒(méi)有多少新的專(zhuān)利或者是相關(guān)文獻出現。而且,即使是上文敘述的那些專(zhuān)利也沒(méi)有多少投入到商業(yè)生產(chǎn)中。這些專(zhuān)利發(fā)明有一個(gè)共同的特點(diǎn),那就是計算量非常大,受限于當時(shí)的硬件水平,實(shí)現起來(lái)不是很令人滿(mǎn)意。這也可以理解,畢竟要是一首4分鐘左右長(cháng)的歌曲唱完后需要幾十分鐘的計算后才能得到一個(gè)分數,那將是令人無(wú)法容忍的事情。
目前市場(chǎng)上正在銷(xiāo)售的那些卡拉OK機一般都帶有自動(dòng)評分的功能。但基于上文分析的原因,90年代研究者申請的那些專(zhuān)利都沒(méi)有在這些商品中得到實(shí)際的應用。各個(gè)生產(chǎn)廠(chǎng)家正在使用的那些評價(jià)標準基本都是當年唐駿發(fā)明的那套設備,俗稱(chēng)“唐駿標準”。但還是多少有一些差別,高檔一點(diǎn)的可能做一下FFT,進(jìn)行頻頻分析;低檔次的甚至是直接比較音量的大小,音量越大得分越高。有人曾做過(guò)實(shí)驗,讓一個(gè)三歲小孩在萬(wàn)利達的卡拉OK機前大聲哭著(zhù)喊媽媽?zhuān)Y果由于小孩子聲帶小,發(fā)聲頻率高,音量又大,竟得了98分,非常匪夷所思。前一段時(shí)間流行的江蘇衛視的《誰(shuí)敢來(lái)唱歌》欄目也應有了機器打分系統。他們從國外引進(jìn)了一套叫SAM的系統,使用時(shí)先將每首歌的原音預錄進(jìn)去,然后設置10個(gè)關(guān)鍵字點(diǎn)。得分的高低,取決于這10個(gè)關(guān)鍵字唱得準不準,也許別的地方唱得不特別準,但關(guān)鍵字唱對了,選手也能得高分。使用后被很多觀(guān)眾抱怨評分不準。
經(jīng)過(guò)近幾十年的發(fā)展,硬件設備尤其是大規模集成電路技術(shù)取得了巨大的進(jìn)步。目前最新的DSP芯片每秒能進(jìn)行上百萬(wàn)次的運算,XILINX的FPGA的并行處理能力也已經(jīng)非常強大了。用這些芯片對音頻信號進(jìn)行一些FFT運算和頻域分析,硬件方面已經(jīng)沒(méi)有問(wèn)題了。因此,本文提出一種基于FPGA和DSP的新型卡拉OK評分系統。本系統除了運用一些新型的集成芯片來(lái)進(jìn)行運算處理,還提出了一種改進(jìn)了的評分算法,來(lái)盡量減小評分所需的運算量,同時(shí)使評價(jià)結果與演唱者實(shí)際水平盡量吻合。
- 語(yǔ)音信號的基本特征
圖1:一段語(yǔ)音的時(shí)域波形圖
圖[1]是一小段語(yǔ)音的時(shí)域波形圖,可以看出,語(yǔ)音一般由三部分組成:無(wú)音段、清音段和濁音段。無(wú)音段不存在語(yǔ)音信號,在背景噪聲較低的情況下,幅度近似為零。清音信號的幅度很小,沒(méi)有規律,類(lèi)似于隨機噪聲。濁音信號幅度較大,波形的上下起伏近似呈現周期性,稱(chēng)之為準周期性。語(yǔ)音信號有兩個(gè)重要的時(shí)域參數:短時(shí)能量和基音周期。從圖2.1可以看出信號的幅度隨時(shí)間改變而變化顯著(zhù),短時(shí)能量可以反映這一特性,其定義如下:
(2.2.1)
短時(shí)能量的主要意義在于給出了區分清濁音的基礎,清音的短時(shí)能量明顯小于濁音的短時(shí)能量,用短時(shí)能量可以大體分辨出清音、濁音以及清音變成濁音的時(shí)刻,對于質(zhì)量很高(高信噪比)的語(yǔ)音,也可用來(lái)區分有音與無(wú)音。
從圖[1]可以看出,濁音信號是一個(gè)準周期信號,其周期稱(chēng)為基音周期,基音周期的倒數稱(chēng)為基頻 (Pitch)?;糁芷趯?shí)際上是聲門(mén)波往復一次的時(shí)間長(cháng)度。聲門(mén)波是指聲門(mén)氣流的速率隨時(shí)間變化的函數曲線(xiàn)。通常而言,當聲帶閉合時(shí),聲門(mén)處受阻聚積的氣流會(huì )逐漸沖開(kāi)聲帶,氣流速率也隨之開(kāi)始緩慢地增大,達到最大值后由于聲帶突然閉合,氣流速率陡降為零,如圖[2]所示。
圖2:周期性變化的聲門(mén)氣流速
不同說(shuō)話(huà)人發(fā)出同一濁音時(shí),基頻差異明顯,尤其是男女聲。一般來(lái)說(shuō),正常成人男聲的基頻在0—200Hz左右,正常成人女聲的基頻為200—450Hz,小孩的基頻比女聲的基頻還要高,老人的基頻則比正常成年男聲還要低。
語(yǔ)音信號還有一個(gè)很重要的特性即短時(shí)平穩性,語(yǔ)音信號是非平穩信號,但在某一個(gè)比較短的時(shí)間里,語(yǔ)音信號可以被看成是平穩的。這段時(shí)間一般可取為5—50ms。短時(shí)平穩性是語(yǔ)音信號處理的基礎。
- 頻域特性
對一段語(yǔ)音進(jìn)行分幀加窗后再進(jìn)行傅立葉變換就可以得到該幀語(yǔ)音的短時(shí)譜。清音的短時(shí)譜類(lèi)似于隨機信號的頻譜。而濁音信號的短時(shí)譜有兩個(gè)特點(diǎn):第一,有明顯的周期性起伏,這是因為濁音的激勵源為周期脈沖氣流;第二,頻譜中具有幾個(gè)明顯的凸起點(diǎn),它們對應的頻率與聲道的諧振頻率一致。這些凸起點(diǎn)稱(chēng)為共振峰(Formant),其頻率稱(chēng)為共振峰頻率,簡(jiǎn)稱(chēng)共振峰。共振峰按頻率由低到高排列依次為第一共振峰、第二共振峰、…,一般用字母F1、F2…來(lái)表不。一般濁音中前二個(gè)共振峰對說(shuō)話(huà)人的個(gè)性特征影響較大,而前兩個(gè)對于區別不同語(yǔ)音至關(guān)重要。
- 語(yǔ)音信號的特征參數
- 短時(shí)頻譜
語(yǔ)音信號特征在較短的時(shí)間間隔中保持基本不變,即語(yǔ)音信號具有時(shí)變特性,因而可以將語(yǔ)音信號看作是一個(gè)短時(shí)平穩過(guò)程。語(yǔ)音信號具有一些重要的短時(shí)特征。短時(shí)頻譜是語(yǔ)音信號的一個(gè)重要的短時(shí)特性。
B:短時(shí)自相關(guān)函數
S:自相關(guān)函數Rw(г)稱(chēng)為S(n)的短時(shí)自相關(guān)函數。
T:短時(shí)平均幅度
S(n)的短時(shí)平均幅度計算公式如下:
(3.1)
- 短時(shí)過(guò)零率
信號按段分割就稱(chēng)為短時(shí),段可是幀大小。過(guò)零就是信號的幅度值從正值到負值、負值到正值要經(jīng)過(guò)零點(diǎn),統計信號在一秒鐘內有幾次過(guò)零就是過(guò)零率。以短時(shí)能量為主,短時(shí)過(guò)零率為輔,可對語(yǔ)音信號中的清音進(jìn)行較精密的檢測。
- 倒譜
倒譜是一段語(yǔ)音信號的一組重要參數。要計算信號SW(n)的倒譜,首先要計算SW(n)的離散傅立葉變換,然后對離散傅立葉變換的模取對數,最后再做傅立葉反變換,這樣得到的c(n)被稱(chēng)做是“倒頻譜”或“倒譜”。
還有其它的一些特征參數,由于在本文中或者在音頻信號的研究中應用的較少,在這里就不一一介紹了。
- 實(shí)現原理與方案
下面來(lái)詳細敘述一下本文提出的評分算法。在敘述中將會(huì )遇到兩種音頻信號,為方便起見(jiàn),我們稱(chēng)卡拉OK機內自帶的專(zhuān)業(yè)歌手原唱的音頻信號為原唱,稱(chēng)卡拉OK機的使用者演唱的音頻信號為翻唱。評價(jià)過(guò)程分為兩個(gè)部分來(lái)完成。
首先進(jìn)行時(shí)域分析,判斷演唱者的協(xié)調性。由前幾段對音頻信號的特點(diǎn)可知,音頻信號的時(shí)域波形并不是連續的,而是一段一段的,每一段大約持續10ms—30ms,稱(chēng)為一個(gè)音節。時(shí)域分析主要是針對各個(gè)音節進(jìn)行分析,先用短時(shí)加窗法將信號進(jìn)行分幀,然后計算出各幀信號的能量主要集中區域。比較根據兩種信號得到的能量主要集中區域,如果比較吻合則說(shuō)明演唱者的協(xié)調性很好,可給一個(gè)較高的分數;如果兩種情況下的區域對得不是很齊,則說(shuō)明協(xié)調性不好,得到應該給低一點(diǎn)。每次比較完一幀便將比較結果記錄到存儲器的特定區域。
在時(shí)域分析的同時(shí)進(jìn)行頻域分析,如軟件流程圖[3]所示,時(shí)隙分配是每取出一幀,先對它進(jìn)行時(shí)域分析,記錄完分析結果后,再將信號進(jìn)行FFT變換,做頻域分析。主要是比較原唱和翻唱頻譜曲線(xiàn)的一致性,借助于頻譜分析分別比較高頻段和低頻段。根據相似性得到一個(gè)得分。
本項目的實(shí)現是通過(guò)用System Generator 進(jìn)行仿真,用MatlabaZ中的Simulink來(lái)實(shí)現具體的仿真, 并將最后的結果導入到FPGA中已實(shí)現最終的目的。
圖3:軟件流程圖
當把所有幀都分析完以后,再將各幀的得分相加,進(jìn)行百分制處理,即可得到總得分。最后將該得分送入液晶顯示。
其中的系統框圖如圖[4]所示:
圖4:系統框圖
評論