触发字检测Trigger Word Detection

现在你已经学习了很多关于深度学习和序列模型的内容,于是我们可以真正去简便地描绘出一个触发字系统(a trigger word system),就像上节中你看到的那样。

随着语音识别的发展,越来越多的设备可以通过你的声音来唤醒,这有时被叫做触发字检测系统(rigger word detection systems)。我们来看一看如何建立一个触发字系统。

吴恩达深度学习笔记(137) | 触发字检测Trigger Word Detection

触发字系统的例子包括Amazon echo,它通过单词Alexa唤醒;

还有百度DuerOS设备,通过"小度你好"来唤醒;

苹果的Siri用Hey Siri来唤醒;

Google Home使用Okay Google来唤醒,这就是触发字检测系统。

假如你在卧室中,有一台Amazon echo,你可以在卧室中简单说一句: Alexa, 现在几点了?就能唤醒这个设备。它将会被单词"Alexa"唤醒,并回答你的询问。

如果你能建立一个触发字检测系统,也许你就能让你的电脑通过你的声音来执行某些事,我有个朋友也在做一种用触发字来打开的特殊的灯,这是个很有趣的项目。但我想教会你的,是如何构建一个触发字检测系统。

吴恩达深度学习笔记(137) | 触发字检测Trigger Word Detection

有关于触发字检测系统的文献,还处于发展阶段。

对于触发字检测,最好的算法是什么,目前还没有一个广泛的定论。我这里就简单向你介绍一个你能够使用的算法好了。现在有一个这样的RNN结构,我们要做的就是把一个音频片段(an audio clip)计算出它的声谱图特征(spectrogram features)得到特征向量x^(<1>), x^(<2>), x^(<3>)..,然后把它放到RNN中,最后要做的,就是定义我们的目标标签y。

假如音频片段中的这一点是某人刚刚说完一个触发字,比如"Alexa",或者"小度你好" 或者"Okay Google",那么在这一点之前,你就可以在训练集中把目标标签都设为0,然后在这个点之后把目标标签设为1。

假如在一段时间之后,触发字又被说了一次,比如是在这个点说的,那么就可以再次在这个点之后把目标标签设为1。这样的标签方案对于RNN来说是可行的,并且确实运行得非常不错。不过该算法一个明显的缺点就是它构建了一个很不平衡的训练集(a very imbalanced training set),0的数量比1多太多了。

这里还有一个解决方法,虽然听起来有点简单粗暴,但确实能使其变得更容易训练。比起只在一个时间步上去输出1,其实你可以在输出变回0之前,多次输出1,或说在固定的一段时间内输出多个1。

这样的话,就稍微提高了1与0的比例,这确实有些简单粗暴。在音频片段中,触发字刚被说完之后,就把多个目标标签设为1,这里触发字又被说了一次。

说完以后,又让RNN去输出1。

我们仅仅用了一张幻灯片来描述这种复杂的触发字检测系统。

在这个基础上,希望你能够实现一个能有效地让你能够检测出触发字的算法,不过在编程练习中你可以看到更多的学习内容。

这就是触发字检测,希望你能对自己感到自豪。因为你已经学了这么多深度学习的内容,现在你可以只用几分钟时间,就能用一张幻灯片来描述触发字能够实现它,并让它发挥作用。

你甚至可能在你的家里用触发字系统做一些有趣的事情,比如打开或关闭电器,或者可以改造你的电脑,使得你或者其他人可以用触发字来操作它。

这是深度学习课程最后一个技术,所以总结一下我们对序列模型的学习。

我们学了

RNN,包括GRU和LSTM,然后我们学了词嵌入(word embeddings),以及它们如何学习词汇的表达(how they learn representations of words)

还学了注意力模型(the attention model)以及如何使用它来处理音频数据(audio data)

恩达老师的课程到此结束咯,希望对你有所帮助~

期待给你打来更好的知识分享~


分享到:


相關文章: