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

标签 api cross-platform audio speech-recognition microphone

我正在为 child 开发一些软件,并希望为该软件添加响应一些非语音声音的能力。例如,拍手、吠叫、吹口哨、放屁声等。

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

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

  • 有没有办法通过改变声学模型或发音词典来使用主要的语音识别引擎之一来识别非单词的声音?
  • (或)是否已经有一个现有的库来进行非单词噪声识别?
  • (或)我对隐马尔可夫模型和大学语音识别的基础技术有一点熟悉,但没有很好地估计从头开始创建一个非常小的噪音/声音识别器会有多困难(假设 <20 个噪音到被认可)。如果 1) 和 2) 失败,是否可以估计自己滚动需要多长时间?

  • 谢谢

    最佳答案

    是的,您可以使用 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 模型。这取决于训练数据的性质)来进一步改进 In。

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

    关于api - 非语音噪音或声音识别软件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098279/

    相关文章:

    python - 如何使用 json google translate api?

    api - Youtube 下载链接来自 http ://www. youtube-mp3.org/

    ios - Objective-C RestKit 无输出

    c++ - mingw g++ 无法与库链接

    ios - 如何从 iOS 应用程序中的音频文件访问声音样本?

    python - 将包含 unicode 的字符串传递给 RESTful API

    linux - 根据操作系统运行 Node.js

    c - 如何在 Windows 上抓取鼠标

    javascript - 静音(A 型)

    iphone - 如何在 Xcode 中重叠音频文件并合并 iPhone 的音频文件?