【安信可ESP32语音开发板专题②】ESP32-Audio-Kit 开发板适配百度dueros例程实现在线语音功能,与开发板对话聊天。
文章目录
- 前言
- 一、准备工作
- 1.硬件准备
- 2.软件准备
- 二、验证ESP-ADF是否正常
- 1. 代码简单修改
- 2.播放MP3测试
- 三、dueros 例程适配
- 1.替换连接文件
- 2.内存卡准备
- 3. 代码修改
- (1)屏蔽触摸按键
- (2)修改唤醒提示音
- 4. 修改 lyrat_v4_3中的board.c 代码
- 5.连接成功截图
- 四、常见问题
- 1.函数未声明错误
- 2. 串口监控有唤醒提示但没有提示音
- 3.I2C Bus WriteReg Error
- 五、相关连接
前言
针对ESP32-A1S的音频开发板ESP32-Audio-Kit,之前就写了一边如何实现离线语音控制LED灯的博文,但是之前的博文中所用到的模组中的音频编解码芯片是AC101,需要我们自己写驱动程序。为了适配乐鑫的SDK,模组中的编解码芯片也换成了ES8388,乐鑫已经写好了驱动程序,我们二次开发不需要重新写编解码程序,这让我们的移植变得更加简单。
DuerOS是百度度秘事业部在2017年1月CES展推出的对话式人工智能操作系统,它赋予硬件设备与人沟通的能力,真正的将语音对话这种新的交互方式融入到了人们的生活之中。
本文将通过对乐鑫ESP-ADF-SDK中的dueros 例程进行移植,在安信可ESP32-Audio-Kit开发板上实现在线语音对话功能。
本文较长,耐心阅读您会有所收获。
一、准备工作
1.硬件准备
硬件毫无疑问就是安信可ESP32-Audio-Kit_V2.2开发板,带内存卡,最好接有扬声器,没有扬声器可以接3.5mm音频口的耳机作为代替。
ESP32-Audio-Kit开发板和ESP32-A1S在安信可科技某宝店均有出售,具体库存情况咨询一下客服哈。掌握画PCB技能的同学可以画一个自己的小板子,上方的开发板的原理图也提供给大家,参考本文结尾链接:
2.软件准备
本次的二次开发是在Linux 环境下进行的,软件是乐鑫的esp-adf工程,在一个自己喜欢的文件夹中clone项目源码,这个克隆的时间比较长,请耐心等待:
git clone --recursive https://github.com/espressif/esp-adf.git
//如果觉得慢,也可以使用博主的仓库
git clone https://gitee.com/seahi007/esp-adf.git
ESP-ADF具体的安装步骤请参考:espressif esp-adf 音频开发框架
最后不要忘了拉取子模块:
cd esp-adf
git submodule update --init --recursive
在等待的过程,可以去注册一个百度账号或者做一下开发者验证。注册账号后进行通过开发者验证(验证时间1~2天)。DuerOS开放平台连接:https://dueros.baidu.com/open,
验证通过之后,进入这个链接:小度智能开放平台:https://dueros.baidu.com/didp/main/index,千万不要直接点击控制台进去,不然永远都找不到这个界面,也就无法获取profile文件。
详细的profile文件获取方式请参考: http://www.dianzixuexi.com/HTML/zixun/64787.html
二、验证ESP-ADF是否正常
1. 代码简单修改
ESP-ADF里的examples 都是需要开发板的,因为它的I2C,I2S等接口只是适配了芯片原厂乐鑫的开发板。因为我们使用的是安信可的ESP32-Audio-Kit,就需要改一下代码,令I2C和I2S接口匹配我们的板子,ESP32-Audio-Kit的接口如下:
修改board_pins_config.c,路径:esp-adf/components/audio_board/lyrat_v4_3
cd /home/saehi/Desktop/ESP/ESP32-A1S/esp-adf_test/esp-adf/components/audio_board/lyrat_v4_3
vi board_pins_config.c
2.播放MP3测试
播放MP3这个例程是不要 microSD(内存卡)的,可以直接编译下载就能播放。
配置 Audio HAL—>ESP32-Lyrat V4.3:
idf.py menuconfig
配置完成后,即可编译—>下载—>验证:
idf.py build flash montior
这时候,你应该就能听到一段很魔幻的声音,表示ESP-ADF已经准备就绪,可以开始做在线语音功能了。
三、dueros 例程适配
适配过程有些复杂,请耐心阅读:
1.替换连接文件
dueros的连接需要用到profile 文件,里面包含了client_id、client_secret等验证信息。
※注意※: 我们需要把profile.zip 中的任意一个文件重命名为:duer_profile,然后替换该路径下的duer_profile:esp-adf_test/esp-adf/components/dueros_service/duer_profile。
2.内存卡准备
准备一张内存卡,最好是空的内存卡,然后把DingDing.wav 文件复制到内存卡根目录,DingDing.wav文件路径为:esp-adf_test/esp-adf/examples/dueros/tone。完成之后把内存卡插入开发板的卡槽当中。
3. 代码修改
代码修改主要在dueros例程的main文件中的dueros_app.c:
(1)屏蔽触摸按键
安信可ESP32-Audio-Kit开发板中并没有触摸按键,所以要屏蔽掉,而且触摸按键的循环查询占用了大量CPU的资源,会导致I2C与ES8388的通信受阻,dueros_app.c的294行到342行全部屏蔽掉:
(2)修改唤醒提示音
源码中的唤醒提示音的文件名是错误的,如不修改的话将无法播放提示音。虽然不影响产品的使用,但会降低用户的体验感。
定位到:94行:
4. 修改 lyrat_v4_3中的board.c 代码
打开board.c:
vi esp-adf_test/esp-adf/components/audio_board/lyrat_v4_3/board.c
定位到93行,把93行到99行的内容屏蔽掉,如下:
5.连接成功截图
连接成功之后,就可以对着开发板的麦克风说"Hi,乐鑫",”今天天气怎么样“,正常情况下是可以播报天气情况。
四、常见问题
1.函数未声明错误
问题截图:
原因: dueros_esp_flash.c 没有被添加到工程当中;
修改方法: 在路径:"esp-adf_test/esp-adf/components/dueros_service/ " 中打开CMakeLists.txt,修改如下即可编译通过:
2. 串口监控有唤醒提示但没有提示音
原因1: 内存卡中没有DingDing.wav 音乐文件;
解决办法: 把esp-adf_test/esp-adf/examples/dueros/tone/DingDing.wav 文件复制到内存卡。
原因2: 播放文件没修改:
解决办法:
如果以上办法都没有解决,请尝试先运行播放MP3的例程,看看是否正常。
3.I2C Bus WriteReg Error
问题截图:
原因: 没有屏蔽TOUCH的初始化代码,导致TOUCH初始化出错。
解决办法: 详见: 4. 修改 lyrat_v4_3中的board.c 代码
五、相关连接
开发板原理图:ESP32-A1S-Audui-Kit-V2.0原理图;
模组购买连接: 安信可ESP32-A1S样品购买连接;
欢迎关注原作者博客:小小河神纠结多;
源码连接:https://github.com/SeaHi-Mo/esp-adf
【安信可ESP32语音开发板专题②】ESP32-Audio-Kit 开发板适配百度dueros例程实现在线语音功能,与开发板对话聊天。相关推荐
- 【安信可PB-01/02模组专题③】ESP32-G WIFI蓝牙网关与PB02模组开发进行组网通讯
文章目录 前言 工具 ESP32-G 网关介绍 (1)产品概述 (2)产品接口及 LED 指示灯说明 ESP32-G 网关蓝牙模式使用 (1) 恢复出厂设置 (2) 点击网关中的蓝牙选项 (3) 点击 ...
- 安信可ESP8266接入阿里生活飞燕平台国际版,实现亚马逊Alexa Echo音响语音控制;
文章目录 一.博主寄言 二.中国站和国际站 2.1 中国站与国际站的区别: 2.2 站点切换 三.设备固件烧录 四.设备接线 五.下载国际版APP授权Alexa音响: 六.控制指令 一.博主寄言 给大 ...
- 安信可博客导航一站式搜索(所有博客的汇总帖)
安信可博客导航一站式搜索(所有博客的汇总帖) 文章目录 安信可博客导航一站式搜索(所有博客的汇总帖) 开源团队简介 安信可优势 Ai-WB2模组专题 ESP系列IDE开发环境搭建 ESP8266模组专 ...
- 戴尔易安信引领科技创新,以全面的端到端解决方案助力企业“数”造未来
戴尔科技集团旗下戴尔易安信于今日召开的2018戴尔科技峰会上与到场的数千位企业级技术精英以及来自各个领域的专家分享了在现代数据中心.存储.人工智能.云计算等领域的最新前沿技术及杰出的行业应用案例,全面 ...
- 安信证券服务化平台,助力业务系统云原生架构转型
互联网应用的海量用户.快速迭代.不间断服务和流量突增等业务特征促进其技术架构从传统集中式到分布式SOA和微服务架构方向逐步演进.随着敏态业务的逐渐增多,对业务连续性.交付效率和故障处理效率等方面提出了 ...
- 构建云原生架构版图:安信证券服务化平台实践
1. 建设之初的思考 互联网应用的海量用户.快速迭代.不间断服务和流量突增等业务特征促进其技术架构从传统集中式到分布式 SOA 和微服务 [1] 架构方向逐步演进.随着敏态业务的逐渐增多,对业务连续性 ...
- 安信可 BL602 平台模组 OTA 升级教程
概述 本文以安信可 Ai-WB2-12F 为例介绍安信可模组从生成 OTA 固件到通过 WiFi 升级固件的全过程. 固件增加 OTA 功能 要开启 OTA,固件必须要包含以下功能: 蓝牙或命令行配网 ...
- 如何利用英文翻译器在线语音翻译英文
如何利用英文翻译器在线语音翻译英文?在出国旅行时,我们总是有需要利用翻译器翻译英文的地方,特别是语音翻译英文.所以今天小编就为大家分享一个英文在线语音翻译中文的方法,希望可以帮助到大家. 1:在手机应 ...
- 5个免费、免注册且无时长限制在线语音转换文本网站分享(收藏)
达芬奇前几期同大家分享了几个在线文字转语音网站及线下语音转文字方法,满足了一些同学的需求:有些同学想要更简单方便的线上语音转文字方法,今天继续同大家分享几个免费的在线语音转换文字网站,有需要用到的同学 ...
最新文章
- Markdown学习之路
- python词汇-基本 Python 词汇
- 网络应用程序设计模式
- 每天一道LeetCode-----有序数组右移n位后查找某个元素
- 手机应用软件下载导航php源码_第八篇:你需要一个没有广告的导航吗,我免费给你源码...
- 古典、SOA、传统、K8S、ServiceMesh
- 【iOS开发】崩溃问题汇总
- 纳米颗粒C语言数值模拟_J.Hazard. Mater.当“金属纳米酶”邂逅“重金属离子”:机遇与挑战...
- devops 文化_需要建立DevOps文化
- 【转】UINavigationBar 使用总结
- 【英语学习】【English L06】U06 Banking L2 A savings account sounds better for me
- 年轻人还在讨论要不要躺平时,阿里已经注册了“躺平”商标
- 阿里云混合云新一代运维平台的演进与实践
- 安川机器人如何注释化指令_安川机器人指令一览
- python自动化实现QQ自动发说说
- IDEA+EmmyLua Lua开发环境搭建
- 北京车辆过户外迁,北京车辆外迁流程
- win7与internet时间同步出错_Win7电脑时间同步出错怎么办?Win7电脑时间同步出错的解决方法...
- 模电——电源与地之间串联电容的作用
- Python 求一元二次方程的根(包括虚根)