乐鑫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 音频框架,小试牛刀如何实现在线文字转语音播放。
文章目录
- 一、前言
- 二、安信可 esp32-a1s 模块
- 三、移植乐鑫最新 esp-adf 框架进去安信可音频开发板
- 3.1 如何移植?
- 四、在线语音合成
- 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!
一、前言
时光如梭,我已经在CSDN驻扎了4年了,不忘初心,我依然是每次学习新的东西,就立刻写博文总结出来,养成 “好记性不如烂笔头” 的习惯,往后回头看,那是值得回忆的里程碑。
与往常过年一样,依旧带着一包一电脑,还拎着几个开发板回家,今年疫情严重,不走亲戚,只好慢慢敲代码;
这2个月,在武汉发现的新型病毒感染肺炎事件中,我看到了一代中国人的团结凝聚的力量,也看到了背后的一幕。从几个人感染到目前全国1.7w的感染确诊,一场无硝烟的战争,有人发国难财,有的抬高口罩价格,有的卖假货,有的虚报荒情,人心叵测。这里愿各位朋友,务必注意个人卫生健康习惯,不仅是为了自己,也为了家里人,更是体现一个国家的优良传统。
二、安信可 esp32-a1s 模块
本篇文章 为什么要先从安信可 esp32-a1s
模块说起,并不是打广告,我们都知道:乐鑫esp32可以实现很多语音的功能,包括在线离线语音识别,在线合成等。乐鑫的开发板都是一个 esp32模组 + 一个音频芯片分别焊在板子里面,而安信可 esp32-a1s
模块恰恰结合了这点,把 esp32芯片最小系统和音频芯片做成了一个模组,也就是一个模组里面 有 esp32芯片和音频解码芯片。
与乐鑫官方模块有何优点?最大的好处就是内置音频芯片,做音频相关时候不用关心如何连接音频芯片,后面为大家介绍如何做一个最简单的 “阉割版esp32播放器”。
下面把安信可 esp32-a1s
模块统称为 模块!
下面整理了模块的常见问题:
- 模块内含一个 esp32芯片和音频模组?具体点?
- 答: 采用具有双核处理器的ESP32作为主控,模块内部配置有4M的PSRAM和CodeC音频处理芯片,音频芯片为 AC101。
- 到手之后,这模块为何比平常大了那么大?
- 答: 主要是因为里面多了个音频芯片 ac101!为了验证与上述是否一致?我把开发板里面的模块外壳拆开,给大家看看。专业拆货,请勿模仿!保护罩设计有很多讲究,主要的防尘功能,以及是否对信号有干扰,平常不要拆开它!
- 这模块内部连线怎么样的?可用的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 如何移植?
这里先贴出我已经移植好的框架地址:
- GitHub:https://github.com/Ai-Thinker-Open/ESP32-A1S-AudioKit.git
- 码云:https://gitee.com/xuhongv/AiThinker-esp32-A1s-AudioKit
首先,我们知道在玩其乐鑫框架时候,会有通过面板对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》文件夹新建几个源文件,一一实现方法,过程是非常讲究的,这里我直接拿前辈的代码不断适配,期间花了整整一天,总结如下:
- esp32芯片对音频芯片i2s的驱动初始化等io初始化的管脚初始化。
- esp32芯片驱动 SD 卡的 io 口定义;
- esp32音频设置的回调函数定义,包括声音设置,调大调小等;
- 开发板的按键初始化工作实现。
- 还有一些零碎的可用的 led 的管脚定义。
最后,就是重点的如何驱动音频芯片AC101的具体细节源码实现,那么在文件夹《audio_hal》里面增加源码 ac101.c 和 ac101.h 文件。别忘了还要在component.mk文件增加条件编译:
COMPONENT_ADD_INCLUDEDIRS += ./driver/ac101
COMPONENT_SRCDIRS += ./driver/ac101
四、在线语音合成
首先,需要在 百度AI开放平台 创建一个语音合成的应用。选择语音识别或者语音合成。
创建一个应用:
创建应用是为了得到一些接入参数,就是 api key
和 secret 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
- 关注下面微信公众号二维码,干货多多,第一时间推送!
乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。相关推荐
- 乐鑫Esp32学习之旅28 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。(附带源码)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅29 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现本地视频流监控。(附带源码)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32-S2学习之旅① 入门 ESP32-S2 环境搭建 ,分享如何直连苹果智能家居 HomeKit 平台,轻松语音 Siri 控制!
本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...
- 乐鑫Esp32-S2学习之旅② ESP32-S2 控制 ws2812b 实现五彩斑斓的效果,代码开源!
本系列博客学习由非乐鑫官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于乐鑫ESP32 芯片模组 C SDK二次开发的技 ...
- 安信可 ESP8266机智云开发板:编译与烧录
安信可 ESP8266机智云开发板:编译与烧录 编译:1.SDK 开发环境搭建见 安信可ESP系列一体化开发环境搭建 下载地址:http://pan.ba ...
- 【BW16 应用篇】安信可BW16模组/开发板AT指令实现MQTT通讯
文章目录 前言 1 固件烧录 2 EMQ服务器搭建 2.1 软件获取 2.2 启动EMQ服务 3 设备端联网配置 3.1 AT指令配置 3.2 信息交互 联系我们 前言 本文主要介绍安信可BW16模组 ...
- 乐鑫Esp32学习之旅 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。(附带设备端+PC端源码)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...
- 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
最新文章
- 虚拟dom_通过编写简易虚拟DOM,来学习虚拟DOM 的原理
- C++中的c_str()函数用法
- php验证码切换不刷新页面,Yii2解决验证码点击、刷新页面不刷新问题
- map与weakmap,ES6 Map和WeakMap有什么区别?
- 特斯拉不顾疫情开工,马斯克放话:若要逮捕,冲我一个人来!
- java string范围_java,String
- springboot获取客户端发来的数据
- Nginx 重写规则指南
- 新年新起点-荣获2011年度Silverlight方向Microsoft® MVP奖
- 关于树叶的活动设计_悦趣课堂、教学相长 ——济南市天桥区金色悦城幼儿园公开课活动纪实...
- CANape a2l文件的编辑教程
- 微信商户平台(商户号)申请流程(仅供参考)
- js笔记,自封装篇(二)之对象克隆
- 软件测试工程师笔试题带答案(一)
- 浅谈ERP数据的重要性
- 最新电脑cpu性能排行服务器,服务器cpu性能排行,详细教您服务器cpu性能排行
- 3.17 inappropriateintimacy (狎昵关系)
- 浙江大学计算机保研条件_2020年计算机系保研推免记录(浙江大学软件学院)...
- 【Unity 框架】QFramework v1.0 使用指南 工具篇:06. UIKit 界面管理快速开发解决方案 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
- 快速回复信息神器哪些支持一键复制粘贴回复