600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯

【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯

时间:2022-08-05 23:51:56

相关推荐

【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯

----------

本博客学习由安信可开源团队潜心编写,做ESP32-A1S离线语音初步入门技术交流分享。如有不完善之处,请留言,本团队及时更改。

文章目录

一、前言二、离线语音框架2.1 算法模型 WakeNet 和 识别模型 MultiNet2.2 唤醒词识别2.3.2 语音命令识别三、开发板、编译、体验3.1 ESP32-A1S开发板3.2 拉取代码和指定idf路径3.3 编译 控制开发板上LED灯

一、前言

离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出。

安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(WakeNet),离线语音命令识别引擎(MultiNet)和前端声学算法。 ESP32-A1S 将 ESP32 与人工智能(AI)语音识别相结合,是安信可完整的 AIoT 解决方案的一部分。

下面使用我的开发笔记,将讲解如何使用ESP32-A1S开发板轻松的实现离线语音控制LED灯。

二、离线语音框架

2.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.2 唤醒词识别

唤醒词模型 WakeNet,致力于提供一个低资源消耗的的高性能模型,支持类似“Alexa”,“天猫精灵”,“小爱同学”等唤醒词的识别。

目前,ESP32的唤醒词仅仅开放了如下几个:“Hi,乐鑫”,“你好小智”,“你好小鑫”,“hi,Jeson”等唤醒词。

2.3.2 语音命令识别

命令词识别模型 MultiNet ,致力于提供一个灵活的离线语音命词识别框架。用户可方便根据需求自定义语音命令,无需重新训练模型。

目前模型支持类似“打开空调”,“打开卧室灯”等中文命令词识别,自定义语音命令词最大个数为 100。

英文命令词定义将在下一版提供支持。

三、开发板、编译、体验

3.1 ESP32-A1S开发板

因为是esp32芯片开发,所以固件是基于ESP32的SDK开发为基础,仓库代码已经开发了支持ESP32-A1S开发板简单控制的demo。

ESP32-A1S官网旗舰店样品购买传送门:点击

ESP32-A1S官网开发技术文档:点击

3.2 拉取代码和指定idf路径

以linux开发环境为例,编译以及开发更快更方便!

ESP32Linux开发环境搭建教程链接:点击

拉取代码,git操作克隆,这个操作拉取了 整个SDK工程,但是过程会花较长的时间,因为SDK的-esp-sr相关组件在GitHub上,而GitHub属于外国网站,就耐心等待吧!

git clone --recursive /Ai-Thinker-Open/Ai-Thinker-Open_ESP32-A1S_ASR_SDK.git

指定依赖的idf编译在esp-skainet-AI里面的idf,比如这样:

export IDF_PATH=~/esp32/esp-skainet-AI/esp-idf/

把编译需要的工具链放在~/.bashrc

3.3 编译 控制开发板上LED灯

打开工程里的examples/Smart_home_scene_AI通过make menuconfig配置,选择开发板为ESP32-A1S

接着开始编译!

sudo chmod 777 /dev/ttyUSB0make flash monitor -8j

编译成功

然后,对开发板说 “你好,小智” ,这时候,红色指示灯会亮起来,说明唤醒成功,然后接着说 “打开客厅的灯”,客厅的灯就会亮起。。。。。。

本地能识别的词语列表,可以看到是一个一个词语的拼音:

[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---------------------------------------------------------

处理代码如下:

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;}

好了,目前就先这样跟大家ESP32-A1S离线语音的入门,更多内容,关注安信可公众号,敬请期待!!

技术支持:support@或留言咨询,有问必回复!关注“安信可科技”微信公众号,干货多多,第一时间推送!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。