创建自定义语音命令(GNU / Linux)

我正在寻找建议,为一个个人项目。

我正在尝试创建一个用于创建自定义语音命令的软件。 目标是允许用户/我记录一些音频数据(2/3秒)来定义命令/宏。 然后,当用户说话(记录相同的音频数据)时,命令/宏将被执行。 该软件必须能够在低成本计算机中以小于1秒的处理时间检测命令(例如RaspberryPi)。

我已经通过两种方式进行了搜索: - 语音识别(CMU-Sphinx,Julius,simon):有很好的开源解决方案,但他们经常需要大型数据库文件,而语音识别并不是我想要做的。 语音识别可能会消耗太多的功能,为一个小功能。 - 音频指纹识别(Chromaprint - > http://acoustid.org/chromaprint):这似乎是我正在寻找的。 其原理是从原始音频数据创建指纹,然后比较指纹以确定它们是否可以相同。 然而,这种软件/库似乎是为歌曲识别而设计的(就像智能手机上的着名软件一样):我试图配置一个好的“比较器”,但我认为我的方式不好。

你知道一些专门的软件或代码做类似的东西吗?

任何建议,将不胜感激。


歌曲指纹不适用于该任务,因为指令时间可能会有所不同,并且指纹需要准确的时间匹配。 然而,它很容易实现与时间序列的DTW算法匹配,并且使用CMUSphinx库Sphinxbase提取特征。 有关详情,请参阅关于DTW的维基百科条目。

http://en.wikipedia.org/wiki/Dynamic_time_warping

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


我有一个或多或少类似的项目,我打算发送语音命令给机器人。 语音识别软件对于这样的任务来说太复杂了。 我用C ++中的FFT实现来提取采样语音的傅里叶分量,然后创建主频率(目标语音命令具有最高幅度的频率)的直方图。 我尝试了两种方法:

  • 比较给定语音命令的直方图与存储器中保存的直方图之间的相似性,以确定最可能的命令。

  • 使用支持向量机(SVM)来训练分类器以区分语音命令。 我使用LibSVM,结果比第一种方法好得多。 但是,SVM方法的一个问题是您需要一个相当大的数据集来进行培训。 另一个问题是,当给出一个未知的声音时,分类器总是会输出一个命令(这显然是一个错误的命令检测)。 这可以通过第一种方法避免,即我有相似性度量的阈值。

  • 我希望这可以帮助您实现自己的语音激活软件。

    链接地址: http://www.djcxy.com/p/64301.html

    上一篇: Creating custom voice commands (GNU/Linux)

    下一篇: Detect from radio audio stream if it's speech or music