新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Windows CE的語音口令識別系統的設計

        基于Windows CE的語音口令識別系統的設計

        作者: 時間:2011-01-10 來源:網絡 收藏

          

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

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

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

          (1)初始化參數設置:

          (a)FuncReturn=waveInOpen((Record_Buffer_Manager.hWaveIn),WAVE_MAPPER,wFormat,(LONG)(RecordBufferFillProc),(DWORD)this,CALLBACK_FUNCTION);//首先要調用API函數打開音頻設備接口,并且設置相應的回調(CALLBACK)函數(回調函數是操作系統在每次緩沖區存滿后會自動訪問的一個特殊函數)

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

          (c)FuncReturn=waveInStart(Record_Buffer_Manager.hWaveIn);//打開音頻數據流,開始錄音。(緩沖區存滿后,系統會自動訪問回調函數)

          (2)主程序與子線程通信

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

          (3)在子線程內接收消息作出反應

          WaitForSingleObject(pRecord-》hRecordEvent,INFINITE);ResetEvent(pRecord-》hRecordEvent);//與回調函數的信號發出程序對應,接受信號,并重新設定狀態,等待下一次信號。

          ……

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

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

          2 結束語

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


        上一頁 1 2 3 4 下一頁

        關鍵詞: 音頻

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 钦州市| 唐山市| 社旗县| 基隆市| 景宁| 丹江口市| 彰化县| 苍梧县| 阳曲县| 南昌市| 南溪县| 延边| 津南区| 昌吉市| 固安县| 秀山| 富源县| 游戏| 阿勒泰市| 义乌市| 抚顺市| 鸡泽县| 南部县| 旌德县| 伊通| 察隅县| 浦城县| 东丰县| 桑日县| 嘉兴市| 阿克陶县| 确山县| 都兰县| 东至县| 巴楚县| 绥中县| 怀远县| 凤凰县| 从江县| 清苑县| 三门县|