《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的語音信號實時處理
基于FPGA的語音信號實時處理
來源:微型機與應用2011年第2期
姜元亭, 樊昌元, 楊軍華
(成都信息工程學院 電子工程學院,四川 成都 610225)
摘要: 介紹一種在語音識別系統中運用FPGA技術對語音信號進行前期實時處理的方法。利用DSP Builder設計信號處理算法的圖形化電路模塊,運用硬件環(HIL Hardware in the Loop)技術對模塊進行軟硬件協同仿真。滿足設計要求后,再用Signal Compiler 將模塊轉換成VHDL語言和Quartus II工程文件下載至目標芯片。結果表明此方法可以快速靈活地設計出語音處理模塊,語音數據能在要求的時間范圍內處理完畢,達到了實時處理的目的。
Abstract:
Key words :

摘   要: 介紹一種在語音識別系統中運用FPGA技術對語音信號進行前期實時處理的方法。利用DSP Builder設計信號處理算法的圖形化電路模塊,運用硬件環(HIL Hardware in the Loop)技術對模塊進行軟硬件協同仿真。滿足設計要求后,再用Signal Compiler 將模塊轉換成VHDL語言和Quartus II工程文件下載至目標芯片。結果表明此方法可以快速靈活地設計出語音處理模塊,語音數據能在要求的時間范圍內處理完畢,達到了實時處理的目的。
關鍵詞: 語音識別; FPGA; 實時; 信號處理

    隨著語音識別技術的應用越來越廣,對其實時性的要求也越來越高。專用的DSP語音芯片雖然有硬件加速功能,但其指令依然是串行計算,在實時性方面有所欠缺。如今,具有并行運算能力的FPGA主頻不斷提高,加上其設計靈活、功耗低、體積小等優點[1],可以滿足語音信號實時處理的要求。目前很多語音處理算法都是基于軟件平臺的,真正的語音處理硬件實現很少。本文針對非特定人的語音信號,研究當前主流的語音處理算法,并將這些基于軟件平臺的算法“硬件化”。在保證一定精度的前提下將浮點運算轉換成便于FPGA實現的定點運算[2]。
    本文以通過對語音信號濾波、分幀、加窗、能量計算等模塊的設計為例,介紹語音信號實時處理的方法,需要運用到MATLAB.、DSP Builder、QUARTUS II、ModelSim等EDA工具聯合設計[3]。語音信號經過模數轉換進入FPGA以后,對其濾波,因為要對信號進行實時處理,需要采用動態分幀,最后計算出每幀的能量為語音信號的下一步處理如端點檢測、特征提取[4]等做好前期準備。
1 實時處理算法分析
    語音數據經過A/D轉換之后進入芯片,首先對其進行濾波。為了使信號的頻譜趨向平坦,需要對其進行預加重濾波,這里采用一階FIR濾波器[5]:

    語音信號雖然是一種非平穩信號,但在短時內(10 ms~30 ms)可以看作是平穩的[2],這樣就可以對其進行分幀處理。在實時系統中無法確定語音的長度和大小,只能對其進行動態分幀。考慮到幀的連續性,采用交疊分幀,幀移取0.5,硬件中可以用兩個FIFO實現,其中FIFO1的讀時鐘頻率是寫時鐘的兩倍,且FIFO2的讀寫時鐘頻率與FIFO1讀時鐘頻率相同。
    分幀后的數據需要窗函數對其加權,加窗后的語音信號為sω(n)=s(n)×ω(n)。由于漢明窗在語音頻段的平滑特性,因此本文采取漢明窗[4]:

2 硬件模塊的實現
    仿真時通過讀取hex文件來模擬實時的數據流。通過MATLAB將采樣頻率16 kHz,寬度8 bit的wav格式音頻文件轉化成hex文件的數據。部分代碼如下[6]:
     ……
      [y,fs,n]=wavread(‘speech.wav’);
      y1=int8(y×(2^n-1)+128);
      [a,b]=size(y1);
      fid=fopen(‘speech.txt’,’wt’);
      for i=1:a;
      line=[num2str(i-1),’:’,num2str(y1(i)),’;’];
      fprintf(fid,’%s\n’,line);
      end
      fclose(fid);
    ……
    在模塊中通過地址計數器將ROM中的數據不斷讀出,然后對數據流進行濾波。其DSP Builder模塊實現如圖1所示。

    考慮到語音信號的短時平穩性,將256點數據分為一幀寫入Dual-Clock FIFO,寫入128點后以兩倍的寫入速度讀出,同時以兩倍速度寫入深度為128的FIFO2。如此循環便可以實現幀的交疊。具體實現如圖2所示,左半部分為時鐘控制模塊。

    為了使每幀的數據點與窗函數的數據點一一對應,在加窗之前搭建了一個時序控制模塊。Constant1控制模塊延時384個時鐘周期,counter是模為256的計數器。將LUT設為17 964-15 073×cos([0:2×pi/255:2×pi])[6]。分幀后的信號取模然后與窗函數相乘再累加便得到其能量,由Multiply Accumulate模塊實現[2]。Clock提供基礎時鐘,PLL產生模塊所需要的兩個時鐘,Signal Compiler對模塊進行編譯,轉化成VHDL語言。具體模塊如圖3所示。

3仿真測試
    將上述三個子模塊和Simulink中的模擬示波器Scope連接在一起,讀取ROM中語音”1、2、3”的數據流。結果顯示在示波器上,如圖4所示。從上到下依次為原始信號、濾波信號、分幀信號、能量信號。

    從圖中可以看到設計模塊已經可以實時處理數據,達到了設計要求。接下來便可以將其轉換成VHDL語言在QUARTUS II中進行仿真,生成pof文件下載到FPGA里面。打開Signal Compiler,Family選擇Cyclone II,Device選擇ALTERA公司的EP2C5T144C6芯片。點擊compile,便可以生成工程文件、VHDL代碼及配置文件[1]。
    以上屬于軟件仿真,具有速度慢、內容不易控制等缺點。ALTERA的DSP Builder提供的HIL模塊可以在Simulink模型與FPGA開發板之間通過JTAG通信口建立聯系,從而實現基于MATLAB/DSP Builder平臺的硬件仿真。打開HIL模塊,設置好工程文件speech.pof路徑,連接上FPGA開發板,點擊Configure FPGA便可以進行硬件仿真。打開示波器查看仿真結果與軟件仿真結果吻合。在QUARTUS II中對生成的工程文件進行編譯。整個系統使用了306個LE、214個寄存器、62個管腳,非常節省資源。
    通過DSP Builder進行FPGA設計無論是建模還是仿真都非常方便快捷,并可以在外部硬件測試平臺不夠完善的條件下引入HIL模塊進行軟硬件聯合仿真。相對于傳統開發方式,具有更大的優勢。在時序仿真時可以看出從語音輸入到能量的輸出占用640個周期,在100 MHz的工作頻率下僅耗時6.4 μs,是在MATLAB下運行速度的50多倍,實時性得到了充分的體現。
參考文獻
[1] 潘松,黃繼業.EDA技術與VHDL(第2版)[M].北京:清華大學出版社,2007:12-19.
[2] 劉軍海,基于DHMM非特定人孤立詞語音識別及硬件設計研究[D].上海:上海大學,2007:35-37.
[3] 潘松,黃繼業,王國棟.現代DSP技術[M].西安:西安電子科技大學出版社,2003:237-242.
[4] 王炳錫,屈丹,彭煊.實用語音識別基礎[M].北京:國防工業出版社,2005:56-59.
[5] 劉靜萍,姜占財,德熙嘉措.語音信號的預處理技術探討[J].甘肅聯合大學學報(自然科學版),2006,20(5):61-64.
[6] 謝秋云.基于FPGA的語音識別技術研究[D].南京:江蘇大學,2007:42-48.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 97影院午夜午夜伦不卡 | 美女视频很黄很a免费国产 美女涩涩网站 | 最新欧美精品一区二区三区 | 免费在线观看色 | 国产乱人乱精一区二区视频密 | 成年免费视频网站入口 | 亚洲天堂视频在线免费观看 | 国产三级福利 | 中文japanese在线播放 | 欧美高清视频一区 | 小明影视 | 亚洲欧美日韩国产专区一区 | 欧美在线黄| 亚洲不卡一区二区三区 | 日日操干 | 欧美一级特黄刺激大片视频 | 国产精品果贷一区二区借贷宝 | 天天操天天操天天 | 亚洲视频在线观看免费视频 | 日批免费在线观看 | 日韩中文字幕免费在线观看 | 黄网站在线观看视频 | 国产福利麻豆精品一区 | 欧美cao | 免费黄色在线网址 | 欧美一级日韩在线观看 | 国产91精品一区二区麻豆网站 | 一级毛片视频免费观看 | 欧美1区 | 国产黄色毛片 | 欧美曰批人成在线观看 | 手机在线亚洲 | 狠狠久久综合伊人不卡 | 美女网站在线观看视频18 | 男人午夜网站 | 被男人吃奶很爽的毛片两男一女 | 丁香激情六月天 | 手机看片日韩欧美 | 你懂的在线观看网站 | 国产欧美日韩另类一区乌克兰 | 日本三级在线观看免费 |