蔣紅梅 劉沛
【摘 要】針對(duì)傳統(tǒng)的開(kāi)關(guān)按鍵和紅外遙控的家電控制方式的不足,本文設(shè)計(jì)了一種基于SYN7318的語(yǔ)音控制家居系統(tǒng),該系統(tǒng)運(yùn)用單片機(jī),結(jié)合語(yǔ)音識(shí)別和藍(lán)牙無(wú)線傳輸模塊,通過(guò)語(yǔ)音來(lái)控制家用電器的開(kāi)啟和關(guān)閉。該系統(tǒng)識(shí)別率高、功耗低、使用方便,從而使現(xiàn)代居家生活更加愜意舒心。
【關(guān)鍵詞】單片機(jī);SYN7318;語(yǔ)音控制
中圖分類號(hào): TP274.2 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)11-0110-002
DOI:10.19694/j.cnki.issn2095-2457.2018.11.046
【Abstract】To the deficiency of the traditional house appliances control methods for switch button and infrared remote control, the design of voice control house system based on SYN7318 is introduced. The system uses microcontroller, combined with speech recognition module and bluetooth wireless transmission module, The system controls the turn on and off of house appliances by voice. The system has high recognition rate, low power and?convenience, so that modern home life is more comfortable.
【Key words】Microcontroller; SYN7318; Speech control
0 引言
人類最直接有效的交流方式就是語(yǔ)言,可通過(guò)聲波表達(dá)彼此的想法、思想等。在電子工業(yè)高速發(fā)展的今天,人類與機(jī)器的信息交互已成為一種發(fā)展趨勢(shì),各種場(chǎng)合的語(yǔ)音交互系統(tǒng)日益完善。目前,語(yǔ)音識(shí)別技術(shù)和智能家居相結(jié)合還處于探索階段[1]。本文選用STC公司的STC12C5A60S2系列單片機(jī)作為系統(tǒng)的核心控制,采用SYN7318作為語(yǔ)音識(shí)別芯片和arduino UNO作為無(wú)線藍(lán)牙傳輸芯片,通過(guò)語(yǔ)音控制指阿令控制家用電器的開(kāi)關(guān),本系統(tǒng)具有識(shí)別率高,成本低,使用方便、快捷特點(diǎn)。
1 系統(tǒng)硬件設(shè)計(jì)
1.1 整體方案設(shè)計(jì)
系統(tǒng)主要由語(yǔ)音模塊、藍(lán)牙模塊和家電控制模塊組成,主要包含STC12C5A60S2單片機(jī)、語(yǔ)音模塊SYN7318、藍(lán)牙透?jìng)髂KDX-BT05和arduino UNO。系統(tǒng)先通過(guò)識(shí)別喚醒指令如“大管家”激活語(yǔ)音識(shí)別模塊,進(jìn)入識(shí)別指令狀態(tài),接著,主人發(fā)出控制指令被SYN7318識(shí)別后,并與本身的數(shù)據(jù)庫(kù)進(jìn)行比較,通過(guò)UART將識(shí)別的標(biāo)記和匹配的準(zhǔn)確度發(fā)送給單片機(jī),單片機(jī)通過(guò)對(duì)語(yǔ)音模塊發(fā)來(lái)的指令進(jìn)行相應(yīng)的命令的控制,如打開(kāi)臥室燈,最后,通過(guò)藍(lán)牙發(fā)送出去,同時(shí)在藍(lán)牙接收端,UNO獲取串口的指令來(lái)控制相應(yīng)的繼電器工作,完成一次語(yǔ)音交互和家電控制操作過(guò)程,然而系統(tǒng)不是一直處于識(shí)別語(yǔ)音狀態(tài),則大大降低誤識(shí)率以及減少功耗。其系統(tǒng)硬件設(shè)計(jì)框圖如圖1所示:
1.2 語(yǔ)音模塊
語(yǔ)音的識(shí)別和處理主要在語(yǔ)音模塊SYN7318內(nèi)部進(jìn)行,語(yǔ)音模塊由語(yǔ)音識(shí)別、合成控制模塊構(gòu)成。SYN7318能實(shí)現(xiàn)語(yǔ)音的識(shí)別算法和語(yǔ)音合成播放,單片機(jī)通過(guò)串口1與語(yǔ)音芯片進(jìn)行指令收發(fā),藍(lán)牙模塊通過(guò)串口2與單片機(jī)進(jìn)行指令收發(fā)。語(yǔ)音的識(shí)別過(guò)程為:首先,單片機(jī)內(nèi)部初始化兩個(gè)串口,設(shè)置各自的波特率,開(kāi)中斷。然后,等待SYN7318內(nèi)部建立詞典并加載完成,發(fā)送空閑查詢函數(shù),當(dāng)語(yǔ)音模塊回復(fù)空閑時(shí),單片機(jī)發(fā)送喚醒指令使語(yǔ)音模塊處于待喚醒狀態(tài);當(dāng)匹配到喚醒詞以后,語(yǔ)音模塊發(fā)送喚醒完成標(biāo)志指令給單片機(jī)。最后,單片機(jī)發(fā)送語(yǔ)音識(shí)別指令給語(yǔ)音模塊,語(yǔ)音模塊完成語(yǔ)音識(shí)別并將識(shí)別到的結(jié)果回傳給單片機(jī)[2]。
1.3 家電控制模塊
系統(tǒng)采用Arduino UNO的主控MEGA328P來(lái)實(shí)現(xiàn)藍(lán)牙模塊和家用電器的繼電器連接。MEGA328P晶振為16MHz,其中,C3、RES1、R1構(gòu)成復(fù)位電路,單片機(jī)和語(yǔ)音模塊采用5V電壓供電,而藍(lán)牙模塊可采用Arduino UNO自帶的ASM1117-3.3輸出的3.3V電壓供電,藍(lán)牙模塊和單片機(jī)的通信部分雖都兼容5V,但為了確保數(shù)據(jù)傳輸穩(wěn)定性,需在藍(lán)牙RXT端串聯(lián)一個(gè)100 的電阻[3,4]。Arduino UNO通過(guò)控制I/O端口來(lái)控制繼電器進(jìn)而實(shí)現(xiàn)各種家電的開(kāi)關(guān)控制。
2 軟件設(shè)計(jì)
2.1 數(shù)據(jù)傳輸設(shè)計(jì)
為了確保命令傳輸?shù)乃俣群蜏?zhǔn)確性,單片機(jī)和SYN7318模塊串口通訊速率設(shè)置為115200bps,單片機(jī)和藍(lán)牙模塊的傳輸速率設(shè)置為9600bps。用命令幀和回傳幀來(lái)實(shí)現(xiàn)單片機(jī)和SYN7318之間的信息傳輸,其發(fā)送命令幀格式如表1所示[5]。發(fā)送命令的幀頭為0xFD,用來(lái)表示一幀數(shù)據(jù)的開(kāi)始。數(shù)據(jù)區(qū)長(zhǎng)度占兩個(gè)字節(jié),用來(lái)校驗(yàn)數(shù)據(jù)區(qū)的長(zhǎng)度。數(shù)據(jù)區(qū)前幾位表示具體的命令字節(jié),與后面的待發(fā)送文本結(jié)合使用,用于發(fā)送各種命令,應(yīng)用到的有:0x01、0x10和0x51,0x01表示合成并播放命令字節(jié)后的文本內(nèi)容;0x10表示啟動(dòng)語(yǔ)音識(shí)別功能。0x51表示開(kāi)啟語(yǔ)音喚醒功能。
回傳幀是語(yǔ)音模塊回傳給單片機(jī)的反饋信息。回傳幀的格式和命令幀類似,只是把開(kāi)頭的0xFD更改為0xFC。數(shù)據(jù)區(qū)長(zhǎng)度也是兩位,數(shù)據(jù)區(qū)也是由命令字節(jié)和文本字節(jié)組成。
2.2 語(yǔ)音模塊配置
本地詞庫(kù)需提前將所需要識(shí)別的詞匯存儲(chǔ)在語(yǔ)音模塊中,SYN7318的廠家提供了存儲(chǔ)詞匯的上位機(jī),SYN7318語(yǔ)音交互模塊可便捷地設(shè)置關(guān)鍵字以及喚醒詞,并且能測(cè)試發(fā)送幀并接收反饋,以及設(shè)置幀噪聲識(shí)別上限和語(yǔ)音合成的人聲。將噪音識(shí)別等級(jí)設(shè)置為中等即1-5米范圍內(nèi)的正常人聲分貝,啟用內(nèi)部降噪垃圾詞條并將語(yǔ)音合成人聲設(shè)置為“曉玲”,語(yǔ)音識(shí)別等待時(shí)間設(shè)置為4s,即4s內(nèi)無(wú)語(yǔ)音超過(guò)音頻上限閾值則視為識(shí)別超時(shí)。
2.3 藍(lán)牙模塊配置
本文的藍(lán)牙模塊采用透?jìng)髂J健?dòng)時(shí),需要配置AT指令,當(dāng)配對(duì)連接后進(jìn)入透?jìng)髂J剑珹T指令時(shí)效[6]。在上位機(jī)串口軟件中,發(fā)送AT+LADDR指令,分別獲取兩塊藍(lán)牙模塊的MAC地址并記錄下來(lái)。在程序初始化中,先設(shè)置發(fā)送AT用來(lái)檢測(cè)AT指令是否可用、設(shè)置波特率為9600bps和發(fā)射功率為0dB,同時(shí),分別設(shè)置兩塊藍(lán)牙模塊為主模塊和從模塊。主模塊發(fā)送已獲取的從模塊的MAC地址進(jìn)而等待連接。當(dāng)主模塊連接從模塊時(shí),主模塊向單片機(jī)發(fā)送已連接信息“Connected”,單片機(jī)檢測(cè)到信息以確保藍(lán)牙模塊已連接、藍(lán)牙模塊的初始化和連接工作完成,語(yǔ)音模塊會(huì)發(fā)送語(yǔ)音合成指令“藍(lán)牙已連接”,則藍(lán)牙傳輸成功。
3 結(jié)論
該設(shè)計(jì)主要利用單片機(jī)和語(yǔ)音模塊實(shí)現(xiàn)了智能家居語(yǔ)音的控制,本文詳細(xì)介紹了系統(tǒng)的軟硬件設(shè)計(jì),該系統(tǒng)能實(shí)現(xiàn)語(yǔ)音控制家用電器的開(kāi)關(guān)工作,并且控制中心與家用電器終端之間采用藍(lán)牙無(wú)線傳輸方式,避免有線傳輸?shù)谋锥恕T撓到y(tǒng)對(duì)非特定語(yǔ)音的識(shí)別率高、功耗低,極大方便了人們對(duì)家電的智能控制。
【參考文獻(xiàn)】
[1]陳哲.智能家居語(yǔ)音控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].四川:電子科技大學(xué),2011.
[2]李勇,蔡力強(qiáng),譚國(guó)炎,等.基于STM32單片機(jī)的家居設(shè)備控制系統(tǒng)設(shè)計(jì)[J].科技與創(chuàng)新,2018,(5):130-131.
[3]陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2013.124-142.
[4]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.286-290.
[5]北京龍邱智能科技有限公司.SYN7318語(yǔ)音交互開(kāi)發(fā)手冊(cè)[Z].北京:北京龍邱智能科技有限公司,2016.
[6]匯承信息科技有限公司.HC-08藍(lán)牙4.0 BLE串口模塊用戶手冊(cè)[Z].廣州:匯承信息科技有限公司,2015.