《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 一種噪聲環(huán)境下語音命令識別控制器的設(shè)計和實現(xiàn)

一種噪聲環(huán)境下語音命令識別控制器的設(shè)計和實現(xiàn)

2009-06-04
作者:張歆奕 張有為

  摘? 要: 提出了一種新穎的噪聲環(huán)境下語音命令識別控制器,它是利用非空氣傳導(dǎo)語音傳感器來獲得語音信號,然后進行語音識別的系統(tǒng)。這種語音識別系統(tǒng)有很好的抗噪聲抗干擾性能和很高的識別率。給出了該系統(tǒng)的硬件和軟件的具體實現(xiàn)。

  關(guān)鍵詞: 非空氣傳導(dǎo)語音識別? 語音信號處理

?

  目前現(xiàn)有的技術(shù)中,利用語音識別技術(shù)實現(xiàn)人的自然語言與機器對話,即人機對話,使機器能聽懂人的語音指令并且去執(zhí)行人所發(fā)出的指令,已有相當?shù)倪M展。語音識別的重要指標是人的語音的正確識別率。由于在相當多的使用環(huán)境中除了人發(fā)出的語音之外,還有環(huán)境噪聲,這種噪聲混雜于指令發(fā)出人的語音之中,使正確識別率大大降低,甚至出現(xiàn)錯誤識別。特別是象在車間、工地和公共場所等存在強噪聲的環(huán)境,一般的語音識別系統(tǒng)更難正常工作。這就限制了利用語音識別技術(shù)正確產(chǎn)生控制指令,實現(xiàn)人機對話,在許多實際場所的應(yīng)用。

  本文給出一種在噪聲環(huán)境(包括強噪聲環(huán)境)下實現(xiàn)語音命令的識別并可對外部進行控制的語音命令識別控制器(后簡稱語音控制器)的設(shè)計和實現(xiàn)。本語音控制器的特點是:采用非空氣傳導(dǎo)的喉頭送話器作為語音傳感器;采用美國AD公司的數(shù)字信號處理(DSP)芯片ADSP2181作為語音識別算法和壓縮算法實現(xiàn)的硬件平臺;采用動態(tài)時間彎折(DTW)算法作為語音識別算法,采用自適應(yīng)差分脈沖編碼調(diào)制ADPCM算法作為語音壓縮算法;通用性強, 留有通用的命令輸出控制接口。

1 喉頭送話器及其特性

  喉頭送話器不同于一般的利用空氣傳導(dǎo)的聲音傳感器(如麥克風),它必須緊貼發(fā)命令者的喉部,說話時聲帶發(fā)生振動,喉頭送話器中的碳膜發(fā)生形變,使其電阻值發(fā)生變化,從而使其兩端的電壓發(fā)生變化,于是振動信號轉(zhuǎn)化為電信號,即語音信號??諝庵袀鲗?dǎo)的聲波無法使喉頭送話器中的碳膜發(fā)生形變,所以喉頭送話器感受不到空氣傳導(dǎo)的聲音,具有很強的抗干擾能力,可在強噪聲環(huán)境下獲取命令發(fā)出者的語音信號。但是,喉頭送話器獲得的語音信號與空氣傳導(dǎo)的傳感器獲得的語音信號相比,喪失了較多的頻率分量,特別是高頻分量。經(jīng)過大量試驗,我們發(fā)現(xiàn)喉音器的帶寬大致在2.5kHz左右,高于此頻率的信號成分很少[1];因此采用喉頭送話器作為語音傳感器,可以提高系統(tǒng)的抗噪聲的能力,但卻給語音的正確識別增加了困難。本語音控制器針對這個特點,在硬件和軟件上采取了相關(guān)措施,保證了系統(tǒng)仍有高的識別率。

2 語音控制器的硬件設(shè)計和實現(xiàn)

  語音控制器的系統(tǒng)框圖如圖1所示。由圖1可見,語音控制器由以下部分組成:數(shù)字信號處理器(DSP)、EPROM、閃速存儲器、模數(shù)數(shù)模轉(zhuǎn)換器、看門狗電路、組合邏輯、編碼器、LCD顯示器(用16X2點陣顯示模塊)濾波器、驅(qū)動電路(采用74HC245和74F245)。

?

2.1 信號處理核心電路

  本控制器中信號處理核心電路由數(shù)字信號處理器、EPROM和閃速存儲器構(gòu)成。其中DSP芯片采用美國Analog Devices Inc.的ADSP2181,其外部時鐘16.67MHz,內(nèi)部工作時鐘為33MHz,一個指令周期為30ns,內(nèi)部含16K 字數(shù)據(jù)存儲器和16K 字程序存儲器,其主要特點是運算速度快、片內(nèi)內(nèi)存空間大、與內(nèi)部外部的存儲器的數(shù)據(jù)交換速度快和輸入輸出資源豐富,因此用于算法的實現(xiàn)和接口的控制;閃速存儲器采用ATMEL公司的AT29C020,用于存儲壓縮了的語音和語音命令特征參數(shù);EPROM采用LATTICE公司的27C020,用于存儲程序代碼和初始化數(shù)據(jù)。

  在本設(shè)計中ADSP2181資源的使用情況如下:16K字的程序存儲器全部定義為內(nèi)存,使MMAP引腳接地,PMOVLAY=0;16K字的數(shù)據(jù)存儲器全部定義為內(nèi)存,設(shè)置DMOVLAY=0;2048個I/O地址中,只用3個地址(0x400,0x401和0x402)用于LCD控制,再用一個地址作為命令代碼輸出緩存器的地址;4M位的Byte Memory中,2M(00000~3FFFF)作為程序代碼空間,2M(40000~7FFFF)作為數(shù)據(jù)存儲空間,用D23~D16,A13~A0實現(xiàn)4M位的尋址;程序的加載采用BDMA方式,置BMODE=0;8個通用可編程輸入輸出中,用4個(PF4~PF7)用于輸入鍵盤編碼,一個(PF3)用于指示燈控制,另外FL0用于AD/DA轉(zhuǎn)換器的軟復(fù)位;串行口0與AD/DA連接,接收語音數(shù)據(jù),并進行A律壓擴;串口1只用于輸出AD/DA所需的工作時鐘。

??? EPROM的大小為2M位,安排在BDMA的00000~3FFFF,用于存儲程序代碼,每次復(fù)位時被加載到ADSP2181內(nèi)的PM;閃速存儲器的大小為2M位,安排在BDMA的40000~7FFFF,共2048塊,每塊128字節(jié),用于存儲語音樣本和語音數(shù)據(jù);由于閃存的刪除必須整塊操作,所以我們定義語音樣本和數(shù)據(jù)的存儲基本單元為128字節(jié),同時把串行口0的自動緩沖區(qū)的大小也定義為128字節(jié),以便于數(shù)據(jù)往閃存的讀寫。

2.2 語音的輸入輸出電路

  語音輸入通路由喉頭送話器、濾波器和模數(shù)數(shù)模轉(zhuǎn)換器中的A/D轉(zhuǎn)換器組成。濾波器由運算放大器和RC低通濾波器構(gòu)成,其中RC濾波器的3dB帶寬由1/(2πRC)決定。若采用頻率為8kHz,則濾波器的帶寬應(yīng)為4kHz,一來防止頻率混疊,二來限制了高頻噪聲。運算放大器的增益定為1,主要起阻抗匹配作用。語音輸入通路元件的參數(shù)要仔細調(diào)好,防止語音基線不穩(wěn)和信號截頂[2]。語音輸出通路由D/A轉(zhuǎn)換器、小功率放大器和喇叭組成,其中小功率放大器采用MC34119。

2.3 命令代碼輸出電路及時序

  命令代碼輸出電路主要由鎖存器SN74HC574構(gòu)成,系統(tǒng)通過它輸出命令代碼,供外部電路譯碼控制用。語音命令正確識別后,系統(tǒng)通過Econtrol信號把語音命令對應(yīng)的代碼寫入鎖存器,同時發(fā)出Code-Ready信號,通知外部電路來取代碼。代碼由信號CS控制,只要CS為低,代碼即可輸出到CD0~CD7,如圖2所示。它們的時序如圖3所示。

?

2.4 組合邏輯、看門狗電路及鍵盤編碼電路

  組合邏輯用GAL16V8實現(xiàn),通過對數(shù)據(jù)和地址及其他ADSP2181的輸出信號譯碼產(chǎn)生控制信號;看門狗電路:采用MAX705,除為ADSP2181產(chǎn)生上電復(fù)位信號外,還可監(jiān)視2181的運行,當出現(xiàn)故障時,WDG信號為低,可用于產(chǎn)生復(fù)位信號;編碼器用MC14419實現(xiàn)16-4編碼器,對16個鍵進行編碼(4位碼)。

3 語音控制器的軟件設(shè)計和實現(xiàn)

3.1功能設(shè)計和軟件結(jié)構(gòu)

  語音控制器的主要功能為:語音命令的識別及其相應(yīng)代碼的輸出、系統(tǒng)詞的錄入、語音命令的訓(xùn)練、確認詞(正確/不對)的訓(xùn)練、格式化閃速存儲器、刪除、查詢及有關(guān)數(shù)據(jù)顯示等。語音控制器接有4×4鍵盤,用于用戶輸入命令,完成上述功能。

語音控制器軟件的主要功能模塊如圖4所示。

?

  軟件采用層次化結(jié)構(gòu),而且考慮到軟件的高效性和靈活性,采用兩種語言來編寫,即算法和接口部分用ASP2181的匯編語言編寫,而主控程序和管理模塊等用C語言編寫,這樣兼有匯編語言的高效性和C語言的靈活性,加快了開發(fā)周期。下面是部分主控程序main.c:

  /*==========Main routine========*/

  void main()

  { char ch;? init2181();? lcd_init();

  ...

  manage_mode:? /*Manage Mode*/

  mode='M';

  lcd_refresh();

  ch=getkey();

  switch(ch)

?   { case KEY_NEXT:

??????   phone_next_item();

??????   N=voice_read(user,index); /*load voice */

?? ?    break;

???     case KEY_RECORD:

?????????? if (phone_buf[index]==1)

?????????? { lcd_clr(); lcd_puts(″Not empty!″); delay(300);

????????? ???????????? /*prompt(PROMPT_FULL);*/

????? ???? break;

?????????? }

?????????? prompt(PROMPT_SAY_NAME);

?????????? lcd_clr(); lcd_puts(″Say command...″);

?????????? getword();

?????????? speakout(user_voice,N);

?????????? break;

??? ……

??? 上面的主控程序首先對調(diào)用了ADSP2181的初試化程序init2181()和液晶顯示器初試化程序lcd_init()。程序顯示了管理模塊中“下一個”和“錄音”兩個子模塊,其中錄音模塊調(diào)用了字符顯示匯編程序lcd_puts()。下面是底層匯編程序hardware.dsp的部分程序:

??? #include

??? #include

??? .MODULE/RAM?? HardWare;

??? .CONST?? PORT_LCD_CMD = 0x400;

????????? { command port for write}

  .CONST?? PORT_LCD_STATUS = 0x402;

????????? { status port }

  entry lcd_puts_;

  。。。

  lcd_puts_:

    function_entry;

    save_reg;

    dm(temp)=ar;

    CALL WAIT_DIS;

    {wait for LCD being idle}

    ax0=dm(temp);

    CALL WLcdDataWrite; {display it }

    ax0=dm(cursor);?

    ay0=1;?

    ar=ax0+ay0;?

    ax0=ar;?

    ay0=0x88;?

    ar=ax0-ay0;?

    if ne jump disp_ok;

    AX0=0XC0; { 0xC0 == 0x80+0x40}

  。。。

  上面程序中有字符顯示子程序lcd_puts在頭文件中聲明后,即可由C程序調(diào)用。子程序中的CONST語句定義了液晶顯示器的硬件口地址。

3.2 采用的算法

  在孤立詞語音識別中,最為有效的方法是DTW算法。該算法基于動態(tài)規(guī)劃(DP)的思想,解決了發(fā)音長短不一的匹配問題。用于孤立詞識別,DTW算法與HMM算法在相同的前提下,DTW的識別效果一般都高于HMM,而且HMM算法要復(fù)雜的多,還要有冗長的訓(xùn)練過程,在定點DSP上尤其難以實現(xiàn)。所以在孤立詞語音識別中,DTW算法仍得到廣泛的應(yīng)用,語音控制器采用DTW算法。

  語音的特征參數(shù)目前比較好的有Mel尺度頻率倒譜參數(shù)MFCC參數(shù)和線性預(yù)測倒譜(LPCC)參數(shù)。經(jīng)過試驗[1]我們采用12階LPCC參數(shù)外加幀能量和幀過零率構(gòu)成14維語音特征矢量。

  語音壓縮和解壓縮采用自適應(yīng)差分脈沖編碼調(diào)制ADPCM算法。對語音進行壓縮是為了實現(xiàn)語音的回放。

3.3 識別門限及采樣頻率

  識別過程中門限的確定無法在理論上進行精確的預(yù)測,只能通過試驗確定。根據(jù)我們的算法和大量測試經(jīng)驗,確定了兩種識別方式下的門限。在無需確認的方案下,系統(tǒng)只有一個門限:正確或錯誤門限。為了降低誤識率同時盡可能地保持高的識別率,這個門限不能過低也不能過高。過于嚴格,識別正確的結(jié)果也不能通過確認,相反過于寬松的門限可能會使錯誤的識別結(jié)果被確認,造成較大的損失??山?jīng)過試驗確定此門限。小于此門限識別結(jié)果被認為是有效的。在需要確認的方案下,系統(tǒng)設(shè)有3個門限:無需確認直接通過的確認門限,需要提問確認的門限,以及拒絕門限。由于有確認,錯誤的識別結(jié)果可以被拒絕,因此這種方案比較可靠,確認門限也可以適當嚴格些??山?jīng)過試驗確定該三個門限。

  試驗中曾經(jīng)試驗過采樣頻率為8kHz、16kHz兩種情況的比較,發(fā)現(xiàn)在定點DSP系統(tǒng)中采樣頻率的提高對識別率沒有明顯的提高,反而有所下降。而在微機上的試驗表明,16kHz的采樣頻率只對識別率略有提高,但是并不明顯。我們經(jīng)過分析認為,這仍然是受到系統(tǒng)字長影響的結(jié)果。信號的實際有效帶寬很低,采樣率過高使得每個采樣幀內(nèi)的信號周期性不明顯,從而降低了相關(guān)系數(shù)的計算精度,并最終增大了LPCC參數(shù)的計算誤差。而在微機上的由于采用浮點算法,因此計算精度不受影響。經(jīng)過試驗,我們確定采用6kHz作為系統(tǒng)的采樣頻率,每80個采樣(13.3ms)計算一幀,每幀仍取240點,交迭160點。得到了比較好的識別效果。

  總之,語音控制器調(diào)試完畢后,對50個命令進行了測試,結(jié)果如下:訓(xùn)練完后當天進行識別,一次正確識別率幾乎達到100%;訓(xùn)練完一周后進行識別,一次正確識別率大于97%。因此本語音識別控制器可在噪聲環(huán)境下進行正確識別,具有實用價值。

?

參考文獻

1 張歆奕,何強等,非空氣傳導(dǎo)語音的分析及識別,信號處理,1999;(10)

2 張歆奕,盧敦陸等.AD73311的特性及其在語音處理中的應(yīng)用.電子技術(shù)應(yīng)用,1999;24(8)

3 Tohkura Y,A Weighted Cepstral Distance Measure for?Speech Recognition,IEEE Transactions on ASSP,1987;

(35(10): October 1987, pp.1415-1422。

4 Analog Devices Inc.,ADSP-2181 Data Sheet,1996

5 Analog Inc, Digital Signal Processing applications, Prentice Hall, 1990

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。