《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于C語言的設(shè)計(jì)流優(yōu)化語音識(shí)別芯片結(jié)構(gòu)設(shè)計(jì)
基于C語言的設(shè)計(jì)流優(yōu)化語音識(shí)別芯片結(jié)構(gòu)設(shè)計(jì)
摘要: 本文從可復(fù)用和優(yōu)化芯片空間的角度出發(fā)介紹語音識(shí)別芯片結(jié)構(gòu)設(shè)計(jì)的種種考慮,其思路有利于開發(fā)一系列其它語音識(shí)別芯片。
關(guān)鍵詞: SOC 語音識(shí)別 ASIC C語言
Abstract:
Key words :

    據(jù)預(yù)測(cè),市場(chǎng)對(duì)語音控制應(yīng)用設(shè)備的需求將急劇增長(zhǎng),其推動(dòng)力來自電話機(jī)市場(chǎng),。電話機(jī)將更多地采用語音命令進(jìn)行控制。其他應(yīng)用領(lǐng)域包括玩具和手持設(shè)備如計(jì)算器,、語音控制的安全系統(tǒng),、家用電器及車載設(shè)備(立體聲、視窗,、環(huán)境控制,、車燈和導(dǎo)航控制)。本文從可復(fù)用和優(yōu)化芯片空間的角度出發(fā)介紹語音識(shí)別芯片結(jié)構(gòu)設(shè)計(jì)的種種考慮,,其思路有利于開發(fā)一系列其它語音識(shí)別芯片,。       

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

    本文介紹利用Frontier Design公司設(shè)計(jì)工具來開發(fā)歐元兌換器ASIC產(chǎn)品的全過程,。在ASIC中實(shí)現(xiàn)復(fù)雜DSP算法的要求通常極為苛刻,但采用Frontier的結(jié)構(gòu)合成工具A|RT Designer工具能迅速優(yōu)化RTL描述,,該工具還允許自由選擇備用結(jié)構(gòu)以優(yōu)化應(yīng)用設(shè)計(jì),。 

    通過應(yīng)用基于C語言的設(shè)計(jì)流,能在結(jié)構(gòu)設(shè)計(jì)階段對(duì)新特性進(jìn)行設(shè)計(jì)和硬件優(yōu)化,,這能降低50%的硅片面積,,通過加快 C語言原型硬件的設(shè)計(jì),可以進(jìn)一步擴(kuò)展設(shè)計(jì)的性能以滿足用戶對(duì)產(chǎn)品規(guī)格的嚴(yán)格要求,。 

    算法研究

    歐元兌換器的效率在一定程度上取決于語音命令與存儲(chǔ)數(shù)據(jù)庫的比較以及執(zhí)行命令的能力。開發(fā)出滿足最終產(chǎn)品要求的算法對(duì)設(shè)計(jì)的成功至關(guān)重要,,因?yàn)闆]有人希望看到語音控制設(shè)備不能始終如一地識(shí)別命令,,人們需要算法自始至終達(dá)到98%以上的識(shí)別精度。因此,,目前面臨的難題包括檢測(cè)并清除背景噪聲,、區(qū)分真實(shí)的命令字和其他噪聲(呼吸聲、微小靜電干擾聲及麥克風(fēng)聲響),、確定命令字的起始和終止以及將輸入與存儲(chǔ)的“聲紋譜”數(shù)據(jù)庫及隨后的命令字識(shí)別(圖1)進(jìn)行比較,。 

命令字識(shí)別

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

    該算法用浮點(diǎn)C語言編程,,為了調(diào)整并優(yōu)化參數(shù),,浮點(diǎn)C代碼的編譯和仿真速度要足夠快以檢驗(yàn)算法的性能,。最后,,C語言代碼必須能在傳統(tǒng)的PC機(jī)上運(yùn)行,,語音識(shí)別和合成算法的性能可在實(shí)際環(huán)境中進(jìn)行測(cè)試,。最終的語音識(shí)別算法在450MHz奔騰機(jī)上測(cè)試,,當(dāng)用該公司的內(nèi)部語音記錄庫進(jìn)行測(cè)試時(shí),,可得到99%的識(shí)別精度,。 

    浮點(diǎn)算法向定點(diǎn)算法轉(zhuǎn)換

    芯片實(shí)現(xiàn)需要將浮點(diǎn)算法轉(zhuǎn)換為定點(diǎn)算法,要保證動(dòng)態(tài)范圍和精度并防止轉(zhuǎn)換后超越動(dòng)態(tài)極限,。常規(guī)定點(diǎn)操作數(shù)的非優(yōu)化范圍可能導(dǎo)致操作數(shù)繞回(wrap around, 如(max+1)得到(min)),,并引發(fā)嚴(yán)重的削波和誤碼,。定點(diǎn)的精確度同等重要,,特別是在重復(fù)的信號(hào)處理運(yùn)算中。當(dāng)精確度不夠時(shí),,重復(fù)的信號(hào)處理算法將導(dǎo)致故障傳播和錯(cuò)誤累積,最終信號(hào)可能逐漸退化成白噪聲,,這對(duì)于語音控制產(chǎn)品來說無疑是災(zāi)難性的錯(cuò)誤,。 

    Frontier工具擁有一個(gè)稱為A|RT庫的C++類庫,,它是分析C代碼定點(diǎn)性能的工具,。該類庫支持多種定點(diǎn)數(shù)據(jù)類型,,對(duì)多重溢出行為(如飽和和繞回)提供位真建模(bit-true modeling),并提供截?cái)嗪蜕崛肓愕榷嘀亓炕P?。原始?2位浮點(diǎn)語音識(shí)別算法支持?jǐn)?shù)據(jù)以8 KHz輸入,,其典型信號(hào)帶寬為32位,內(nèi)存容量要求為幾千字節(jié),,典型語音用戶接口的輸出以每秒幾字節(jié)的速率測(cè)量,。 

    代碼合并實(shí)現(xiàn)最終產(chǎn)品 

    分析表明,,全局?jǐn)?shù)據(jù)類型(global data-type)和數(shù)組只需16位(1個(gè)符號(hào)位,,10個(gè)動(dòng)態(tài)位,,5個(gè)精度位)就足以保持算法的精度,而不會(huì)產(chǎn)生噪聲,。但是,,高度重復(fù)性的FFT子程序需要8個(gè)動(dòng)態(tài)位、7個(gè)精度位以及1個(gè)符號(hào)位,。通常這種分析可用全局使用的19位字寬滿足任何操作的動(dòng)態(tài)位和精度位的最大要求,。由于A|RT庫允許字寬動(dòng)態(tài)改變,,而全局?jǐn)?shù)據(jù)類型定義了1個(gè)符號(hào)位、10個(gè)動(dòng)態(tài)位和5個(gè)精度位,,F(xiàn)FT的MAC結(jié)果分配了1個(gè)符號(hào)位、8個(gè)動(dòng)態(tài)位和5個(gè)精度位,,因此設(shè)計(jì)的字寬(包括總線)保持為16位。這樣可大大節(jié)省硅片面積,。 

    完成定點(diǎn)C算法轉(zhuǎn)換后,,就可用常規(guī)C++編譯器編譯C代碼,,并在PC機(jī)上運(yùn)行(也可在HP或SUN機(jī)器上運(yùn)行),。所有信號(hào)的位真定義(bit-true definition)保證了硬件映射的正確索引以及到其他數(shù)字部件如HDL編譯器和仿真器的直接接口。將定點(diǎn)識(shí)別代碼與歐元兌換器應(yīng)用程序的C代碼合并,,就可得到完整的可執(zhí)行最終代碼,。 

    系統(tǒng)設(shè)計(jì)的考慮

  為了達(dá)到成本目標(biāo),,單片SoC解決方案是唯一可行的方案。SoC必須將如下資源集成至不超過25,000門的芯片上:1. 語音識(shí)別與合成(SRS)識(shí)別核,;2. 語音識(shí)別與合成(SRS)程序和歐元兌換器代碼(最大30KB);3. 語音合成實(shí)例(最大30KB),;4. 用于存儲(chǔ)聲紋(voice print)并用作中間結(jié)果存儲(chǔ)器的RAM(最大30K字節(jié)),;5. AD/DA轉(zhuǎn)換器,;6. 麥克風(fēng)接口;7. 揚(yáng)聲器接口,。 

    功耗也是要考慮的重要問題,,電池壽命至少應(yīng)為1年半。要滿足這些苛刻的功率要求,,系統(tǒng)必須具備省電模式,、在RAM中存儲(chǔ)聲紋,、處理器具有較低的時(shí)鐘頻率以及高效率的音頻放大器,。 

    SRS處理器結(jié)構(gòu)

    要給定所必需的處理和低功耗約束條件,選擇目標(biāo)時(shí)鐘頻率是首要任務(wù),。根據(jù)對(duì)初始功耗和處理計(jì)算的估計(jì),,我們認(rèn)為2到4MHz時(shí)鐘頻率足以滿足要求。選擇3.579 MHz是因?yàn)樵擃l率是NTSC視頻系統(tǒng)的基礎(chǔ),而石英成本低廉,。 

    該算法需要檢測(cè)并去除背景噪聲,。為了從奔騰機(jī)的450MHz時(shí)鐘得到3.5MHz時(shí)鐘,并保持芯片核門數(shù)小于25,000,,SRS要采用專用結(jié)構(gòu)。
 
    設(shè)計(jì)專用處理器費(fèi)時(shí)費(fèi)力,,要用HDL語言重寫算法以獲得最佳方案,。A|RT Designer工具綜合了基于控制器的結(jié)構(gòu),并直接以高效能的C語言算法為基礎(chǔ),。設(shè)計(jì)工程師通過分析和優(yōu)化,,然后轉(zhuǎn)化為Verilog或VHDL代碼。 

    設(shè)計(jì)工程師使用A|RT Designer工具為語音識(shí)別算法合成適當(dāng)?shù)慕Y(jié)構(gòu),之后進(jìn)行RTL描述,。該工具分配必需的數(shù)據(jù)通路資源(乘法器,、加法器、ALU,、I/O,、RAM,、ROM等),,為這些資源分配算術(shù)運(yùn)算,并對(duì)運(yùn)算過程進(jìn)行調(diào)度。同時(shí)將自動(dòng)生成一個(gè)控制器,、微代碼(用來控制資源分配和調(diào)度)及寄存器,、多路轉(zhuǎn)換器和總線,。 

    將SRS算法映射到硬件結(jié)構(gòu)的關(guān)鍵參數(shù)是:以3.5MHz目標(biāo)時(shí)鐘頻率運(yùn)行完整的SRS代碼,且不超過最大25,000門的約束條件,。使用A|RT Designer的“負(fù)載視圖(load view)”,,設(shè)計(jì)工程師識(shí)別出代表性能瓶頸的幾個(gè)多周期運(yùn)算(multiple cycle operation),。視圖上出現(xiàn)瓶頸的位置將顯示相關(guān)C代碼,設(shè)計(jì)工程師因而能識(shí)別產(chǎn)生瓶頸的原因并試驗(yàn)備選解決方案,。 

    最明顯的瓶頸是MEL運(yùn)算中的密集FFT計(jì)算,,它占據(jù)了實(shí)時(shí)處理周期80%的時(shí)間。通過增加一個(gè)二級(jí)加法器和專用地址計(jì)算單元ACU (address calculation unit),,F(xiàn)FT就能優(yōu)化到只占原始運(yùn)算周期的10%,。這雖然增加了硬件設(shè)備,但付出的代價(jià)只是4,000個(gè)門,,正好在硬件預(yù)算以內(nèi),。即便如此改進(jìn),所用周期的總數(shù)目實(shí)在太高,,難以達(dá)到3.5MHz的時(shí)鐘頻率,。 

    進(jìn)一步分析表明,,可以改進(jìn)對(duì)數(shù)函數(shù)的計(jì)算。當(dāng)在RISC DSP (NSC CR16B)上運(yùn)行C語言算法時(shí),,該運(yùn)算占用大約1,000個(gè)周期,約為實(shí)時(shí)運(yùn)算需求的15%。添加專用的特定應(yīng)用單元ASU (application specific unit)進(jìn)一步將這些功能的循環(huán)周期降至3個(gè)周期,,而只增加200個(gè)門。上述結(jié)構(gòu)上的改變使最小時(shí)鐘頻率為1.5MHz,少于目標(biāo)頻率的一半。 

    對(duì)門電路數(shù)目和語音識(shí)別核功耗的優(yōu)化可以降低寄存器觸發(fā)器的數(shù)目,。觸發(fā)器的開銷很大(每個(gè)需要10個(gè)門電路),并消耗很大的功率。A|RT Designer的“壽命視圖(life-time view)”用來分析組成每個(gè)變量壽命的周期數(shù)目及變量被使用的頻率,。通過在RAM中存儲(chǔ)不常使用但長(zhǎng)期有效的變量,,即可降低寄存器的總數(shù),,進(jìn)一步減小所需的硅片面積和功率。該措施節(jié)約了50%的寄存器門電路,,同時(shí)為運(yùn)算周期預(yù)算留下充足的開銷空間,。 

    RAM壓縮的實(shí)現(xiàn)

    在設(shè)計(jì)初期,,我們已經(jīng)明確30KB的RAM空間太緊張,。參考SRS C代碼的每個(gè)聲紋譜(約為1秒鐘的語音)字占用大約1-2KB,,相當(dāng)于30條命令,,這樣幾乎沒給中間結(jié)果SRAM留下任何空間。由于30KB的RAM占用了硅片相當(dāng)大的面積,,因此在硅片預(yù)算中無法添加更多的RAM(圖2),。 

    整個(gè)芯片使用標(biāo)準(zhǔn)的0.35μm CMOS工藝制造,,解決RAM空間問題的唯一解決方案是采用某些形式的語音壓縮,。 

    聲紋數(shù)據(jù)可用兩種方法壓縮:無損壓縮或有損壓縮,。目前存在幾種以現(xiàn)有的標(biāo)準(zhǔn)C代碼源程序?yàn)榛A(chǔ),,用C語言實(shí)現(xiàn)的無損壓縮方法。聲紋采樣數(shù)據(jù)可用作參考,,最佳的無損算法可得到30%的壓縮率,。采用有損壓縮,,還能再壓縮20%,并且不明顯降低識(shí)別質(zhì)量,。有損壓縮完全可以縮放,從而獲得依賴于實(shí)際聲紋長(zhǎng)度或詞匯表大小的可變壓縮率,。由此得到的C代碼算法共500行,,并對(duì)聲紋得到50%的壓縮率,。下一步就可以集成語音壓縮和語音識(shí)別IP塊了,。 

    然后只需將這500行代碼與10,000行SRS代碼合并,,得到一個(gè)新功能子程序,,在存儲(chǔ)聲紋或讀取RAM中的聲紋時(shí)調(diào)用,。但程序的計(jì)算量相當(dāng)大,,初始計(jì)算后約需要150萬個(gè)時(shí)鐘周期,,這與SRS處理所需的時(shí)間相當(dāng)。幸運(yùn)地是,,有效時(shí)鐘頻率留出的近2.5 MHz能解決這個(gè)進(jìn)程問題,,而無需進(jìn)一步優(yōu)化。此壓縮方案將RAM需求降低到20-25KB,,留出至少5KB用于處理器的中間結(jié)果存儲(chǔ)器之用,。

RAM壓縮的實(shí)現(xiàn)

    揚(yáng)聲器接口的實(shí)現(xiàn)

    單電池電源管理偏置網(wǎng)絡(luò)、數(shù)模轉(zhuǎn)換器(DAC)和模擬放大器的要占用較大的芯片面積,,而直接用C語言實(shí)現(xiàn)脈寬調(diào)制(PWM)揚(yáng)聲器驅(qū)動(dòng)程序可以解決這個(gè)問題,。 

    揚(yáng)聲器如何發(fā)音?C代碼可使用該公司的A|RT Builder “C-到-HDL”轉(zhuǎn)換工具直接轉(zhuǎn)換為VHDL,。然后使用Exemplar的Leonardo Spectrum加以合成,,并映射到Xilinx的Virtex FPGA,采用Xilinx FPGA主板,,就能將揚(yáng)聲器同2個(gè)數(shù)字輸出直接相連,啟動(dòng)開關(guān),,即可測(cè)聽音效了。 

    RTL描述的生成

    當(dāng)工程人員對(duì)語音識(shí)別SoC的性能和結(jié)構(gòu)感到滿意時(shí),,就可使用A|RT Designer工具自動(dòng)生成用于最終硅片的RTL VHDL語言描述。該工具自動(dòng)為控制器生成RTL代碼及微代碼,、RAM,、ROM和數(shù)據(jù)通路功能,。另外A|RT Designer工具在設(shè)計(jì)流的每個(gè)階段自動(dòng)生成測(cè)試基準(zhǔn),因此原始的浮點(diǎn)算法仿真可與浮點(diǎn)C和HDL方案中的仿真媲美,。VHDL仿真與原始的浮點(diǎn)C代碼嚴(yán)格對(duì)應(yīng),這意味著SoC具有與浮點(diǎn)算法相同的精度,。 

    最終結(jié)構(gòu)

    SRS ASIC所需的全部功能都集成在單芯片上(圖2),。另外所有為該SoC開發(fā)的IP都可復(fù)用。SRS算法目前應(yīng)用于CR16B RISC核的DECT電話語音識(shí)別器上,。數(shù)據(jù)壓縮功能也可復(fù)用,以進(jìn)一步增強(qiáng)專用可變位率ADPCM音頻壓縮代碼(VADPCM),。VADPCM同樣可用于SRS核,,在不利用模擬元件的條件下,,PWM算法及方案仍然能實(shí)現(xiàn)高品質(zhì)的音頻輸出,。SRS實(shí)現(xiàn)方案本身在下一代產(chǎn)品中還可以修改。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。