
硬件平台:STM32F746G-DISC开发板 编译软件:KEIL 5.31 操作系统:RTX5 TCP/IP协议栈:Cyclone-TCP 语音交互平台:思必驰DUI开放平台 这里说一下使用的TCP/IP协议栈-- Cyclone-TCP,该协议栈开源,纯 C语言编写,高度可维护,代码层次清晰(这个太重要了,lwip看的我头都大,支持的应用层协议又少的可怜),支持多种应用层协议和RTOS。CycloneTCP既可以作为开源(GPLv2)获得,也可以根据商业许可获得。 主要特点: · 双栈(IPv4和/或IPv6) · 内置对多个网络接口的支持 · 灵活的内存占用空间(内置时间配置,仅嵌入必要的功能) · 可配置的内存模型(静态内存池或堆内存分配) · 便携式架构(无处理器依赖性) · 直接连接任何RTOS的端口 · 高度可维护的源代码 · 调试和跟踪功能可简化开发和集成 · BSD样式套接字API · 阻塞/非阻塞套接字操作和事件驱动的功能(选择和轮询) · 通过零拷贝进行有效的数据传输 · 精心设计的TCP模块,具有选择性确认(SACK)和拥塞控制 · 原始套接字接口 · IP分段和重组支持 · 支持虚拟接口(每个物理接口多个MAC地址) · 支持多宿主主机(每个接口多个IPv4地址) · 使用VLAN标记(SMSC交换机)或尾部标记(Micrel交换机)的以太网端口乘法 · VLAN支持(802.1q和802.1ad) · USB设备RNDIS类驱动程序(用于STM32微控制器) 支持的协议: · DNS客户端 · NetBIOS客户端和响应器 · LLMNR客户和响应者 · mDNS客户端和响应者 · DNS-SD响应器(基于DNS的服务发现) · DHCP客户端和服务器 · 自动IP(IPv4链接本地地址的动态配置) · DHCPv6客户端和中继代理 · SLAAC(IPv6无状态地址自动配置) · 组播支持(IGMPv2和MLDv1) · FTP / FTPS客户端和服务器(支持隐式TLS和显式TLS模式) · HTTP / HTTPS客户端 · 具有SSI,CGI脚本和WebSocket支持的HTTP / HTTPS服务器 · HTTP / 2客户端(包括HPACK压缩,服务器推送和https方案) · MQTT v3.1.1客户端(支持TCP,TLS,WebSocket和安全WebSocket传输层) · MQTT-SN客户端(支持UDP和DTLS传输层) · CoAP客户端和服务器(支持DTLS的CoAP,支持观察和明智的传输) · SMTP客户端 · SNTP客户端(网络时间同步) · SNMP代理(支持SNMPv1,SNMPv2c和SNMPv3) · SNMP用户和访问权限的远程管理(SNMP-USM-MIB和SNMP-VACM-MIB) · 标准MIB:MIB-II,IF-MIB,IP-MIB,TCP-MIB,UDP-MIB,SNMPv2-MIB · TFTP客户端和服务器 · Modbus / TCP客户端和服务器(支持Modbus / TCP安全性) · WebSocket客户端和服务器(支持通过SSL / TLS隧道传输的WebSocket连接) · PPP(点对点协议) 在我的提供的工程文件夹下有个DOC的文件夹,里面有一份Cyclone-TCP移植文档和一些我在使用应用层协议时遇到问题的解决办法。更多信息参考这里: https://www.oryx-embedded.com/products/CycloneTCP 接下说一下语音交互平台,我选择的是思必驰DUI开放平台。那什么是DUI平台呢,DUI即(Dialog User Interface)是为设备赋能语音交互场景的开发配置平台,通过这个定制平台您可以给您的硬件、设备、手机APP等产品增加语音交互场景!在这个过程中为开发者提供高可用定制的人机对话技术服务,为智能终端开发者提供核心交互能力,协助传统设备实现智能升级。 通过DUI开放平台的能力,为您的赋能后,您的用户就能: 1. 用语音控制设备来播放音乐、查询天气及最新新闻,获取最新的交通情况以及通用知识询问; 2. 用语音来设置闹钟、提醒; 3. 用语音来获取服务,如叫车、订外卖等。 DUI系统工作流程图: ![]() 在我的工程中,省略了语音唤醒,这个功能,其余的都有实现。嵌入式平台的接入方式有两种: 1. 基于websocket协议的产品接入 适用场景: 1)轻量级嵌入式设备,基于协议开发 2)采用云对云的方式,使用DUI全链路产品,基于协议开发 3)其他特殊场景,需要基于协议开发 4)支持语音、文本、意图三种输入 2. 基于Http协议的产品接入 适用场景: 1)轻量级嵌入式设备,基于协议开发 2)采用云对云的方式,使用DUI全链路产品,基于协议开发 3)其他特殊场景,需要基于协议开发 4)使用文本请求对话 5)设置系统级或技能级配置 我的工程中使用的是第一种接入方式。第二种接入方式使用的是文本对话方式,就是输入文字信息与平台进行对话,中间省略了语音识别这个流程。也可以在外部加一个语音识别的处理芯片,来实现语音交互,这种方式也适用于第一种接入方式。 使用DUI系统,需要注册账号和实名认证。这里不得不说下它的技术支持,真的很糟糕,对外没有提供联系方式,只能在控制台内提交工单的方式来提交问题,而且要等好几天才会有回复,回答质量也很糟糕。我好多问题都是通过查看其他平台的参考代码,来找问题的解决方法。几乎没有找到嵌入式平台的参考代码和问题解决方法,基本都是安卓端和苹果端的例程和问题解决方法。更多的信息可以去官网查看: 目前我在通过DUI创建的AI模型,拥有以下几个技能: 1.天气 2.日历 3.单位换算 4.计算器 5.汇率 6.亲戚关系计算 7.成语 8.诗词 9.翻译大全 10.儿歌 11.故事 12.国学 13.曲艺 14.戏曲 15.笑话 16.音乐 17.有声书 18.历史上的今天 19.猜数字(游戏) 20.一禅小和尚 21.百科 22.闲聊 在提供工程中,有一个文件烧录文件夹,可以通过软件直接烧录进开发板,也可以通过KEIL编译,直接下载。可以打开串口调试助手,查看log调试信息。串口波特率:115200,数据位:8,停止位:1,校验位:无。由于我在KEIL的文本编辑器设置成UTF8编码,因此串口调试助手的文本显示必须设置成UTF8编码。正常启动log如下所示: ![]() 系统启动完成后,按住开发板上的蓝色按键1秒钟左右,开始说话,说完话后放开按键,接着等待对话结果。 演示视频: 是不是发现我的STM32F746G-DISC开发板,跟你们不一样,哈哈,我手动升级了。FLASH容量升级成32MB,屏幕更换成800X480分辨率,唯一的遗憾就是SDRAM不好焊接,没有升级。如果想升级开发板的,可以留言,我可以把文件共享出来。 % V& W9 O8 O2 X- B1 p9 q |
链接:https://pan.baidu.com/s/1RB50_wYjXGUdaY-eVq_KUQ 9 L! p3 Y0 W( G8 ]
提取码:hyf6