求一个音频转化心率的算法.

发布于 2022-08-28 11:57:52 字数 65 浏览 21 评论 0

由一个硬件设备采集心跳的音频数据, 连接到手机,或者电脑上. 想把音频信息转化成实际的心率信息.求一个算法...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冰雪梦之恋 2022-09-04 11:57:52

你想问的是设备采到的音频数据采样率高了,而心音(心率)信息的话不需要那么高的采样率,怎么把采样率降下来?

正常心音的的频率范围为1~800Hz,为了保证异常心音(可能会高过800Hz)也被完整的保留下来,我之前做的作法是把心音的采样率设定为5KHz左右,我只用了简单的降采样方式,就是在原来22.05Hz的音频数据上面每个4点取一个值,把取出来的值组成新的数据组保存就大致是5KHz左右的采样率了。

更好的降采样算法我也不懂,期待大神来解答。

血之狂魔 2022-09-04 11:57:52

FFT就可以,
时域信号转频域信号

频域上的峰值就是心率

国粹 2022-09-04 11:57:52

你描述的问题不够清晰。我试着回答一下。
你这个采集硬件的设备应该有驱动程序吧,这些驱动里肯定包含了对该设备的读取或者写入函数。你调用驱动程序中的读函数就可以得到相关的数据了,读取频率你自己根据实际情况来决定。然后按着设备提供的数据格式对这些数据进行解析即可。

旧话新听 2022-09-04 11:57:52

心率有这些特性:

  • 频率低,一分钟几十次到一百多次,也就一两Hz左右。
  • 有冲击性。

个人觉得用个阈值去找脉冲间隔可能比较合适。先搞一个窗口大约和心率差不多长的检测窗,窗里的数据取绝对值算中位数,取个n倍中位数作为检测阈值(具体用几倍得要试),超过这个阈值的数据认为是心率的信号,然后数信号峰的间隔,作为心率。

传统零点穿越法也可以考虑,因为自然界信号有这么低频的很少,有可能不容易被干扰。弄个特别低的IIR低通滤波器(比如阈值在5Hz的),卡掉所有的高频成分,然后找穿越零点的地方。

如果你想弄成时频谱然后用更细致的方法去搞,心跳这么低的频率恐怕得先做降采样,不然以一般的音频采样率,怕不得搞个几万点的FFT才能把这么低的基频看清楚。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文