Max*_*x13 1 c c++ audio voice-recognition
我已经阅读了一些关于语音/语音识别的内容,我想知道它是如何工作的。例如,Android 和类似情况下的“ok Google”?
我想知道它是如何工作的(如何区分和分析连续馈送中的单词,以找到它的关键字)。如果我认为它是一个连续的文本提要,一种方法是隔离给定长度的提要,然后找到一个关键字。音频提要有点难以理解,因为单词之间没有纯粹的沉默(如上所述)并且隔离给定的长度并不能保证在所选子提要的开头或结尾剪切关键字。它是如何工作的?
最后,如果你们知道一些能够做到这一点的库(如果可能的话,C/C++),我会很高兴实现一个“关键字检测器”。
谢谢你。
关键字发现通常用动态编程实现,您只需搜索包含关键字的最佳音频块,查看所有可能的开始和所有可能的结束。您需要寻找关键字和替代品。基本上在每个时刻,您都会同时寻找关键字和其他声音,一旦关键字的概率高于其他语音的概率,您就会发出信号。误报率由阈值控制。您不需要专门处理静音,因为它包含在“其他语音”模型中。该算法在以下论文中详细介绍:
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
Run Code Online (Sandbox Code Playgroud)
以下出版物中描述了原始的“Ok Google”技术:
使用深度神经网络进行小尺寸关键字识别,作者:Guango Chen Carolina Parada Georg Heigold
https://wiki.inf.ed.ac.uk/twiki/pub/CSTR/ListenSemester2201314/chen2014small.pdf
这是一项非常先进的技术,更重要的是,它需要大量的特定数据进行训练。