基于語(yǔ)音識(shí)別和MQTT協(xié)議的智能家居系統(tǒng)實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
隨著科學(xué)技術(shù)的迅猛發(fā)展,人們對(duì)生活環(huán)境和工作環(huán)境 的要求不斷提高,開(kāi)始步入網(wǎng)絡(luò)化和數(shù)字化的智能化社會(huì)。智 能化是新世紀(jì)的發(fā)展趨勢(shì),智能家居應(yīng)運(yùn)而生。
目前國(guó)內(nèi)絕大多數(shù)家庭尚不具備使用智能家居的條件, 一方面由于智能家居產(chǎn)品價(jià)格普遍偏高,另一方面是因?yàn)榇?量廠家過(guò)分夸大智能家居的功能而實(shí)際卻無(wú)法達(dá)到所述效果, 大量智能家居產(chǎn)品并不智能。所以對(duì)于大部分家庭來(lái)說(shuō),智能 家居只是一個(gè)概念產(chǎn)品,且價(jià)格昂貴,不具有較好的實(shí)用性 [1]。
盡管如此,中國(guó)的智能家居依舊在發(fā)展,家電智能化已 從最初的“聯(lián)網(wǎng)”和“App 化”逐漸轉(zhuǎn)向語(yǔ)音、圖像、手勢(shì)控制, 智能化程度明顯提高。語(yǔ)音作為人與人之間最常用的交互方式, 也必然將在未來(lái)的智能家居中廣泛使用 [2]。
科大訊飛作為中國(guó)最大的智能語(yǔ)音技術(shù)提供商,其擁有 的中文語(yǔ)音合成、語(yǔ)音識(shí)別等多項(xiàng)技術(shù)均處于國(guó)際領(lǐng)先地位[3]。 以科大訊飛語(yǔ)音技術(shù)為基礎(chǔ),使用語(yǔ)音方式 [4],采用 MQTT 即時(shí)通信協(xié)議作為系統(tǒng)模塊間的連接手段,實(shí)現(xiàn)紅外遙控、人 體健康監(jiān)測(cè)、煙霧和氣體警報(bào)、App 遠(yuǎn)程控制監(jiān)測(cè)等模塊功能, 研發(fā)和構(gòu)建一套智能家居系統(tǒng) [5]。 MQTT 是一個(gè)由 IBM 開(kāi)發(fā)的物聯(lián)網(wǎng)傳輸協(xié)議,它被設(shè)計(jì) 用于輕量級(jí)的發(fā)布 / 訂閱式消息傳輸。
MQTT 協(xié)議可保證傳輸 可靠安全,采用消息推送機(jī)制,內(nèi)容推送靈活、自由,同時(shí)又 具備低帶寬、低耗能、低成本的優(yōu)勢(shì),帶寬利用率高、耗電少, 可作為家居物聯(lián)網(wǎng)信息傳輸?shù)闹饕獏f(xié)議。
本文采用 MQTT 傳輸協(xié)議設(shè)計(jì)了一套智能家居系統(tǒng) [6], 該系統(tǒng)具有語(yǔ)音識(shí)別與控制、健康與家居安全檢測(cè)、語(yǔ)音提 醒等功能。
1 系統(tǒng)設(shè)計(jì)
系統(tǒng)可方便用戶通過(guò)手機(jī) App 用語(yǔ)音控制紅外家電,并 可以在手機(jī) App 上查看系統(tǒng)中家居安全監(jiān)測(cè)模塊、健康檢測(cè) 模塊等的數(shù)據(jù)。
系統(tǒng)以家庭主機(jī)作為數(shù)據(jù)轉(zhuǎn)發(fā)中心,在設(shè)計(jì)上采用了 模塊化方案,各模塊與家庭主機(jī)之間采用 MQTT 協(xié)議進(jìn)行 數(shù)據(jù)傳輸。各模塊作為 MQTT 訂閱者從家庭主機(jī)接收指令, 同時(shí)作為 MQTT 發(fā)布者將各模塊數(shù)據(jù)上傳給家庭主機(jī) ;為了 使手機(jī) App 的使用不局限于家中的局域網(wǎng),將家庭主機(jī)通過(guò) 路由器連接到遠(yuǎn)程服務(wù)器,在服務(wù)器上運(yùn)行 mosquitto 代理 服務(wù),同樣使用 MQTT 協(xié)議進(jìn)行手機(jī) App 和家庭主機(jī)之間 數(shù)據(jù)的傳輸。
系統(tǒng)結(jié)構(gòu)如圖 1 所示。
在系統(tǒng)中,家庭主機(jī)通過(guò)創(chuàng)建 WiFi 熱點(diǎn)供其他模塊接入, 以搭建本地局域網(wǎng)。此外,家庭主機(jī)作為所有模塊的數(shù)據(jù)匯集、 轉(zhuǎn)發(fā)中心,可以對(duì)接收到的數(shù)據(jù)進(jìn)行處理,從而在家庭主機(jī) 上添加各模塊數(shù)據(jù)顯示、語(yǔ)音播報(bào)、異常報(bào)警等相關(guān)功能。
使用者通過(guò)手機(jī) App 與系統(tǒng)進(jìn)行交互,手機(jī) App 通過(guò) 對(duì)語(yǔ)音命令進(jìn)行識(shí)別,進(jìn)而通過(guò)遠(yuǎn)程服務(wù)器向家庭主機(jī)發(fā)送 命令,或直接接入家中局域網(wǎng),向家庭主機(jī)發(fā)送命令。
2 語(yǔ)音識(shí)別技術(shù)
考慮到語(yǔ)音識(shí)別算法的復(fù)雜性,且科大訊飛擁有成熟的 語(yǔ)音識(shí)別技術(shù),并推出了以語(yǔ)音交互技術(shù)為核心的人工智能開(kāi) 放平臺(tái),為開(kāi)發(fā)者免費(fèi)提供語(yǔ)音識(shí)別、語(yǔ)音合成等語(yǔ)音技術(shù) SDK。所以系統(tǒng)以科大訊飛的語(yǔ)音技術(shù)為基礎(chǔ),將訊飛的相 關(guān)庫(kù)集成到系統(tǒng) App 中,成功實(shí)現(xiàn)了對(duì)語(yǔ)音命令的快速識(shí)別 與理解。手機(jī) App 將使用者語(yǔ)音命令的錄音上傳到訊飛云端 服務(wù)器,在服務(wù)器上進(jìn)行語(yǔ)音識(shí)別,識(shí)別出使用者的語(yǔ)音命令, 然后根據(jù)一定的語(yǔ)法規(guī)范提取出語(yǔ)音命令中的關(guān)鍵字,構(gòu)成 JSON 字符串,將該 JSON 字符串返回到手機(jī) App。手機(jī) App 對(duì)該 JSON 字符串進(jìn)行解析,從而獲得使用者語(yǔ)音命令的具 體含義,進(jìn)行下一步操作。 語(yǔ)音識(shí)別流程如圖 2 所示。
3 MQTT 協(xié)議簡(jiǎn)介
MQTT 是 IBM 開(kāi)發(fā)的一個(gè)即時(shí)通訊協(xié)議,是面向 M2M 和物聯(lián)網(wǎng)的連接協(xié)議,采用輕量級(jí)發(fā)布和訂閱消息傳輸機(jī)制。 MQTT 中的關(guān)鍵組件是 MQTT 代理(Broker),其主要任務(wù)是 將消息派發(fā)給訂閱者 [7]。即發(fā)布者接收消息,然后把消息轉(zhuǎn)發(fā) 給訂閱者。轉(zhuǎn)發(fā)消息時(shí),MQTT 代理使用話題(Topic)來(lái)過(guò)濾 客戶端。話題就像一個(gè)虛擬通道,把發(fā)布者與其訂閱者連接 起來(lái)。話題由 MQTT 代理管理。通過(guò)話題進(jìn)行消息傳輸,消 息生產(chǎn)者(發(fā)布者)和消息消費(fèi)者(訂閱者)之間沒(méi)有直接依 賴關(guān)系,所以該協(xié)議高度可擴(kuò)展。
MQTT 架構(gòu)如圖 3 所示。
4 基于 MQTT 協(xié)議制定系統(tǒng)數(shù)據(jù)傳輸規(guī)范
系統(tǒng)中家庭主機(jī)和遠(yuǎn)程服務(wù)器同時(shí)開(kāi)啟 MQTT 代理服 務(wù)。在家中,家庭主機(jī)開(kāi)啟代理并訂閱相應(yīng) Topic 的消息,各 模塊連接家庭主機(jī)創(chuàng)建的熱點(diǎn),作為 MQTT 的 Publisher,向 家庭主機(jī)發(fā)送數(shù)據(jù)。遠(yuǎn)程服務(wù)器也開(kāi)啟 MQTT 代理并訂閱 相應(yīng) Topic 的消息,家庭主機(jī)接收到數(shù)據(jù)后,作為 MQTT 的 Publisher,以相應(yīng)的 Topic 將數(shù)據(jù)轉(zhuǎn)發(fā)給遠(yuǎn)程服務(wù)器,服務(wù) 器再把數(shù)據(jù)推送給手機(jī) App[8]。
4.1 家庭主機(jī)轉(zhuǎn)發(fā)進(jìn)程(連接到遠(yuǎn)程服務(wù)器)
家庭主機(jī)向遠(yuǎn)程服務(wù)器訂閱 Name 主題以及各模塊使 用的主題,在模塊上線后將模塊名以 Name 主題發(fā)送給遠(yuǎn) 程服務(wù)器,家庭主機(jī)作為遠(yuǎn)程服務(wù)器的訂閱者,將從各模 塊主題收到的內(nèi)容以同樣的主題轉(zhuǎn)發(fā)到本地代理,當(dāng)本地 代理收到模塊上傳的信息后則以該模塊名為主題轉(zhuǎn)發(fā)信息 給遠(yuǎn)程服務(wù)器。
家庭主機(jī)規(guī)范流程如圖 4 所示。
4.2 各模塊進(jìn)程(連接到家庭主機(jī)代理)
首先發(fā)送消息:Topic=Name,內(nèi)容為模塊名(如“紅外”“、心 率”、“血氧”、“MQ2”、“MQ7”)。MQ2 和 MQ7 以自己的模塊 名 Topic(如 MQ2,MQ7)發(fā)送消息,紅外以 Topic=Ray 訂閱 消息。上述模塊發(fā)送消息時(shí)都應(yīng)把 QoS 設(shè)為 1。
模塊規(guī)范流程如圖 5 所示。
4.3 手機(jī) App 進(jìn)程
不管是連入家庭主機(jī)的 WiFi 熱點(diǎn),還是連接遠(yuǎn)程服務(wù) 器,都要訂閱 Topic=Name 主題來(lái)添加模塊。同時(shí)以接收到 的內(nèi)容為主題訂閱消息(如 Topic=MQ2)[9],不管在何處都可 接收消息。
上述規(guī)范中各模塊運(yùn)行統(tǒng)一的數(shù)據(jù)傳輸協(xié)議進(jìn)行數(shù)據(jù)傳 輸。若之后還需為系統(tǒng)添加更多的功能模塊,僅需在新添加 的模塊上運(yùn)行制定的數(shù)據(jù)傳輸協(xié)議就可進(jìn)行系統(tǒng)功能的擴(kuò)展, 同時(shí)也便于手機(jī) App 接收及顯示模塊名稱和相關(guān)信息,方便 用戶查看。
App 規(guī)范流程如圖 6 所示。
5 結(jié) 語(yǔ)
本套系統(tǒng)引入語(yǔ)音識(shí)別,實(shí)現(xiàn)語(yǔ)音對(duì)系統(tǒng)中各模塊的控 制以及數(shù)據(jù)讀取。使用者通過(guò)發(fā)送語(yǔ)音命令取代一系列需要 動(dòng)手的操作,大大提高了生活的便利性。系統(tǒng)基于MQTT 協(xié)議, 制定獨(dú)有的數(shù)據(jù)傳輸規(guī)范。家庭主機(jī)通過(guò)創(chuàng)建 WiFi 熱點(diǎn)接入 系統(tǒng)中的其他模塊,搭建本地局域網(wǎng)。系統(tǒng)中的各模塊按照 制定的數(shù)據(jù)傳輸規(guī)范進(jìn)行數(shù)據(jù)傳輸,使得手機(jī) App 的操作大 大簡(jiǎn)化,且更加人性化,同時(shí)使得系統(tǒng)添加模塊變得十分方便, 具有很好的拓展性。