乐鑫Esp32学习之旅16 学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
- 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。
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开放平台,实现叮咚音响语音智能控制。
文章目录
- 一、前言;
- 二、修改唤醒词;
- 三、修改命令词;
- 四、搭建针对语音命令的动作函数
- 五、其他
- 5.1 编译和运行
- 5.2 唤醒板子
- 5.3 语音命令词识别
- 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,欢迎留言哈!也欢迎加群讨论!
一、前言;
前天,我在博客分享了如何入门 esp-skainet
,很多群友都对此感兴趣,今天也是双十一,今天您剁手了么?还是准备老老实实跟着我敲代码?继续学习本地语音唤醒离线识别这个框架?
最近也发现自己有点散光了,很痛苦,又要去配眼镜或者视力检查了,如果有机会,我一定不做 “程序猿”久坐对着电脑不会适量运动;
二、修改唤醒词;
前面说了,唤醒词是只有几个,因为考虑到商业问题,官方也就开放出来几个而已,包括“Hi 乐鑫”,“您好小智”… …等几个,那么我们如何修改自定义唤醒词呢?
打开工程配置 make menuconfig
,从下面可以看到只有“Hi 乐鑫”,“您好小智” 这2个唤醒词;英文版的唤醒词,还要等待官网添加进去;
进入 Component config
-> ESP Speech Recognition
,按照指示配置以下参数:
Wake word engine
: 选择WakeNet 5 (quantized)
;Wake word name
: 选择hilexin (WakeNet5)
或者其他唤醒词speech commands recognition model to us
: 选择MultiNet 1 (quantized)
;langugae
: 选择chinese (MultiNet1)
;
三、修改命令词;
修改命令词是什么意思?比如我要它识别到 “我要开空调”、“我要开飞机”、“我要开推土机”,然后把识别后的意图转化为代码做对应的动作;
上篇博文说了,自定义命令词仅仅支持 100 个,而且目前为止只是中文词汇,非英文词汇,很好!
目前,MultiNet 模型中已经预定义了四个命令词。用户可以通过 menuconfig -> Component config -> ESP Speech Recognition -> Add speech commands
and The number of speech commands
来定义自己的语音命令词和语音命令的数目。注意,在填充命令词时应该使用拼音,并且每个字的拼音拼写间要间隔一个空格。比如“打开空调”,应该填入 “da kai kong tiao”.
- 一个语音命令 ID 可以对应多条语音指令短语;
- 最多支持 100 个语音命令 ID 或者命令短语;
- 同一个语音命令 ID 对应的多条语音指令短语之间要使用“,”隔开
- 比如下面的动图,我做了5个语音命令 ID和 12个命令短语!
四、搭建针对语音命令的动作函数
用户可以通过 void speech_commands_action(int command_id)
函数定义针对每个语音命令的动作,因为前面我们看到了每个命令短语对应一个ID,所以,识别出来的结果,我们判断id就知道它的意图是什么了,比如:
void speech_commands_action(int command_id)
{printf("Commands ID: %d.\n", command_id);switch (command_id){case 0:printf("开灯 \n");led_on(CW_LED_GPIO);led_on(WW_LED_GPIO);break;case 1:printf("关灯 \n");led_off(CW_LED_GPIO);led_off(WW_LED_GPIO);break;case 2:printf("冷色光\n");led_on(CW_LED_GPIO);led_off(WW_LED_GPIO);break;case 3:printf("暖色光\n");led_off(CW_LED_GPIO);led_on(WW_LED_GPIO);break;case 4:printf("中性光\n");led_on(CW_LED_GPIO);led_on(WW_LED_GPIO);break;default:break;}
}
五、其他
5.1 编译和运行
运行 make flash monitor
来编译烧写该示例,并且检查以下输出打印:
Quantized wakeNet5: wakeNet5_v1_hilexin_5_0.95_0.90, mode:0
Quantized MN1
I (153) MN: ---------------------SPEECH COMMANDS---------------------
I (163) MN: Command ID0, phrase 0: da kai kong tiao
I (163) MN: Command ID1, phrase 1: guan bi kong tiao
I (173) MN: Command ID2, phrase 2: da kai dian deng
I (173) MN: Command ID3, phrase 3: guan bi dian deng
I (183) MN: ---------------------------------------------------------chunk_num = 200
-----------awaits to be waken up-----------
5.2 唤醒板子
可以通过板子的输出打印找到支持的唤醒词。在这个示例中,唤醒词是 “Hi Lexin" [Ləsɪ:n].
然后,说出 “Hi Lexin" ([Ləsɪ:n]) 来唤醒板子,唤醒后打印如下信息:
hilexin DETECTED.
-----------------LISTENING-----------------
5.3 语音命令词识别
然后,板子会进入侦听状态,等待语音命令词。
目前,MultiNet 已经预定义了 20 个词,可以参考 MultiNet.
如果命令词存在于命令词列表中,回打印如下 log:
-----------------LISTENING-----------------phrase ID: 0, prob: 0.866630 Commands ID: 0-----------awaits to be waken up-----------
如果命令词不存在于命令词列表中,回打印如下 log:
-----------------LISTENING-----------------cannot recognize any speech commands-----------awaits to be waken up-----------
当板子结束当前的识别过程并且进入等待唤醒状态时,会打印:
-----------awaits to be waken up-----------
另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,欢迎留言哈!也欢迎加群讨论!
- 玩转
esp8266
带你飞、加群付费QQ
群,不喜的朋友勿喷勿加:434878850 - esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
- esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
- 关注下面微信公众号二维码,干货多多,第一时间推送!
乐鑫Esp32学习之旅16 学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?相关推荐
- 乐鑫Esp32学习之旅② 巧用eclipes编辑器,官方教程在Windows下搭建esp32开发环境,打印 “Hello World”。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅 22 讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等,附带Demo;
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅13 esp32 内置 dns 服务器,无需外网访问域名返回指定网页。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅28 分享在 esp32 SDK实现驱动 Flash W25Q32 的封装,扩大容量存储更多的资源。(开源源码工程)。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...
- 乐鑫Esp32学习之旅⑦ esp32上利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅27 带你在Windows10平台下用自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 乐鑫Esp32学习之旅① 爬坑学习新旅程,虚拟机Linux环境搭建esp32环境,打印 “Hellow World”。(2021年6月已更新)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...
最新文章
- HTML5 利用canvas API 展示阴影效果
- CentOS iso镜像文件做本地源
- Shell中的分支语句
- 鼠标动效html,5种纯CSS3鼠标hover按钮动画效果
- redis没有加密码导致服务器被当做矿机了
- 背英语单词很困难,不妨学习一下词根词缀吧(每天10个词根、词缀)Part 2
- 麒麟810处理器_麒麟810性能实测:对比骁龙845骁龙730,谁更强?
- TCP协议 状态解析和状态统计
- wps可以登录网页版_教程丨WPS会员半自动打卡
- iOS连续上传多张图片
- ios 镜像_2020年微软MSDN原版系统镜像下载 包含Windows10/7/8/8.1/XP系统
- SpringBoot系列(4):构建一个多模块SpringBoot项目
- bilibili 韩顺平Java后端学习路线
- 订单同步有技巧,双十一高峰不再怕
- 《生物信息学:导论与方法》----序列对比----听课笔记(三)
- 硬盘又坏了?硬盘数据恢复的工具有这些
- Qt 软件开发框架(详细版)
- 出差忘带电脑脑袋炸裂?鼓捣了下个人云,真香
- mysql联合唯一_MYSQl 联合唯一约束 根据两个字段 唯一
- video标签不能自动播放的原因