如何从音频信号中识别各个分量?

2024-06-16 13:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些从风力涡轮机录下的音频文件,我正在尝试做异常检测。一般的想法是,如果一个叶片有故障(例如裂纹),这个叶片的声音会与其他两个叶片不同,所以我们基本上可以找到一种方法来提取每个叶片的声音信号,并比较它们之间的相似性/距离,如果其中一个信号有显著差异,我们可以说涡轮将要故障。 我只有一些不合格的样品,缺少标签

然而,似乎没有人做这种工作,我在尝试时遇到了很多麻烦。 我试着用短时傅立叶变换把信号转换成功率谱,结果出现了一些尖峰。如何从原始数据中识别每个刀片(一些相关的工作使用自动编码器从音频中检测异常,但在本任务中,我们希望使用一些基于相似度的方法。)

有人有好主意吗?有相关的工作/论文可以推荐吗


Tags: 方法声音距离信号样品差异相似性涡轮
2条回答

如果你的轴以1200转/分或20赫兹的速度旋转,那么所有由旋转产生的重要声音都应该是20赫兹的谐波

但是,如果涡轮有3个完美的叶片,那么每次旋转时,涡轮都将处于完全相同的配置3次,因此旋转产生的所有声音应限制在60 Hz的倍数

高于噪声地板的20 Hz、20、40、80、100等其他谐波的能量通常来自叶片之间的差异

当然,这会忽略其他来源的噪音,这些噪音也与轴同步,这会扰乱分析

假设您获得的音频来自一个可以听到单个刀片经过的位置,则有两个子问题:

1)估计每个叶片位置,并提取每个叶片的音频

2)比较每个叶片的信号。确定其中一个是否不同到足以被视为异常

可以使用直接检测旋转的传感器来估计铲刀位置。例如基于发电机的磁场。理想情况下,您将有这种已知良好的传感器数据,至少在开发系统时是这样。可能只使用音频,使用某种周期性检测来估计。自相关是一种常用的技术

要检测刀片之间的差异,可以尝试在标准特征描述上使用标准距离函数,如MFCC上的欧几里德函数。您仍然需要一些已知错误示例和已知良好/可接受示例的示例,以评估您的解决方案。 然而,这可能不够好。然后尝试计算一些更好的特征作为距离计算的基础。也许是用自动编码器。你也可以尝试一些Similarity Learning。 如果您有大量的好数据和错误数据,您可以使用三重丢失设置来学习相似性度量。将两个好刀片的数据作为应该相似的对象输入,将已知坏刀片的数据作为应该不同的对象输入

相关问题 更多 >