乐鑫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开放平台,实现叮咚音响语音智能控制。



在这里插入图片描述

一、前言;


     前天,我在博客分享了如何入门 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个语音命令 ID12个命令短语

在这里插入图片描述


四、搭建针对语音命令的动作函数


     用户可以通过 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
  • 关注下面微信公众号二维码,干货多多,第一时间推送!
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
2022 / 01/ 30: 新版esptool 刷micropython固件指令不是 esptool.py cmd... 而是 esptool cmd... 即可;另外rshell 在 >= python 3.10 的时候出错解决方法可以查看:  已于2022年发布的: 第二章:修复rshell在python3.10出错 免费内容: https://edu.csdn.net/course/detail/29666 micropython语法和python3一样,编写起来非常方便。如果你快速入门单片机物联网而且像轻松实现各种功能,那绝力推荐使用micropython。方便易懂易学。 同时如果你懂C语音,也可以用C写好函数并编译进micropython固件里然后进入micropython调用(非必须)。 能通过WIFI联网(2.1章),也能通过sim卡使用2G/3G/4G/5G联网(4.5章)。 为实现语音控制,本教程会教大家使用tensorflow利用神经网络训练自己的语音模型并应用。为实现通过网页控制,本教程会教大家linux(debian10 nginx->uwsgi->python3->postgresql)网站前后台入门。为记录单片机传输过来的数据, 本教程会教大家入门数据库。  本教程会通过通俗易懂的比喻来讲解各种原理与思路,并手把手编写程序来实现各项功能。 本教程micropython版本是 2019年6月发布的1.11; 更多内容请看视频列表。  学习这门课程之前你需要至少掌握: 1: python3基础(变量, 循环, 函数, 常用库, 常用方法)。 本视频使用到的零件与淘宝上大致价格:     1: 超声波传感器(3)     2: MAX9814麦克风放大模块(8)     3: DHT22(15)     4: LED(0.1)     5: 8路5V低电平触发继电器(12)     6: HX1838红外接收模块(2)     7:红外发射管(0.1),HX1838红外接收板(1)     other: 电表, 排线, 面包板(2)*2,ESP32(28)  
乐鑫ESP32 ESP-IDF是一个开源的物联网开发框架,用于开发和编程ESP32芯片。在Windows操作系统上安装乐鑫ESP32 ESP-IDF需要进行以下几个步骤: 1. 首先,你需要下载ESP-IDF Windows Installer。官方提供了一个下载链接,你可以通过该链接下载安装程序。 2. 安装ESP-IDF插件和其他相关插件。这些插件可以帮助你更好地使用ESP-IDF开发框架。 3. 在安装过程中,如果勾选了"Run ESP-IDF PowerShell Environment"选项,安装程序会在所选提示符窗口中启动ESP-IDF。这将为你提供一个命令行环境,方便你进行ESP32的开发和编程。 通过以上步骤,你就可以成功安装乐鑫ESP32 ESP-IDF,并开始使用该框架进行物联网项目的开发了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【WiFi模组】乐鑫ESP32 基于ESP-IDF的原生SDK二次开发](https://blog.csdn.net/qq_33033059/article/details/125695660)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【乐鑫ESP32ESP-IDF+VSCode环境搭建](https://blog.csdn.net/weixin_45381001/article/details/123121765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半颗心脏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值