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

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

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

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

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

?

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

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

1 喉頭送話器及其特性

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

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

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

?

2.1 信號(hào)處理核心電路

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

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

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

2.2 語音的輸入輸出電路

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

2.3 命令代碼輸出電路及時(shí)序

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

?

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

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

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

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

  語音控制器的主要功能為:語音命令的識(shí)別及其相應(yīng)代碼的輸出、系統(tǒng)詞的錄入、語音命令的訓(xùn)練、確認(rèn)詞(正確/不對(duì))的訓(xùn)練、格式化閃速存儲(chǔ)器、刪除、查詢及有關(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;

??? ……

??? 上面的主控程序首先對(duì)調(diào)用了ADSP2181的初試化程序init2181()和液晶顯示器初試化程序lcd_init()。程序顯示了管理模塊中“下一個(gè)”和“錄音”兩個(gè)子模塊,其中錄音模塊調(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 采用的算法

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

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

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

3.3 識(shí)別門限及采樣頻率

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

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

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

?

參考文獻(xiàn)

1 張歆奕,何強(qiáng)等,非空氣傳導(dǎo)語音的分析及識(shí)別,信號(hà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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。