前景提要

公司有一个新产品,产品定义上有一个很愚蠢的交互设计,耳机中有人打电话过来后,会有提示音播放是否接听,此时用户想要接听,随便说什么话都可以接通(甚至噪音都可以),如果不想接通就闭嘴,因此我来了兴趣,能否在单片机上运行简单的语音关键词识别

简述keyword spotting

什么是kws(keyword spotting),翻译过来就是关键词检测,例如小米音响、天猫精灵音响上都有小爱同学、天猫精灵的唤醒词。我们如果有什么需求,可以在任意时刻发出语音指令让语音助手帮我们办事,所以kws的最重要的一个特点就是实时响应。

如何搭建语音唤醒模型

  • 作为测试项目,我搭建一个实现识别noise、one、two、three、four、five六个英文单词的模型,每次的音频长度为1S
  • 使用mfcc进行特征提取,便于网络结构识别特征
  • 使用卷积神经网络(CNN)来做搭建网络结构:神经网络学习框架一如既往的使用torch
  • 使用开源数据集speech_commands_v0.01,可以满足上述我们对样本的需求
  • 每个标签的样本数量为2000,其中使用1700作为训练集,300作为测试集
  • 需要创建一系列的工具用来音频提取、音频保存、数据保存等等
  • 神经网络结构使用DS-CNN(深度可分离卷积神经网络),相比于传统CNN可以降低计算量
  • 模型训练完成后在PC上与STM32上进行实际测试

最终在STM32上使用cube.ai框架推理,推理结果如下:

test x为输入一段音频,长度为16K,time为消耗的时长,单位为毫秒,result x 为最终结果
test 1->speed time:220  result is 1
test 2->speed time:221  result is 2
test 3->speed time:221  result is 3
test 4->speed time:221  result is 4
test 5->speed time:221  result is 5

下一章节:详细阐述如何收集样本、预处理样本、音频特征提取、样本保存等工作

文章目录