← Эхолокатор EN

Эксперимент · звук

Эхолокатор

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

Виртуальная комната: то же самое, но вместо микрофона — модель комнаты с диваном, шкафом и рукой.

  • 🎧 Снимите наушники. Импульсы короткие, но громкие, прямо в ухо не надо. Громкость поднимается постепенно, ровно до той, что нужна.
  • 🐈 Кошки и собаки слышат «почти ультразвук» лучше нас. Если питомец насторожился, переключитесь на низкие частоты.
  • 🔒 Звук никуда не уходит. Запись обрабатывается прямо в браузере и нигде не сохраняется.

Лучше всего работает в тихой комнате, с устройством на столе или в вытянутой руке.

Как это устроено

Эхо — это время

Звук в комнатном воздухе проходит 343 метра в секунду. До стены в 1,7 метра и обратно он летит ровно 10 миллисекунд, и каждая лишняя миллисекунда задержки — это ещё 17 сантиметров до препятствия. Эхолокатор умеет, по сути, одно: очень точно измерять, через сколько вернулся звук.

Микрофон в телефоне записывает 48 000 отсчётов в секунду, то есть один отсчёт на каждые 3,6 миллиметра расстояния. Этого достаточно, чтобы различать предметы в паре сантиметров друг от друга. Главное, чтобы мерить было что: чтобы в записи был узнаваемый момент «вот оно, вернулось».

Почему свип, а не щелчок

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

Выход, который природа нашла раньше инженеров, — свип: тон, который за несколько миллисекунд скользит от низких частот к высоким. Он длинный, поэтому энергии в нём в сотни раз больше. А чтобы вернуть точность, запись сравнивают с отправленным звуком: образец сдвигают по записи и в каждом положении считают, насколько хорошо он совпал. Это называется согласованный фильтр. Там, где пришла копия свипа, совпадение резкое, и длинный звук сжимается в узкий пик. Ширина пика зависит не от длины свипа, а от того, сколько частот он захватил: при полосе 2–20 кГц это около двух сантиметров.

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

Есть тонкость. Даже после сжатия у пика остаются «плечи», и прямой звук, который в тысячи раз громче любого эха, забивает ими всё вокруг себя. Поэтому полосу перед сжатием взвешивают, как в радарах: края частотного диапазона приглушают окном Блэкмана. Пик становится примерно вдвое шире, зато плечи уходят ниже −58 дБ, и эхо, которое на 40 дБ тише прямого звука, остаётся видно.

Синхронизация без общих часов

Чтобы измерить задержку эха, надо знать, когда звук вышел из динамика. Браузер этого точно не говорит: между командой «играй» и звуком проходят десятки миллисекунд, и между звуком и тем, как микрофон отдаёт запись, — ещё столько же. На разных устройствах это время разное и чуть плывёт, а ошибка в одну миллисекунду сдвигает все расстояния на 17 сантиметров.

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

Первым делом прибор пускает длинный свип от 150 Гц до самого верха. По прямому звуку видно, какие частоты динамик и микрофон вообще пропускают, — это график «Что слышит микрофон» под прибором.

Частоты: точность, громкость и материалы

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

  • Широкий, 2–20 кГц. Самый точный, около 2 см, но хорошо слышен: короткий «цвирк» десять раз в секунду.
  • Низкий, 0,5–4 кГц. Звучит мягче, лучше обходит препятствия и дальше слышен, зато пик шириной около 11 см.
  • Почти ультразвук, 17–21 кГц. Большинство взрослых почти не слышат, но полоса узкая (около 10 см), и не все динамики и микрофоны туда достают.

Частоты рассказывают и о материале. Твёрдое и гладкое — стена, шкаф, стекло — отражает всё одинаково. Мягкое и пористое — диван, шторы, свитер — поглощает высокие частоты. В режиме «По спектру» импульс раскладывается на три подполосы, каждая сравнивается с собственным прямым звуком, чтобы не мешала неровная АЧХ устройства, и эхо окрашивается: тёмное — всё вернулось, тёплое — верха пропали, синее — вернулись в основном верха.

Откуда взять направление

Один динамик и один микрофон дают только расстояние: эхо на 1,5 метра могло прийти откуда угодно — спереди, сбоку, с потолка. Чтобы получилась карта, направление нужно добыть отдельно.

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

Два динамика. У ноутбука динамики стоят по бокам. Импульсы идут из них по очереди, и задержка каждого эха задаёт эллипс: точки, для которых путь «динамик → предмет → микрофон» имеет эту длину. Два динамика — два эллипса, предмет там, где они пересекаются. Прибор не ищет пересечения явно: каждая точка картинки смотрит, громко ли было в обеих записях при тех задержках, которые дала бы она. Так строят изображения сонары с синтезированной апертурой. Бонус: по разнице прихода прямых звуков слева и справа видно, где между динамиками прячется микрофон.

Каждый эллипс — все места, откуда эхо пришло бы с измеренной задержкой. Фокусы — динамик и микрофон. Предмет стоит на пересечении.

Доплер: скорость по высоте тона

Если отражатель движется, эхо возвращается с другой частотой: выше, если он приближается, ниже, если удаляется. Сдвиг равен Δf = 2·v·f₀/c. При тоне 18,5 кГц рука, которая движется со скоростью 10 см/с, сдвигает эхо примерно на 11 Гц. В режиме «Доплер» устройство тянет ровный тон, а прибор раз в 40 мс раскладывает запись в спектр с точностью около 6 Гц и ищет энергию по бокам от тона. Так же устроены полицейские радары и доплеровское УЗИ, которое измеряет скорость крови в сосудах.

Кто ещё так делает

Летучие мыши кричат свипами от 100 до 20 кГц длиной в несколько миллисекунд и различают проволоку толщиной в доли миллиметра. Подлетая к добыче, они кричат чаще и короче, до двухсот раз в секунду. Подковоносы кричат длинным тоном и ловят доплеровский сдвиг от взмахов крыльев насекомого. Дельфины щёлкают широкополосными щелчками до 150 кГц и видят рыбу в песке. Сонары кораблей и подлодок работают на тех же принципах, только в воде звук в четыре с лишним раза быстрее. А люди тоже умеют: незрячие эхолокаторы вроде Дэниела Киша цокают языком и по эху различают столбы, машины и кусты.

Честные ограничения

  • Мёртвая зона. Ближе 5–15 сантиметров почти ничего не видно: там ещё звенит прямой звук и корпус.
  • Эхо эха. Звук может отразиться дважды, от стены к шкафу и обратно, и нарисовать «призрачную» стену дальше настоящей.
  • Устройство вмешивается. Некоторые телефоны фильтруют микрофон, даже если попросить этого не делать. Bluetooth-колонки и наушники ломают всё: задержка плывёт, а звук идёт не оттуда, где микрофон.
  • Направление грубое. У телефона нет антенны-решётки, как у сонара, поэтому радар даёт пятна, а не чёткий контур.

Зато всё это — обычный браузер, один динамик и один микрофон, и каждая цифра на экране измерена прямо сейчас.