新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于Windows CE的語音口令識別系統(tǒng)的設(shè)計

基于Windows CE的語音口令識別系統(tǒng)的設(shè)計

作者: 時間:2011-01-10 來源:網(wǎng)絡(luò) 收藏

  

  圖2 信號的采集和處理流程圖。

  主程序在配置好初始化參數(shù)后,建立一個子線程,建立子線程有利于將靜音檢測的復雜運算過程和主程序的數(shù)據(jù)采集過程分開進行,以確保在靜音檢測時不會丟掉數(shù)據(jù)。與此同時,主程序開始采集數(shù)據(jù),并存入到緩沖區(qū)。當預先設(shè)定好的緩沖區(qū)內(nèi)的數(shù)據(jù)采集滿后,會將所采集的數(shù)據(jù)交給子線程,子線程做靜音檢測判斷。主程序會依然繼續(xù)重新采集新的數(shù)據(jù)。對于子線程,子線程的任務(wù)是等待主程序發(fā)出命令,然后對數(shù)據(jù)做處理。如果檢測到有語音口令的開始,會繼續(xù)采集數(shù)據(jù),得到完整命令語音口令信號,提取相應(yīng)的特征參數(shù)。

  具體程序中有如下幾個主要過程:

 ?。?)初始化參數(shù)設(shè)置:

 ?。╝)FuncReturn=waveInOpen((Record_Buffer_Manager.hWaveIn),WAVE_MAPPER,wFormat,(LONG)(RecordBufferFillProc),(DWORD)this,CALLBACK_FUNCTION);//首先要調(diào)用API函數(shù)打開音頻設(shè)備接口,并且設(shè)置相應(yīng)的回調(diào)(CALLBACK)函數(shù)(回調(diào)函數(shù)是操作系統(tǒng)在每次緩沖區(qū)存滿后會自動訪問的一個特殊函數(shù))

  (b)Thread_process=AfxBeginThread((AFX_THREADPROC)RecordThreadProc,(LPVOID)this,THREAD_PRIORITY_NORMAL,0,0,0);//要為其單獨建立一個線程,為了實現(xiàn)靜音檢測,在混雜著環(huán)境噪聲的前提下,找出語音口令信號。

  (c)FuncReturn=waveInStart(Record_Buffer_Manager.hWaveIn);//打開音頻數(shù)據(jù)流,開始錄音。(緩沖區(qū)存滿后,系統(tǒng)會自動訪問回調(diào)函數(shù))

 ?。?)主程序與子線程通信

  SetEvent(pRecord-》hRecordEvent );//發(fā)出信號,使得子線程函數(shù)得到命令,對采集到的音頻流進行靜音的檢測判斷。

 ?。?)在子線程內(nèi)接收消息作出反應(yīng)

  WaitForSingleObject(pRecord-》hRecordEvent,INFINITE);ResetEvent(pRecord-》hRecordEvent);//與回調(diào)函數(shù)的信號發(fā)出程序?qū)?yīng),接受信號,并重新設(shè)定狀態(tài),等待下一次信號。

  ……

  pRecord-》ProcessData((SAMPLE_TYPE *)pRecord-》pLeftData,……);//將得到的數(shù)據(jù)段進行處理,也就是真正執(zhí)行靜音檢測的部分。

 ?。?)得到完整語音口令信號后提取特征參數(shù)。

  2 結(jié)束語

  論文建立了一種基于Windows CE的語音口令識別系統(tǒng),并且對上升、下降等14條口令進行測試。實驗結(jié)果表明,本語音口令識別系統(tǒng)達到了實時的要求,可以廣泛應(yīng)用于便攜式設(shè)備中。


上一頁 1 2 3 4 下一頁

關(guān)鍵詞: 音頻

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉