2066|0

224

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

基于STM32的全链路语音交互 [复制链接]

硬件平台:STM32F746G-DISC开发板

编译软件:KEIL 5.31

操作系统:RTX5

TCP/IP协议栈:Cyclone-TCP

语音交互平台:思必驰DUI开放平台

 

这里说一下使用的TCP/IP协议栈-- Cyclone-TCP,该协议栈开源,纯 C语言编写,高度可维护,代码层次清晰(这个太重要了,lwip看的我头都大,支持的应用层协议又少的可怜),支持多种应用层协议和RTOSCycloneTCP既可以作为开源(GPLv2)获得,也可以根据商业许可获得。

主要特点:

  • 双栈(IPv4/IPv6
  • 内置对多个网络接口的支持
  • 灵活的内存占用空间(内置时间配置,仅嵌入必要的功能)
  • 可配置的内存模型(静态内存池或堆内存分配)
  • 便携式架构(无处理器依赖性)
  • 直接连接任何RTOS的端口
  • 高度可维护的源代码
  • 调试和跟踪功能可简化开发和集成
  • BSD样式套接字API
  • 阻塞/非阻塞套接字操作和事件驱动的功能(选择和轮询)
  • 通过零拷贝进行有效的数据传输
  • 精心设计的TCP模块,具有选择性确认(SACK)和拥塞控制
  • 原始套接字接口
  • IP分段和重组支持
  • 支持虚拟接口(每个物理接口多个MAC地址)
  • 支持多宿主主机(每个接口多个IPv4地址)
  • 使用VLAN标记(SMSC交换机)或尾部标记(Micrel交换机)的以太网端口乘法
  • VLAN支持(802.1q802.1ad
  • USB设备RNDIS类驱动程序(用于STM32微控制器)

 

支持的协议:

  • DNS客户端
  • NetBIOS客户端和响应器
  • LLMNR客户和响应者
  • mDNS客户端和响应者
  • DNS-SD响应器(基于DNS的服务发现)
  • DHCP客户端和服务器
  • 自动IPIPv4链接本地地址的动态配置)
  • DHCPv6客户端和中继代理
  • SLAACIPv6无状态地址自动配置)
  • 组播支持(IGMPv2MLDv1
  • FTP / FTPS客户端和服务器(支持隐式TLS和显式TLS模式)
  • HTTP / HTTPS客户端
  • 具有SSICGI脚本和WebSocket支持的HTTP / HTTPS服务器
  • HTTP / 2客户端(包括HPACK压缩,服务器推送和https方案)
  • MQTT v3.1.1客户端(支持TCPTLSWebSocket和安全WebSocket传输层)
  • MQTT-SN客户端(支持UDPDTLS传输层)
  • CoAP客户端和服务器(支持DTLSCoAP,支持观察和明智的传输)
  • SMTP客户端
  • SNTP客户端(网络时间同步)
  • SNMP代理(支持SNMPv1SNMPv2cSNMPv3
  • SNMP用户和访问权限的远程管理(SNMP-USM-MIBSNMP-VACM-MIB
  • 标准MIBMIB-IIIF-MIBIP-MIBTCP-MIBUDP-MIBSNMPv2-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系统,需要注册账号和实名认证。这里不得不说下它的技术支持,真的很糟糕,对外没有提供联系方式,只能在控制台内提交工单的方式来提交问题,而且要等好几天才会有回复,回答质量也很糟糕。我好多问题都是通过查看其他平台的参考代码,来找问题的解决方法。几乎没有找到嵌入式平台的参考代码和问题解决方法,基本都是安卓端和苹果端的例程和问题解决方法。更多的信息可以去官网查看:

https://www.duiopen.com/

 

目前我在通过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不好焊接,没有升级。如果想升级开发板的,可以留言,我可以把文件共享出来。

RL_RTX.zip

5.9 MB, 下载次数: 5

RL_RTX.z01

10 MB, 下载次数: 36

RL_RTX.z02

10 MB, 下载次数: 36

基于STM32的全链路语音交互.docx

106.35 KB, 下载次数: 6

此帖出自stm32/stm8论坛
点赞 关注(1)
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表