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