文 / 出门问问信息科技有限公司
来源 | TensorFlow 公众号
1、背景
热词唤醒 (Keyword Spotting) 往往是用户对语音交互体验的第一印象,要做到准确快速。因此热词检测算法要同时保证高唤醒率和低误唤醒率,能够准确地区分热词和非热词的音频信号。主流的热词检测方法,通常使用深度神经网络来从原始音频特征中提取 high-level 的抽象特征(见下图)。为了能够在计算性能和内存大小都非常有限的嵌入式设备上做到 “Always On” 和 “低延迟”,我们使用 TensorFlow Lite 作为神经网络模型的部署框架,既能够很好地兼容基于 TensorFlow 的模型训练流程,也能够提供非常高效和轻量的嵌入式端运行时 (Runtime)。
2、开发部署流程
在神经网络结构大体确定的情况下,会显著影响最终计算性能的主要是:模型量化 (Quantization),计算图的优化 (Computation Graph Optimization),以及 Ops 计算核的实现。使用 TensorFlow Lite 部署热词检测模型的开发工作主要也是在这三方面。
应用 Simulated Quantization 进行模型训练
在嵌入式设备上部署神经网络模型时,通常使用模型 “量化” (Quantization) 来减少模型参数需要的空间大小,并且提高计算吞吐量 (throughput)。使用 TensorFlow 可以在模型训练时通过增加 FakeQuant 节点来实现 “Simulated Quantization”,在前向计算 (forward) 时模拟参数定点化带来的精度损失。FakeQuant 节点可以在构建模型计算图时手动添加,对于常见的网络结构也可以使用 TensorFlow contrib/quantize 工具