色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的基音檢測算法的設(shè)計與實現(xiàn)

          基于FPGA的基音檢測算法的設(shè)計與實現(xiàn)

          作者: 時間:2008-04-14 來源:網(wǎng)絡(luò) 收藏
          摘要:應(yīng)用在數(shù)字信號處理的主流技術(shù)DSP中是Altera推廣的重要應(yīng)用之一,本文依據(jù)Altera提出的基于的DSP解決方案,按照面向系統(tǒng)級和級的硬件設(shè)計思路,為語音信號處理領(lǐng)域中一項重要技術(shù)――“基音周期特征提取”實現(xiàn)DSP-IP核和執(zhí)行架構(gòu)的設(shè)計,并通過性能評價分析驗證的DSP實現(xiàn)使整個系統(tǒng)在執(zhí)行效率上的大幅提高。
          關(guān)鍵詞:DSP;;基音周期;自相關(guān)法

          1 引言

          傳統(tǒng)的DSP處理器的硬件結(jié)構(gòu)的不可變性已成為DSP處理器一個難以突破的瓶頸。隨著達(dá)數(shù)百萬門高密度的FPGA的出現(xiàn),F(xiàn)PGA在原有的高密度的邏輯宏單元的基礎(chǔ)上嵌入了許多面向DSP的專用硬核模塊,結(jié)合大量可配置于FPGA硬件結(jié)構(gòu)中的參數(shù)化的DSP IP軟核,DSP開發(fā)者能十分容易地將整個DSP應(yīng)用系統(tǒng)實現(xiàn)在一片F(xiàn)PGA中,從而實現(xiàn)了所謂的可編程SOC系統(tǒng),即SOPC,它具有靈活的用戶可定制性。

          基音周期估值是語音處理中的一個十分重要的問題。器可用于聲碼器、說話人確認(rèn)和辨認(rèn)系統(tǒng)以及有生理缺陷的人用的輔助用具,這使得基音周期估值在語音信號處理領(lǐng)域中占有舉足輕重的地位,因此將它硬件化,提高其執(zhí)行效率以適應(yīng)其應(yīng)用場合的需要將是一件很有意義的事情。

          2基音周期提取的確定及軟件實現(xiàn)

          2.1算法概述

          基音周期估值是語音處理中的一個十分重要的問題。目前有多種基音周期提取算法,這些方法從不同角度來提出其解決方案,以克服語音信號中如噪音、說話人差異等對特征提取時的干擾,但都有它們的局限性,所以可以說,對各種說話人、廣泛的應(yīng)用及使用環(huán)境都能給出滿意結(jié)果的有效的方法至今還沒有出現(xiàn)。

          本文選取了一種目前較成熟的通過自關(guān)函數(shù)進(jìn)行基音周期檢測的算法。其整個過程全面涉及了語音信號時域處理方法中的“能量分析”、“過零分析”及“相關(guān)分析”三大分析技術(shù)。其算法的可行性已在MATLAB中進(jìn)行軟件模擬。

          2.2系統(tǒng)框圖

          考慮到背景噪聲和提取結(jié)果出現(xiàn)跳變等問題,整個系統(tǒng)最終確定由下面三個部分構(gòu)成:(i)端點檢測模塊;(ii)基音頻率提取模塊;(iii)平滑處理模塊。其工作流程可由圖1表示。

          圖1 系統(tǒng)工作流圖

          本文選取了32kHz采樣頻率PCM音頻格式的wav文件作為系統(tǒng)的輸入數(shù)據(jù),輸出為每幀的基音頻率值。最后通過對相關(guān)參數(shù)(比如端點檢測模塊中所確定的雙能量門限及雙過零率門限,基音檢測模塊中的清濁判別門限以及平滑處理模塊中的滑動窗長)的不斷調(diào)整,可以很好地解決清濁誤判,語音段數(shù)據(jù)漏判以及尖峰的出現(xiàn)等問題。

          3基音周期特征提取算法的DSP實現(xiàn)

          3.1 DSP Builder開發(fā)環(huán)境的確定

          DSP Builder可以幫助設(shè)計者完成基于FPGA的DSP系統(tǒng)設(shè)計。除了圖形化的系統(tǒng)建模外,DSP Builder還可以自動完成大部分的設(shè)計過程和仿真,直至把設(shè)計文件下載到DSP開發(fā)板上。利用MatlabDSP Builder進(jìn)行DSP模塊設(shè)計是SOPC技術(shù)的一個組成部分。利用DSP Builder和基本Nios CPU,用戶可以根據(jù)設(shè)計項目的具體要求,隨心所欲地構(gòu)建自己的DSP處理器系統(tǒng),而再也不必拘泥于其他DSP公司已上市的有限款式的DSP處理器。

          3.2系統(tǒng)整體分析及模塊劃分

          從DSP模塊的頂層來看,該模塊就是完成語音信號的采集,然后以一定的頻率輸出從各幀中提取的基音頻率值。圖2是整個DSP系統(tǒng)的頂層模塊圖。

          圖2 整個DSP系統(tǒng)的頂層模塊

          d[1].[20]:輸入。歸一化的語音采樣信號值,取小數(shù)點后20位(二進(jìn)制)

          ena:輸入。輸入使能信號,當(dāng)該信號有效時,模塊讀入d[1].[20]端口的信號。

          rd:輸入。讀信號,當(dāng)該信號有效時,提取的基音頻率值將從Out[8:0]口被讀出。

          CS:輸入。片選。

          Out[8:0]:輸出?;纛l率值的輸出端口,9位無符號數(shù)。該端口的數(shù)據(jù)讀出受rd控制。

          data_available:輸出。當(dāng)基音頻率提取完畢時,該端口置1,此時對數(shù)據(jù)的讀出才為有效數(shù)據(jù),否則產(chǎn)生未知結(jié)果。

          按照算法部分的劃分,在DSP實現(xiàn)部分仍采用整個系統(tǒng)由端點檢測模塊,基音頻率提取模塊和平滑處理模塊三大子模塊的構(gòu)成方式,但不同的是端點檢測模塊和基音頻率提取模塊采用并行處理方式,由于這兩個模塊的功能相對獨立,最后進(jìn)行平滑后處理。整個系統(tǒng)的互連邏輯可由圖3表示。

          圖3 基音周期提取、端點檢測、平滑處理三大模塊的互連邏輯圖

          基音頻率提取模塊根據(jù)輸入數(shù)據(jù)將提取的基音頻率值存入一FIFO中,端點檢測模塊將提取到的語音文件中的所有語音段的始末端點存入兩個FIFO中,各語音段的起始點存入FIFO1中,終止點存入FIFO2中,當(dāng)兩個模塊將結(jié)果全部存入相應(yīng)的FIFO中,三個FIFO開始同步工作,與基音頻率提取模塊相連的FIFO的當(dāng)前輸出是提取出的該幀的基音頻率,而FIFO1和FIFO2的當(dāng)前輸出表示某一個語音段的始末端點,當(dāng)前掃描幀或尚未進(jìn)入這兩個端點所界定的幀范圍,或正處于這個幀范圍之中。對于前者,這應(yīng)通過判斷邏輯使2-1多路選擇器將基音頻率置0;對于后者,應(yīng)通過判斷邏輯使2-1多路選擇器選取基音頻率提取模塊所提取出的基音頻率。判斷邏輯的另一任務(wù)是當(dāng)當(dāng)前掃描幀已跨出兩端點界定的幀范圍時,使FIFO1和FIFO2讀出新一對端點,即讀出下一個語音段的始末端點。最終的各幀的基音頻率通過平滑處理模塊處理后送入另一FIFO,等待讀信號將其讀出。

          3.3詳細(xì)設(shè)計

          基音頻率提取模塊的主要任務(wù)是根據(jù)采樣信號按照自相關(guān)法進(jìn)行基音周期提取,然后以一定頻率輸出提取到的各幀的基音頻率。對于基音頻率提取模塊,主要由五大子模塊構(gòu)成:濾波器模塊、幀緩存模塊、削波門限電平提取模塊、削波模塊(中心削波,三電平削波)、互相關(guān)值提取模塊。濾波器模塊對采樣信號進(jìn)行900Hz的低通濾波,以確保處理以后的信號只含有第一共振峰以下的基波和諧波分量,DSP Builder為設(shè)計者提供了數(shù)字信號處理中常用的一些MegaCore核,這里可以根據(jù)設(shè)計直接調(diào)用其中的fir_compiler并進(jìn)行參數(shù)化設(shè)置,極大地簡化了設(shè)計過程;幀緩存模塊對處理后的數(shù)據(jù)進(jìn)行分幀,這里需確定幀移(相鄰幀間的數(shù)據(jù)重疊,本文選取幀移為1/2幀);削波門限提取模塊根據(jù)自相關(guān)法的算法要求完成對一幀的數(shù)據(jù)的削波門限電平的提??;削波模塊根據(jù)提取出的削波門限電平完成中心削波和三電平削波,同時完成該幀短時能量的計算(考慮到短時能量計算的相對獨立性,該任務(wù)從互相關(guān)值提取模塊中分離出來);互相關(guān)值提取模塊的主要任務(wù)是完成互相關(guān)值 (k=64,65,…,500)(由于選取的是30階低通濾波器,取求和下限為31,1280為根據(jù)所選取的測試對象而確定的幀的大小,k當(dāng)取值64-500時恰對應(yīng)于基音頻率的500Hz-64Hz,y´為相應(yīng)y的三電平值)的計算,由于對每一個R(k)的計算,都要幾乎掃描完整個幀,故其龐大的計算量導(dǎo)致此模塊在執(zhí)行效率上將成為整個基音頻率提取部分的瓶頸。為了避免額外的空間開銷,若采用串行解決方式(即計算完R(64)再計算R(65),計算完R(65)再計算R(66),依此類推),則該模塊需工作在一個更高的時鐘頻率上,而一個系統(tǒng)中對一部分模塊進(jìn)行一個大幅度的工作頻率的提高,將會導(dǎo)致Simulink仿真效率的大幅下降,這里通過并行方式解決該問題,雖然這需要花費更多的器件(通過復(fù)用多個基本運算單元,所有運算單元同時進(jìn)行計算,每個基本運算單元完成一個R(k)的計算),但換取時間效率上的提高還是值得的。這種處理方法只需對各幀數(shù)據(jù)進(jìn)行一次掃描即可同時得到R(64),R(65),…,R(500)的處理結(jié)果。設(shè)計思想是每掃描完一個數(shù)據(jù),就應(yīng)使其參與到所有互相關(guān)值的計算中而避免被再次掃描。實現(xiàn)途徑是:當(dāng)前的三電平值同時送往所有的基本運算單元,而中心削波值只在開始送入第一個基本運算單元,而其它的基本運算單元的中心削波值由其前一個基本運算單元的中心削波值經(jīng)一個周期的延遲而得到,這樣中心削波值將會由第一個基本運算單元通過延遲一級一級傳到最后一個。其時序如圖4所示(圖中數(shù)字表示幀序號),這樣各基本運算單元的輸出即為相應(yīng)的互相關(guān)值R(k) (k=64,65,…,500),達(dá)到了僅對中心削波值和三電平值掃描一次便可計算出所有互相關(guān)值的效果,大大提高了運行的時間效率。

          端點檢測模塊由三個核心部分構(gòu)成:各幀過零率的提取,各幀短時能量的提取和一個以

          圖4 各基本元算單元所采集到的中心削波值和三電平值的時序圖

          狀態(tài)機為核心的狀態(tài)轉(zhuǎn)換邏輯,狀態(tài)機根據(jù)計算出的各幀過零率及短時能量標(biāo)識當(dāng)前幀所處的狀態(tài)(靜音段,過渡段,語音段,結(jié)束),并根據(jù)觸發(fā)條件完成狀態(tài)轉(zhuǎn)移以標(biāo)記各語音段的始末端點。

          平滑后處理模塊依據(jù)中值濾波平滑處理,采用5點長的滑動窗口對提取出的基音頻率進(jìn)行后處理。

          4 DSP加速模塊與NIOS的整合及綜合仿真測試

          4.1基于Simulink的仿真

          各模塊整合后,即可添加激勵及信號接收終端進(jìn)行Simulink仿真。

          4.2 處理器系統(tǒng)的構(gòu)建

          通過DSP Builder設(shè)計出的DSP模塊可以成為單片F(xiàn)PGA電路系統(tǒng)中的一個組成部分,以擔(dān)任某個局部電路的功能,另一方面,也可以直接通過DSP Builder為Nios嵌入式處理器設(shè)計各類加速器,從而成為Nios系統(tǒng)的一個接口設(shè)備,與整個片內(nèi)嵌入式系統(tǒng)融為一體,使得Nios的通用性和DSP加速模塊的專用性恰到好處地結(jié)合在了一起,使DSP處理器系統(tǒng)的靈活性得到了最大程度的體現(xiàn)。當(dāng)Nios接收到對語音數(shù)據(jù)進(jìn)行基音頻率提取的任務(wù)時,它會將需處理的原始數(shù)據(jù)送往DSP加速模塊,DSP加速模塊對數(shù)據(jù)進(jìn)行處理并將處理結(jié)果轉(zhuǎn)交給Nios處理器,由Nios送往相應(yīng)終端進(jìn)行結(jié)果顯示或進(jìn)行其它處理,從而構(gòu)建起整個SOPC系統(tǒng)。需要特別說明的是,Nios系統(tǒng)的所有外設(shè)都是通過Avalon總線與Nios CPU相接的,DSP加速模塊也不例外,該模塊若與Nios進(jìn)行信息交換,必須通過Avalon總線,也就是說,所設(shè)計出的DSP模塊應(yīng)該有與Avalon總線的接口。DSP Builder提供了SOPC Builder Links庫,其中的AVALON Ports提供了各種與Avalon總線相連接的功能端口,本設(shè)計需根據(jù)所完成的DSP模塊各端口的功能為其添加Avalon總線接口。

          DSP模塊功能驗證后,即可加載DSP Builder中的核心模塊“SignalCompiler”,以完成模型分析、 MDL到VHDL的轉(zhuǎn)化、綜合及適配。最后在SOPC Builder中完成將該模塊與Nios的整合,以使DSP能成為掛接到Nios的一個硬件加速模塊。此后即可完成下載,并在Nios的集成開發(fā)環(huán)境(IDE)中編寫測試程序?qū)φ麄€處理器系統(tǒng)進(jìn)行測試。

          4.3 性能評估

          經(jīng)分析,從輸入最后一個數(shù)據(jù)到開始陸續(xù)得到最終結(jié)果(由于算法的限制,該系統(tǒng)并不是一個實時系統(tǒng)),需N*T/2時間(T為一個基本工作周期,N為語音數(shù)據(jù)的幀數(shù)),若從DSP向外輸出數(shù)據(jù)的周期仍為T,那么送出數(shù)據(jù)共需N*T時間,兩者之和為3N*T/2,即從輸入最后一個數(shù)據(jù)到所有數(shù)據(jù)輸出,共需時間3N*T/2。這種執(zhí)行效率與軟件相比,其優(yōu)勢是顯而易見的,從理論上講,軟件沒有執(zhí)行上的并行性可言,也就是說對于順序執(zhí)行的子函數(shù)而言,只有前一個子函數(shù)執(zhí)行完畢,后一個子函數(shù)才能執(zhí)行,比如端點檢測部分和基音頻率提取部分只能順序執(zhí)行,而不像硬件那樣,端點檢測與基音頻率提取可以分成兩個獨立的模塊同時并行地對輸入數(shù)據(jù)進(jìn)行處理。對于語音內(nèi)容為“你好”的1.1s的語音數(shù)據(jù)而言,Matlab的軟算法的平均耗時在0.8-0.85秒之間(運行環(huán)境為1.73GHz主頻,256MB內(nèi)存)。但若令T=1/1.73G,代入到3N*T/2中(N=54),其延遲只有4.3610-8秒,可見差異的顯著。而這種差異將隨N的增大而更加顯著。可見,該算法的DSP實現(xiàn)使整個執(zhí)行效率有了大幅度的提高,達(dá)到了預(yù)期的效果。

          5 結(jié)語

          本文嘗試采用基于Altera硬件設(shè)計的一套新的設(shè)計流程和設(shè)計思路,不同于傳統(tǒng)的在MAX-PLUS II和Quartus II中面向RTL級的硬件設(shè)計思路,轉(zhuǎn)向了以MatlabSimulink為基本平臺,以DSP Builder為其中的Blockset的面向系統(tǒng)級和算法級的硬件設(shè)計思路,同時充分利用了Simulink的強大的仿真功能,而在將系統(tǒng)級模型向RTL級模型轉(zhuǎn)化時,完全通過DSP Builder的核心模塊SignalCompiler自動實現(xiàn),并同時完成綜合和適配,若采用自動設(shè)計流程,甚至可以在Simulink中完成下載。這種設(shè)計思路有益于復(fù)雜算法的硬件化設(shè)計,將設(shè)計者的視線從Quartus中更多地轉(zhuǎn)移到了MatlabSimulink中,使設(shè)計者考慮問題的著眼點從傳統(tǒng)圍繞底層的硬件實現(xiàn)轉(zhuǎn)移到上層面向算法的實現(xiàn)和整個系統(tǒng)的構(gòu)成。而在原來需要考慮過多的底層實現(xiàn)問題,通過SignalCompiler模塊的強大功能,只是一蹴而就的事。

          本文作者創(chuàng)新點在于通過一套新的設(shè)計流程,面向最終的應(yīng)用(即實現(xiàn)基音周期特征的提取),并充分利用FPGA的優(yōu)勢,實現(xiàn)了徹底的硬件執(zhí)行架構(gòu)的設(shè)計,而不同于以往更多的周旋于軟件層面的編程,同時以DSP Builder作為開發(fā)平臺,按照自頂向下的設(shè)計思想,極大地簡化了DSP核的設(shè)計,同時使算法的DSP設(shè)計結(jié)果實現(xiàn)了執(zhí)行效率上的飛躍。

          參考文獻(xiàn):

          1 L.R.拉賓納,R.W.謝弗. 語音信號數(shù)字處理. 北京:科學(xué)出版社,1983

          2 易克初,田斌,付強. 語音信號處理. 北京:國防工業(yè)出版社,2000

          3 王朝英,馮新喜. 信號處理原理. 北京:清華大學(xué)出版社,北京交通大學(xué)出版社,2005

          4 鄒鯤,袁俊泉,龔享銥. MATLAB 6.x信號處理. 北京:清華大學(xué)出版社,2002

          5 張智星. MATLAB程序設(shè)計與應(yīng)用. 北京:清華大學(xué)出版社,2002

          6 何強,何英. MATLAB擴展編程. 北京:清華大學(xué)出版社,2002

          7 潘松,黃繼業(yè),曾毓. SOPC技術(shù)實用教程. 北京:清華大學(xué)出版社,2005

          8 彭澄廉,周博,丘衛(wèi)東,陳燕,周學(xué)功,方茁. 挑戰(zhàn)SOC-基于Nios的SOPC設(shè)計與實踐. 北京:清華大學(xué)出版社,2004

          9 潘松,黃繼業(yè),王國棟. 現(xiàn)代DSP技術(shù). 西安:西安電子科技大學(xué)出版社,2003

          10 Altera Corp. DSP Builder Reference Manual,2005

          11 Altera Corp. DSP Builder User Guide,2005

          12 楊守良. 利用Matlab/DSP Builder實現(xiàn)DDS的設(shè)計. 微計算機信息,2006, 7-2:211-212



          關(guān)鍵詞: FPGA 基音檢測 算法

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉