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

6

我正在为儿童制作一些软件,并希望增加软件对多种非语音声音的响应能力。例如,鼓掌声、狗叫声、口哨声、放屁声等。

我以前使用过CMU Sphinx和Windows Speech API,但据我所知,这两者都不支持非语音声音,并且实际上会被滤掉。

总的来说,我正在寻找“如何获得这种功能”,但我怀疑如果我将其分解成三个问题,那么这可能会有所帮助:

  1. 是否有一种方法可以通过更改声学模型或发音词典来使用主要语音识别引擎识别非单词声音?
  2. (或)是否已经存在一个库来进行非单词噪声识别?
  3. (或)我在大学期间有一点隐马尔可夫模型和语音识别的相关技术,但是没有很好地估计从零开始创建一个非常小的噪声/声音识别器有多困难(假设需要识别<20种声音)。如果1)和2)失败了,对于自己开发这种功能需要多长时间有任何估计吗?

谢谢


1
我的回答到问题“从连续的麦克风流中实时识别非语音、非音乐声音”可能是相关的。链接:http://stackoverflow.com/q/8285673/22364 - Markus Jarderot
2个回答

4
是的,您可以使用类似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模型)来进一步改进它。这取决于你的训练数据的性质。
在语音识别框架之外,您可以构建一个简单的静态分类器,逐帧分析输入数据。卷积神经网络可对光谱图执行得很好。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接