Как это устроено
Эхо — это время
Звук в комнатном воздухе проходит 343 метра в секунду. До стены в 1,7 метра и обратно он летит ровно 10 миллисекунд, и каждая лишняя миллисекунда задержки — это ещё 17 сантиметров до препятствия. Эхолокатор умеет, по сути, одно: очень точно измерять, через сколько вернулся звук.
Микрофон в телефоне записывает 48 000 отсчётов в секунду, то есть один отсчёт на каждые 3,6 миллиметра расстояния. Этого достаточно, чтобы различать предметы в паре сантиметров друг от друга. Главное, чтобы мерить было что: чтобы в записи был узнаваемый момент «вот оно, вернулось».
Почему свип, а не щелчок
Самое очевидное — щёлкнуть и ждать эха. Щелчок короткий, и момент его возвращения видно точно. Беда в том, что динамик ограничен громкостью: диффузор не может отойти дальше, чем может. Короткий щелчок на пределе громкости несёт очень мало энергии, и слабое эхо от дальней стены тонет в шуме.
Выход, который природа нашла раньше инженеров, — свип: тон, который за несколько миллисекунд скользит от низких частот к высоким. Он длинный, поэтому энергии в нём в сотни раз больше. А чтобы вернуть точность, запись сравнивают с отправленным звуком: образец сдвигают по записи и в каждом положении считают, насколько хорошо он совпал. Это называется согласованный фильтр. Там, где пришла копия свипа, совпадение резкое, и длинный звук сжимается в узкий пик. Ширина пика зависит не от длины свипа, а от того, сколько частот он захватил: при полосе 2–20 кГц это около двух сантиметров.
Есть тонкость. Даже после сжатия у пика остаются «плечи», и прямой звук, который в тысячи раз громче любого эха, забивает ими всё вокруг себя. Поэтому полосу перед сжатием взвешивают, как в радарах: края частотного диапазона приглушают окном Блэкмана. Пик становится примерно вдвое шире, зато плечи уходят ниже −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-колонки и наушники ломают всё: задержка плывёт, а звук идёт не оттуда, где микрофон.
- Направление грубое. У телефона нет антенны-решётки, как у сонара, поэтому радар даёт пятна, а не чёткий контур.
Зато всё это — обычный браузер, один динамик и один микрофон, и каждая цифра на экране измерена прямо сейчас.