【发布时间】:2020-01-12 03:03:20
【问题描述】:
我有很多 .wav 文件,通过 MIC 通过将手机直接放在人的胸前记录心音。我想从这些声音中计算 BPM。你能帮忙吗?任何库、算法或教程?
【问题讨论】:
-
@YevhenKuzmovych 这与我的问题无关
-
@Noman-marwat Yevhen Kusmovych 提供的链接,尤其是关于模式检测的链接,对于这类问题来说是非常好的资源。
我有很多 .wav 文件,通过 MIC 通过将手机直接放在人的胸前记录心音。我想从这些声音中计算 BPM。你能帮忙吗?任何库、算法或教程?
【问题讨论】:
你能(你被允许)在某个地方放一些样品吗?
我玩过一些心电图(最多 12 个电极)和神经信号(尖峰看起来很像 R-S 转换)。这些尖峰是如此之大,一个简单的 scipy.signal 中的 find_peaks 就足以检测到它们。不过在那之前我使用了一个巴特沃斯过滤器。您可能也需要,过滤掉 50/60Hz 电源很常见,音频中也可能存在类似的噪音。
找到峰值后,每分钟的节拍数是一个除法(可能还有一些平均值)。
【讨论】:
您要做的实际上是计算给定声音文件的傅立叶域,然后确定最强的峰值。这很可能是您的主要信号的频率(在这种情况下应该是心率)。
谢天谢地,别人有already asked / answered this on stackoverflow。
这种方法的唯一警告是,如果有其他重复信号主导心跳,在这种情况下,您可能需要先清理数据。
【讨论】: