程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 基於C語言的設計流優化語音識別芯片結構設計

基於C語言的設計流優化語音識別芯片結構設計

編輯:C語言基礎知識

據預測,市場對語音控制應用設備的需求將急劇增長,其推動力來自電話機市場。電話機將更多地采用語音命令進行控制。其他應用領域包括玩具和手持設備如計算器、語音控制的安全、家用電器及車載設備(立體聲、視窗、環境控制、車燈和導航控制)。本文從可復用和優化芯片空間的角度出發介紹語音識別芯片結構設計的種種考慮,其思路有利於開發一系列其它語音識別芯片。

新加坡Columns公司在便攜式語音控制產品應用中起步較早,其中一個產品是執行歐元與其他歐洲貨幣之間進行兌換的“語音控制歐洲貨幣兌換器”。歐元兌換器的設計要求包括:1. 功率小,電池壽命至少為1年;2. 價格低廉,產品零售價不超過9美元;3.具有很強的靈活性,能用多種語言精確地識別並合成與說話人相關的語音;4. 整個語音控制核產品應具備可復用的特性。

本文介紹利用Frontier Design公司設計工具來開發歐元兌換器ASIC產品 的全過程。在ASIC中實現復雜DSP算法的要求通常極為苛刻,但采用Frontier的結構合成工具A|RT Designer工具能迅速優化RTL描述,該工具還允許自由選擇備用結構以優化應用設計。

通過應用基於C語言的設計流,能在結構設計階段對新特性進行設計和硬件優化,這能降低50%的硅片面積,通過加快 C語言原型硬件的設計,可以進一步擴展設計的性能以滿足用戶對產品規格的嚴格要求。 

算法研究

歐元兌換器的效率在一定程度上取決於語音命令與存儲數據庫的比較以及執行命令的能力。開發出滿足最終產品要求的算法對設計的成功至關重要,因為沒有人希望看到語音控制設備不能始終如一地識別命令,人們需要算法自始至終達到98%以上的識別精度。因此,目前面臨的難題包括檢測並清除背景噪聲、區分真實的命令字和其他噪聲(呼吸聲、微小靜電干擾聲及麥克風聲響)、確定命令字的起始和終止以及將輸入與存儲的“聲紋譜”數據庫及隨後的命令字識別(圖1)進行比較。

 

以下幾種先進的計算密集DSP算法適用於解決上述問題:1. Mel頻率聲譜(cepstral)系數(MFCC)算法,MFCC算法由快速傅立葉變換(FFT)功能譜、Mel定標和log ii構成;2. 反離散余弦變換(iDCT);3. 應用多重估計和選擇算法連續識別並估計背景聲音和語音噪聲的連續噪聲電平估計程序;4. 在命令字有效期間及其附近對聲音能級實施詳盡分析的不精確和精確命令字邊界檢測算法;5. 對一系列不等長度的向量進行比較並在這些向量間比較持續時間變化的動態時間扭曲算法(dynamic time warp)。 

該算法用浮點C語言編程,為了調整並優化參數,浮點C代碼的編譯和仿真速度要足夠快以檢驗算法的性能。最後,C語言代碼必須能在傳統的PC機上運行,語音識別和合成算法的性能可在實際環境中進行測試。最終的語音識別算法在450MHz奔騰機上測試,當用該公司的內部語音記錄庫進行測試時,可得到99%的識別精度。

浮點算法向定點算法轉換

芯片實現需要將浮點算法轉換為定點算法,要保證動態范圍和精度並防止轉換後超越動態極限。常規定點操作數的非優化范圍可能導致操作數繞回(wrap around, 如(max+1)得到(min)),並引發嚴重的削波和誤碼。定點的精確度同等重要,特別是在重復的信號處理運算中。當精確度不夠時,重復的信號處理算法將導致故障傳播和錯誤累積,最終信號可能逐漸退化成白噪聲,這對於語音控制產品來說無疑是災難性的錯誤。

Frontier工具擁有一個稱為A|RT庫的C++類庫,它是分析C代碼定點性能的工具。該類庫支持多種定點數據類型,對多重溢出行為(如飽和和繞回)提供位真建模(bit-true modeling),並提供截斷和捨入零等多重量化模型。原始的32位浮點語音識別算法支持數據以8 KHz輸入,其典型信號帶寬為32位,內存容量要求為幾千字節,典型語音用戶接口的輸出以每秒幾字節的速率測量。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved