求一个音频转化心率的算法.
由一个硬件设备采集心跳的音频数据, 连接到手机,或者电脑上. 想把音频信息转化成实际的心率信息.求一个算法...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
由一个硬件设备采集心跳的音频数据, 连接到手机,或者电脑上. 想把音频信息转化成实际的心率信息.求一个算法...
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
你想问的是设备采到的音频数据采样率高了,而心音(心率)信息的话不需要那么高的采样率,怎么把采样率降下来?
正常心音的的频率范围为1~800Hz,为了保证异常心音(可能会高过800Hz)也被完整的保留下来,我之前做的作法是把心音的采样率设定为5KHz左右,我只用了简单的降采样方式,就是在原来22.05Hz的音频数据上面每个4点取一个值,把取出来的值组成新的数据组保存就大致是5KHz左右的采样率了。
更好的降采样算法我也不懂,期待大神来解答。
FFT就可以,
时域信号转频域信号
频域上的峰值就是心率
你描述的问题不够清晰。我试着回答一下。
你这个采集硬件的设备应该有驱动程序吧,这些驱动里肯定包含了对该设备的读取或者写入函数。你调用驱动程序中的读函数就可以得到相关的数据了,读取频率你自己根据实际情况来决定。然后按着设备提供的数据格式对这些数据进行解析即可。
心率有这些特性:
个人觉得用个阈值去找脉冲间隔可能比较合适。先搞一个窗口大约和心率差不多长的检测窗,窗里的数据取绝对值算中位数,取个n倍中位数作为检测阈值(具体用几倍得要试),超过这个阈值的数据认为是心率的信号,然后数信号峰的间隔,作为心率。
传统零点穿越法也可以考虑,因为自然界信号有这么低频的很少,有可能不容易被干扰。弄个特别低的IIR低通滤波器(比如阈值在5Hz的),卡掉所有的高频成分,然后找穿越零点的地方。
如果你想弄成时频谱然后用更细致的方法去搞,心跳这么低的频率恐怕得先做降采样,不然以一般的音频采样率,怕不得搞个几万点的FFT才能把这么低的基频看清楚。