基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計

2021-01-12 電子發燒友
基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計

瀋陽;馮良;洪誠 發表於 2021-01-12 10:21:38

SOPC可編程片上系統是一種獨特的嵌入式微處理系統。首先,它是SoC,即由單個晶片完成整個系統的主要邏輯功能;其次,它是可編程系統,以FPGA為硬體基礎,具有靈活的設計方式,可裁減、可擴充、可升級,並具備軟硬體系統在線可編程的能力。

本系統採用了Altera公司的Cyclone II FPGA開發平臺和相應的開發工具Quartus II進行系統硬體部分的開發;利用Nios II IDE實現了語音識別算法的編譯、連結、調試和運行;同時還應用了Altera公司獨具特色的C2H加速工具,實現了語音算法程序的硬體加速,使系統性能得到了明顯的提升。

此次設計採用了二維條形碼進行語音特徵的存儲,一方面是考慮到二維條形碼的成本很低,市場應用潛力巨大;另一方面,正因為在個人證件上擁有了二維條形碼,系統可以脫離資料庫的支持,變得更加靈活實用。

系統結構

本設計採用SOPC的可編程設計思想,以Cyclone II中實現的Nios II處理器為核心,系統架構如圖1所示。

圖1 系統結構框圖

中心處理模塊可以接收其他模塊的數據,並進行處理,再將處理結果送到外部設備進行顯示和報告。語音採集模塊在用戶註冊和認證時採集用戶口令(即語音),其中包含A/D採樣、量化、編碼等,並會將數字形式的數據送到中心處理模塊等待處理。系統以串口掃描槍做為條碼掃描設備,用於讀取個人證件上嵌入聲紋特徵的二維條形碼中的數據,這些數據是在用戶註冊時生成的。

本設計將SOPC設計與二維條形碼數據存儲相結合,不僅發揮了各自的特點,而且擴寬了應用領域。

系統工作流程分為註冊和驗證兩個階段。註冊過程需要採集同一用戶的多個語音,通過註冊算法生成個人的生物特徵,將其嵌入到二維條碼中,再列印條碼到此用戶的個人證件上。這樣的證件具備了唯一、不易複製等特點,從而提高了證件的安全性能。對證件進行驗證時,先用條碼掃描設備讀取條碼中的特徵數據,然後現場採集證件持有人的語音,進行比對,給出驗證結果。

硬體的具體實現

本設計以32位Nios II軟核處理器為系統的核心部分,負責執行指令和數據運算。各種IP都可以通過SOPC Builder連接到Avalon總線上,其中包含用戶自定義的外設。用戶外設的編寫需要符合Avalon總線的規範。

系統硬體結構如圖2所示,包括CPU、UART、LCD、三態橋、片外存儲器控制,以及各種輸入/輸出控制,這些IP都可以直接復用。這樣的系統設計方法不僅模塊化,而且大大縮短了系統設計周期。FFT運算模塊不僅可以直接使用IP,還可以用C2H加速工具來提高系統性能。在此次設計中,FFT、DCT以及數據量較大的循環運算都採用C2H完成了硬體加速,效果較為明顯。

圖2 系統硬體結構

Nios II軟核處理器

Nios II是32位軟核處理器,具有較高的性能。本設計在Altera的Cyclone II上實現了處理器的配置,可以通過添加用戶自定義指令來增強系統設計性能,同時可以添加多個片內存儲器來提高數據的處理能力。

串口通信

本設計用到的掃描槍通過串口(UART)連接到開發平臺上,目的是對二維條形碼中包含語音特徵的數據進行讀取,通過Avalon總線將數據傳送到相應的片外存儲器中等待處理。

Timer

本設計利用SOPC Builder工具將兩個Timer掛到Avalon總線上。其中一個設置為在IDE中運行C程序時的系統時鐘,另外一個用作計時器。算法程序中設置了多個時間戳(Timestamp),相鄰兩個時間戳內程序段的運行時間可以用這兩個時間戳的差值來表示。時間戳的設置對程序運行沒有影響。設置計時器的最終目的是:將完全的軟體實現與用C2H加速後的程序運行時間進行比較。

語音採集和語音報告驗證結果

系統中,語音採集和語音報告驗證結果部分均由Wolfson公司的WM8731L完成。WM8731L可以獨立於Nios II軟核處理器單獨工作,其控制模塊可按照I2C總線的時序編寫。WM8731L內部含有A/D、D/A模塊,同時具備較高的採樣率和量化精度。本設計採用了8kHz的採樣率,16位的量化精度。

在語音採集部分,由於A/D是串行數據輸出,因此編寫了串行到並行數據轉換以及寫SRAM控制的Verilog模塊。語音報告結果部分通過GPIO與CPU進行數據、地址通信,將不同的語音按照不同的驗證結果播放出來,這些語音的數據已經事先燒寫進FLASH中。GPIO的控制可以通過Nios IDE來完成。類似地,播放語音部分由於從FLASH讀出的數據是並行的,因此編寫了並行到串行數據轉換的Verilog模塊。

加速模塊

首先,在Nios IDE下運行算法C語言程序,利用計時器找出程序運行的瓶頸環節。而後對瓶頸部分利用C2H工具進行硬體加速,從而提高系統性能。這部分主要包括FFT運算加速和循環運算加速模塊。

軟體流程

個人證件的驗證流程如圖3所示。驗證分為兩個基本過程,首先要讀取條碼中的數據,即用戶登錄;然後採集用戶語音,即用戶身份輸入。經過特徵比對,給出驗證結果,由此可以說明用戶現場所持證件是否屬於其個人。

圖3 驗證過程軟體流程圖

C2H硬體加速

Nios II C2H加速器可以將ANSI C源程序代碼轉換成用戶自定義的硬體加速模塊。利用C2H工具,開發人員首先在Altera Nios II處理器中開發和調試C語言算法,而後將分析出的C程序瓶頸代碼轉換成硬體加速模塊。硬體加速模塊被掛到Avalon總線上,作為用戶外設來使用。由此實現了從軟體運行算法到硬體加速處理的轉換過程。需要注意的是,並不是所有的C代碼都可以轉換成硬體加速模塊。C2H編譯器的特點如下:

①支持大部分的ANSI C代碼和C語言結構,如指針、堆棧、結構體、全局和局部變量、循環、函數調用等;

②C2H編譯器可以將C語言的語法成分映射為硬體結構,而且用戶可以控制這些硬體加速結構;

③由於IDE6.0整合了C2H工具,用戶無需學習新的開發環境;

④C2H可以利用SOPC Builder將加速好的硬體結構自動連接到Avalon總線上,無需用戶手動處理;

⑤C2H可以產生硬體結構、資源利用率等詳細報告。

本設計中規定用戶採集語音的時長約為1s,內容為「你好」。在這樣的條件下,利用計時器計算從預處理到給出識別結果的程序運行時間。系統時鐘頻率設置為50MHz。通過試驗,得出運行時間約為5s,這顯然不能滿足實際需求。對實驗結果進行分析,發現程序運行耗時主要集中在預處理和特徵提取這部分,將其稱為「前端」。經過分析前端的代碼運行情況,設計師發現程序運行時間較長的主要原因是該部分包含了大量的矩陣運算和循環運算。下一步工作就是分析程序的運行瓶頸。經過分析研究發現,本設計算法中的瓶頸主要集中在加窗、FFT和DCT等部分,它們的耗時一般佔到整個程序運行的60%以上。若將這些環節加速成功,性能將有較大提升。

圖4中顯示了在SOPC Builder中向Avalon總線加載C2H加速器和片內RAM的情況。圖中顯示了兩個加速器:accelerator_ c2h_fft_fft和 accelerator_ c2h_fft_ham,分別對應FFT和加窗(漢明窗)的硬體加速運算過程,SOPC Builder並沒有為這兩個模塊分配基地址。圖4中最下方的4個片內RAM可以起到數據緩存的作用。SinRAM與CosRAM為FFT加速運算提供正弦和餘弦的查找表數據,dataRRAM與dataIRAM分別用於存儲FFT運算後生成數據的實部和虛部。

圖4 C2H加速器和添加的片內RAM

gt是設計中同一用戶註冊時的3段語音(內容相同)。通過表1可以看出,完全軟體計算時,FFT耗時大約為2s;利用C2H工具加速後,耗時僅約為0.01s,提速效果良好。而後再將算法程序中其它環節進行加速,則設計的整體性能是可以滿足實際需求的。因此,C2H對運行在SOPC系統上軟體算法的加速處理是十分有效的。

結語

本文闡述了一種基於FPGA平臺的應用設計實例,不僅能充分體現SOPC設計理念,而且與生物特徵技術有機結合,發揮了二者的優勢,具有廣闊的應用前景。另外,本設計採用了Altera的C2H加速工具對軟體算法進行硬體加速,實驗結果表明利用這種方法進行設計效果明顯。由於使用C2H工具對算法有一定的限制,因此某些情況下,用戶自定義指令和用戶外設仍然是不可或缺的設計方法。這幾種設計手段的有機結合是FPGA設計的主要方向。

責任編輯:gt

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於DSP和FPGA的機器人聲控系統設計與實現
    一個體積小、低功耗、高速度能完成特定範圍語音識別和動作指令的機器人系統的研製具有很大的實際意義。 2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。
  • 基於DSP的語音識別系統的實現及分析
    尤其在會話任務上,自動語音識別系統遠不及人類。因此,語音識別技術的應用已成為一個極具競爭性和挑戰性的高新技術產業。  隨著DSP技術的快速發展及性能不斷完善,基於DSP的語音識別算法得到了實現,並且在費用、功耗、速度、精確度和體積等方面有著PC機所不具備的優勢,具有廣闊的應用前景。
  • 基於FPGA的語音智能操控系統
    基於FPGA實現語音智能操控系統具有:(一)設計靈活、操作方便、快捷(二)準確度高,工作範圍大(三)可隨時用語音操控帶有遙控裝置的用電器(四)可擴展性強,增強了系統的外接功能(五)便於更新和系統升級,可隨時嵌入更新系統程序
  • 基於C語言的設計流優化語音識別晶片結構設計
    據預測,市場對語音控制應用設備的需求將急劇增長,其推動力來自電話機市場。電話機將更多地採用語音命令進行控制。其他應用領域包括玩具和手持設備如計算器、語音控制的安全系統、家用電器及車載設備(立體聲、視窗、環境控制、車燈和導航控制)。本文從可復用和優化晶片空間的角度出發介紹語音識別晶片結構設計的種種考慮,其思路有利於開發一系列其它語音識別晶片。
  • 基於Julius的機器人語音識別系統構建
    語音識別技術的發展,使得這一理想得以實現,把語音識別技術與機器人控制技術相結合,正成為目前研究的熱點,不但具有較好的理論意義,而且有較大的實用價值。   語音識別技術應用於機器人系統大多是針對特定的環境,設計出語音命令來進行控制的。
  • 基於FPGA的手勢語音轉換器
    我們的手語語音轉換器目的就是就是通過它提供一種有效的途徑將聾啞人的手勢識別出來,並轉換成我們普通人所習慣的語音信息,從而實現聾啞人與我們的有效溝通。目前手語識別可以分為基於視覺的識別系統和基於數據手套的識別系統。基於視覺的手勢識別系統採用常見的視頻採集設備作為手勢感知輸入設備,價格便宜、便於安裝。
  • 基於DSP的語音識別計算器電路設計
    通過實際測試,使用該DSP的語音識別系統有著較高的實時性、識別率,基於該系統的計算器對實時數字計算有較高準確性,基本能解決特殊群體和特殊地點使用計算器困難的情況。本文引用地址:http://www.eepw.com.cn/article/201612/332387.htm1 系統硬體設計1.1 語音識別系統 語音識別的基本原理框圖如圖l所示。
  • 基於片上系統SoC的孤立詞語音識別算法設計
    引言本文引用地址:http://www.eepw.com.cn/article/190560.htm目前,嵌入式語音識別系統的實現主要通過單片機MCU和數位訊號處理器DSP來實現[1]。但是單片機運算速度慢,處理能力不高;雖然DSP處理速度很快,但是產品的成本很高,電源能量消耗也很大。
  • 基於DSP與FPGA的機器人聲控系統設計方案
    2 系統硬體總體設計  系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。    3.3 語音識別程序模塊的設計  為了實現機器人對非特定人語音指令的識別,系統採用非特定人的孤立詞識別系統。非特定人的語音識別是指語音模型由不同年齡、不同性別、不同口音的人進行訓練,在識別時不需要訓練就可以識別說話人的語音[2]。系統分為預加重和加窗,短點檢測,特徵提取,與語音庫的模式匹配和訓練幾個部分。
  • 用FPGA實現FFT算法
    引言  DFT(Discrete Fourier Transformation)是數位訊號分析與處理如圖形、語音及圖像等領域的重要變換工具,直接計算DFT的計算量與變換區間長度N的平方成正比。
  • 揭秘語音識別背後的技術,GPU集群+DNN算法
    科大訊飛是一家專業從事智能語音及語音技術研究、軟體及晶片產品開發、語音信息服務的國家級骨幹軟體企業,他們的語音技術實現了人機語音交互,使人與機器之間溝通變得像人與人溝通一樣簡單。他們認為語音作為交互的手段,距離能夠實現人與人之間的交流的自然魚眼效果,還有很多多問題沒有解決,比如噪音、口音、個性化等等,這還有很打的市場空間,這遠不是一些簡單的模型與海量數據就能夠解決的。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 基於非特定人車載音響語音控制系統的設計與實現
    本文首次提出了一種的以專用語音處理晶片UniSpeech-SDA80D51為核心組成非特定人車載音響語音控制系統的設計方案,並實現了系統樣機的研製。該系統在江淮同悅SL1102C1型車載音響上進行了語音控制實驗,實驗數據表明系統語音識別率可達到95%,為下一步項目產品化開發奠定了基礎。
  • 語音識別技術原理全面解析
    動態時間規整算法(Dynamic Time Warping,DTW)是在非特定人語音識別中一種簡單有效的方法,該算法基於動態規劃的思想,解決了發音長短不一的模板匹配問題,是語音識別技術中出 現較早、較常用的一種算法。
  • 基於嵌入式Linux的語音識別系統硬軟體設計
    該設計運用三星公司的S3C2440,結合ICRoute公司的高性能語音識別晶片LD3320,進行了語音識別系統的硬體和軟體設計。
  • 基於FPGA的複數浮點協方差矩陣實現
    O 引言 協方差矩陣的計算是信號處理領域的典型運算,是實現多級嵌套維納濾波器、空間譜估計、相干源個數估計以及仿射不變量模式識別的關鍵部分,廣泛應用於雷達、聲吶、數字圖像處理等領域。
  • 用FPGA實現FFT算法(圖)
    引言  dft(discrete fourier transformation)是數位訊號分析與處理如圖形、語音及圖像等領域的重要變換工具,直接計算dft的計算量與變換區間長度n的平方成正比。
  • 基於FPGA+MATLAB的串行多階FIR濾波器設計
    與IIR濾波器相比,FIR濾波器的實現是非遞歸的,較穩定;且FIR濾波器可獲得嚴格的線性相位特性。因此,應用領域較廣。FIR濾波器具有成熟的結構,使用Matlab強大的功能使得本來繁重的計算工作變得輕鬆。在具體應用時,要根據工程當中信號的特點:採樣速率、信號帶寬等具體使用Matlab得到FIR濾波器係數。濾波器的結構實現可以使用PC軟體、單片機、微處理器、FPGA、通用DSP晶片。
  • 基於FPGA的自然對數變換器的設計與實現
    1971年J.S.Walter[6]提出統一的CORD IC算法,把圓周旋轉、直線旋轉和雙曲旋轉統一到同一個CORD IC迭代方程裡,為同一硬體實現多功能運算提供了前提。由於它將許多複雜的算術運算化成簡單的加法和移位操作,在不影響運算速度和精度的情況下,極大的降低了硬體設計的複雜性,節約了硬體資源。
  • 應用、算法、晶片,「三位一體」淺析語音識別
    基於大量數據的積累、深度神經網絡模型的發展及算法的迭代優化,近年,語音識別準確率取得了不斷的提升。基於大量數據的積累、深度神經網絡模型的發展及算法的迭代優化,近年,語音識別準確率取得了不斷的提升。2016年10月,微軟宣布英語語音識別詞錯率下降到5.9%,從而能夠媲美人類。