Soluklan

幕后

阈值是怎么在真实录音上测出来的

什么算作一次“呼气”,不是靠猜,而是从用户发来的真实声音样本里定出来的。这项工作是怎么做的。

阅读约 5 分钟

要让应用把一个声音算作呼气,那个声音必须比房间的安静高出一定的量。那么这个“一定的量”是从哪来的?

我们先靠猜,然后转向测量。

为什么从猜开始

加一种新呼吸法时,我们手上一份它的录音都没有。阈值是从相似的呼吸法那里搬来的:从嘴呼气的,用同一类里另一种嘴呼吸法的值;鼻腔的,用鼻腔那一类的。

那个猜测通常大致是对的,但不精确。

测量怎么做

从打开了匿名分享和声音样本分享的用户那里,会有练习的声音到达,每人每天最多十次。随每一次一起到的还有那次练习的报告和原始时间线:目标呼气原本预期在第几秒、应用在哪些时刻检测到了呼气,以及底噪是多少。

有了这两样,测量才成为可能。音频文件会被送进应用自己的检测代码——同样的代码、同样的算法——只是把阈值换掉。然后问:在哪个阈值下,捕捉到了多少次目标呼气,又出现了多少次误判?

如果捕捉数上升、误判没上升,就把阈值调低。如果两者都上升,就保持不动。

一个真实的例子

应用给底噪能低到多少设了一个下限:它防止阈值在非常安静的房间里变得过于灵敏。

在安静的房间里用平板练习时,这个下限可能让呼吸听不见:房间的底噪远低于下限。拿真实录音一看,下限就调低了:捕捉到的呼气多了,误判没有增加。

这样的修正靠猜是找不到的。没有那份录音,我们甚至不会知道问题存在。

如果房间在练习中变了

底噪在练习中也会重新测量。这也用同样的录音检验过:在叠加了空调嗡嗡声、说话声或关门声的录音里,呼气照样能被听到。

这是声音样本分享唯一的用途

发送过来的声音只为这一件事被听:测量呼吸检测的准确度。它不用于任何其他目的,不交给第三方,发送后会从你的设备上删除。

如果它是关着的,任何一次练习都不会录音。没有这项权限,应用照样完整地工作。

阈值会随时间更新

录音积累起来后,同样的扫描会再跑一遍,值也会更新。

所以应用的测量准确度,是跟着用它的人一起长起来的。

← 幕后