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

8 投票
2 回答
2682 浏览
提问于 2025-04-17 07:09

我想记录一些特定声音的事件,比如汽车门关上的声音,或者烤面包机吐出烤面包的声音。

这个系统需要比单纯的“噪音探测器”更复杂,它需要能够从其他大声的噪音中分辨出这些特定的声音。

虽然识别的速度不需要是零延迟,但处理器需要能够处理来自一个始终开启的麦克风的连续数据流。

  • 这个任务和语音识别有很大不同吗?我能否利用语音识别的库或工具来识别这些非语音的声音?
  • 考虑到我只需要匹配一种声音(而不是在一堆声音中匹配),我可以做哪些特别的优化?

这个回答提到使用匹配滤波器可能合适,但我对具体细节不太清楚。我认为仅仅对目标声音的样本和麦克风录音的数据进行简单的交叉相关分析可能不太有效,因为目标声音会有变化。

我的问题也和这个问题相似,但没有引起太多关注。

2 个回答

3

这篇博士论文,非语音环境声音分类系统用于自主监控,是Cowling在2004年写的,里面有关于不同音频特征提取和分类技术的实验结果。他使用了一些环境声音,比如钥匙的叮当声和脚步声,最终达到了70%的准确率:

研究发现,最好的技术是使用连续小波变换结合动态时间规整,或者梅尔频率倒谱系数结合动态时间规整。这两种技术都能达到70%的识别率。

如果你只专注于一种声音,或许可以实现更高的识别率呢?

作者还提到,一些在语音识别中效果不错的技术(比如学习向量量化和神经网络)在处理环境声音时效果就不太好。

我还找到了一篇更新的文章,用于语义视频搜索的音频事件检测,由Bugalho等人于2009年发表,里面讲的是如何在电影中检测声音事件(比如枪声、爆炸声等)。

我在这个领域没有经验,只是因为你的问题引起了我的兴趣,偶然发现了这些资料。我把我的发现分享在这里,希望能对你的研究有所帮助。

4

我找到了一篇有趣的论文,内容是关于这个主题的。

如果你的应用场景和车辆声音相似,这种方法也应该适用,甚至效果更好。

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

  1. 每次取200毫秒的声音样本。
  2. 对每个样本进行傅里叶变换(FFT)。
  3. 对频率向量进行主成分分析,具体步骤如下:

    • 计算该类所有样本的平均值。
    • 从样本中减去这个平均值。
    • 计算平均协方差矩阵的特征向量(即每个向量与自身的外积的平均值)。
    • 保存平均值和最重要的特征向量。

然后,为了对声音进行分类,它会...

  1. 再次取200毫秒的声音样本(S)。
  2. 对每个样本进行傅里叶变换。
  3. 从频率向量(F)中减去该类的平均值(C)。
  4. 将频率向量与类C的每个特征向量相乘,得到一组数字。
  5. 从频率向量F中减去每个数字与对应特征向量的乘积。
  6. 计算得到的向量的长度。
  7. 如果这个值低于某个常数,说明样本S被识别为属于类C。

撰写回答