Soluklan

ЗА КУЛИСАМИ

Как микрофон слышит твоё дыхание

Если звук не записывается, как приложение измеряет дыхание? Шум комнаты, порог, который движется вместе с ней, и как находятся начало и конец выдоха.

6 мин чтения

Приложение не записывает звук. Поток с микрофона никогда не пишется на диск; каждые двадцать миллисекунд вычисляется уровень звука в этот момент, и сохраняется только это число. Так что у приложения не звуковой файл, а ряд чисел: линия, которая поднимается и опускается.

Все измерения делаются из этой линии.

Сначала измеряется тишина

В начале сессии идёт трёхсекундное слушание. За это время измеряется шум комнаты: гул холодильника, машины за окном, собственный электронный шум устройства.

Это не среднее — смотрят на самые тихие моменты этих трёх секунд. Причина: если во время калибровки положить телефон на стол или если кто-то кашлянет, среднее подтягивается вверх и порог остаётся неверным на всю сессию. В одной настоящей записи это дало ошибку в четырнадцать децибел.

Шум обновляется и во время сессии. Комната стала тише — порог опускается; шум вырос — поднимается, но только в пределах, иначе приложение оглохло бы в шумной комнате.

Порог не абсолютный, он относительно шума

Чтобы звук считался «выдохом», ему не нужно перейти какой-то определённый уровень децибел. Ему нужно подняться на определённую величину над шумом. В тихой комнате этот порог низкий, в шумном кафе — высокий.

Насколько выше шума — зависит от техники. Выдох через рот (долгий выдох, сжатые губы) выходит громким. Спокойный выдох через нос (когерентное, квадратное) намного ниже. Дыхание одной ноздрёй — самое тихое из всех. Каждую технику слушают её собственным порогом; мерить всех одной меркой значило бы сделать носовые техники неслышимыми.

Начало и конец выдоха

Сырой уровень звука слишком дёрганый, чтобы пользоваться им напрямую. Сначала его сглаживают — каждое новое измерение смешивается с предыдущим, чтобы один щелчок не превратился в выдох.

Выдох начинается, когда сглаженная линия переходит порог. Чтобы он закончился, хватит любого из двух условий: линия опускается ниже порога и держится там треть секунды, либо она падает на определённую величину от собственного пика выдоха. Без второго условия слышимый вдох продлевал бы выдох, и два дыхания измерялись бы как одно.

Очень короткие события отбрасываются. Для этого берут сырое измерение, а не сглаженную линию: сглаживание растягивает короткий щелчок и делает его длиннее, чем он был.

Тихая комната и проблема планшета

То, что пороги отсчитываются от шума, работает в большинстве случаев, но есть ловушка: если шум действительно очень низкий, относительный порог становится слишком чувствительным, и любой скрип в комнате может сойти за выдох. Поэтому у того, насколько низко может опуститься шум, есть нижняя граница.

Какое-то время эта граница была слишком высокой. В одной планшетной записи настоящий шум оказался намного ниже; поскольку граница предполагала шум выше реального, запас выдоха растаял и не было слышно ничего. Человеку, выдыхавшему в ладони от планшета, говорили «поднеси устройство ближе».

Границу пересчитали на двадцати одной настоящей записи и опустили: число пойманных выдохов выросло, а число ложных срабатываний не изменилось. Такие решения принимаются по имеющимся записям, а не наугад — это и есть единственная работа передачи образцов звука.

Быстрое дыхание — отдельная задача

У этого метода есть предел: чтобы понять, что выдох закончился, нужна короткая тишина после него. В технике, где выдыхают чаще раза в секунду, такой тишины не возникает.

Поэтому капалабхати измеряется иначе. Вместо того чтобы разделять выдохи по одному, приложение считает моменты, когда звуковая линия даёт пик, и смотрит, насколько ровны промежутки. Счётчик ждёт, пока после закрытия пика линия опустится ниже порога — без этого условия он считал каждый выдох дважды.

← За кулисами