在声音识别中进行异常值检测的方法?

Methods to do outlier detection in sound recognition?

有识别2-class种声音的模型,分别是class-A和class-B。

如何识别class-C音为异常音?

我试过在逐帧识别的时候设置一个阈值

above 70% -> class A or B
else      -> abnormal

例如,

如果一个声音有10帧,结果是

frame 1 2 3 4 5 6 7 8 9 10
      A B A B A A A B A  A     A=7 B=3
-> class A

frame 1 2 3 4 5 6 7 8 9 10
      B B A B A A A B A  A     A=6 B=4
-> abnormal

表现很差

我该怎么办?

有两种方式来看待这个问题:作为一个class化问题,以及作为一个异常值检测问题。

分类

作为一个 class化问题,可以引入系统应用程序中可能遇到的外部声音,并使用它来创建第三个 class。对于这第三个 class 来说,拥有种类繁多的声音很重要,而且数量可能很大。

有了这个,你可能想使用对成本敏感的 one vs all 所以调整精确度/召回率来挑选出 classes A 和 B。

此方法的好处是您不必为离群值/异常模型设置任意阈值。在这种情况下,距离可能很难测量,因此找到合适的阈值可能很困难。

包括我在内的很多人在与您的问题类似的 kaggle 比赛中使用了这种技术。 https://www.kaggle.com/c/axa-driver-telematics-analysis

异常值/异常检测

由于您使用的是神经网络,因此可以构建一个自动编码器。这将找到代表您要检测的声音的多种声音。您可以使用重建损失作为异常检测的距离度量。这仍然需要您确定一个阈值,最好使用一些现有的异常/离群数据来执行此操作。