查看原文
其他

分析一下MIT的智能语音识别芯片

2017-02-16 T.S. StarryHeavensAbove

很巧,今天有个新闻“MIT黑科技:全新芯片将语音识别功耗降低99%”。实际是MIT的Anantha P. Chandrakasan团队做的。他们在今年的ISSCC上发表了论文“A Scalable Speech Recognizer with Deep-Neural-Network Acoustic Models and Voice-Activated PowerGating”,正好是我今天想讨论的内容。虽然论文和他们的实现肯定有差别,不过通过分析他们的论文应该可以基本把握他们使用的关键技术。


首先,语音识别已经广泛应用到我们生活当中,从个人助理,语音搜索,语音输入法,到智能家居,可穿戴设备,机器人,等等。基于硬件加速的自动语音识别automatic speech recognition (ASR) 主要是用在功耗,系统复杂度或者处理时延受限的设备中。这种系统中一般需要一个语音活动检测功能voice activity detection (VAD),用来唤醒ASR以及后续的操作。这篇文章的工作主要就是围绕这两部分展开。

实际上,我在之前的一篇文章“智能边缘计算里的Always-on”里已经介绍了这项工作的大致架构。VAD部分是系统里always-on的部分,根据检测结果激活ASR的部分。


在这项工作的测试芯片中VAD结构又分三个部分(分别验证三个算法)。第一部分是Energy-based(EB)算法,主要是识别framelevel的功率变化并且用SNR估计的结果来作为它的权重。Harmonicity算法识别信号中的周期性部分(语音)。这种方法可以增加检测的鲁棒性。Modulation frequency算法在更长的时间范围提取特征值并且使用一个精简版本的DNN(完整版本用在ASR中)来进行分类。这种方法在环境噪声比较大的情况下也具有很好的性能。VAD支持使用一个65-tip 的FIR滤波器对输入信号进行下采样(ASP和VAD可以使用不同的采样率),并且可以对输入的数据进行缓存以便ASR可以在以后获取(因为ASR在VAD检测到语音之前都是关闭的)。MF算法是重点关注的内容,下面两页slides做了更详细的介绍。



在他们的“商用”芯片中使用的是那个算法,还是几种算法的组合,还有待考察。


下面在分析ASR的具体设计之前,看看基本模型。

可以看出本文工作的ASR使用的是前馈神经网络FFDNN-HMM混合模型,主要技术包括deep neural networks (DNNs), weighted finite-state transducers (WFSTs), and Viterbi search over hidden Markov models (HMMs)。


声学模型是这样的:


DNN的模型是这样的:


这个领域最新趋势是用RNN/LSTM,CTC模型,但本文工作还是用了比较早的模型。作为语音识别技术的门外汉,我猜测主要原因是新模型的运算量太大,功耗约束下很难实现。


下面具体看看DNN加速器的实现:

DNN加速器是一个SIMD的架构。经过压缩的模型以流的方式输入,经过译码的参数广播到32并行的执行单元(EU),每个EU处理一个特征向量。这样可以减少memory的带宽要求大约32倍,代价是增加了延时。每个EU有足够的本地存储,可以支持包含1K个隐节点的

层。

32个EU被组织成了8个“chunks”。每个chunk可以配置,在关闭了一些EU的情况下,它们可以支持有4K隐节点组成的网络。通过在每一行开始的地方存储一个经过编码的“非零参数位置”,可以很好的支持稀疏的权值矩阵(sparse weight matrices);对于一个有31%的非零权重的声学模型,这可以减少54%存储带宽。SRAM中存储的量化表格支持4-12bit的权值。EU在每一层都支持sigmoid或者ReLU。sigmoid函数是使用切比雪夫多项式近似的。


最后是Viterbi search的实现:

具体说明就参考原文吧。“Our architecture for Viterbi beam search prioritizes memory locality.The active state list is dynamically resized to allow quick sequential scans when the load factor is small. Hypotheses for the “source” (t ) and “destination” (t+1) frames are stored together for each active state, providing an extra 13% area savings because most states remain active for several frames at a time. Variable-length WFST states are cached in a circular buffer, using a “least recently missed” eviction strategy to prevent fragmentation and maximize cache utilization. The maximum cacheable state length can be adjusted in 1B increments up to 255B, allowing the cache to be tuned for the task and memory characteristics. An onchip word lattice captures word arcs generated during search, reducing write bandwidth by at least 8× relative to per-frame state list snapshots.


最后是实验结果。先看看test chip的spec。


然后是实际测试的结果,新闻中所说的99%的下降是指从1W到10mW。


最后这几条总结还是很有参考价值的。


References:

[1] M. Price, et al., “Memory-Efficient Modeling and Search Techniques for Hardware ASR Decoders,” Interspeech, pp. 1893–1897, 2016.

[2] B. Moons, et al., “A 0.3-2.6 TOPS/W Precision-Scalable Processor for Real- Time Large-Scale ConvNets,” IEEE Symp. VLSI Circuits, 2016.

[3] M. Shah, et al., “A Fixed-Point Neural Network for Keyword Detection on Resource Constrained Hardware,” IEEE Int’l Workshop on Signal Processing Systems, 2015.

[4] K. Badami, et al., “Context-Aware Hierarchical Information-Sensing in a 6 μW 90nm CMOS Voice Activity Detector,” ISSCC, pp. 430-431, Feb. 2015.

[5] M. Price, et al., “A 6mW 5K-Word Real-Time Speech Recognizer Using WFST Models”, ISSCC, pp. 454-455, 2014.

[6] D. Povey, et al., “The Kaldi Speech Recognition Toolkit,” IEEE Automatic Speech Recognition and Understanding Workshop, 2011.


延 伸 思 考

语音识别是我最看好的人工智能芯片化应用,有功耗成本的约束,又有足够的市场,非常适合以芯片的形式实现(当然也可以融合到其它SoC之中,如果MCU,IoT芯片,和边缘计算设备等等)。问题在于,是不是真的能在性能基本满意的情况下把功耗和成本控制好。在这一点上,这篇论文的实践和结果很有参考价值。

T.S.

封面素材来自网络,版权归所有者所有

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存