非语音噪音或声音识别软件?

时间:2010-11-04 15:29:00

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

我正在为儿童制作一些软件,并希望增加软件响应一些非语音的能力。例如,拍手,吠叫,吹口哨,屁声等等。

我过去曾使用过CMU Sphinx和Windows Speech API,但据我所知,这些都没有对非语音噪音的支持,实际上我相信会主动过滤它们。

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

  1. 有没有办法使用其中一个主要的语音识别引擎通过改变声学模型或发音词典来识别非单词声音?
  2. (或)是否已有现有的库进行非文字噪音识别?
  3. (或)我对隐藏马尔可夫模型和大学语音识别的基础技术有一点了解,但没有很好的估计从头开始创建一个非常小的噪音/声音识别器是多么困难(假设< ; 20个噪音得到承认)。如果1)和2)失败,任何估计需要多长时间才能推出自己的?
  4. 由于

2 个答案:

答案 0 :(得分: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模型,可以进一步改进。这取决于训练数据的性质)。

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

答案 1 :(得分:0)

我不知道您可以使用任何现有的库,我怀疑您可能需要自己动手。

本文是否会引起关注?它有一些技术细节,它们似乎能够识别拍手并将它们与口哨区别开来。