从连续麦克风流中实时识别非语音,非音乐声音

时间:2011-11-27 09:54:04

标签: java python real-time pattern-recognition audio-fingerprinting

我正在寻找与特定声音相对应的事件,例如车门砰击,或者是烤面包机吐出的吐司。

系统需要比“响亮的噪音探测器”更复杂;它需要能够将特定声音与其他大声噪声区分开来。

识别不一定是零延迟,但处理器需要跟上来自始终开启的麦克风的连续输入数据流。

  • 这项任务与语音识别有很大不同,还是可以利用语音识别库/工具包来识别这些非语音?
  • 鉴于要求我只需要匹配一个声音(而不是声音库之间的匹配),我可以做任何特殊的优化吗?

This answer表示匹配过滤器是合适的,但我对细节感到朦胧。由于目标声音的变化,我不相信目标声音样本和麦克风流之间的音频波形数据的简单互相关将是有效的。

我的问题也与this类似,但没有引起太多关注。

2 个答案:

答案 0 :(得分:3)

Cowling(2004)的这篇博士论文Non-Speech Environmental Sound Classification System for Autonomous Surveillance,对音频特征提取和分类的不同技术进行了实验结果。他使用环形声音,如摇铃键和脚步声,并且能够达到70%的准确度:

  

最好的技术是连续小波变换   动态时间扭曲或Mel频率倒谱的特征提取   具有动态时间扭曲的系数。这两种技术都有   达到70%的识别率。

如果您将自己限制为一种声音,也许您可​​能会获得更高的识别率?

作者还提到,与语音识别(学习矢量量化和神经网络)相当好的技术在环境声音方面效果不佳。

我还在这里找到了一篇更近的文章:Detecting Audio Events for Semantic Video Search,Bugalho等人。 (2009),他们在那里检测电影中的声音事件(如枪击,爆炸等)。

我没有这方面的经验。由于你的问题引起了我的兴趣,我只是偶然发现了这些材料。我在这里发布我的发现,希望它对你的研究有所帮助。

答案 1 :(得分:3)

我发现了一篇关于这个主题的有趣论文

它应该适用于您的应用,如果不是比车辆声音更好。

在分析训练数据时,它......

  1. 取样200ms
  2. 对每个样本进行傅里叶变换(FFT)
  3. 频率向量上有Principal Component Analysis

    • 计算此类所有样本的平均值
    • 从样本中减去均值
    • 计算平均协方差矩阵的特征向量(每个向量的外积与其自身的平均值)
    • 存储均值和最重要的特征向量。
  4. 然后对声音进行分类,它......

    1. 取200ms(S)的样本。
    2. 对每个样本进行傅里叶变换。
    3. 从频率向量(F)中减去类(C)的均值。
    4. 将频率向量与C的每个特征向量相乘,得到每个特征向量。
    5. 从F。
    6. 中减去每个数字的乘积和相应的特征向量
    7. 获取结果向量的长度。
    8. 如果此值低于某个常数,则S被识别为属于C类。