工作生活

语音唤醒

2019-07-02  本文已影响0人  Jack_Woo

语音唤醒主流方法

keyword spotting分为补白模型与基于样例的两个主要方法。

Ref: https://zhuanlan.zhihu.com/p/62576391

补白模型(Filler Models)

补白模型有时也被称为垃圾模型,它将Keyword Spotting问题考虑为一个逐帧的序列标注问题。关键词定为不同的标注,而一个额外的“补白”标注用来匹配所有非关键词。

基于隐马尔可夫模型的补白模型最早用于Keyword Spotting。它对每一个关键词建立一个隐马尔可夫模型,对非关键词额外建立一个隐马尔可夫模型,观测概率通过混合高斯或神经网络建模。直接针对关键词建模在数据稀疏的问题。目前流行的隐马尔可夫模型则采用子词单元,如音素,进行建模。这种情况下,它与基于HMM混合模型的语音识别中的声学模型就十分类似了,只是解码图是手工设计的文法,而不是基于统计语言模型生成的。亚马逊Alexa语音助手所用的Keyword Spotting系统就是基于这一类方法的,它的隐马尔可夫模型示意图如下图所示:

img

另一种基于神经网络分类的方法就更加直接了,如下图所示,连续语音流逐段地送入神经网络进行分类。类别为所有的关键词,和一个额外的填充类别(Filler),比如有10个关键词,就有11类。

img

分类完成后,由于输出的概率可能出现“毛刺”,所以进行平滑后处理,之后如果某一个类别概率超过一个阈值,就认为某一个关键词呗检测到了。这种方法内存占用小,不需要解码搜索,准确率高。但是由于需要准备大量包含关键词的语料,如果更换了关键词,则需要再另行搜集一批语料,所以也较难实际使用。相比之下,基于隐马尔可夫模型的Keyword Spotting由于是针对子词单元建模,语料用通用的就可以,所以更常用。

基于样例的Keyword Spotting

基于样例的Keyword Spotting,则将问题考虑为匹配问题。考虑关键词的音频样例,和几个测试音频,分别计算它们的相似度,测试音频中和关键词相似度超过某个阈值的,就认为它是检测出来的关键词。这种方式在使用的过程中,用户可以录制自己的音频并定义为关键词,使用起来就更个性化。

img

基于样例的关键词检测可以分为两类,一种基于动态时间弯折(Dynamic Time Warping,DTW)算法,它使用DTW算法计算两个音频特征序列之间的相似度;另一种是基于嵌入学习的,它将两个音频分别编码为向量,然后直接计算两个向量之间的距离。基于DTW的方法从上世纪70年代就开始开始应用,但是它在匹配两个序列的时候计算复杂度比较高,目前主要用于无监督的情形;基于嵌入学习的方法,匹配的时候更为简单,在深度学习火热以后就流行起来。

img

如图所示就是一个基于嵌入学习的关键词检测系统。它由一个LSTM网络构成。训练时,将LSTM视为一个词级别的分类器;测试时,将测试音频和关键词音频输入进LSTM,将最后k个状态拼接起来,计算余弦距离,如果超过某个阈值,就认为是检测到了关键词。

唤醒技术路线

主要分为3代。

Ref: https://www.zhihu.com/question/27344376,

视频:http://www.aidaxue.com/course/courseDetail?id=119

第一代:基于模板匹配的KWS

训练和测试的步骤比较简单,训练就是依据注册语音或者说模板语音进行特征提取,构建模板。测试时,通过特征提取生成特征序列,计算测试的特征序列和模板序列的距离,基于此判断是否唤醒。

img

第二代:基于HMM-GMM的KWS

将唤醒任务转换为两类的识别任务,识别结果为keyword和non-keyword。

1561902503584 img

第三代:基于神经网络uglyURLs = true的方案

神经网络方案又可细分为几类.

img

指标

开源代码

数据集

功能点

唤醒词的评估

  1. 唤醒词字数:3-5个字,4个字为最佳
  2. 唤醒词内容:
    1. 避免使用敏感词:包含政治,伟人名字等等;
    2. 避免使用口语化的词汇,口语词汇日常使用频率很高,容易导致误唤醒
    3. 唤醒词发音应选择易开口,响度大,发音清晰易分辨的词;
  3. 避免使用多音字,唤醒词的音节覆盖应尽量多,差异大,避免使用叠字, 避免连续使用零声母的词

例如:

<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

专利

Idea

上一篇 下一篇

猜你喜欢

热点阅读