于偉
摘要:文中介紹了一種非特定語音識(shí)別模塊的設(shè)計(jì)與實(shí)現(xiàn)。核心處理器采用ST公司的ARM 32位的Cortex-M3 CPU,其型號(hào)為STM32F103ZET6。該設(shè)計(jì)采用芯片LD3320對(duì)非特定人的語音進(jìn)行識(shí)別,主控制器采用中斷方式工作,通過配置主控制器的相關(guān)庫(kù)函數(shù)并編寫中斷函數(shù)來識(shí)別語音信息。實(shí)驗(yàn)證明,該語音識(shí)別模塊具有高實(shí)時(shí)性和高識(shí)別率。
關(guān)鍵詞:STM32;非特定語音識(shí)別;LD3320;中斷;庫(kù)函數(shù)
0 引言
語言是人類交流信息最自然、最有效的手段。長(zhǎng)期以來,讓機(jī)器“聽懂”人類語言來實(shí)現(xiàn)語音控制一直是人機(jī)交互領(lǐng)域和智能控制領(lǐng)域研究的重點(diǎn)和難點(diǎn)。語音交互憑借其高效、自然、靈活的優(yōu)點(diǎn)越來越受到科研人員的關(guān)注。語音識(shí)別技術(shù)是機(jī)器的“聽覺系統(tǒng)”,機(jī)器通過識(shí)別和理解過程將人類語音信號(hào)轉(zhuǎn)換為相應(yīng)的文本或命令信息。
1 模塊的整體架構(gòu)
現(xiàn)有的語音識(shí)別技術(shù)按照識(shí)別對(duì)象可以分為特定人識(shí)別和非特定人識(shí)別。特定人識(shí)別是指識(shí)別對(duì)象為專門的人,非特定人識(shí)別是指識(shí)別對(duì)象不針對(duì)特定音色音調(diào)的人,不需要進(jìn)行錄音和語音訓(xùn)練,只要說出同一個(gè)拼音的詞語,就可以識(shí)別。
本設(shè)計(jì)的語音識(shí)別對(duì)象為非特定人識(shí)別,以嵌入式微處理器為核心,外圍加語音識(shí)別芯片LD3320及相關(guān)電路構(gòu)成。
2 硬件電路設(shè)計(jì)
2.1 主控制器
主控制器選用ST公司的STM32F103ZET6芯片,該芯片為ARM Cortex-M3 CPU,工作頻率為72MHz,多達(dá)112個(gè)快速I/O端口,具有高性能、低功耗、低電壓等優(yōu)點(diǎn)。
2.2 語音識(shí)別電路
語音識(shí)別電路采用ICroute公司的LD3320芯片,該芯片集成了語音識(shí)別處理器和一些外部電路[1],可實(shí)現(xiàn)語音識(shí)別/聲控/人機(jī)對(duì)話功能。而且識(shí)別的的關(guān)鍵詞語列表是可以動(dòng)態(tài)編輯的。
2.3 微處理器與語音識(shí)別電路的連接
LD3320的8位數(shù)據(jù)線與STM32的PA0~PA7進(jìn)行并行通信;控制端口,分別連接PC0、PC3、PC2;A0連接PC1,進(jìn)行數(shù)據(jù)或地址的選擇;中斷請(qǐng)求INTB連接到STM32的一個(gè)中斷線PF9上。進(jìn)行語音識(shí)別時(shí),當(dāng)LD3320檢測(cè)到有效語音時(shí),產(chǎn)生中斷供主控制器進(jìn)一步處理。
3 軟件設(shè)計(jì)
3.1 主控制器中斷的設(shè)置
由于系統(tǒng)采用中斷方式工作,因此需配置相關(guān)的庫(kù)函數(shù)來對(duì)主控制器的外部中斷進(jìn)行相應(yīng)的設(shè)置:
1)初始化輸入I/O口:
GPIO_Struct.GPIO_Pin=GPIO_Pin_9;
2)開啟I/O的復(fù)用時(shí)鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
3)設(shè)置I/O口與中斷線的關(guān)系:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOF, GPIO_PinSource9);
4) 初始化線上中斷:
通過函數(shù)EXTI_Init(&EXTI_Struct) 來實(shí)現(xiàn)。
5)配置中斷分組,NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1),設(shè)置NVIC的中斷優(yōu)先級(jí),并使能中斷。
6)編寫中斷服務(wù)函數(shù)。
通過以上幾個(gè)步驟的設(shè)置就可以正常使用外部中斷了。
3.2 語音識(shí)別程序設(shè)計(jì)
語音識(shí)別程序的設(shè)計(jì)參考了LD3320開發(fā)手冊(cè)[2],其工作流程圖如圖3:
1)語音識(shí)別初始化
初始化包括通用初始化和語音識(shí)別用初始化,通過初始化程序來進(jìn)行軟件復(fù)位、模式設(shè)定、時(shí)鐘頻率設(shè)定、FIFO設(shè)定等。
2) 添加識(shí)別語句到LD3320芯片中
LD3320每次最多可以設(shè)置50項(xiàng)候選識(shí)別語句,每個(gè)識(shí)別句長(zhǎng)度不超過10個(gè)漢字或者79個(gè)字節(jié)的拼音串,對(duì)應(yīng)一個(gè)特定的Index數(shù)值。如本設(shè)計(jì)中的識(shí)別詞語列表如表1:
3)語音采集
麥克風(fēng)采集到聲音,無論是否識(shí)別出正常結(jié)果,都會(huì)產(chǎn)生一個(gè)中斷信號(hào)。主控制器讀取寄存器的值分析結(jié)果。
4)啟動(dòng)ASR識(shí)別
設(shè)置相關(guān)的寄存器,即可啟動(dòng)語音識(shí)別,其中寄存器BA的值如果是1-4表明有識(shí)別結(jié)果。識(shí)別結(jié)果是語句在識(shí)別詞語列表中Index值。
4 性能測(cè)試
為了驗(yàn)證本設(shè)計(jì)的語音識(shí)別率,將主控制器通過串口和PC機(jī)相連,非特定人在距離麥克風(fēng)30cm的位置發(fā)出一系列指令,PC機(jī)上采用串口調(diào)試助手顯示識(shí)別結(jié)果。測(cè)試數(shù)據(jù)表明該設(shè)計(jì)對(duì)非特定人的語音識(shí)別率高達(dá)90%以上。
結(jié)論
本文以嵌入式微控制器為核心,采用主流高性能語音識(shí)別處理芯片,設(shè)計(jì)了一種語音識(shí)別模塊,對(duì)模塊中各個(gè)組成部分進(jìn)行了詳細(xì)的介紹。實(shí)驗(yàn)證明,該模塊穩(wěn)定性好,語音識(shí)別率高。另外由于其體積小、功耗低、可靠性高,可以應(yīng)用于智能語音玩具、嵌入式控制設(shè)備,智能家居及機(jī)器人等領(lǐng)域,因此具有廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1]. ICRoute. LD332X數(shù)據(jù)手冊(cè)[EB/OL]. [2010-03-10]. http://www.icroute.com/web cn/DownLoad.html.
[2]. ICRoute.LD332X開發(fā)手冊(cè)[EB/OL].[2010-03-10].http://www.icroute.com/web cn/DownLoad.html
[3]. 蘇鵬,周風(fēng)余,陳磊. 基于STM32的嵌入式語音識(shí)別模塊設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng).2011(2):42-45.
[4]. 任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II原理及應(yīng)用[M].2版.北京:北京航空航天大學(xué)出版社,2009