如何" ok google"技术得以实施

时间:2015-03-09 22:35:16

标签: c++ c audio voice-recognition

我已经阅读了一些关于语音/语音识别的内容,我想知道它是如何工作的。例如," ok Google"关于android和类似案例?

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

最后,如果你们知道一些能够做到这一点的libs(如果可能的话,是C / C ++),我很乐意实现一个"关键字监视器"。

谢谢。

1 个答案:

答案 0 :(得分:4)

关键字定位通常通过动态编程实现,您只需搜索包含关键字的最佳音频块,查看所有可能的开始和所有可能的结束。您需要查找关键字和替代方案。基本上在每个时刻你都会查找关键词和其他声音,一旦关键词的概率高于其他语音提升信号的概率。误报率由阈值控制。你不需要专门处理沉默,因为它被“其他语音”模型覆盖。详细说明该算法包含在以下论文中:

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”技术:

小型足迹关键字使用深度神经网络 Guoguo Chen Carolina Parada Georg Heigold

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

这是非常先进的技术,更重要的是,它需要大量的特定数据进行培训。