乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。


  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。
19、重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!
20、一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
21、 esp32蓝牙配网blufi的高度封装,集成简单、使用简单、容易上手,提高开发效率!
22、讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

在这里插入图片描述

一、前言

      时光如梭,我已经在CSDN驻扎了4年了,不忘初心,我依然是每次学习新的东西,就立刻写博文总结出来,养成 “好记性不如烂笔头” 的习惯,往后回头看,那是值得回忆的里程碑。

      与往常过年一样,依旧带着一包一电脑,还拎着几个开发板回家,今年疫情严重,不走亲戚,只好慢慢敲代码;

      这2个月,在武汉发现的新型病毒感染肺炎事件中,我看到了一代中国人的团结凝聚的力量,也看到了背后的一幕。从几个人感染到目前全国1.7w的感染确诊,一场无硝烟的战争,有人发国难财,有的抬高口罩价格,有的卖假货,有的虚报荒情,人心叵测。这里愿各位朋友,务必注意个人卫生健康习惯,不仅是为了自己,也为了家里人,更是体现一个国家的优良传统。


二、安信可 esp32-a1s 模块

      本篇文章 为什么要先从安信可 esp32-a1s 模块说起,并不是打广告,我们都知道:乐鑫esp32可以实现很多语音的功能,包括在线离线语音识别,在线合成等。乐鑫的开发板都是一个 esp32模组 + 一个音频芯片分别焊在板子里面,而安信可 esp32-a1s 模块恰恰结合了这点,把 esp32芯片最小系统和音频芯片做成了一个模组,也就是一个模组里面 有 esp32芯片和音频解码芯片。

      与乐鑫官方模块有何优点?最大的好处就是内置音频芯片,做音频相关时候不用关心如何连接音频芯片,后面为大家介绍如何做一个最简单的 “阉割版esp32播放器”。

      下面把安信可 esp32-a1s 模块统称为 模块!

      下面整理了模块的常见问题:

  1. 模块内含一个 esp32芯片和音频模组?具体点?
  • 答: 采用具有双核处理器的ESP32作为主控,模块内部配置有4M的PSRAM和CodeC音频处理芯片,音频芯片为 AC101。
    在这里插入图片描述

  1. 到手之后,这模块为何比平常大了那么大?
  • 答: 主要是因为里面多了个音频芯片 ac101!为了验证与上述是否一致?我把开发板里面的模块外壳拆开,给大家看看。专业拆货,请勿模仿!保护罩设计有很多讲究,主要的防尘功能,以及是否对信号有干扰,平常不要拆开它!

在这里插入图片描述


  1. 这模块内部连线怎么样的?可用的io有哪些?

在这里插入图片描述

在这里插入图片描述


三、移植乐鑫最新 esp-adf 框架进去安信可音频开发板

      据了解,安信可音频开发板已经售卖上架有2年多了,但是一直不温不热,很大原因在于推广不够,或技术支持不到位,于是乎,我决定根据现有的代码,统一移植乐鑫最新 esp-adf 框架进去,实现以下功能:

  • 音乐播放器或录音机支持音频格式,例如MP3,AAC,FLAC,WAV,OGG,OPUS,AMR,TS,EQ,Downmixer,Sonic,ALC,G.711 …
  • 从以下来源播放音乐:HTTP,HLS(HTTP实时流),SPIFFS,SDCARD,A2DP来源,A2DP接收器,HFP …
  • 集成媒体服务,例如:DLNA,VoIP …
  • 网络广播
  • 语音识别以及与Alexa,DuerOS等在线服务的集成…

3.1 如何移植?

      这里先贴出我已经移植好的框架地址:

      首先,我们知道在玩其乐鑫框架时候,会有通过面板对board 板子的选项,我就从这里入手,于是乎认真查找,分别找到了components下的audio_board 和 audio_hal 的2个文件夹。

      文件夹《audio_board》 顾名思义,就是对板子的定义,首先,我们新建一个开发板选项,同时新建文件夹放我们板子的io口定义等。
在这里插入图片描述

      然后,我们编辑 component.mk文件,增加条件编译语句,看得出来,当选定为安信可板子时候,指定的文件夹编译:

ifdef CONFIG_ESP_AI_THINKER_V2_2_BOARD
COMPONENT_ADD_INCLUDEDIRS += ./ai_thinker_audio_kit_v2_2
COMPONENT_SRCDIRS += ./ai_thinker_audio_kit_v2_2
endif

      其次,照葫芦画瓢,我们在《ai_thinker_audio_kit_v2_2》文件夹新建几个源文件,一一实现方法,过程是非常讲究的,这里我直接拿前辈的代码不断适配,期间花了整整一天,总结如下:

  1. esp32芯片对音频芯片i2s的驱动初始化等io初始化的管脚初始化。
  2. esp32芯片驱动 SD 卡的 io 口定义;
  3. esp32音频设置的回调函数定义,包括声音设置,调大调小等;
  4. 开发板的按键初始化工作实现。
  5. 还有一些零碎的可用的 led 的管脚定义。

      最后,就是重点的如何驱动音频芯片AC101的具体细节源码实现,那么在文件夹《audio_hal》里面增加源码 ac101.c 和 ac101.h 文件。别忘了还要在component.mk文件增加条件编译:

COMPONENT_ADD_INCLUDEDIRS += ./driver/ac101
COMPONENT_SRCDIRS += ./driver/ac101

四、在线语音合成

      首先,需要在 百度AI开放平台 创建一个语音合成的应用。选择语音识别或者语音合成。

在这里插入图片描述


      创建一个应用:
在这里插入图片描述
      创建应用是为了得到一些接入参数,就是 api keysecret key

在这里插入图片描述


      跑起官方例程 /examples/cloud_services/pipeline_baidu_speech_mp3,然后通过面板设置家庭路由器ssid和密码,还有上面的2个参数!
在这里插入图片描述


      然后插上耳机或喇叭听吧!

在这里插入图片描述

       有任何疑问联系本人下方邮箱或加qq群或文章留言,不要私信我,我已经屏蔽私信!多多支持!


另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转esp8266带你飞、加群QQ群,不喜的朋友勿喷勿加:434878850
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有回必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!

在这里插入图片描述

<think>好的,我现在需要帮助用户寻找关于ESP32和小智AI相关的示例程序或教程。首先,我需要明确用户的需求。用户提到了“小智AI”,这可能指的是某种具体的AI应用,比如聊天机器人、智能语音助手或者特定的AI硬件模块。结合用户提供的引用内容,尤其是引用[3]提到的“小智AI桌宠机器狗”,可能用户对如何将ESP32与AI功能结合,特别是与机器狗或类似设备交互感兴趣。 接下来,我需要查看用户提供的三个引用,看看是否有相关的示例代码或教程。引用[1]是关于基于ESP32-CAM制作智能机器人的教程,提到了使用Arduino IDE和示例代码。这可能涉及到摄像头和机器人控制,但并没有直接提到小智AI。引用[2]是关于ESP32接入智谱AI聊天机器人,使用了API和示例代码,这可能与AI聊天功能相关。引用[3]提到了在代码中添加“Dog”设备,可能涉及到控制机器狗的物联网功能。 用户的问题是将ESP32与小智AI结合,可能需要综合这三个引用的内容。可能的思路是:ESP32通过API接入智谱AI(如引用[2]),然后控制机器狗(引用[3]),同时可能使用摄像头模块(引用[1])进行视觉处理。因此,用户可能需要整合这些资源的示例代码。 接下来,我需要考虑用户可能的实际应用场景。例如,用户可能想制作一个具有AI对话功能的智能机器狗,使用ESP32作为主控,通过摄像头进行图像识别,并通过API与AI交互。因此,回答需要涵盖如何接入AI服务、如何控制硬件设备,以及可能的示例代码来源。 另外,需要注意用户提到的“小智AI”可能是一个特定的产品,但由于信息有限,可能需要根据现有引用进行推测。例如,引用[3]中的代码可能属于某个项目,用户可能需要访问该项目的仓库或文档来获取更多信息。 在回答中,需要指导用户如何查找示例代码,比如在GitHub搜索相关关键词,参考现有的教程,或查阅官方文档。同时,应提醒用户注意硬件兼容性和网络配置,比如确保ESP32能够连接Wi-Fi,正确设置API密钥等。 最后,生成相关问题,帮助用户进一步探索,例如如何优化AI响应速度,如何集成更多传感器,或如何处理多任务等。</think>根据提供的参考资料,以下是关于ESP32与小智AI结合的开发指引和示例代码推荐: ### 一、开发路径解析 1. **硬件选择** - 核心控制:ESP32-CAM模块(含摄像头功能)或普通ESP32开发板 - AI交互:通过HTTP API接入智谱AI大模型服务[^2] - 执行机构:舵机/电机驱动的机器狗结构[^3] 2. **开发环境配置** ```arduino // 需安装的库文件 #include <WiFi.h> #include <HTTPClient.h> #include <ArduinoJson.h> ``` ### 二、关键代码示例 ```arduino // 智谱AI交互核心代码(引用[2]扩展) void chatWithAI(String prompt) { HTTPClient http; http.begin("https://api.zhipuai.com/v3/chat/completions"); http.addHeader("Content-Type", "application/json"); http.addHeader("Authorization", "Bearer 你的API密钥"); String payload = "{\"model\":\"chatglm-pro\",\"messages\":[{\"role\":\"user\",\"content\":\"" + prompt + "\"}]}"; int httpCode = http.POST(payload); if (httpCode == HTTP_CODE_OK) { String response = http.getString(); // 解析JSON响应 DynamicJsonDocument doc(1024); deserializeJson(doc, response); String aiReply = doc["choices"][0]["message"]["content"]; Serial.println("AI回复:" + aiReply); } http.end(); } // 机器狗控制代码(引用[3]扩展) void controlDog(String command) { if(command.indexOf("前进") != -1) { // 触发前进动作 digitalWrite(MOTOR_PIN1, HIGH); digitalWrite(MOTOR_PIN2, LOW); } // 添加更多动作控制... } ``` ### 三、系统集成流程 1. 在Arduino IDE中配置ESP32开发环境(引用[1]) 2. 获取智谱AI的API密钥(引用[2]) 3. 实现物联网设备注册(引用[3]中InitializeIot方法) 4. 开发语音/文字输入接口 5. 建立AI响应与硬件动作的映射关系 ### 四、推荐学习资源 1. ESP32-CAM基础教程:[ESP32-CAM AI Robot项目](引用[1]) 2. API接入文档:[智谱AI开放平台](引用[2]) 3. 物联网设备开发框架:[Compact ML307 Board代码](引用[3])
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半颗心脏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值