Soluklan

幕后

麦克风怎么听你的呼吸

既然不录音,应用怎么测你的呼吸?底噪、随房间移动的阈值,以及呼气的起点和终点是怎么找到的。

阅读约 6 分钟

应用测量时不录音。麦克风来的音频流不写入磁盘(唯一的例外,是你另外同意的声音样本分享)。每秒几十次算出那一瞬间的声音强度,只留下这个数字。所以应用手里的不是音频文件,而是一串数字:一条起起伏伏的线。

所有的测量都从那条线上来。

先测安静

练习开头有三秒的聆听。这段时间里,房间的底噪被测出来:冰箱的嗡嗡声、外面的车流、设备自身的电子噪声。

它不是取平均——它看的是那三秒里最安静的时刻。这样一来,那时把手机往桌上一放,或者有人咳了一声,都不会让整场练习的阈值出错。

练习中会重新测量房间

房间在练习过程中可能会变:空调开了,窗户关了。所以底噪在整场练习里也会重新测量。练习不会停下来,也不需要你做什么。

练习过程中,应用会时不时看一看呼吸之间最安静的时刻,重新测量底噪。呼气本身不算进这次测量。

短暂的声音不会让底噪变动:有人说了句话、门砰地一关,都不会把阈值抬高。房间长久地变了,比如空调开了或关了,底噪就会跟着调整。

不管房间多吵,阈值都不会高到让你的呼气听不见。

练习中出现的“你的呼吸不太听得清”或“把设备拿远一点”这类提示,和报告里的呼吸音量,都是按那一刻的底噪来衡量每次呼气。两者看的是同一个数字。

阈值不是绝对的,而是相对底噪的

一个声音要算作“呼气”,不必超过某个特定的分贝值。它要比底噪高出一定的量。安静的房间里那个阈值低,吵闹的咖啡馆里则高。

高出多少取决于呼吸法。从嘴呼气(长呼气、缩唇呼吸)声音大。从鼻子安静地呼气(共振、箱式)要低得多。单鼻孔的呼吸是最低的。每种呼吸法都用自己的阈值来听;用同一把尺子量,鼻腔那几种就会变得听不见。

呼气的起点和终点

原始的声音强度抖动太大,不能直接用。它先被平滑处理——每个新的测量和前一个混合,这样一声咔哒不会变成一次呼气。

平滑后的线越过阈值时,呼气开始。声音掉到阈值以下并停留一小会儿,这次呼气就算结束。紧接着的一次听得见的吸气不会把呼气拉长,两次呼吸不会被算成一次。

像一声咔哒这样非常短的声音不算呼气。

安静的房间和平板的问题

阈值相对底噪,在多数情况下管用,但它有个陷阱:如果底噪真的非常低,相对阈值会变得过于灵敏,房间里任何一声吱呀都可能算成呼气。所以底噪能低到多少,有一个下限。

下限定得太高,又会反过来:在平板这类麦克风离得远的设备上,呼气的余量被吃光,呼吸就听不到了。所以下限的位置不是猜的,而是用真实录音定出来的。具体怎么做,见阈值是怎么在真实录音上测出来的。

快速呼吸是另一回事

这个方法有个限制:判断一次呼气结束,需要之后有一小段安静。在一种呼气快于每秒一次的呼吸法里,那段安静根本不会出现。

所以圣光调息用另一种方式来测。应用不去逐个分离呼气,而是数声音曲线出现波峰的时刻,再看间隔有多规律。一次呼气不会被数成两次。

← 幕后