2

我正在研究一个非常基本的机器人项目,并希望在其中实现语音识别。我知道这是一件复杂的事情,但我只想为 3 或 4 个命令(或单词)做这件事。

我知道使用 wavin 我可以录制音频。但我希望对音频信号进行实时幅度分析,怎么做呢,波形将作为 8 位单声道输入。

我曾考虑将信号划分为一组特定时间,进一步将其划分为更小的子集,获取子集的平均 rms 值,然后将它们相加,然后查看它们与实际存储的信号有多大不同。如果错误低于所有(或大多数)集合的可接受值,然后打印该单词。

如何实施?如果您也可以提供任何其他建议,那就太好了。

提前致谢。

4

2 回答 2

3

识别单词没有简单的方法,因为它们基本上是一个音素序列,可以随时间和频率变化。

经典的孤立词识别系统使用信号MFCC(倒谱系数)作为输入数据,并尝试使用 HMM(隐藏马尔可夫模型)或 DTW(动态时间扭曲)算法来识别模式。

如果您不想要录制按钮,您还需要一个静音检测模块。

例如,爱丁堡大学工具包提供了其中一些工具(带有良好的文档)。

如果您不想“从头开始”构建它或有灵感来源,这里有一个(旧但免费的)这样一个系统的实现(它使用自己的工具包),其中包含关于它的完整解释和实际示例作品。

该系统是 LVCSR(大词汇量连续语音识别),您只需要它的一个子集。如果有人知道开源精简词汇系统(如简单的 IVR),那将是受欢迎的。

如果您想自己制作一个基本系统,我建议您使用 MFCC 和 DTW:

  • 对于每个要建模的目标词:
    • 记录单词的一些实例
    • 通过单词计算一些(例如每10ms)delta-MFCC以获得模型
  • 当您想识别信号时:
    • 计算这个信号的一些 delta-MFCC
    • 使用 DTW 将这些 delta-MFCC 与每个模型化单词的 delta-MFCC 进行比较
    • 输出最适合的词(使用阈值丢弃垃圾)
于 2011-04-02T21:27:34.010 回答
1

如果您只想识别几个命令,可以使用许多商业和免费产品。请参阅需要用于 Linux 的文本到语音和语音识别工具System.Speech.Recognition 和 Microsoft.Speech.Recognition 之间有什么区别?iPhone 上的语音识别。这些问题的答案链接到许多可用的产品和工具。语音识别和理解命令列表是商业上解决的一个非常常见的问题。您呼叫的许多语音自动电话系统都使用这种技术。开发人员可以使用相同的技术。

通过观察这些问题几个月,我看到大多数开发人员的选择都是这样的:

Of course this may also be helpful - http://en.wikipedia.org/wiki/List_of_speech_recognition_software

于 2011-04-03T13:23:07.797 回答