"ok google" 技术是如何实施的

How "ok google" technology is implemented

我读过一些关于 Speech/voice 识别的文章,我想知道它是如何工作的。例如,"ok Google" 在 android 和类似情况下 ?

我想知道它是如何工作的(如何区分和分析连续提要中的单词,以找到它是关键字)。如果我将其视为连续的文本提要,一种方法是隔离给定长度的提要,然后找到关键字。音频提要有点难以理解,因为单词之间没有纯粹的静音(如前所述),并且隔离给定长度并不能保证在所选子提要的开头或结尾剪切关键字。它是如何工作的?

最后,如果你们知道一些能够做到这一点的库(C/C++,如果可能的话),我很乐意实现 "keyword spotter"。

谢谢。

关键字发现通常使用动态规划来实现,您只需搜索包含关键字的最佳音频块,查看所有可能的开始和所有可能的结束。您需要寻找关键字和替代品。基本上,您在每时每刻都在寻找关键词和其他声音,一旦关键词的概率高于其他语音的概率,您就会发出信号。误报率由阈值控制。您不需要专门处理静默,因为 "other speech" 模型涵盖了它。该算法的详细内容包含在以下论文中:

http://eprints.qut.edu.au/37254/

要实现关键字识别,您可以查看 pocketsphinx 和 pocketsphinx Android 演示。它是一个能够识别连续流中单词的 C 库。您可以在这里找到教程:

http://cmusphinx.sourceforge.net/wiki/tutorialpocketsphinx.

要通过麦克风识别关键字,您可以尝试一些简单的方法,例如

  pocketsphinx_continuous -inmic yes -keyphrase "ok google" -kws_threshold 1e-20

原始 "Ok Google" 技术在以下出版物中进行了描述:

使用深度神经网络的小型关键词发现 陈果果 Carolina Parada Georg Heigold

https://wiki.inf.ed.ac.uk/twiki/pub/CSTR/ListenSemester2201314/chen2014small.pdf

这是一个相当先进的技术,更重要的是,它需要大量的特定数据进行训练。