原创: Lebhoryi@rt-thread.com
时间: 2020/04/14
参考: 实时语音唤醒
文章目录


0x00 Paper
- 实时 KWS
- 在移动端
- 使用了时间卷积 TCN
- MFCC作为网络的输入
- 推理速度很快
- 开源了代码并提供了基准模型
- 叫做TC-ResNet
0x01 为了解决什么问题
1.1 KWS系统中的主要的问题
- 高准确率
- 低延时
- 作者测试了真正的延迟性
- 将考虑内存损耗和不同平台的因素
- 之前的方法通常使用延迟作为推理时间的指标
- 而延迟时间的指标往往选择网络执行的乘法和加法的计算量或者网络的乘法次数
- 忽略了内存成本和不同平台的因素
- 作者测试了真正的延迟性
0x02 提出了哪些创新点
2.1 提出了TC-ResNet
- 一个在移动端具有更快(385倍速度提升)更高准确率的实时KWS
- 在这个 Google Speech Commands Dataset 上比现有的CNN-KWS效果更好
2.2 开源了项目代码和测评的基准
- https://github.com/hyperconnect/TC-ResNet
2.3 时间卷积 TCN
- 提高了性能并且减少了计算量
- 与2D 卷积相比
0x03 时间卷积 TCN
3.1 痛点
- 小核CNN难以同时获取高频和低频信息
- 计算量大
3.2 2D to 1D
-
首先音频数据转成MFCC, MFCC作为网络的输入
- t-f 图, t :time f:feature
-
TCN 把MFCC转成了时间序列数据,而不是image
-
t*f*1 —> t*1*f
-
把MFCC的维度当成通道数
-
3.3 优点:
- 具有更大的感受野
- 计算量减少
3.4 网络结构
-
没有biases
-
bn的作用是 scale & shift
-
使用了ResNet结构
- 卷积核是m1 而不是 33
- 第一层m为3, 其他层m为9
-
有使用一个宽度系数 width multiplier
- 用来增加或者减少每一层的通道数
- 比如原来是{16, 24, 32, 48} ,系数为1.5 就变成了{24, 36, 48, 72},命名方式为
TCResNet8-1.5
0x04 实验
4.1 数据集
- Google Speech Commands Dataset
- 用文件的hash值进行分类,train/val/test 为 8:1:1
- 增强方式
- 随机shift
- 加噪声
4.2 评估方式
- accuracy
- ROC
4.3 测评指标
- 准确率
- FLOPs
- inference time
- 参数总数
4.4 作者提供
- models
- 据说Res 15 效果最好
- tf lite models
- TensorFlow Lite Android benchmark tool
- 判断推理时间的好坏