今天来综述一下上个月看过的「语音唤醒」专题的论文。由于语音唤醒系统之间的共性比较多,这篇综述不像上一篇那样侧重于单篇文献的讲解,而更像是对文献的归类整理,篇幅也会短得多。
语音唤醒,一般用在手机或专门的语音助手硬件上。这些设备会设置特定的唤醒词(wake-up word),用户可以向它们说出这个唤醒词,以表示接下来将要对设备发出指令。在待机状态下,这些设备以较低的功耗持续监听周围的环境,当听到唤醒词时,就进入工作状态。
语音唤醒并没有一个统一的英文说法,wake-up word recognition / detection / spotting、voice triggering、voice activation 都可以指语音唤醒。另外 keyword spotting 有时也用来指语音唤醒,虽然它也可以用来指代另一个任务「关键词检索」。「关键词检索」与「语音唤醒」不同,它是在事先录制好的大量语音中搜索特定的关键词。这是一个离线任务,所以并不需要实时进行语音识别,也可以建立索引以加速检索。
语音唤醒有两个优化目标:一是在特定的误唤醒率(单位通常为次 / 小时)下,尽可能降低漏唤醒率(通常用百分比表示);二是要尽可能降低功耗。这两个目标显然是互相制约的。在低功耗的限制下,一般不能使用大规模的语音识别系统,而是需要针对待识别的唤醒词设计专门的小型识别器。也有研究试图调和这对矛盾,比如 Google 的语音助手使用了「两道门」式的语音唤醒系统[1]:先在设备端用一个小型系统做初步筛选,通过了初步筛选的语音,再送到服务器端用大型系统进一步过滤。
语音唤醒最粗略的分类,是看唤醒词给出的形式。唤醒词可能是用户用语音形式录制的,这样的语音唤醒任务叫做 query-by-example (QbE) 的语音唤醒。更常见的情况是唤醒词以文本形式给出,比如 Google 的「OK Google」、苏宁的「小 biu 小 biu」等等。
一、Query-by-example 的语音唤醒
当唤醒词以语音形式给出时,一种比较常用的方法是模板匹配法。具体来说,是把唤醒词和输入语音都转换成特征序列,然后使用 DTW(dynamic time warping)等方法在输入语音中寻找与唤醒词相似的部分。这里的特征,可以使用比较原始的 MFCC 等特征(如[2]),也可以用神经网络搭建一个音素识别器,用每一帧各个音素的后验概率作为特征(如[3])。
在模板匹配法中,唤醒词和输入语音都是用序列形式表示的。另一种方法,就是利用 LSTM 神经网络,把唤醒词和输入语音(的小段落)都转换成固定长度的嵌入向量(embedding),然后使用欧氏距离或余弦相似度进行匹配。文献[3][4]都使用了这种方法。
即使唤醒词是以文本形式给出的,也有研究[5]强行使用一个 CRNN 语言模型把唤醒词编码成一个嵌入向量。此时,由于唤醒词的嵌入向量与输入语音的嵌入向量不在同一个空间中,所以对二者进行匹配就还需要一个小型神经网络。这篇论文方法的优点是,用来编码输入语音的 RNN 是无监督训练的,所以整个系统不需要进行任何语音识别。与常规的语音唤醒相比,它对词汇表内(in-vocabulary)的唤醒词表现较差,但对词汇表外(out-of-vocabulary,OOV)的唤醒词表现更好。
二、唤醒词以文本形式给出的语音唤醒
当唤醒词以文本形式给出时,语音唤醒系统也跟语音识别一样,可以分成「前世」(HMM)与「今生」(各种神经网络)两代。
用隐马尔可夫模型(hidden Markov models,HMM)来做语音唤醒时,一般会为唤醒词和其它声音分别建立一个模型,分别称为 keyword model 和 garbage model。在使用时,把输入信号切割成固定长度的段落,或者使用 VAD(voice activity detection)切割出输入信号中的语音段落,然后分别用两个 HMM 对这些段落进行打分,以这两个分数的比值作为判断唤醒词是否出现的依据。这样做的文献有[6][7]。也有只对关键词进行建模的,比如[8]。还有的系统不事先对输入信号进行切割,而是把代表关键词和其它声音的两个 HMM 组合成一个大的 HMM,用 Viterbi 算法来寻找输入信号中与关键词匹配的段落,比如[9]。HMM 中各个状态的建模,也像语音识别一样,有使用传统的 GMM 的[6][8],也有使用神经网络的[7][9][10],但神经网络的用途仅限于给出 HMM 各个状态的概率。
比较新的语音唤醒系统,则抛弃了 HMM,而是用神经网络作为骨架。神经网络可以选择全连接[11]、CNN[12]、CRNN[13]、CTC[14]、RNN transducer[15]、注意力[16]等各种各样的形式。与作为生成式模型的 HMM 不同,神经网络作为判别式模型,一般需要大量包含关键词的专用语料来训练。不过,神经网络的低层可以看成特征提取器,这一部分也可以用通用的语音识别语料来训练。
参考
- ^A. H. Michaely, et al., "Keyword spotting for Google assistant using contextual speech recognition", ASRU, 2017.
- ^A. Zehetner, et al., "Wake-up-word spotting for mobile systems", EUSIPCO, 2014.
- ^abJ. Hou, et al., "Investigating neural network based query-by-example keyword spotting approach for personalized wake-up word detection in Mandarin Chinese", Int'l Symposium on Chinese Spoken Language Processing, 2016.
- ^G. Chen, et al., "Query-by-example keyword spotting using long short-term memory networks", ICASSP, 2015.
- ^K. Audhkhasi, et al., "End-to-end ASR-free keyword search from speech", ICASSP, 2017.
- ^abH. Lee, et al., "A voice trigger system using keyword and speaker recognition for mobile devices", IEEE Trans. on Consumer Electronics, 2009.
- ^abS. Sigtia, et al., "Efficient voice trigger detection for low resource hardware", Interspeech, 2018.
- ^abV. Z. Këspuka and T. B. Klein, "A novel wake-up-word speech recognition system, wake-up-word recognition task, technology and evaluation", Nonlinear Analysis, 2009.
- ^abF. Ge and Y. Yan, "Deep neural network based wake-up-word speech recognition with two-stage detection", ICASSP, 2017.
- ^K. Kumatani, et al., "Direct modeling of raw audio with DNNs for wake word detection", ASRU, 2017.
- ^G. Chen, et al., "Small-footprint keyword spotting using deep neural networks", ICASSP, 2014.
- ^T. N. Sainath and C. Parada, "Convolutional neural networks for small-footprint keyword spotting", Interspeech, 2015.
- ^S. Ö. Arık, et al., "Convolutional recurrent neural networks for small-footprint keyword spotting", arxiv:1703.05390.
- ^S. Fernández, et al., "An application of recurrent neural networks to discriminative keyword spotting", Int'l Conference on Artificial Neural Networks, 2007.
- ^Y. He, et al., "Streaming small-footprint keyword spotting using sequence-to-sequence models", ASRU, 2017.
- ^C. Shan, et al., "Attention-based end-to-end models for small-footprint keyword spotting", Interspeech, 2018.
素材来源知乎,文章作者:王赟 Maigo
