这是我的打鼾应用程序的附带说明。
我很擅长产生音频信号的自相关,看看它是否与打鼾/呼吸“相关”得很好。我有一个简单的算法(产生 1.0 作为第零个元素,这是一个好兆头),但我想知道如何评估结果以确定自相关是否强,也许更进一步,如何使用它来分离各种可能的声源。
问题 #1:自相关(跳过零元素)的 RMS 是否与任何“质量”指标一样好,还是有更好的指标?
详细说明: 我只是想要一种数字方式(与“查看”图表相比)来区分高度自相关的信号和不太好的自相关信号。
(我真的不知道要问什么其他问题。)
一些早期结果: 在某些情况下,自相关(RMS 或峰值)显示打鼾时的显着跳跃——正是我希望看到的响应。在其他情况下,在这些测量中根本没有明显的运动(这可能是两个连续的打鼾和两个响应),并且在高噪声情况下,测量值实际上在打鼾期间(略微)下降。
更新——5 月 22 日: 我终于有时间再做一些工作了。(我被另一个应用程序拖住了,这真的很痛苦。)我将自相关的输出输入到 FFT 中,输出有点有趣——当打鼾开始时,它在原点附近显示了一个相当戏剧性的峰值。
所以现在我面临着以某种方式量化这个峰值的问题。奇怪的是,就绝对幅度而言,最高峰出现在其他时间,但我尝试了峰值与算术平均值的比值,结果很好。那么有什么好方法可以测量 FFT 的“峰值”。(请不要说我需要对其进行 FFT 分析——这东西已经快要吞掉它自己的尾巴了。:))
此外,在我看来,如果我对输入的自相关结果进行镜像反射,FFT 的质量可能会有所提高,中间为零(根据定义为 1.0 量级)。这会将“尾巴”放在两端。这(可能)是个好主意吗?镜像应该是直立的还是倒立的?(当然,不管你说什么我都会尝试,但我想也许我可能会得到一些关于细节的提示。)
试过平整度——
我的测试用例大致可以分为“乖巧”类和“问题儿童”类。
对于“表现良好”的测试用例,自相关的 FFT 平坦度急剧下降,并且自相关峰值与平均自相关之比在打鼾期间攀升。这两个数字的比率(峰值比率除以平坦度)特别敏感,在呼吸/打鼾期间表现出 5-10 倍的爬升。
然而,对于“问题儿童”来说,数字却完全相反。峰均比略有下降,而平坦度实际上增加了 50-100%
这两个类别之间的区别(大部分)是三倍的:
- “问题儿童”的噪音水平(通常)更高
- “问题儿童”的音频水平(几乎总是)较低
- “问题儿童”往往包括更多的呼吸和更少的实际打鼾(我需要检测两者)
有任何想法吗?
更新 -- 2012 年 5 月 25 日: 跳胜利舞有点为时过早,但是当我反映一个点的自相关,对其进行 FFT,然后进行光谱平坦度时,我的组合比率方案显示出很好的跳跃几种不同的环境。反映自相关似乎可以提高 FFT 的质量。
不过,一个小问题是,由于反射“信号”的“直流分量”为零,第零个 FFT 结果始终为零,这有点打破了包含零的几何平均值。但是跳过第零个元素似乎有效。
我得到的结果远远不足以单独识别打鼾/呼吸,但它似乎是一个相当敏感的“确认”——如果我没有得到“跳跃”,那么它可能不是打鼾/呼吸。
我没有仔细分析它,但我怀疑正在发生的事情是在呼吸/打鼾的某个地方出现了哨声,而哨声就是被检测到的。