2010-11-04 73 views
5

我正在为儿童开发一些软件,并且希望增加软件对一些非语音声音的响应能力。例如,拍手,吠叫,吹口哨,放屁声等等。非语音噪音或声音识别软件?

我以前用过CMU Sphinx和Windows Speech API,但是据我所知,语音噪音,事实上我相信它们会积极地将其滤除。

总的来说,我正在寻找“我如何获得这个功能”,但我怀疑它可能帮助,如果我把它分解成是我猜测的该怎么寻找下一个三个问题:

  1. 有没有办法通过改变声学模型或发音词典来使用主要语音识别引擎之一来识别非单词声音?
  2. (或)是否已有现成的图书馆进行非字词噪音识别?
  3. (或者)我对隐马尔可夫模型和大学的语音识别基础技术有一些了解,但没有很好的估计从零开始创建一个非常小的噪音/声音识别器有多困难(假设< 20声会被认出)。如果1)和2)失败,我们估计自己需要多长时间?

感谢

+1

[我的回答](http://stackoverflow.com/q/8285673/22364)[来自连续麦克风流的非语音,非音乐声音的实时识别](http:// stackoverflow.com/q/8285673)可能是相关的。 – 2011-11-27 12:52:37

回答

0

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

总之,步骤的顺序如下:

首先,对于训练准备资源:词典,字典等的此处所描述的方法: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模型,这取决于您的训练数据的性质)来进一步改进。

在语音识别的框架之外,您可以构建一个简单的静态分类器,它将逐帧分析输入数据。对频谱图进行操作的卷积神经网络对于此任务表现相当好。