【问题标题】:Non-Speech Noise or Sound Recognition Software?非语音噪音或声音识别软件?
【发布时间】:2011-05-05 03:20:31
【问题描述】:

我正在开发一些面向儿童的软件,并希望为该软件添加响应许多非语音声音的功能。比如拍手、吠叫、吹口哨、放屁声等。

我过去曾使用过 CMU Sphinx 和 Windows Speech API,但据我所知,它们都不支持非语音噪音,事实上我相信会主动过滤掉它们。

一般来说,我正在寻找“我如何获得此功能”,但我怀疑如果我将其分解为三个问题,这些问题是我对接下来要搜索的内容的猜测,这可能会有所帮助:

  1. 有没有办法通过更改声学模型或发音词典来使用主要语音识别引擎之一来识别非单词声音?
  2. (或)是否已经有现有的库来进行非单词噪声识别?
  3. (或)我对隐马尔可夫模型和大学语音识别的底层技术有点熟悉,但没有很好地估计从头开始创建一个非常小的噪声/声音识别器会有多困难(假设

谢谢

【问题讨论】:

标签: api cross-platform audio speech-recognition microphone


【解决方案1】:

是的,您可以使用 CMU Sphinx 等语音识别软件来识别非语音。为此,您需要创建自己的声学和语言模型,并定义仅限于您的任务的词典。但是要训练相应的声学模型,您必须有足够的带有注释的感兴趣声音的训练数据。

简而言之,步骤顺序如下:

首先,准备培训资源:词典、字典等。该过程在此处描述:http://cmusphinx.sourceforge.net/wiki/tutorialam。但是在您的情况下,您需要重新定义音素集和词典。也就是说,您应该将填充符建模为真实的单词(因此,没有++)并且您不需要定义完整的音素集。有很多可能性,但最简单的一种可能是为所有语音音素建立一个模型。因此,您的词典将如下所示:

CLAP CLAP
BARK BARK
WHISTLE WHISTLE
FART FART
SPEECH SPEECH

其次,准备带有标签的训练数据:类似于 VoxForge,但文本注释必须仅包含您词典中的标签。当然,非语音也必须正确标记。这里的好问题是从哪里获得足够多的此类数据。但我想这应该是可能的。

有了它,您就可以训练您的模型了。与语音识别相比,该任务更简单,例如,您不需要使用三音素,只需使用单音素即可。

假设任何声音/语音的先验概率相等,最简单的语言模型可以是循环式语法 (http://cmusphinx.sourceforge.net/wiki/tutoriallm):

#JSGF V1.0;
/**
 * JSGF Grammar for Hello World example
 */
grammar foo;
public <foo> = (CLAP | BARK | WHISTLE | FART | SPEECH)+ ;

这是使用 ASR 工具包完成任务的非常基本的方法。可以通过微调 HMM 配置、使用统计语言模型和使用细粒度的音素建模(例如区分元音和辅音而不是单一的 SPEECH 模型。这取决于您的训练数据的性质)来进一步改进。

在语音识别框架之外,您可以构建一个简单的静态分类器,逐帧分析输入数据。在频谱图上运行的卷积神经网络在这项任务中表现得非常好。

【讨论】:

    【解决方案2】:

    我不知道您可以使用任何现有的库,我怀疑您可能必须自己推出。

    这篇论文会引起人们的兴趣吗?它有一些技术细节,它们似乎能够识别拍手并将它们与口哨区分开来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 2011-02-17
      • 2018-02-23
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      相关资源
      最近更新 更多