语音唤醒主流方法
keyword spotting分为补白模型与基于样例的两个主要方法。
Ref: https://zhuanlan.zhihu.com/p/62576391
补白模型(Filler Models)
补白模型有时也被称为垃圾模型,它将Keyword Spotting问题考虑为一个逐帧的序列标注问题。关键词定为不同的标注,而一个额外的“补白”标注用来匹配所有非关键词。
基于隐马尔可夫模型的补白模型最早用于Keyword Spotting。它对每一个关键词建立一个隐马尔可夫模型,对非关键词额外建立一个隐马尔可夫模型,观测概率通过混合高斯或神经网络建模。直接针对关键词建模在数据稀疏的问题。目前流行的隐马尔可夫模型则采用子词单元,如音素,进行建模。这种情况下,它与基于HMM混合模型的语音识别中的声学模型就十分类似了,只是解码图是手工设计的文法,而不是基于统计语言模型生成的。亚马逊Alexa语音助手所用的Keyword Spotting系统就是基于这一类方法的,它的隐马尔可夫模型示意图如下图所示:
另一种基于神经网络分类的方法就更加直接了,如下图所示,连续语音流逐段地送入神经网络进行分类。类别为所有的关键词,和一个额外的填充类别(Filler),比如有10个关键词,就有11类。
分类完成后,由于输出的概率可能出现“毛刺”,所以进行平滑后处理,之后如果某一个类别概率超过一个阈值,就认为某一个关键词呗检测到了。这种方法内存占用小,不需要解码搜索,准确率高。但是由于需要准备大量包含关键词的语料,如果更换了关键词,则需要再另行搜集一批语料,所以也较难实际使用。相比之下,基于隐马尔可夫模型的Keyword Spotting由于是针对子词单元建模,语料用通用的就可以,所以更常用。
基于样例的Keyword Spotting
基于样例的Keyword Spotting,则将问题考虑为匹配问题。考虑关键词的音频样例,和几个测试音频,分别计算它们的相似度,测试音频中和关键词相似度超过某个阈值的,就认为它是检测出来的关键词。这种方式在使用的过程中,用户可以录制自己的音频并定义为关键词,使用起来就更个性化。
基于样例的关键词检测可以分为两类,一种基于动态时间弯折(Dynamic Time Warping,DTW)算法,它使用DTW算法计算两个音频特征序列之间的相似度;另一种是基于嵌入学习的,它将两个音频分别编码为向量,然后直接计算两个向量之间的距离。基于DTW的方法从上世纪70年代就开始开始应用,但是它在匹配两个序列的时候计算复杂度比较高,目前主要用于无监督的情形;基于嵌入学习的方法,匹配的时候更为简单,在深度学习火热以后就流行起来。
如图所示就是一个基于嵌入学习的关键词检测系统。它由一个LSTM网络构成。训练时,将LSTM视为一个词级别的分类器;测试时,将测试音频和关键词音频输入进LSTM,将最后k个状态拼接起来,计算余弦距离,如果超过某个阈值,就认为是检测到了关键词。
唤醒技术路线
主要分为3代。
Ref: https://www.zhihu.com/question/27344376,
视频:http://www.aidaxue.com/course/courseDetail?id=119
第一代:基于模板匹配的KWS
训练和测试的步骤比较简单,训练就是依据注册语音或者说模板语音进行特征提取,构建模板。测试时,通过特征提取生成特征序列,计算测试的特征序列和模板序列的距离,基于此判断是否唤醒。
第二代:基于HMM-GMM的KWS
将唤醒任务转换为两类的识别任务,识别结果为keyword和non-keyword。
第三代:基于神经网络uglyURLs = true的方案
神经网络方案又可细分为几类.
- 第一类是基于HMM的KWS,同第二代唤醒方案不同之处在于,声学模型建模从GMM转换为神经网络模型。
- 第二类融入神经网络的模板匹配,采用神经网络作为特征提取器。
- 第三类是基于端到端的方案,输入语音,输出为各唤醒的概率,一个模型解决。
指标
唤醒率,指用户交互的成功率,专业术语为召回率,即recall。
误唤醒,用户未进行交互而设备被唤醒的概率,一般按天计算,如最多一天一次。
响应时间,指从用户说完唤醒词后,到设备给出反馈的时间差。
功耗水平,即唤醒系统的耗电情况。很多智能设备是通过电池供电,需要满足长时续航,对功耗水平就比较在意。
开源代码
An End-to-End Architecture for Keyword Spotting and Voice Activity Detection。[https://github.com/mindorii/kws。2016 interspeech]
-
https://github.com/MycroftAI/mycroft-precise。Mycroft.ai开源的。是二分类问题,不是识别内容。
- 比较好的实操性。
- 有相应教程。
Hello Edge: Keyword Spotting on Microcontrollers。ARM开源的,能够编译优化用于嵌入设备上。
数据集
- Google speech commands dataset。是一个用的比较多的。
功能点
- 动态修改热词、唤醒词。
唤醒词的评估
- 唤醒词字数:3-5个字,4个字为最佳
- 唤醒词内容:
- 避免使用敏感词:包含政治,伟人名字等等;
- 避免使用口语化的词汇,口语词汇日常使用频率很高,容易导致误唤醒
- 唤醒词发音应选择易开口,响度大,发音清晰易分辨的词;
- 避免使用多音字,唤醒词的音节覆盖应尽量多,差异大,避免使用叠字, 避免连续使用零声母的词
例如:
<pre class="chroma" style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 13.6px; margin-top: 0px; margin-bottom: 0px; background-color: rgb(246, 248, 250); overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; border-radius: 3px; word-break: normal;">唤醒词:一心一意
评估: 存在连续的两个发音是零声母,尽量避免重复发音。</pre>
思必驰在线评估: http://www.aispeech.com/index.php?m=content&c=index&a=lists&catid=76
语音唤醒跟声纹结合
可以用几种实现方法:一是唤醒词跟声纹在用同一个模型(Text-Dependent Speaker Verification); 一是唤醒词检测后再使用声纹模型验证。
Text-Dependent Speaker Verification
END-TO-END ATTENTION BASED TEXT-DEPENDENT SPEAKER VERIFICATION。出自微软。
-
Attention-Based Models for Text-Dependent Speaker Verification。出自Google。 ICASSP 2018。比只使用LSTM高14%。
Generalized End-to-End Loss for Speaker Verification。出自Google。 ICASSP 2018。
专利
- 可定制语音唤醒方法及系统: https://patents.google.com/patent/CN106098059A/zh
Idea
- 语音唤醒跟声纹结合。
- 语音唤醒跟声纹、静音检测结合。