匿名
未登录
登录
丢石头百科
搜索
查看“ESP32-Audio-Kit”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
ESP32-Audio-Kit
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Product |images=[[File:ESP32-Audio-Kit.jpg|400px]] |categories= {{Category|WiFi}} {{Category|音频}} {{Category|Espressif}} {{Category|ESP32}} |brand=安信可 |interfaces= {{Category|UART接口}} {{Category|SDIO接口}} |related= {{ESP32 Related}} }} == 产品概述 == {{FULLPAGENAME}} 是基于 [[ESP32-A1S]] 模组开发的小型音频开发板。大多数音频外设分布在开发板两侧,支持TF卡,耳机输出,两路麦克风输入和两路喇叭输出。方便开发人员迅速开发。 == 板载资源 == * 耳机口(earphone):插入3.5mm耳机插口,支持左右声道输出。 * 左右声道扬声器(left channel of speaker/right channel of speaker):支持最大输出4Ω3W喇叭输出,同时支持双声道输出。 * SD卡:最大支持64G SD卡读写 * 按键(KEY):支持6路按键输入,默认出厂以下接入方式 {|class="wikitable" ! 名称 !! IO |- | KEY1 || IO36 |- | KEY2 || IO13 |- | KEY3 || IO19 |- | KEY4 || IO23 |- | KEY5 || IO18 |- | KEY6 || IO5 |} * 麦克风:两路模拟麦克风,分别作为音频输入。 * 耳麦输入(LINEIN):支持耳机麦克风输入。 * 锂电池(battery):支持3.7伏锂电池输入。 * 电源输入(POWER):最大支持5V2A电源输入,支持同时锂电池充电。 * 串口(UART):支持micro usb串口输入输出,最大支持921600波特率。 * 下载按钮(BOOT):下载时请拉低。由于IO0提供codec时钟,程序正常运行时请勿按下,否则影响codec工作。 * 复位按钮(EN):按此按钮可以重置系统。 * 供电方式:1.Micro USB端口 5V/2A;2.锂电池供电。 == 使用说明 == * [https://github.com/donny681/esp-adf SDK例子] * 更多教程请参考 [https://docs.espressif.com/projects/esp-adf/en/latest/get-started/index.html#about-esp-adf ESP-ADF API文档] 里面Ai-example例子。 下面将讲解如何使用 ESP32-Audio-Kit (ESP32-A1S开发板)轻松的实现离线语音控制LED灯。 === 离线语音框架 === 1. '''算法模型 WakeNet 和 识别模型 MultiNet''' 既然是语音唤醒,本地识别,就离不开算法模型和识别模型,而ESP32-A1S是基于乐鑫一个仓库esp_sr为基础的。而 esp_sr 提供语音识别相关方向算法模型,目前主要包括三个模块: * 唤醒词识别模型 WakeNet * 语音命令识别模型 MultiNet * 声学算法:集成了回声消除 AEC(Acoustic Echo Cancellation),自动增益调节 AGC(automatic_gain_control),噪声抑制 NS(Noise Suppression),语音活动检测 VAD(Voice Activity Detection) 和麦克风阵列算法(Mic Array Processing)。 2. '''唤醒词识别''' 唤醒词模型 [https://github.com/espressif/esp-sr/blob/master/wake_word_engine/README_cn.md WakeNet],致力于提供一个低资源消耗的的高性能模型,支持类似“Alexa”,“天猫精灵”,“小爱同学”等唤醒词的识别。 目前,ESP32的唤醒词仅仅开放了如下几个:“Hi,乐鑫”,“你好小智”,“你好小鑫”,“hi,Jeson”等唤醒词。 3. '''语音命令识别''' 命令词识别模型 [https://github.com/espressif/esp-sr/blob/master/speech_command_recognition/README_cn.md MultiNet],致力于提供一个灵活的离线语音命词识别框架。用户可方便根据需求自定义语音命令,无需重新训练模型。 目前模型支持类似“打开空调”,“打开卧室灯”等中文命令词识别,自定义语音命令词最大个数为 100。 英文命令词定义将在下一版提供支持。 === 编译步骤 === 固件是基于ESP32的SDK开发为基础,仓库代码已经开发了支持ESP32-A1S开发板简单控制的demo。 参考资料:[https://docs.espressif.com/projects/esp-idf/en/latest/get-started/index.html# ESP32 Linux开发环境搭建教程] 1. 下载源代码 git clone 方式: <pre> git clone --recursive https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-A1S_ASR_SDK.git </pre> 如果速度较慢,可以直接下载: * [[:File:Ai-Thinker-Open_ESP32-A1S_ASR_SDK-master.zip]] 2. 把 esp-skainet-AI 和 ESP IDF 依赖路径加入环境变量中。 <pre> export IDF_PATH=~/esp32/esp-skainet-AI/esp-idf/ </pre> 路径应以实际情况为准。或者写入 .bashrc 中。 3. 把编译需要的工具链写入 .bashrc 中。 [[File:ESP32-Audio-Kit_2.png]] 4. 打开工程里的 examples/Smart_home_scene_AI,通过 make menuconfig 配置,选择开发板为 ESP32-A1S。 [[File:ESP32-Audio-Kit_3.gif]] 5. 通过串口连接电脑之后,给串口赋予 777 权限,并开始编译。 <pre> sudo chmod 777 /dev/ttyUSB0 make flash monitor -8j </pre> 6. 编译成功。 [[File:ESP32-Audio-Kit_4.png]] 7. 然后,对开发板说 “你好,小智” ,这时候,红色指示灯会亮起来,说明唤醒成功,然后接着说 “打开客厅的灯”,客厅的灯就会亮起。 === 代码分析 === 本地能识别的词语列表,可以看到是一个一个词语的拼音: <pre> [0;32mI (321) MN: ---------------------SPEECH COMMANDS--------------------- [0;32mI (328) MN: Command ID0, phrase 0: da kai yi hao deng [0;32mI (333) MN: Command ID1, phrase 1: da kai er hao deng [0;32mI (339) MN: Command ID2, phrase 2: da kai san hao deng [0;32mI (345) MN: Command ID3, phrase 3: da kai si hao deng [0;32mI (351) MN: Command ID4, phrase 4: da kai wu hao deng [0;32mI (356) MN: Command ID5, phrase 5: da kai ke ting de deng [0;32mI (363) MN: Command ID6, phrase 6: guan bi ke ting de deng [0;32mI (369) MN: Command ID7, phrase 7: da kai wo shi de deng [0;32mI (375) MN: Command ID8, phrase 8: guan bi wo shi de deng [0;32mI (381) MN: Command ID9, phrase 9: da kai chu fang de deng [0;32mI (387) MN: Command ID10, phrase 10: guan bi chu fang de deng [0;32mI (393) MN: Command ID11, phrase 11: da kai zou lang de deng [0;32mI (400) MN: Command ID12, phrase 12: guan bi zou lang de deng [0;32mI (406) MN: Command ID13, phrase 13: da kai ce suo de deng [0;32mI (412) MN: Command ID14, phrase 14: guan bi ce suo de deng [0;32mI (419) MN: Command ID15, phrase 15: da kai wei sheng jian de deng [0;32mI (425) MN: Command ID16, phrase 16: guan bi wei sheng jian de deng [0;32mI (432) MN: Command ID17, phrase 17: da kai quan bu de deng [0;32mI (439) MN: Command ID18, phrase 18: guan bi quan bu de deng [0;32mI (445) MN: Command ID19, phrase 19: quan bu da kai [0;32mI (450) MN: Command ID20, phrase 20: quan bu guan bi [0;32mI (457) MN: Command ID83, phrase 21: quan bu [0;32mI (461) MN: Command ID84, phrase 22: guan bi wu hao deng [0;32mI (467) MN: Command ID85, phrase 23: guan bi si hao deng [0;32mI (473) MN: Command ID86, phrase 24: guan bi san hao deng [0;32mI (479) MN: Command ID87, phrase 25: guan bi er hao deng [0;32mI (485) MN: Command ID88, phrase 26: guan bi yi hao deng [0;32mI (491) MN: Command ID89, phrase 27: guan bi tai deng [0;32mI (497) MN: Command ID90, phrase 28: da kai tai deng [0;32mI (502) MN: Command ID91, phrase 29: guan bi shu fang de deng [0;32mI (509) MN: Command ID92, phrase 30: da kai shu fang de deng [0;32mI (515) MN: Command ID93, phrase 31: guan bi [0;32mI (520) MN: Command ID94, phrase 32: da kai [0;32mI (525) MN: Command ID95, phrase 33: da kai shi hao deng [0;32mI (531) MN: Command ID96, phrase 34: da kai jiu hao deng [0;32mI (537) MN: Command ID97, phrase 35: da kai ba hao deng [0;32mI (543) MN: Command ID98, phrase 36: da kai qi hao deng [0;32mI (549) MN: Command ID99, phrase 37: da kai liu hao deng --------------------------------------------------------- </pre> 处理代码如下: <source lang="C"> bool speech_commands_action(int command_id) { printf("Commands ID: %d.\n", command_id); switch (command_id) { case 5: printf("打开客厅的灯\n"); open_light(50000); break; case 6: printf("关闭客厅的灯\n"); close_light(50000); break; case 7: printf("打开卧室的灯\n"); open_light(50001); break; case 8: printf("关闭卧室的灯\n"); close_light(50001); break; case 9: printf("打开厨房的灯\n"); open_light(50002); break; case 10: printf("关闭厨房的灯\n"); close_light(50002); break; case 11: printf("打开走廊的灯\n"); open_light(50003); break; case 12: printf("关闭走廊的灯\n"); close_light(50003); break; case 19: printf("全部打开\n"); open_light(50000); vTaskDelay(50 / portTICK_PERIOD_MS); open_light(50001); vTaskDelay(50 / portTICK_PERIOD_MS); open_light(50002); vTaskDelay(50 / portTICK_PERIOD_MS); open_light(50003); break; case 20: printf("全部关闭\n"); close_light(50000); vTaskDelay(50 / portTICK_PERIOD_MS); close_light(50001); vTaskDelay(50 / portTICK_PERIOD_MS); close_light(50002); vTaskDelay(50 / portTICK_PERIOD_MS); close_light(50003); break; default: return false; break; } return true; } </source> == 资源下载 == * [https://docs.ai-thinker.com/esp32 ESP32 系列模组专题] * [[:File:esp32-audio-kit_v2.2_sch.pdf|ESP32-Audio-Kit 原理图]] * [[:File:esp32-a1s_product_specification_zh.pdf|ESP32-A1S 规格书]] * [[:File:Audio-Kit-BT-SD-V1_0.zip|出厂固件]] * [https://github.com/donny681/esp-adf SDK例子] * [https://docs.espressif.com/projects/esp-adf/en/latest/get-started/index.html#about-esp-adf ESP-ADF API文档] === ESP32-A1S ASR SDK === <pre> git clone https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-A1S_ASR_SDK </pre> 或直接下载 * [[:File:Ai-Thinker-Open_ESP32-A1S_ASR_SDK-master.zip]] == FAQ == {{ESP32-A1S FAQ}} {{Service00}}
该页面使用的模板:
模板:Category
(
查看源代码
)
模板:ESP32 Related
(
查看源代码
)
模板:ESP32-A1S FAQ
(
查看源代码
)
模板:FAQ
(
查看源代码
)
模板:Product
(
查看源代码
)
模板:Service00
(
查看源代码
)
模板:Tag
(
查看源代码
)
模板:Tipbox
(
查看源代码
)
返回至
ESP32-Audio-Kit
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志