esp-sr/wake_word_engine/README_cn.md
2019-09-24 19:51:22 +08:00

4.3 KiB
Raw Blame History

WakeNet [English]

WakeNet是一个基于神经网络为低功耗嵌入式MCU设计的的唤醒词模型目前支持5个以内的唤醒词识别。

Overview

WakeNet的流程图如下

  • speech features
    我们使用MFCC方法提取语音频谱特征。输入的音频文件采样率为16KHz单声道编码方式为signed 16-bit。每帧窗宽和步长均为30ms。

  • neural network
    神经网络结构已经更新到第6版其中

    • wakeNet1和wakeNet2已经停止使用。
    • wakeNet3和wakeNet4基于CRNN结构。
    • WakeNet5(WakeNet5X2,WakeNetX3) 和 WakeNet6 基于 the Dilated Convolution 结构。

    注意WakeNet5,WakeNet5X2 和 WakeNet5X3 的网络结构一致,但是 WakeNet5X2 和 WakeNet5X3 的参数比 WakeNet5 要多。请参考 性能测试 来获取更多细节。

  • keyword trigger method
    对连续的音频流为准确判断关键词的触发我们通过计算若干帧内识别结果的平均值M来判断触发。当M大于大于指定阈值发出触发的命令。

API introduction

  • WakeNet模型选择

    1. 使用make menuconfig选择Component config >> ESP Speech Recognition >> Wake Word Engine,如下图
    1. 不同与WakeNet5WakeNet6被拆分成两个tasktask1计算speech featurestask2计算neural network model。task2使用的ESP32核心可以通过Component config >> ESP Speech Recognition >> ESP32 core to run WakeNet6选择默认使用core1。
  • 唤醒词选择
    使用make menuconfig选择Component config >> ESP Speech Recognition >> Wake word list进行选择如下图

    对于自定义的唤醒词,请选择customized wake word目前唤醒词定制只支持WakeNet5和WakeNet6WakeNet3和WakeNet4只对之前版本保持兼容具体可参考《乐鑫唤醒词定制流程》。

  • 阈值设定
    1.唤醒词模型通过设定触发阈值,来调整唤醒灵敏度,阈值范围为0~0.9999,对于包含多个唤醒词的模型,每个唤醒词的阈值相互独立。
    2.调整阈值时,当阈值减小,唤醒识别率增高同时误触发的风险也变大,反之唤醒识别率降低,误触发也减小。实际使用需要根据具体应用场景选择合适的阈值。
    3.每个唤醒词在模型内部预定义两个阈值,在模型初始化时使用,其中

    typedef enum {
        DET_MODE_90 = 0,  //Normal, response accuracy rate about 90%
        DET_MODE_95       //Aggressive, response accuracy rate about 95%
    } det_mode_t;
    

    4.初始化后,可以使用set_det_threshold()对不同唤醒词阈值进行重新设定。

  • 采样率与每帧长度 使用函数get_samp_rate获取识别所需音频数据的采样率 使用函数get_samp_chunksize获取每帧所需采样点语言编码方式为unsigned 16-bit int

性能测试

1.资源占用

模型 参数量 RAM 平均每帧时间消耗 每帧时长
Quantized WakeNet3 26 K 20 KB 29 ms 90 ms
Quantised WakeNet4 53 K 22 KB 48 ms 90 ms
Quantised WakeNet5 41 K 15 KB 5.5 ms 30 ms
Quantised WakeNet5X2 165 K 20 KB 10.5 ms 30 ms
Quantised WakeNet5X3 371 K 24 KB 18 ms 30 ms
Quantised WakeNet6 378 K 45 KB 4ms(task1)+25ms(task2) 30 ms

Quantised WakeNet6被拆分成两个task其中task1用于计算speech features另一个task2用于计算神经网络。

2.识别性能

距离 安静环境 平稳噪声(SNR=0~10dB) 语音噪声(SNR=0~10dB) AEC打断唤醒(-5~-15dB)
1 m 95% 88% 85% 89%
3 m 90% 80% 75% 80%

误唤醒率1 次/ 12 小时
:以上测试基于 WakeNet5X2(hilexin) 模型使用lyrat-mini开发板测试。该板为单颗麦克风拾音若使用多麦拾音的开发板可预料在远场场景会有更好的识别性能。

唤醒词定制

如果需要定制唤醒词,请参考乐鑫语音唤醒词定制流程