DVD/TV聲控遙控器的設(shè)計(jì)與實(shí)現(xiàn)
發(fā)布時(shí)間:2007/4/23 0:00:00 訪問次數(shù):611
DVD/TV聲控遙控器的設(shè)計(jì)與實(shí)現(xiàn) [日期:2006-9-6] 來源:電子設(shè)計(jì)應(yīng)用 作者:清華大學(xué)電子工程系 陳伯函 姚杰耀 劉潤(rùn)生 [字體:?jiǎn)纹瑱C(jī)(M8051)雙核的語(yǔ)音專用芯片UniSpeech。該芯片集成了12bit的ADC和11bit的DAC,省去了額外的CODEC器件。由于采用了SoC結(jié)構(gòu),構(gòu)成系統(tǒng)的芯片數(shù)量少,系統(tǒng)的集成度和穩(wěn)定性高。因此該芯片非常適合于開發(fā)帶有語(yǔ)音識(shí)別功能的遙控器等應(yīng)用。
紅外線信號(hào)的發(fā)射是通過MCU的功能引腳PWM驅(qū)動(dòng)紅外線發(fā)射管實(shí)現(xiàn)的,由于PWM引腳具有脈沖寬度調(diào)制功能,只要設(shè)置相應(yīng)的寄存器,就能輸出具有一定占空比的載波信號(hào),因此不需額外的驅(qū)動(dòng)器件就可根據(jù)需要發(fā)出所要的紅外信號(hào)。紅外線的接收則是由紅外線接收管連接到MCU的通用輸入/輸出引腳實(shí)現(xiàn)。
考慮到語(yǔ)音聲學(xué)模型、遙控碼等所需要的存儲(chǔ)數(shù)據(jù)量比較大,本文采用了SST公司的8Mbits的Flash存儲(chǔ)器39VF080。
遙控器設(shè)計(jì)中比較重要的一點(diǎn)是按鍵的功能設(shè)計(jì),結(jié)合一般用戶使用DVD和TV遙控器的習(xí)慣,本設(shè)計(jì)只設(shè)置了較少的4×4的掃描式按鍵。只有最常用的幾個(gè)功能既可以按鍵控制,又可以語(yǔ)音控制,其它功能可以完全由語(yǔ)音控制實(shí)現(xiàn)。其系統(tǒng)硬件框圖如圖1所示。
系統(tǒng)中MCU作為主控制芯片,完成對(duì)各種接口的控制和系統(tǒng)的配置。DSP作為協(xié)處理器,完成語(yǔ)音識(shí)別算法和語(yǔ)音合成計(jì)算。通過MIC的輸入語(yǔ)音,經(jīng)過ADC的8kHz采樣、12bit的線性量化,然后送到DSP進(jìn)行處理。
由于系統(tǒng)語(yǔ)音識(shí)別部分是面向非特定人設(shè)計(jì)的,因此必須事先準(zhǔn)備訓(xùn)練好的聲學(xué)模型和已經(jīng)編輯好的語(yǔ)音命令詞條。系統(tǒng)通過UART與計(jì)算機(jī)串口相接,將已經(jīng)編輯好的語(yǔ)音命令詞條和聲學(xué)模型存入Flash中?紤]到實(shí)際使用的需要,本文將各語(yǔ)音命令詞條(如“開機(jī)”、“關(guān)機(jī)”)對(duì)應(yīng)到一個(gè)按鍵所對(duì)應(yīng)的遙控碼上。這樣,當(dāng)輸入不同的語(yǔ)音命令,通過語(yǔ)音識(shí)別得到與之匹配的指令,就可實(shí)現(xiàn)與對(duì)應(yīng)按鍵相同的控制效果。
系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件被設(shè)計(jì)為一個(gè)超循環(huán)(Super-Loops)結(jié)構(gòu)的實(shí)時(shí)系統(tǒng)。通過在主程序中構(gòu)造一個(gè)超循環(huán)把所有任務(wù)模塊鏈接起來。任務(wù)級(jí)的程序得到控制權(quán)后,首先檢查是否有事件需要處理。如果沒有就放棄控制權(quán),使得超循環(huán)任務(wù)鏈中的下一個(gè)任務(wù)得到控制。如果確實(shí)有事件需要處理,那么就完全或部分地處理該事件,然后就立刻交出控制權(quán)。通過這樣的協(xié)作,所有的任務(wù)每次執(zhí)行時(shí)都只占用系統(tǒng)很少的運(yùn)行時(shí)間。系統(tǒng)流程如圖2所示。
代碼結(jié)構(gòu)如下:
voidmain(void)
{
EA=0;
//屏蔽中斷
Init();
//系統(tǒng)初始化
EA=1;
//打開中斷
while(1)
{
Drv_Ring();//驅(qū)動(dòng)層,負(fù)責(zé)掃描鍵盤和檢測(cè)是否有語(yǔ)音輸入
App_Ring();//應(yīng)用層,負(fù)責(zé)紅外線信號(hào)的發(fā)射和接收以及語(yǔ)音命令的識(shí)別
}
}
功能模塊之間的切換是通過一個(gè)功能開關(guān)和一個(gè)語(yǔ)音識(shí)別啟動(dòng)鍵實(shí)現(xiàn)的,當(dāng)功能開關(guān)置為“LEARN”學(xué)習(xí)功能時(shí),系統(tǒng)進(jìn)入學(xué)習(xí)功能;當(dāng)置為“DVD”檔時(shí),系統(tǒng)進(jìn)入DVD功能;當(dāng)置為“TV”檔時(shí),系統(tǒng)則進(jìn)入TV功能。
DVD功能模塊
DVD遙控器的遙控碼已由DVD播放器生產(chǎn)廠商提供。為此,DVD遙控碼型將根據(jù)所屬?gòu)S家提供的信息直接在程序中確定,因此在按鍵發(fā)送紅外信號(hào)時(shí),也是直接由程序確定對(duì)應(yīng)的碼型。通過PWM引腳發(fā)射。
TV功能模塊
對(duì)TV功能而言,其遙控碼型必須通過學(xué)習(xí)過程取得,并存于數(shù)據(jù)Flash中。當(dāng)用戶按鍵時(shí),程序根據(jù)按鍵鍵值,從數(shù)據(jù)Flash中讀取對(duì)應(yīng)的遙控碼型,然后通過功能引腳PWM發(fā)送該遙控碼。
語(yǔ)音識(shí)別模塊
當(dāng)語(yǔ)音識(shí)別啟動(dòng)鍵被按下時(shí),系統(tǒng)進(jìn)入識(shí)別狀態(tài),開始接收語(yǔ)音命令的輸入,識(shí)別完語(yǔ)音命令之后,根據(jù)識(shí)別結(jié)果發(fā)送相應(yīng)的遙控碼。語(yǔ)音識(shí)別子系統(tǒng)的基本結(jié)構(gòu)如圖3所示。
語(yǔ)音識(shí)別引擎采用基于子詞的非特定人語(yǔ)音識(shí)別模型,與以往的基于孤立詞整詞的模型相比,具有靈活性高、穩(wěn)健性好的特點(diǎn)。
按照各自的功能,大致上可以將識(shí)別算法分為三個(gè)部分:特征提取、模型參數(shù)訓(xùn)練和識(shí)別網(wǎng)絡(luò)解碼。對(duì)于一個(gè)基于子詞的非特定人嵌入式語(yǔ)音識(shí)別引擎而言,聲學(xué)模型(采用HMM)是與識(shí)別任務(wù)無關(guān)的,模型參數(shù)相對(duì)固定,因此模型參數(shù)訓(xùn)練的過程可以在PC平臺(tái)上完成(見圖3虛框部分),需要嵌入到片上的模塊只有特征提取和識(shí)別網(wǎng)絡(luò)解碼部分。特征提取選用了MFCC參數(shù)作為語(yǔ)音識(shí)別引擎的語(yǔ)音特征參數(shù),識(shí)別網(wǎng)絡(luò)解碼采用維特比(Viterbi)搜索算法。為了保證算法能夠達(dá)到較高的識(shí)別精度,而又占用較少的資源,采用兩級(jí)識(shí)別結(jié)構(gòu),在一顆專用芯片上達(dá)到了99%的識(shí)別精度。
學(xué)習(xí)模塊
當(dāng)系統(tǒng)處于學(xué)習(xí)功能狀態(tài)時(shí),系統(tǒng)檢測(cè)紅外遙控碼。根據(jù)用戶所選按鍵,將接收到的紅外遙控信息存到該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中。當(dāng)下次按下該按鍵時(shí),就可從該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中取出新學(xué)習(xí)到的紅外遙控碼。
紅外線信號(hào)的發(fā)射是通過MCU的功能引腳PWM驅(qū)動(dòng)紅外線發(fā)射管實(shí)現(xiàn)的,由于PWM引腳具有脈沖寬度調(diào)制功能,只要設(shè)置相應(yīng)的寄存器,就能輸出具有一定占空比的載波信號(hào),因此不需額外的驅(qū)動(dòng)器件就可根據(jù)需要發(fā)出所要的紅外信號(hào)。紅外線的接收則是由紅外線接收管連接到MCU的通用輸入/輸出引腳實(shí)現(xiàn)。
考慮到語(yǔ)音聲學(xué)模型、遙控碼等所需要的存儲(chǔ)數(shù)據(jù)量比較大,本文采用了SST公司的8Mbits的Flash存儲(chǔ)器39VF080。
遙控器設(shè)計(jì)中比較重要的一點(diǎn)是按鍵的功能設(shè)計(jì),結(jié)合一般用戶使用DVD和TV遙控器的習(xí)慣,本設(shè)計(jì)只設(shè)置了較少的4×4的掃描式按鍵。只有最常用的幾個(gè)功能既可以按鍵控制,又可以語(yǔ)音控制,其它功能可以完全由語(yǔ)音控制實(shí)現(xiàn)。其系統(tǒng)硬件框圖如圖1所示。
系統(tǒng)中MCU作為主控制芯片,完成對(duì)各種接口的控制和系統(tǒng)的配置。DSP作為協(xié)處理器,完成語(yǔ)音識(shí)別算法和語(yǔ)音合成計(jì)算。通過MIC的輸入語(yǔ)音,經(jīng)過ADC的8kHz采樣、12bit的線性量化,然后送到DSP進(jìn)行處理。
由于系統(tǒng)語(yǔ)音識(shí)別部分是面向非特定人設(shè)計(jì)的,因此必須事先準(zhǔn)備訓(xùn)練好的聲學(xué)模型和已經(jīng)編輯好的語(yǔ)音命令詞條。系統(tǒng)通過UART與計(jì)算機(jī)串口相接,將已經(jīng)編輯好的語(yǔ)音命令詞條和聲學(xué)模型存入Flash中?紤]到實(shí)際使用的需要,本文將各語(yǔ)音命令詞條(如“開機(jī)”、“關(guān)機(jī)”)對(duì)應(yīng)到一個(gè)按鍵所對(duì)應(yīng)的遙控碼上。這樣,當(dāng)輸入不同的語(yǔ)音命令,通過語(yǔ)音識(shí)別得到與之匹配的指令,就可實(shí)現(xiàn)與對(duì)應(yīng)按鍵相同的控制效果。
系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件被設(shè)計(jì)為一個(gè)超循環(huán)(Super-Loops)結(jié)構(gòu)的實(shí)時(shí)系統(tǒng)。通過在主程序中構(gòu)造一個(gè)超循環(huán)把所有任務(wù)模塊鏈接起來。任務(wù)級(jí)的程序得到控制權(quán)后,首先檢查是否有事件需要處理。如果沒有就放棄控制權(quán),使得超循環(huán)任務(wù)鏈中的下一個(gè)任務(wù)得到控制。如果確實(shí)有事件需要處理,那么就完全或部分地處理該事件,然后就立刻交出控制權(quán)。通過這樣的協(xié)作,所有的任務(wù)每次執(zhí)行時(shí)都只占用系統(tǒng)很少的運(yùn)行時(shí)間。系統(tǒng)流程如圖2所示。
代碼結(jié)構(gòu)如下:
voidmain(void)
{
EA=0;
//屏蔽中斷
Init();
//系統(tǒng)初始化
EA=1;
//打開中斷
while(1)
{
Drv_Ring();//驅(qū)動(dòng)層,負(fù)責(zé)掃描鍵盤和檢測(cè)是否有語(yǔ)音輸入
App_Ring();//應(yīng)用層,負(fù)責(zé)紅外線信號(hào)的發(fā)射和接收以及語(yǔ)音命令的識(shí)別
}
}
功能模塊之間的切換是通過一個(gè)功能開關(guān)和一個(gè)語(yǔ)音識(shí)別啟動(dòng)鍵實(shí)現(xiàn)的,當(dāng)功能開關(guān)置為“LEARN”學(xué)習(xí)功能時(shí),系統(tǒng)進(jìn)入學(xué)習(xí)功能;當(dāng)置為“DVD”檔時(shí),系統(tǒng)進(jìn)入DVD功能;當(dāng)置為“TV”檔時(shí),系統(tǒng)則進(jìn)入TV功能。
DVD功能模塊
DVD遙控器的遙控碼已由DVD播放器生產(chǎn)廠商提供。為此,DVD遙控碼型將根據(jù)所屬?gòu)S家提供的信息直接在程序中確定,因此在按鍵發(fā)送紅外信號(hào)時(shí),也是直接由程序確定對(duì)應(yīng)的碼型。通過PWM引腳發(fā)射。
TV功能模塊
對(duì)TV功能而言,其遙控碼型必須通過學(xué)習(xí)過程取得,并存于數(shù)據(jù)Flash中。當(dāng)用戶按鍵時(shí),程序根據(jù)按鍵鍵值,從數(shù)據(jù)Flash中讀取對(duì)應(yīng)的遙控碼型,然后通過功能引腳PWM發(fā)送該遙控碼。
語(yǔ)音識(shí)別模塊
當(dāng)語(yǔ)音識(shí)別啟動(dòng)鍵被按下時(shí),系統(tǒng)進(jìn)入識(shí)別狀態(tài),開始接收語(yǔ)音命令的輸入,識(shí)別完語(yǔ)音命令之后,根據(jù)識(shí)別結(jié)果發(fā)送相應(yīng)的遙控碼。語(yǔ)音識(shí)別子系統(tǒng)的基本結(jié)構(gòu)如圖3所示。
語(yǔ)音識(shí)別引擎采用基于子詞的非特定人語(yǔ)音識(shí)別模型,與以往的基于孤立詞整詞的模型相比,具有靈活性高、穩(wěn)健性好的特點(diǎn)。
按照各自的功能,大致上可以將識(shí)別算法分為三個(gè)部分:特征提取、模型參數(shù)訓(xùn)練和識(shí)別網(wǎng)絡(luò)解碼。對(duì)于一個(gè)基于子詞的非特定人嵌入式語(yǔ)音識(shí)別引擎而言,聲學(xué)模型(采用HMM)是與識(shí)別任務(wù)無關(guān)的,模型參數(shù)相對(duì)固定,因此模型參數(shù)訓(xùn)練的過程可以在PC平臺(tái)上完成(見圖3虛框部分),需要嵌入到片上的模塊只有特征提取和識(shí)別網(wǎng)絡(luò)解碼部分。特征提取選用了MFCC參數(shù)作為語(yǔ)音識(shí)別引擎的語(yǔ)音特征參數(shù),識(shí)別網(wǎng)絡(luò)解碼采用維特比(Viterbi)搜索算法。為了保證算法能夠達(dá)到較高的識(shí)別精度,而又占用較少的資源,采用兩級(jí)識(shí)別結(jié)構(gòu),在一顆專用芯片上達(dá)到了99%的識(shí)別精度。
學(xué)習(xí)模塊
當(dāng)系統(tǒng)處于學(xué)習(xí)功能狀態(tài)時(shí),系統(tǒng)檢測(cè)紅外遙控碼。根據(jù)用戶所選按鍵,將接收到的紅外遙控信息存到該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中。當(dāng)下次按下該按鍵時(shí),就可從該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中取出新學(xué)習(xí)到的紅外遙控碼。
DVD/TV聲控遙控器的設(shè)計(jì)與實(shí)現(xiàn) [日期:2006-9-6] 來源:電子設(shè)計(jì)應(yīng)用 作者:清華大學(xué)電子工程系 陳伯函 姚杰耀 劉潤(rùn)生 [字體:?jiǎn)纹瑱C(jī)(M8051)雙核的語(yǔ)音專用芯片UniSpeech。該芯片集成了12bit的ADC和11bit的DAC,省去了額外的CODEC器件。由于采用了SoC結(jié)構(gòu),構(gòu)成系統(tǒng)的芯片數(shù)量少,系統(tǒng)的集成度和穩(wěn)定性高。因此該芯片非常適合于開發(fā)帶有語(yǔ)音識(shí)別功能的遙控器等應(yīng)用。
紅外線信號(hào)的發(fā)射是通過MCU的功能引腳PWM驅(qū)動(dòng)紅外線發(fā)射管實(shí)現(xiàn)的,由于PWM引腳具有脈沖寬度調(diào)制功能,只要設(shè)置相應(yīng)的寄存器,就能輸出具有一定占空比的載波信號(hào),因此不需額外的驅(qū)動(dòng)器件就可根據(jù)需要發(fā)出所要的紅外信號(hào)。紅外線的接收則是由紅外線接收管連接到MCU的通用輸入/輸出引腳實(shí)現(xiàn)。
考慮到語(yǔ)音聲學(xué)模型、遙控碼等所需要的存儲(chǔ)數(shù)據(jù)量比較大,本文采用了SST公司的8Mbits的Flash存儲(chǔ)器39VF080。
遙控器設(shè)計(jì)中比較重要的一點(diǎn)是按鍵的功能設(shè)計(jì),結(jié)合一般用戶使用DVD和TV遙控器的習(xí)慣,本設(shè)計(jì)只設(shè)置了較少的4×4的掃描式按鍵。只有最常用的幾個(gè)功能既可以按鍵控制,又可以語(yǔ)音控制,其它功能可以完全由語(yǔ)音控制實(shí)現(xiàn)。其系統(tǒng)硬件框圖如圖1所示。
系統(tǒng)中MCU作為主控制芯片,完成對(duì)各種接口的控制和系統(tǒng)的配置。DSP作為協(xié)處理器,完成語(yǔ)音識(shí)別算法和語(yǔ)音合成計(jì)算。通過MIC的輸入語(yǔ)音,經(jīng)過ADC的8kHz采樣、12bit的線性量化,然后送到DSP進(jìn)行處理。
由于系統(tǒng)語(yǔ)音識(shí)別部分是面向非特定人設(shè)計(jì)的,因此必須事先準(zhǔn)備訓(xùn)練好的聲學(xué)模型和已經(jīng)編輯好的語(yǔ)音命令詞條。系統(tǒng)通過UART與計(jì)算機(jī)串口相接,將已經(jīng)編輯好的語(yǔ)音命令詞條和聲學(xué)模型存入Flash中?紤]到實(shí)際使用的需要,本文將各語(yǔ)音命令詞條(如“開機(jī)”、“關(guān)機(jī)”)對(duì)應(yīng)到一個(gè)按鍵所對(duì)應(yīng)的遙控碼上。這樣,當(dāng)輸入不同的語(yǔ)音命令,通過語(yǔ)音識(shí)別得到與之匹配的指令,就可實(shí)現(xiàn)與對(duì)應(yīng)按鍵相同的控制效果。
系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件被設(shè)計(jì)為一個(gè)超循環(huán)(Super-Loops)結(jié)構(gòu)的實(shí)時(shí)系統(tǒng)。通過在主程序中構(gòu)造一個(gè)超循環(huán)把所有任務(wù)模塊鏈接起來。任務(wù)級(jí)的程序得到控制權(quán)后,首先檢查是否有事件需要處理。如果沒有就放棄控制權(quán),使得超循環(huán)任務(wù)鏈中的下一個(gè)任務(wù)得到控制。如果確實(shí)有事件需要處理,那么就完全或部分地處理該事件,然后就立刻交出控制權(quán)。通過這樣的協(xié)作,所有的任務(wù)每次執(zhí)行時(shí)都只占用系統(tǒng)很少的運(yùn)行時(shí)間。系統(tǒng)流程如圖2所示。
代碼結(jié)構(gòu)如下:
voidmain(void)
{
EA=0;
//屏蔽中斷
Init();
//系統(tǒng)初始化
EA=1;
//打開中斷
while(1)
{
Drv_Ring();//驅(qū)動(dòng)層,負(fù)責(zé)掃描鍵盤和檢測(cè)是否有語(yǔ)音輸入
App_Ring();//應(yīng)用層,負(fù)責(zé)紅外線信號(hào)的發(fā)射和接收以及語(yǔ)音命令的識(shí)別
}
}
功能模塊之間的切換是通過一個(gè)功能開關(guān)和一個(gè)語(yǔ)音識(shí)別啟動(dòng)鍵實(shí)現(xiàn)的,當(dāng)功能開關(guān)置為“LEARN”學(xué)習(xí)功能時(shí),系統(tǒng)進(jìn)入學(xué)習(xí)功能;當(dāng)置為“DVD”檔時(shí),系統(tǒng)進(jìn)入DVD功能;當(dāng)置為“TV”檔時(shí),系統(tǒng)則進(jìn)入TV功能。
DVD功能模塊
DVD遙控器的遙控碼已由DVD播放器生產(chǎn)廠商提供。為此,DVD遙控碼型將根據(jù)所屬?gòu)S家提供的信息直接在程序中確定,因此在按鍵發(fā)送紅外信號(hào)時(shí),也是直接由程序確定對(duì)應(yīng)的碼型。通過PWM引腳發(fā)射。
TV功能模塊
對(duì)TV功能而言,其遙控碼型必須通過學(xué)習(xí)過程取得,并存于數(shù)據(jù)Flash中。當(dāng)用戶按鍵時(shí),程序根據(jù)按鍵鍵值,從數(shù)據(jù)Flash中讀取對(duì)應(yīng)的遙控碼型,然后通過功能引腳PWM發(fā)送該遙控碼。
語(yǔ)音識(shí)別模塊
當(dāng)語(yǔ)音識(shí)別啟動(dòng)鍵被按下時(shí),系統(tǒng)進(jìn)入識(shí)別狀態(tài),開始接收語(yǔ)音命令的輸入,識(shí)別完語(yǔ)音命令之后,根據(jù)識(shí)別結(jié)果發(fā)送相應(yīng)的遙控碼。語(yǔ)音識(shí)別子系統(tǒng)的基本結(jié)構(gòu)如圖3所示。
語(yǔ)音識(shí)別引擎采用基于子詞的非特定人語(yǔ)音識(shí)別模型,與以往的基于孤立詞整詞的模型相比,具有靈活性高、穩(wěn)健性好的特點(diǎn)。
按照各自的功能,大致上可以將識(shí)別算法分為三個(gè)部分:特征提取、模型參數(shù)訓(xùn)練和識(shí)別網(wǎng)絡(luò)解碼。對(duì)于一個(gè)基于子詞的非特定人嵌入式語(yǔ)音識(shí)別引擎而言,聲學(xué)模型(采用HMM)是與識(shí)別任務(wù)無關(guān)的,模型參數(shù)相對(duì)固定,因此模型參數(shù)訓(xùn)練的過程可以在PC平臺(tái)上完成(見圖3虛框部分),需要嵌入到片上的模塊只有特征提取和識(shí)別網(wǎng)絡(luò)解碼部分。特征提取選用了MFCC參數(shù)作為語(yǔ)音識(shí)別引擎的語(yǔ)音特征參數(shù),識(shí)別網(wǎng)絡(luò)解碼采用維特比(Viterbi)搜索算法。為了保證算法能夠達(dá)到較高的識(shí)別精度,而又占用較少的資源,采用兩級(jí)識(shí)別結(jié)構(gòu),在一顆專用芯片上達(dá)到了99%的識(shí)別精度。
學(xué)習(xí)模塊
當(dāng)系統(tǒng)處于學(xué)習(xí)功能狀態(tài)時(shí),系統(tǒng)檢測(cè)紅外遙控碼。根據(jù)用戶所選按鍵,將接收到的紅外遙控信息存到該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中。當(dāng)下次按下該按鍵時(shí),就可從該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中取出新學(xué)習(xí)到的紅外遙控碼。
紅外線信號(hào)的發(fā)射是通過MCU的功能引腳PWM驅(qū)動(dòng)紅外線發(fā)射管實(shí)現(xiàn)的,由于PWM引腳具有脈沖寬度調(diào)制功能,只要設(shè)置相應(yīng)的寄存器,就能輸出具有一定占空比的載波信號(hào),因此不需額外的驅(qū)動(dòng)器件就可根據(jù)需要發(fā)出所要的紅外信號(hào)。紅外線的接收則是由紅外線接收管連接到MCU的通用輸入/輸出引腳實(shí)現(xiàn)。
考慮到語(yǔ)音聲學(xué)模型、遙控碼等所需要的存儲(chǔ)數(shù)據(jù)量比較大,本文采用了SST公司的8Mbits的Flash存儲(chǔ)器39VF080。
遙控器設(shè)計(jì)中比較重要的一點(diǎn)是按鍵的功能設(shè)計(jì),結(jié)合一般用戶使用DVD和TV遙控器的習(xí)慣,本設(shè)計(jì)只設(shè)置了較少的4×4的掃描式按鍵。只有最常用的幾個(gè)功能既可以按鍵控制,又可以語(yǔ)音控制,其它功能可以完全由語(yǔ)音控制實(shí)現(xiàn)。其系統(tǒng)硬件框圖如圖1所示。
系統(tǒng)中MCU作為主控制芯片,完成對(duì)各種接口的控制和系統(tǒng)的配置。DSP作為協(xié)處理器,完成語(yǔ)音識(shí)別算法和語(yǔ)音合成計(jì)算。通過MIC的輸入語(yǔ)音,經(jīng)過ADC的8kHz采樣、12bit的線性量化,然后送到DSP進(jìn)行處理。
由于系統(tǒng)語(yǔ)音識(shí)別部分是面向非特定人設(shè)計(jì)的,因此必須事先準(zhǔn)備訓(xùn)練好的聲學(xué)模型和已經(jīng)編輯好的語(yǔ)音命令詞條。系統(tǒng)通過UART與計(jì)算機(jī)串口相接,將已經(jīng)編輯好的語(yǔ)音命令詞條和聲學(xué)模型存入Flash中?紤]到實(shí)際使用的需要,本文將各語(yǔ)音命令詞條(如“開機(jī)”、“關(guān)機(jī)”)對(duì)應(yīng)到一個(gè)按鍵所對(duì)應(yīng)的遙控碼上。這樣,當(dāng)輸入不同的語(yǔ)音命令,通過語(yǔ)音識(shí)別得到與之匹配的指令,就可實(shí)現(xiàn)與對(duì)應(yīng)按鍵相同的控制效果。
系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件被設(shè)計(jì)為一個(gè)超循環(huán)(Super-Loops)結(jié)構(gòu)的實(shí)時(shí)系統(tǒng)。通過在主程序中構(gòu)造一個(gè)超循環(huán)把所有任務(wù)模塊鏈接起來。任務(wù)級(jí)的程序得到控制權(quán)后,首先檢查是否有事件需要處理。如果沒有就放棄控制權(quán),使得超循環(huán)任務(wù)鏈中的下一個(gè)任務(wù)得到控制。如果確實(shí)有事件需要處理,那么就完全或部分地處理該事件,然后就立刻交出控制權(quán)。通過這樣的協(xié)作,所有的任務(wù)每次執(zhí)行時(shí)都只占用系統(tǒng)很少的運(yùn)行時(shí)間。系統(tǒng)流程如圖2所示。
代碼結(jié)構(gòu)如下:
voidmain(void)
{
EA=0;
//屏蔽中斷
Init();
//系統(tǒng)初始化
EA=1;
//打開中斷
while(1)
{
Drv_Ring();//驅(qū)動(dòng)層,負(fù)責(zé)掃描鍵盤和檢測(cè)是否有語(yǔ)音輸入
App_Ring();//應(yīng)用層,負(fù)責(zé)紅外線信號(hào)的發(fā)射和接收以及語(yǔ)音命令的識(shí)別
}
}
功能模塊之間的切換是通過一個(gè)功能開關(guān)和一個(gè)語(yǔ)音識(shí)別啟動(dòng)鍵實(shí)現(xiàn)的,當(dāng)功能開關(guān)置為“LEARN”學(xué)習(xí)功能時(shí),系統(tǒng)進(jìn)入學(xué)習(xí)功能;當(dāng)置為“DVD”檔時(shí),系統(tǒng)進(jìn)入DVD功能;當(dāng)置為“TV”檔時(shí),系統(tǒng)則進(jìn)入TV功能。
DVD功能模塊
DVD遙控器的遙控碼已由DVD播放器生產(chǎn)廠商提供。為此,DVD遙控碼型將根據(jù)所屬?gòu)S家提供的信息直接在程序中確定,因此在按鍵發(fā)送紅外信號(hào)時(shí),也是直接由程序確定對(duì)應(yīng)的碼型。通過PWM引腳發(fā)射。
TV功能模塊
對(duì)TV功能而言,其遙控碼型必須通過學(xué)習(xí)過程取得,并存于數(shù)據(jù)Flash中。當(dāng)用戶按鍵時(shí),程序根據(jù)按鍵鍵值,從數(shù)據(jù)Flash中讀取對(duì)應(yīng)的遙控碼型,然后通過功能引腳PWM發(fā)送該遙控碼。
語(yǔ)音識(shí)別模塊
當(dāng)語(yǔ)音識(shí)別啟動(dòng)鍵被按下時(shí),系統(tǒng)進(jìn)入識(shí)別狀態(tài),開始接收語(yǔ)音命令的輸入,識(shí)別完語(yǔ)音命令之后,根據(jù)識(shí)別結(jié)果發(fā)送相應(yīng)的遙控碼。語(yǔ)音識(shí)別子系統(tǒng)的基本結(jié)構(gòu)如圖3所示。
語(yǔ)音識(shí)別引擎采用基于子詞的非特定人語(yǔ)音識(shí)別模型,與以往的基于孤立詞整詞的模型相比,具有靈活性高、穩(wěn)健性好的特點(diǎn)。
按照各自的功能,大致上可以將識(shí)別算法分為三個(gè)部分:特征提取、模型參數(shù)訓(xùn)練和識(shí)別網(wǎng)絡(luò)解碼。對(duì)于一個(gè)基于子詞的非特定人嵌入式語(yǔ)音識(shí)別引擎而言,聲學(xué)模型(采用HMM)是與識(shí)別任務(wù)無關(guān)的,模型參數(shù)相對(duì)固定,因此模型參數(shù)訓(xùn)練的過程可以在PC平臺(tái)上完成(見圖3虛框部分),需要嵌入到片上的模塊只有特征提取和識(shí)別網(wǎng)絡(luò)解碼部分。特征提取選用了MFCC參數(shù)作為語(yǔ)音識(shí)別引擎的語(yǔ)音特征參數(shù),識(shí)別網(wǎng)絡(luò)解碼采用維特比(Viterbi)搜索算法。為了保證算法能夠達(dá)到較高的識(shí)別精度,而又占用較少的資源,采用兩級(jí)識(shí)別結(jié)構(gòu),在一顆專用芯片上達(dá)到了99%的識(shí)別精度。
學(xué)習(xí)模塊
當(dāng)系統(tǒng)處于學(xué)習(xí)功能狀態(tài)時(shí),系統(tǒng)檢測(cè)紅外遙控碼。根據(jù)用戶所選按鍵,將接收到的紅外遙控信息存到該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中。當(dāng)下次按下該按鍵時(shí),就可從該按鍵對(duì)應(yīng)的Flash數(shù)據(jù)區(qū)中取出新學(xué)習(xí)到的紅外遙控碼。
熱門點(diǎn)擊
- EMG在語(yǔ)音信號(hào)識(shí)別中的應(yīng)用
- 一種基于圖像處理的自動(dòng)調(diào)焦系統(tǒng)
- 雙口RAM通訊在電機(jī)控制中的應(yīng)用
- 二相步進(jìn)電機(jī)驅(qū)動(dòng)芯片TA8435H及其應(yīng)用
- 多功能車輛總線控制器芯片(MVBC)的幀收發(fā)
- 煤礦井下采區(qū)無人值守變電所微機(jī)保護(hù)系統(tǒng)的研究
- CD4051和AD595制作的溫度采集儀
- 基于MSP430和USB的數(shù)據(jù)采集系統(tǒng)
- 運(yùn)動(dòng)員起跑反應(yīng)時(shí)無線測(cè)量系統(tǒng)的研究和實(shí)現(xiàn)
- 白噪聲序列檢驗(yàn)的小波分析方法
推薦技術(shù)資料
- 滑雪繞樁機(jī)器人
- 本例是一款非常有趣,同時(shí)又有一定調(diào)試難度的玩法。EDE2116AB... [詳細(xì)]
- STGWA30IH160DF2
- 最新一代低功耗內(nèi)存LPDDR6
- EMI CISPR25 CLA
- Android 和Linux
- 汽車混合信號(hào)微控制器̴
- 4A,6A 3KVRMS雙通道隔離的閘門驅(qū)動(dòng)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究