EC800MCNLE 开发板(含天线、Type-C 数据线等)
电脑(Windows 7、Windows 10 或 Windows 11)
任意 2-5W 功率的喇叭即可 (移远商城购买链接)
一块3.7V 聚合物锂电池
Windows 电脑一台,建议 Win10 系统。
一套 EC800MCNLE 开发板 (含天线、Type-C 数据线等)。
一张可正常使用的 SIM 卡。
一个 2-5W 功率的喇叭。
按照下图进行硬件连接:

SIM 卡。LTE字样的天线连接座上。SPK+和SPK-的排针上。完成硬件连接的工作后,电脑设备管理器的端口列表中出现包含 Quectel USB 字样的 COM 口,表示开机成功。

参考此章节,烧录对应型号固件包至开发板。
执行 _main.py 脚本后,程序开始运行。
下图所示状态为待唤醒状态,开发板会出现红灯闪烁,需要语音“小智,小智”来唤醒小智AI进行语音对话。

唤醒后会出现连接UDP服务器相关的数据或者是连接失败的提示,当出现连接失败时,请检查网络是否正常。

当系统长时间未进行对话时,会收到goodbye消息,mqtt和udp都会主动关闭,程序自动进入待唤醒状态,等待下次使用唤醒词唤醒,再重新建立连接。



初始化 AI 对象以及其他硬件驱动。
检测到唤醒词时,会拉起工作线程self.__working_thread,工作线程会开启vad进行人声检测
工作线程开启后会启动线程执行__chat_process,检测到人声后就会发送读取的音频数据
统一管理设备的音频输入输出、编解码、语音识别相关功能(关键词识别 KWS 和语音活动检测 VAD),并提供回调接口供上层应用使用。
首先需明确,要成功连接小智平台的 MQTT 服务器,必须具备对应的 MQTT 连接参数,而该参数需通过小智的 OTA 接口获取。在本方案中,我们直接采用 Quecpython 的 request 模块发送 GET 请求来完成参数获取;其中,OTA 请求的具体方式、请求头格式及请求体格式,均严格参照小智官方提供的 OTA 文档执行。
方案中专门设计了参数获取方法ota_get(),且该方法会在MqttClient类初始化时自动调用一次,确保在 MQTT 客户端实例创建的初始阶段,就能完成必要连接参数的获取,为后续 MQTT 服务器的连接流程奠定基础。

成功获取 MQTT 连接参数后,方案会将该参数暂存至全局列表aes_opus_info中,以实现参数的临时存储与后续便捷调用。
当系统通过唤醒词触发唤醒流程时,程序将自动启动 MQTT 连接操作 —— 此时会从全局列表aes_opus_info中提取此前通过 OTA 接口获取的 MQTT 连接参数,并基于该参数完成与小智平台 MQTT 服务器的连接配置,确保 MQTT 连接流程能基于有效、正确的参数顺利执行。

在与小智平台 MQTT 服务器的连接成功建立后,系统将进一步通过 MQTT 通道发送消息,以获取 UDP 连接所需的参数 —— 具体需发送小智平台规定的 “hello” 类型消息,该消息的格式需参照小智官方相关规范执行。
当成功接收到小智平台返回的 UDP 连接参数后,程序会基于该参数启动 UDP 连接流程,完成与小智平台的 UDP 通道建立,为后续音频流数据的传输做好准备。

在与小智平台的 UDP 通道成功建立后,后续音频流数据使用UDP传输。根据小智平台的明确技术规范,通过 UDP 协议发送的音频流数据必须经过加密处理,以保障数据传输过程中的安全性与完整性,而指定采用的加密算法为AES-CTR 算法。
在本方案中,我们直接依托我们 Quecpython 的加密模块ucryptolib来实现 AES-CTR 加密功能:在音频流数据发送前,程序会调用ucryptolib模块中对应的加密接口,传入预设的密钥等参数,完成数据加密处理;加密后的音频流数据再通过已建立的 UDP 通道发送至小智平台,确保整个音频传输流程既符合平台规范,又具备可靠的安全保障。

连接时在hello消息中打开mcp通道,服务器会发来请求消息(tools/list类型),此时我们需要告知我们可以给小智调用的本地工具,在我们语音交互时,服务器识别到我们的意图时会请求调用我们本地工具,设备接收到工具调用请求后会做出响应并回复服务器。我们可以在tools/list和tools/call的响应消息里添加工具信息和处理逻辑
