硬件平台: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支持(和)
  • 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移植文档和一些我在使用应用层协议时遇到问题的解决办法。更多信息参考这里:

接下说一下语音交互平台,我选择的是思必驰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不好焊接,没有升级。如果想升级开发板的,可以留言,我可以把文件共享出来。

stm32 交换机芯片_基于STM32的全链路语音交互 - stm32/stm8 - 电子工程世界相关推荐

  1. linux单片机用什么数据库,基于ARM-Linux的SQLite嵌入式数据库的研究 -单片机-电子工程世界网...

    引言 随着嵌入式系统的广泛应用和用户对数据处理和管理需求的不断提高,各种智能设备和数据库技术的紧密结合已经得到了各方面的重视.不久的将来嵌入式数据库将无处不在.纵观目前国际.国内嵌入式数据库的应用情况 ...

  2. stm32的语音识别_基于STM32的嵌入式语音识别模块设计实现

    介绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现.模块的核心处理单元选用ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103C8T6.本模块以对话管理单元为中心,通过以 ...

  3. stm32的语音识别_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...

    功能描述及设计原理: 小车具有检测里程功能,在金属探测模式,槽型光耦会检测小车车轮的圈数,以此来计算小车行走的里程,并可以通过OLED屏幕显示出来.还可以显示小车的工作模式以及小车距离前方障碍物的距离 ...

  4. stm32 web 参数_老司机们都是怎么学习STM32的?

    单片机用处这么广,尤其是STM32,这么火!如何快速上手学习呢? "不要去学STM32".我不是说STM32不好,而是这种为了学习单片机而去学习单片机的思路不对.你问,如何系统地入 ...

  5. 基于容器的全链路运维平台实践

    经历过去 O.静态化.异地多活.全链路压测.双 11 等多个高可用项目之后呢,我就会去思考说我们能不能把这些高质量的架构通过产品化的方式,让阿里之外的公司也能够享受到这样优质的架构,而且不需要踩我们之 ...

  6. 基于 Istio 的全链路灰度方案探索和实践

    作者|曾宇星(宇曾) 审核&校对:曾宇星(宇曾) 编辑&排版:雯燕 背景 微服务软件架构下,业务新功能上线前搭建完整的一套测试系统进行验证是相当费人费时的事,随着所拆分出微服务数量的不 ...

  7. 互联网广告请求链路_生产环境的全链路压测应该怎么做?答案都在这里了

    "双11前最后一次全链路压测,所有技术.系统.安全策略与应急预案被一一演练.流量峰值,一秒内有几千万次请求,这意味着一秒会产生数百万次交易."这是2018年阿里双十一前夕战况.随着 ...

  8. 构建基于 Ingress 的全链路灰度能力

    背景 随着云原生技术不断普及,越来越多的业务应用开始向云原生架构转变,借助容器管理平台 Kubernetes 的不可变基础设施.弹性扩缩容和高扩展性,助力业务迅速完成数字化转型.其中,集群入口流量管理 ...

  9. python语音控制智能家电_基于树莓派的智能家居语音控制系统

    2018-10 基于树莓派的智能家居语音控制系统 Intelligent home voice control system based on raspberry Pi 刘 华 , 田占生 , 冯宇飞 ...

最新文章

  1. 智源青年科学家代季峰:用“数据+知识”解决图像理解的四大挑战
  2. MATLAB 查看程序执行内存最大使用值
  3. [ruby on rails] 跟我学之(6)显示指定数据
  4. 【面试招聘】非科班小白上岸的学习路线
  5. DFN封装系列ESD静电保护器件
  6. Tomcat Filter 自己动手实现
  7. 20145228 《信息安全系统设计基础》第0周学习总结
  8. matlab length_MATLAB入门
  9. 常用JavaScript 收集
  10. linux acpidtd 进程,MaciASL提取的原版的DTDS编译提示有错误,大牛帮忙看下吧。
  11. Word解析之Word内部结构
  12. 计算机博弈 六子棋 人机/人人对弈系统开发
  13. 拿下沙巴克出色的指挥官不可少
  14. Rootkit的技术发展史
  15. KerberosSDR新手入门测试
  16. What are Triangulation, Trilateration, and Multilateration?
  17. 1042 Shuffling Machine (20 point(s)) - C语言 PAT 甲级
  18. 《计算机应用》期刊审稿周期
  19. Redis启动和连接
  20. ZOJ 3964 Yet Another Game of Stones (博弈)

热门文章

  1. Linux环境进程间通信---信号(下)
  2. 命名实体识别——日期识别
  3. 使用Sublime text 3打造一个小巧但强大的Go语言开发IDE
  4. Spring MVC - Hello World示例
  5. PowerDesigner16建表在SQL SERVER 2008报 对象名 'sysproperties' 无效。
  6. cookies可以跨域了~单点登陆(a.com.cn与b.com.cn可以共享cookies)
  7. 使用Reactor进行反应式编程最全教程
  8. python算法与数据结构-单链表
  9. 阿里双十一秒杀系统架构设计,有哪些技术关键点?
  10. SocketLog-微信调试、API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中