施 眾,劉 毅
?
基于語音控制的穿戴式家電遙控器
施 眾,劉 毅
(漳州職業(yè)技術(shù)學(xué)院電子工程系,福建漳州363000)
利用STM32芯片設(shè)計(jì)了一款基于語音控制的穿戴式家電遙控器。設(shè)計(jì)采用了LD3320芯片完成語音識(shí)別功能,能夠?qū)Ψ翘囟ㄈ寺曔M(jìn)行識(shí)別和處理,能夠?qū)W習(xí)并保存紅外遙控指令,從而實(shí)現(xiàn)用自然語言來開啟、關(guān)閉或調(diào)節(jié)電器設(shè)備。此外,設(shè)計(jì)中對(duì)元件尺寸進(jìn)行了控制,能夠作為耳戴式或者夾領(lǐng)式可穿戴裝備,便于使用。
STM32;LD3320;語音識(shí)別;紅外遙控;可穿戴設(shè)備
穿戴式裝備是可以穿著或者佩戴在身上的一系列智能產(chǎn)品的總稱,與傳統(tǒng)技術(shù)設(shè)備相比,它最大的優(yōu)勢(shì)在于便攜性,依附于人身,以“潤(rùn)物細(xì)無聲”的形式為日常生活提供更多的便利。
語音控制是指可以實(shí)現(xiàn)用自然語言來開啟、關(guān)閉或調(diào)節(jié)電器設(shè)備,特別對(duì)家用電器的控制有重大實(shí)用意義和市場(chǎng)前景。當(dāng)前阻礙語音控制發(fā)展的難點(diǎn)在識(shí)別率和抗干擾上[1],而穿戴式設(shè)計(jì)及特定的算法就能有效解決這些問題。利用制成耳機(jī)、眼鏡、掛墜或手表的穿戴式遙控器,通過語音識(shí)別技術(shù)及內(nèi)置通信編碼庫(kù),配合紅外單元就可對(duì)所有家電實(shí)現(xiàn)語音控制。
本設(shè)計(jì)是一種利用MCU驅(qū)動(dòng)語音識(shí)別芯片和紅外收發(fā)模塊實(shí)現(xiàn)的穿戴式語音通用家電控制器。
1.1 STM32F103系列微控制器
STM32F103系列芯片是意法半導(dǎo)體公司(STMicroelectronics)出品的基于Cortex-M3內(nèi)核的32位ARM微控制器,是STM32F1系列中的“增強(qiáng)型”產(chǎn)品。該系列芯片時(shí)鐘頻率最高可到72MHz,內(nèi)置閃存最大可到512K字節(jié),集成度高,具有數(shù)量眾多的外設(shè)及功能,如FSMC、SPI、IIC、RTC、DMA等等。此外,stm32還具有優(yōu)秀的實(shí)時(shí)性能,68+16個(gè)中斷,16個(gè)可編程優(yōu)先等級(jí),且所有引腳都可以作為中斷輸入。
意法半導(dǎo)體在推出STM32微控制器時(shí),也同時(shí)提供了一套完整的固件開發(fā)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微控制器所有外設(shè)的性能特征。該函數(shù)庫(kù)還包括每一個(gè)外設(shè)的驅(qū)動(dòng)描述和應(yīng)用實(shí)例。通過使用本固件函數(shù)庫(kù),可以使用戶從復(fù)雜冗余的底層寄存器操作中解放出來,無需深入掌握細(xì)節(jié),也可以輕松應(yīng)用每一個(gè)外設(shè)。因此,使用本固態(tài)函數(shù)庫(kù)可以大大減少用戶的程序編寫時(shí)間,進(jìn)而降低開發(fā)成本。
1.2 語音識(shí)別芯片LD3320
語音識(shí)別的核心技術(shù)就是語音特征的提取,首先通過訓(xùn)練從足夠多的輸入樣本中提取特征,通過特征建立識(shí)別數(shù)據(jù)庫(kù),在進(jìn)行識(shí)別時(shí),將輸入語音的特征與數(shù)據(jù)庫(kù)中的參考模型進(jìn)行相似度比較,從而找出最接近的一項(xiàng)。語音識(shí)別技術(shù)按識(shí)別對(duì)象可分為特定人語音識(shí)別和非特定人語音識(shí)別兩大類。前者簡(jiǎn)單來說就是僅能識(shí)別一個(gè)人的聲音,后者則是適用于廣泛人群,具有較大的應(yīng)用價(jià)值,但相應(yīng)的訓(xùn)練任務(wù)繁重,相似匹配算法也較為復(fù)雜。
LD3320芯片是一款語音識(shí)別專用芯片,由ICRoute公司設(shè)計(jì)生產(chǎn)。該芯片集成了語音識(shí)別處理器和一些外部電路,包括AD、DA 轉(zhuǎn)換器、麥克風(fēng)接口、聲音輸出接口等。該芯片內(nèi)置非特定人語音識(shí)別算法,無須用戶錄音訓(xùn)練就可以完成識(shí)別,準(zhǔn)確率達(dá)95%。
1.3 家電紅外編碼
如圖1所示,紅外遙控一般采用2種調(diào)制方式,以RC5協(xié)議為代表的PPM(脈沖位置調(diào)制)方式和以NEC協(xié)議為代表的PWM(脈沖寬度調(diào)制)方式。
圖1 紅外調(diào)制方式
PPM方式,即以發(fā)射載波信號(hào)的位置不同來表示“1”和“0”。如RC5協(xié)議中,每個(gè)信號(hào)位周期為1.778毫秒,如果先發(fā)射889微秒載波,再停止發(fā)射889微秒,表示邏輯“0”,反之,則表示邏輯“1”。
PWM方式,即以發(fā)射紅外載波的占空比代表“0”和“1”,發(fā)射載波的時(shí)間是固定的,空閑時(shí)間的長(zhǎng)度代表不同的邏輯。如NEC協(xié)議中,用 0.56ms的載波+0.565ms的空閑時(shí)間代表數(shù)據(jù)中的0,用0.565ms載波+1.685ms的空閑時(shí)間代表數(shù)據(jù)中的1。
除了調(diào)制方式不同外,不同類型、不同品牌、不同型號(hào)的家電遙控器往往采用了不同的傳輸協(xié)議,常用的紅外線傳輸協(xié)議有ITT協(xié)議、NEC協(xié)議、Sharp協(xié)議、RC5協(xié)議、RC6協(xié)議等等。協(xié)議一般由引導(dǎo)碼、用戶碼、數(shù)據(jù)碼、重復(fù)碼、反碼、結(jié)束碼等部分構(gòu)成。此外,在同一個(gè)遙控器中具有多個(gè)按鍵,不同按鍵采用不同的編碼加以區(qū)分。功能復(fù)雜的電器如空調(diào),甚至可能同一個(gè)按鍵,在不同狀態(tài)下發(fā)送的編碼不一樣。
由此可見,一個(gè)真正意義上的“萬能遙控器”需要龐大的數(shù)據(jù)庫(kù)作為支撐。市面上的電視萬能遙控器、空調(diào)萬能遙控器等,針對(duì)性地存儲(chǔ)了部分大品牌制造商的常用編碼庫(kù),只適用于其內(nèi)部所保存的品牌、型號(hào)的電器,如果制造商發(fā)布了新的家電,一般也無法完美兼容;另一方面,以手機(jī)app為載體的萬能遙控軟件,則是將數(shù)據(jù)庫(kù)保存在云端,手機(jī)通過網(wǎng)絡(luò)下載編碼并對(duì)用戶電器進(jìn)行匹配嘗試,優(yōu)點(diǎn)在于數(shù)據(jù)庫(kù)可以不斷更新,具有較長(zhǎng)生命力。
穿戴式裝備受到尺寸、功能和場(chǎng)合等限制,存儲(chǔ)容量較少,在操作也必須簡(jiǎn)潔易用,故上述兩種方案都受到限制。本設(shè)計(jì)采用學(xué)習(xí)型遙控方案,用戶可以方便地訓(xùn)練產(chǎn)品學(xué)習(xí)家中所有遙控器的紅外編碼,從而有的放矢地起到替代作用。
2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
如圖2所示,本設(shè)計(jì)由語音識(shí)別、紅外接受部分、紅外發(fā)射部分和外部存儲(chǔ)器組成。用戶發(fā)出的語音指令通過麥克風(fēng)送到語音識(shí)別模塊,再將辨識(shí)結(jié)果送至MCU,控制紅外發(fā)射模塊發(fā)出紅外遙控指令;紅外接收模塊可以用來接收家電遙控信號(hào),由MCU進(jìn)行識(shí)別和學(xué)習(xí),并保存在外部EEPROM中。
圖2 系統(tǒng)結(jié)構(gòu)圖
此外,硬件上還設(shè)有3個(gè)物理按鍵,分別是電源鍵、語音識(shí)別啟動(dòng)鍵和學(xué)習(xí)啟動(dòng)鍵。
2.2 系統(tǒng)電路圖
本設(shè)計(jì)中,紅外接收電路采用一體化接收頭、紅外發(fā)射電路采用普通的紅外二極管,外部EEPROM采用24c16芯片,以上器件與MCU的連接均為常用電路,在此不再?gòu)?fù)述。
語音識(shí)別芯片LD3320采用串行方式,連接到STM32的SPI1(串行外設(shè)接口),其外圍電路如圖3所示,其中MICN和MICP連接麥克風(fēng)采音,SDI、SDO和SDCK引腳分別連接到STM32芯片的PA7、PA6、PA5引腳(SPI1),INTB連接到STM32的任一IO口并配置成外部中斷。
圖3 LD3320外圍電路
3.1語音識(shí)別程序設(shè)計(jì)
3.1.1 SPI配置
STM32F103內(nèi)置兩路SPI接口,能夠直接與LD3320芯片的串行接口通信。在使用前,必須對(duì)SPI接口進(jìn)行初始化操作,令其工作在2線全雙工通信的主模式下,幀格式配置為8位數(shù)據(jù)位,時(shí)鐘空閑時(shí)為“1”,從高位開始傳輸數(shù)據(jù),配置函數(shù)如下:
void SPI_Config(void)
{
SPI_InitTypeDef SPI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);
SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;
SPI_InitStructure.SPI_CPHA=SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_64;
SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial=7;
SPI_Init(SPI2,&SPI_InitStructure);
SPI_Cmd(SPI2,ENABLE);
}
3.2 語音識(shí)別環(huán)節(jié)設(shè)計(jì)
如圖4,根據(jù)LD3320開發(fā)手冊(cè),一次完整的語音識(shí)別流程包含如下步驟:LD3320芯片初始化、添加關(guān)鍵字(詞),啟動(dòng)識(shí)別,響應(yīng)中斷四個(gè)環(huán)節(jié)。初始化環(huán)節(jié)負(fù)責(zé)配置芯片的工作模式、時(shí)鐘頻率、FIFO等相關(guān)內(nèi)容[3]。隨后可以向芯片添加候選關(guān)鍵字,每次識(shí)別最多可以設(shè)置 50項(xiàng)候選關(guān)鍵字,可以是單字,詞組或短句,長(zhǎng)度為不超過 10個(gè)漢字或者79個(gè)字節(jié)的拼音串。啟動(dòng)識(shí)別之前還可以設(shè)置ADC增益等參數(shù),一旦啟動(dòng),只要麥克風(fēng)采集到聲音,不管是否識(shí)別出正常結(jié)果,都會(huì)產(chǎn)生一個(gè)中斷信號(hào),用戶可在中斷中獲取當(dāng)前的識(shí)別狀態(tài)。
圖4 語音識(shí)別流程圖
LD3320內(nèi)部寄存器C5、C7、C9、CB用以保存識(shí)別結(jié)果,其中C5用以保存最佳結(jié)果。當(dāng)芯片識(shí)別出語音內(nèi)容時(shí),會(huì)將對(duì)應(yīng)的關(guān)鍵字ID保存到寄存器C5中,若識(shí)別出多個(gè)候選關(guān)鍵字,將根據(jù)各關(guān)鍵字的匹配程度保存到不同寄存器中。實(shí)際使用中,可以忽略其他三個(gè)寄存器的值,只采用寄存器C5中保存的關(guān)鍵字。
為了提高語音識(shí)別正確率,程序上采用了如下幾種方法加以輔助:
①如果某次識(shí)別的候選關(guān)鍵字不足50個(gè),就添加“垃圾關(guān)鍵詞”,用以吸收錯(cuò)誤識(shí)別。
②關(guān)鍵字?jǐn)?shù)量不超過50個(gè)的前提下,為同一條指令設(shè)置具有類似發(fā)音的多個(gè)拼音,提高容錯(cuò)率。
③語音命令增加“多級(jí)菜單模式”,詳見下文。
3.3 紅外信號(hào)編解碼設(shè)計(jì)
編碼方面,紅外遙控通常采用38.5KHz信號(hào)作為載波信號(hào),其周期約為26微秒,可直接使用13微秒定時(shí)中斷控制生成,用另一個(gè)定時(shí)器控制信號(hào)持續(xù)時(shí)間。
STM32F103系列MCU內(nèi)部具有6~8個(gè)定時(shí)器,其中TIM1和TIM8是高級(jí)控制定時(shí)器,T2~T5為通用定時(shí)器,T6、T7為基本定時(shí)器。定時(shí)器時(shí)鐘頻率最高可達(dá)72MHz,任意定時(shí)器的性能均可以輕松達(dá)到紅外遙控的要求,考慮到后續(xù)系統(tǒng)功能的擴(kuò)展,采用通用定時(shí)器T2和T3進(jìn)行該項(xiàng)任務(wù)。
解碼方面,硬件上通常采用一體化紅外接收頭實(shí)現(xiàn),其內(nèi)部包括紅外接收管、放大器、限幅器、帶通濾波器、積分電路、比較器等。紅外信號(hào)進(jìn)入接收頭后,其輸出端還原出信號(hào)波形,傳輸?shù)組CU進(jìn)行處理。
根據(jù)這一特點(diǎn),本設(shè)計(jì)將接收頭信號(hào)輸出引腳作為外部中斷信號(hào),并將對(duì)應(yīng)的中斷配置為EXTI_Trigger_Rising_Falling,信號(hào)的上升沿與下降沿均可觸發(fā)中斷,在中斷中啟動(dòng)定時(shí)器計(jì)數(shù),以測(cè)量每一次信號(hào)的寬度。對(duì)應(yīng)的中斷配置程序如下:
EXTI_InitStructure.EXTI_Line = EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
3.4 紅外學(xué)習(xí)方法設(shè)計(jì)
學(xué)習(xí)型紅外遙控器從信號(hào)保存方法上分為固定編碼型和波形拷貝型兩種,前者需要分析所學(xué)習(xí)的是何種協(xié)議的紅外信號(hào),分析并保存編碼信息,易于保存,其缺點(diǎn)是只能針對(duì)特定的紅外編碼協(xié)議進(jìn)行學(xué)習(xí);后者則是對(duì)任意協(xié)議通用,把所有紅外信號(hào)都看成不同周期、不同占空比的的0 和1組合進(jìn)行保存[4],通用性極強(qiáng),但是存儲(chǔ)容量要求較高。
以NEC協(xié)議為例,首次發(fā)送的是9ms的高電平脈沖,其后是4.5ms的低電平,接下來就是8位地址碼、8位地址碼反碼、8位命令碼、8位命令碼反碼(若持續(xù)按住按鍵時(shí),發(fā)完一組編碼后每隔約110毫秒發(fā)送1次重復(fù)碼)。
如果采用波形拷貝法,由于每個(gè)位都包含1個(gè)高電平和1個(gè)低電平,總共需要保存66個(gè)脈寬,單個(gè)脈寬需要用int型變量即2個(gè)字節(jié)才能保存,合計(jì)132字節(jié),經(jīng)過一定的壓縮算法[4]之后,仍需15字節(jié)左右的空間。反之,如果采用固定編碼法,只要判斷出紅外信號(hào)屬于NEC協(xié)議,僅僅需要保存8位地址碼和8位命令碼,合計(jì)2個(gè)字節(jié)空間就足夠了。
本設(shè)計(jì)作為穿戴式設(shè)備,對(duì)產(chǎn)品尺寸有較高要求,無法添加大容量存儲(chǔ)芯片。但是另一方面,又希望增強(qiáng)設(shè)備適應(yīng)能力,因此采用二者結(jié)合的方法。首先在程序中編寫了屬于ITT、NEC、Sharp、RC5、RC6等多種常見紅外協(xié)議的判別函數(shù),學(xué)習(xí)紅外信號(hào)時(shí),首先判斷其是否屬于已知的協(xié)議。如果是,就采用固定編碼法,用1個(gè)字節(jié)保存協(xié)議類型,用2~4字節(jié)保存編碼信息;如果是未知協(xié)議,壓縮計(jì)算后完整保存全部波形。
3.5 用戶體驗(yàn)設(shè)計(jì)
語音遙控器在使用中最容易出現(xiàn)的問題,就是操作混亂:用戶家庭中可能有多臺(tái)電視、空調(diào)、風(fēng)扇、投影儀等諸多設(shè)備需要遙控,很多操作指令可能是雷同的,比如“關(guān)機(jī)”命令,所有設(shè)備都有,必須設(shè)計(jì)一套條理清晰且易于理解的語音方案。
前面提到,語音芯片LD3320每次識(shí)別都允許配置50個(gè)候選關(guān)鍵字,借助著一點(diǎn),本設(shè)計(jì)以“多級(jí)菜單切換”來實(shí)現(xiàn)用戶對(duì)設(shè)備的選擇。如圖5所示,用戶首先選擇當(dāng)前“場(chǎng)景”,然后選擇“設(shè)備”,最后選擇“功能”?!肮δ堋辈糠值膬?nèi)容是根據(jù)“設(shè)備”而改變的。每一級(jí)菜單最多可以有50種選擇,能夠滿足大部分家電的需要。
圖5 語音菜單示意圖
穿戴式裝備的佩戴方式是多種多樣的,有手環(huán)、手表、項(xiàng)鏈、衣服、衣服配件、耳戴型等等。本設(shè)計(jì)的語音功能意味著設(shè)備佩戴后必須能貼近頭部,才能保證采音的質(zhì)量,增強(qiáng)識(shí)別率。
為了實(shí)現(xiàn)可穿戴,應(yīng)該盡量縮小產(chǎn)品尺寸。在電路上,大多數(shù)元件都可以購(gòu)買或定制專門的小尺寸貼片元件,主要的體積受限于內(nèi)部芯片的大?。合到y(tǒng)MCU、語音識(shí)別芯片LD3320和EEPROM芯片。其中,為了減小體積,MCU可以選擇STM32F103的小容量產(chǎn)品,尺寸約為7mm×7mm ,LD3320大小約為7mm×7mm,24C16芯片大小約為6mm×5mm,三塊芯片加上外圍電路,采用雙面PCB板,尺寸大約為3.5CM×1.5CM。
在能量供給上,MCU在空閑時(shí)可進(jìn)入休眠模式,并關(guān)閉語音芯片電源,靜耗可控制在40μA左右,采用100MAH左右小型聚合鋰電池供電即可實(shí)現(xiàn)長(zhǎng)時(shí)續(xù)航,鋰電池的尺寸約為3CM×1CM,充電電路尺寸約2.5cm×2cm.
綜上,本系統(tǒng)外觀設(shè)計(jì)成類似耳戴式或夾領(lǐng)式藍(lán)牙耳機(jī)的樣子在尺寸上是可行的,總體尺寸約5CM×2.5CM。
本文設(shè)計(jì)了一種可穿戴式的通用家電語音遙控器,利用語音識(shí)別芯片LD3320實(shí)現(xiàn)非特定語音的識(shí)別,并采用紅外學(xué)習(xí)技術(shù),可以對(duì)常用的紅外遙控編碼進(jìn)行識(shí)別、分析和保存。下一步的研究方向是增加wifi通信功能,可以根據(jù)家電型號(hào)到服務(wù)器獲取對(duì)應(yīng)的編碼信息。
[1] 劉幺和, 宋庭新. 語音識(shí)別與控制應(yīng)用技術(shù)[M]. 北京: 科學(xué)出版社, 2008.
[2] 趙力. 語音信號(hào)處理(第2版)[M].北京: 機(jī)械工業(yè)出版社, 2009.
[3] 金鑫, 田犇, 闕大順. 基于LD3320的語音控制系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)[J]. 電腦與信息技術(shù), 2011(12): 22-25.
[4] 蘆健, 彭軍, 顏?zhàn)杂? 陳文薌. 自學(xué)習(xí)型智能紅外遙控器設(shè)計(jì)[J]. 國(guó)外電子測(cè)量技術(shù), 2006(8): 63-66.
[5] 李遲生. 智能遙控器的設(shè)計(jì)[J]. 電子技術(shù)應(yīng)用, 1997(3): 38-40.
[6] 郝建國(guó). 家用電器遙控系統(tǒng)集成電路大全[M]. 北京: 人民郵電出版社, 1996.
(責(zé)任編輯:季平)
Wearable home appliance remote controller based on voice control
SHI Zhong, LIU Yi
(Electronic Engineering Department, Zhangzhou Institute of Technology, Zhangzhou 363000, China)
In this paper, the STM32 chip is used to design a wearable home appliance remote controller based on voice control. Design of the chip ld3320 complete voice recognition function, to the speaker independent voice for recognition and processing, to learn and to save the infrared remote control commands, in order to achieve in natural language to open, closed or adjust the electrical equipment. In addition, the design of the component size control, can be used as ear or clip collar type wearable equipment, easy to use.
STM32;LD3320;ASR;infrared remote control;wearable devices
TN912.34
A
1673-1417(2016)03-0011-06 doi:10.13908/j.cnki.issn1673-1417.2016.03.0003
2016-03-10
福建省教育廳科技項(xiàng)目(JB14184)。
施眾(1982—), 男,福建漳州人,講師,碩士,研究方向:電子與通信。