基于语音识别和MQTT协议的智能家居系统实现
扫描二维码
随时随地手机看文章
0 引 言
随着科学技术的迅猛发展,人们对生活环境和工作环境 的要求不断提高,开始步入网络化和数字化的智能化社会。智 能化是新世纪的发展趋势,智能家居应运而生。
目前国内绝大多数家庭尚不具备使用智能家居的条件, 一方面由于智能家居产品价格普遍偏高,另一方面是因为大 量厂家过分夸大智能家居的功能而实际却无法达到所述效果, 大量智能家居产品并不智能。所以对于大部分家庭来说,智能 家居只是一个概念产品,且价格昂贵,不具有较好的实用性 [1]。
尽管如此,中国的智能家居依旧在发展,家电智能化已 从最初的“联网”和“App 化”逐渐转向语音、图像、手势控制, 智能化程度明显提高。语音作为人与人之间最常用的交互方式, 也必然将在未来的智能家居中广泛使用 [2]。
科大讯飞作为中国最大的智能语音技术提供商,其拥有 的中文语音合成、语音识别等多项技术均处于国际领先地位[3]。 以科大讯飞语音技术为基础,使用语音方式 [4],采用 MQTT 即时通信协议作为系统模块间的连接手段,实现红外遥控、人 体健康监测、烟雾和气体警报、App 远程控制监测等模块功能, 研发和构建一套智能家居系统 [5]。 MQTT 是一个由 IBM 开发的物联网传输协议,它被设计 用于轻量级的发布 / 订阅式消息传输。
MQTT 协议可保证传输 可靠安全,采用消息推送机制,内容推送灵活、自由,同时又 具备低带宽、低耗能、低成本的优势,带宽利用率高、耗电少, 可作为家居物联网信息传输的主要协议。
本文采用 MQTT 传输协议设计了一套智能家居系统 [6], 该系统具有语音识别与控制、健康与家居安全检测、语音提 醒等功能。
1 系统设计
系统可方便用户通过手机 App 用语音控制红外家电,并 可以在手机 App 上查看系统中家居安全监测模块、健康检测 模块等的数据。
系统以家庭主机作为数据转发中心,在设计上采用了 模块化方案,各模块与家庭主机之间采用 MQTT 协议进行 数据传输。各模块作为 MQTT 订阅者从家庭主机接收指令, 同时作为 MQTT 发布者将各模块数据上传给家庭主机 ;为了 使手机 App 的使用不局限于家中的局域网,将家庭主机通过 路由器连接到远程服务器,在服务器上运行 mosquitto 代理 服务,同样使用 MQTT 协议进行手机 App 和家庭主机之间 数据的传输。
系统结构如图 1 所示。
在系统中,家庭主机通过创建 WiFi 热点供其他模块接入, 以搭建本地局域网。此外,家庭主机作为所有模块的数据汇集、 转发中心,可以对接收到的数据进行处理,从而在家庭主机 上添加各模块数据显示、语音播报、异常报警等相关功能。
使用者通过手机 App 与系统进行交互,手机 App 通过 对语音命令进行识别,进而通过远程服务器向家庭主机发送 命令,或直接接入家中局域网,向家庭主机发送命令。
2 语音识别技术
考虑到语音识别算法的复杂性,且科大讯飞拥有成熟的 语音识别技术,并推出了以语音交互技术为核心的人工智能开 放平台,为开发者免费提供语音识别、语音合成等语音技术 SDK。所以系统以科大讯飞的语音技术为基础,将讯飞的相 关库集成到系统 App 中,成功实现了对语音命令的快速识别 与理解。手机 App 将使用者语音命令的录音上传到讯飞云端 服务器,在服务器上进行语音识别,识别出使用者的语音命令, 然后根据一定的语法规范提取出语音命令中的关键字,构成 JSON 字符串,将该 JSON 字符串返回到手机 App。手机 App 对该 JSON 字符串进行解析,从而获得使用者语音命令的具 体含义,进行下一步操作。 语音识别流程如图 2 所示。
3 MQTT 协议简介
MQTT 是 IBM 开发的一个即时通讯协议,是面向 M2M 和物联网的连接协议,采用轻量级发布和订阅消息传输机制。 MQTT 中的关键组件是 MQTT 代理(Broker),其主要任务是 将消息派发给订阅者 [7]。即发布者接收消息,然后把消息转发 给订阅者。转发消息时,MQTT 代理使用话题(Topic)来过滤 客户端。话题就像一个虚拟通道,把发布者与其订阅者连接 起来。话题由 MQTT 代理管理。通过话题进行消息传输,消 息生产者(发布者)和消息消费者(订阅者)之间没有直接依 赖关系,所以该协议高度可扩展。
MQTT 架构如图 3 所示。
4 基于 MQTT 协议制定系统数据传输规范
系统中家庭主机和远程服务器同时开启 MQTT 代理服 务。在家中,家庭主机开启代理并订阅相应 Topic 的消息,各 模块连接家庭主机创建的热点,作为 MQTT 的 Publisher,向 家庭主机发送数据。远程服务器也开启 MQTT 代理并订阅 相应 Topic 的消息,家庭主机接收到数据后,作为 MQTT 的 Publisher,以相应的 Topic 将数据转发给远程服务器,服务 器再把数据推送给手机 App[8]。
4.1 家庭主机转发进程(连接到远程服务器)
家庭主机向远程服务器订阅 Name 主题以及各模块使 用的主题,在模块上线后将模块名以 Name 主题发送给远 程服务器,家庭主机作为远程服务器的订阅者,将从各模 块主题收到的内容以同样的主题转发到本地代理,当本地 代理收到模块上传的信息后则以该模块名为主题转发信息 给远程服务器。
家庭主机规范流程如图 4 所示。
4.2 各模块进程(连接到家庭主机代理)
首先发送消息:Topic=Name,内容为模块名(如“红外”“、心 率”、“血氧”、“MQ2”、“MQ7”)。MQ2 和 MQ7 以自己的模块 名 Topic(如 MQ2,MQ7)发送消息,红外以 Topic=Ray 订阅 消息。上述模块发送消息时都应把 QoS 设为 1。
模块规范流程如图 5 所示。
4.3 手机 App 进程
不管是连入家庭主机的 WiFi 热点,还是连接远程服务 器,都要订阅 Topic=Name 主题来添加模块。同时以接收到 的内容为主题订阅消息(如 Topic=MQ2)[9],不管在何处都可 接收消息。
上述规范中各模块运行统一的数据传输协议进行数据传 输。若之后还需为系统添加更多的功能模块,仅需在新添加 的模块上运行制定的数据传输协议就可进行系统功能的扩展, 同时也便于手机 App 接收及显示模块名称和相关信息,方便 用户查看。
App 规范流程如图 6 所示。
5 结 语
本套系统引入语音识别,实现语音对系统中各模块的控 制以及数据读取。使用者通过发送语音命令取代一系列需要 动手的操作,大大提高了生活的便利性。系统基于MQTT 协议, 制定独有的数据传输规范。家庭主机通过创建 WiFi 热点接入 系统中的其他模块,搭建本地局域网。系统中的各模块按照 制定的数据传输规范进行数据传输,使得手机 App 的操作大 大简化,且更加人性化,同时使得系统添加模块变得十分方便, 具有很好的拓展性。