2

我正在为个人项目寻求建议。

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

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

你知道一些专门的软件或代码包做类似的事情吗?

任何建议将不胜感激。

4

2 回答 2

2

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

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

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

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

于 2013-10-18T10:54:13.563 回答
1

歌曲指纹对于该任务来说不是一个好主意,因为命令时间可能会有所不同,并且指纹需要精确的时间匹配。然而,它很容易实现与 DTW 算法的时间序列匹配和使用 CMUSphinx 库 Sphinxbase 提取的特征。有关详细信息,请参阅有关 DTW 的 Wikipedia 条目。

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

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

于 2013-03-09T09:09:51.037 回答