安信可esp32-a1s开发板适配百度dueros例程实现在线语音功能(代码片段)

小小河神纠结多 小小河神纠结多     2022-12-09     831

关键词:

文章目录


前言

       针对ESP32-A1S的开发板,之前就写了一边如何实现离线语音控制LED灯的博文,但是之前的博文中所用到的模组中的音频编解码芯片是AC101,需要我们自己写驱动程序。为了适配乐鑫得SDK,模组中得编解码芯片也换成了ES8388,乐鑫已经写好了驱动程序,我们二次开发只要不需要重新写编解码程序。也让我们的移植变得更加简单。
       DuerOS是百度度秘事业部在2017年1月CES展推出的对话式人工智能操作系统,它赋予硬件设备与人沟通的能力,真正的将语音对话这种新的交互方式融入到了人们的生活之中。
       本文将通过对乐鑫ESP-ADF-SDK中的dueros 例程进行移植,在安信可SEP32-A1S-Audio-Kit开发板上实现在线语音对话功能,本文很长,但是没有闲话。


一、准备工作

1.硬件准备

       硬件毫无疑问就是安信可ESP32-A1S-Audio-Kit_V2.2开发板,带内存卡,最好接有扬声器,没有扬声器可以接3.5mm音频口的耳机也成。

       可惜:目前这个开发板已经在安信可某宝旗舰店下架了,但是ESP-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等接口只是适配了乐鑫出品的开发板。要用我们自己的板子的话,就需要改一下代码,令I2C和I2S接口匹配我们的板子,ESP32-A1S的开发板接口如下:

修改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-A1S开发板中并没有触摸按键,所以要屏蔽掉,而且触摸按键的循环查询占用了大量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

安信可esp-12f(esp8266)介绍与使用(代码片段)

介绍安信可常见模块对比ESP-12F参数ESP-12F引脚ESP-12F推荐电路ESP-12F内部原理图可以看到板载的LED被连到了GPIO2内部晶振频率是26MHzSPIFLASH型号是W25Q32,4MB,支持4线SPI。复位引脚RST内部有12K电阻的上拉。软件开发esp8266的开发... 查看详情

求一个安信可esp8266模块调试工具

求一个可ESP8266模块调试工具,硬件和烧录软件都准备好了,就差安信可ESP8266模块调试工具了,求了!参考技术A你百度一下:SDK二次开发[安信可科技]就可以找到。 查看详情

二次开发应用安信可esp32/esp8266模组入网阿里生活物联网平台(代码片段)

目录前言一、准备工作1.1、硬件准备1.2、软件准备二、工程搭建平台设置ESP-12S开发板部分软件操作ESP32-S开发板部分软件操作三、效果演示3.1、天猫精灵找队友测试3.2、APP配网测试更多资料前言之前我们推送过如何通过AT指令入... 查看详情

如何安装安信可一体化开发环境

本文转载自:http://wiki.ai-thinker.com/ai_ide_install安信可ESP系列一体化开发环境是安信可科技为方便广大用户而推出的基于Windows+Cygwin+Eclipse+GCC的综合IDE环境简介安信可一体化开发环境有以下特点:支持ESP8266NONOS和FreeRTOS环境开发支持... 查看详情

乐鑫esp32学习之旅安信可esp32-cam摄像头开发板二次开发csdk编程,拍照图片通过有线串口传到上位机pc端。(附带设备端+pc端源码)(代码片段)

本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。系列一:ESP32系列模组基础学习系列笔记1、爬坑学习新旅程,... 查看详情

微信小程序控制硬件16安信可esp32-s开发板实现移植腾讯物联开发平台蓝牙llsync协议,实现一键蓝牙快速配网+远程控制。(附带源码)(代码片段)

文章目录一、前言二、源码目录说明三、编译指导四、常见问题五、开源微信物联网控制一览表另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈࿰... 查看详情

esp32开发硬件

硬件由安信可ESP32S模组、WM****音频芯片、USB串口芯片、电源管理芯片、SD卡、显示屏使用安信可ESP32S模组:(目前该模块已升级,官网找不到资料,但是模块引脚共用)  查看详情

安信可esp32-cam摄像头开发demo--局域网拍照实时视频人脸识别(代码片段)

...频流4.2人脸检测、人脸识别目录一、前言    ESP32-CAM是安信可发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作,尺寸 查看详情

微信小程序控制硬件16安信可esp32-s开发板实现移植腾讯物联开发平台蓝牙llsync协议,实现一键蓝牙快速配网+远程控制。(附带源码)(代码片段)

文章目录一、前言二、源码目录说明三、编译指导四、常见问题五、开源微信物联网控制一览表另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈࿰... 查看详情

捷配&安信可——暑期创作营:教你用esp-12f接入阿里云iot生活平台,做一款专属智能灯!

...:865828650,参与活动~一、活动内容1.活动主题《安信可ESP-12F接入阿里物联网生活平台,实现远程控制七彩灯》2.目标用户热爱IoT,热爱ESP8266,认可安信可品牌的开发者~3.活动时间2021年8月26日19:00,观看由... 查看详情

安信可esp8266怎么烧写固件库

参考技术A1、进入命令模式2、AT+CWMODE设置AP模式3、AT+CWSAP设置此时用手机连接步骤3设置的wifi信号4、下载一个手机网络调试助手,查看模块的ip和port,连接之后就可以发数 查看详情

安信可esp8266怎么烧写固件库

参考技术A进入第一个个连接进入之后我们就可以选择红色方框buidfirmware。之后我们就可以下载相应的固件了,但是这个固件是比较早的就是了,是2015年的固件,所以我们接下来要做的就是来自己编译一个固件。 查看详情

esp32插上面包板不识别

参考技术AESP32不是上传模式。安信可推出一款WIFI,蓝牙模块ESP32,它可以说是ESP8266的增强版。esp32插上面包板不识别是因为不是上传模式,ESP32是集成2.4GHzWi-Fi和蓝牙双模的单芯方案,采用台积电(TSMC)超低功耗的40纳米工艺,具有... 查看详情

安信可内测离线语音模块vb-01与esp-c3-12f通信(代码片段)

...   上个月给大家展示了使用ESP-C3-12F来控制WS2812RGB灯条(安信可ESP32-C3模组阿里云远程控制WS2812RGB灯条(基于ESP-IDF的SDK&# 查看详情

安信可esp-c3-12f模组应用之物联网时钟(代码片段)

...取4.效果展示更多资料1.项目功能简介物联网时钟应用以安信可ESP-C3-12F模组为主控模块,外接MAX7219八位数码管、DS1302RTC时钟模块、5个功能按键以及两个只是灯组成。设备访问NTP服务器获取本地时间&#x 查看详情

esp8266wifi模块开发入门1开发环境搭建(代码片段)

...发入门1开发环境搭建一、开发板环境二、安装开发环境1.安信可一体化开发环境下载链接:2.双击安装:AiThinkerIDE_V1.5.2.exe三、配置带OS的开发环境1.克隆仓库2.在IDE导入工程3.添加示例工程4.设置环境变量5.设置编译目标3.... 查看详情

linkgui™aire32开发板介绍

概述LinkGUI™AirE32让开发者可以在ESP32芯片上实现完美的图形交互体验。本开发平台是基于ESP32WROVER芯片组,将GUI系统无缝嵌入到乐鑫开源的ESP-IDF开发环境,实现让开发者既可开发出优秀的UI接互,又可使用ESP-IDF丰富的... 查看详情

littlevglesp32学习笔记①移植最新的lvgl版本到安信可esp32c3模组,显示一个二维码。(附带源码)(代码片段)

本系列博客学习由非官方人员半颗心脏潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。系列一:ESP32系列模组基础学习系列笔记1、爬坑学习新旅程,... 查看详情