Как устроена акустическая камера, которая делает окружающие звуки видимыми
Определение источника звука с помощью самодельной акустической камеры
Акустическая (или шумовая) камера — это прибор визуализации, позволяющий находить источник звука и анализировать его свойства. Он с высокой точностью показывает, откуда приходит сигнал: будь то птичий крик, утечка газа или гул двигателя квадрокоптера.
Совсем недавно радары с фазированной антенной решёткой считались передовой технологией, недоступной обычным людям. Сегодня же акустическую камеру можно собрать самостоятельно: в сети уже появилось несколько подробных руководств.
Многоликая акустическая камера
Само словосочетание «акустическая камера» в разные эпохи означало совершенно разные вещи.
-
Структура внутреннего уха. Впервые термин возник в 1898 году: немецкий физиолог Юлиус Эвальд изучал внутреннее ухо и обнаружил в нём участок, напоминающий пластины Хладни — фигуры, которые резонируют под действием акустических колебаний. Эту область Эвальд и назвал «акустической камерой».

Песок на поверхности пластин Хладни складывается в причудливые узоры под действием стоячих волн (то есть чередующихся зон колебаний и покоя) -
Системы подводной локализации. Как минимум с 1960-х годов этим термином называли системы подводного обнаружения объектов. Об этом говорится в работах «Подводная акустическая камера» (1966), «3D акустическая камера для подводной съёмки» (1993) и других. Такие устройства помогают ориентироваться в мутной воде с минимальной видимостью, где обычные камеры оказываются бесполезными.

Снимок, полученный подводной акустической камерой австралийской компании HW Technologies -
Медицинские сканеры. В этом случае термин относится к любому массиву преобразователей, предназначенному для локализации источников звука, нередко в паре с оптической камерой. Такие системы применяются в диагностике.
-
Лазерные акустические камеры. В 1969 году Корпель с коллегами представили метод быстрого получения акустических голограмм на частоте 2,25 МГц с помощью лазерного сканирования; схема показана на рисунке:

Камера с увеличенной апертурой способна строить акустические изображения и голограммы в реальном времени.
Наконец, в 1975 году американец Джордж Гилмор получил патент US3895340A, где описан «аппарат акустической камеры».

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

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

На видео показано, как отслеживается БПЛА с помощью популярного питоновского пакета Acoular (примеры кода для обработки звука в этом пакете приведены ниже):
Всё чаще акустические камеры используют для поиска утечек в трубопроводах. Устройства начального уровня подойдут для планового обслуживания оборудования во время обходов. Скажем, недорогая акустическая камера Acoustic Visualizer в своё время продавалась на eBay, а сегодня похожие модели предлагают китайские производители.
Такая камера выручает при диагностике неисправностей в машинах и механизмах, указывая на источник звука. А если проколота велосипедная шина, место прокола видно сразу.

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

Камеры своими руками
Устройство представляет собой массив микрофонов, одновременно записывающих звук. Зная точное время прихода сигнала на каждый микрофон и его громкость, можно вычислить координаты источника. Эту работу выполняет DSP.
Американский энтузиаст Майкл Нават (Michael Navat) в своём DIY-проекте постарался сделать акустическую камеру как можно проще. Список необходимого более чем скромен:
-
микрофонный массив miniDSP UMA-16 с USB-камерой (всё вместе обойдётся примерно в $275);
-
штатив;
-
Python + Acoular.
По сути, USB-массив UMA-16 v2 — это уже почти готовая акустическая камера. Остаётся лишь подобрать подходящее программное обеспечение.

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

Запись видео и звука
Для записи видео и синхронизации его со звуковыми дорожками применялись OpenCV и PyAudio, а также немного собственного кода.
Весь код выложен на GitHub. Программа запускается из консоли. Команда для записи видео и звука:
./record.sh
На выходе получаем:
video.avi audio.wav
Как ни странно, найти программу для записи 16-канального звука оказалось непросто: Audacity для этого не подошёл. Поэтому автор решил написать собственный инструмент на Python.
Построение диаграммы направленности
На самом деле существует не один, а целый ряд алгоритмов формирования диаграммы направленности (beamforming) на основе данных о звуковом давлении на каждом микрофоне. Acoular — популярный пакет для акустического бимформинга. Он устанавливается стандартным для Python способом, а для визуализации звука можно взять алгоритм по умолчанию.
Поскольку Acoular работает с файлами формата .h5, сначала необходимо преобразовать .wav в .h5. Для этого используются питоновские пакеты SciPy и PyTables. Ниже приведён небольшой пример из официальной документации Acoular: 64-канальный audio.wav загружается в виде массива numpy и затем сохраняется в your_filename.h5:
from scipy.io import wavfile
import tables
import numpy
#read data from wav
fs, data = wavfile.read('./folder_to_your_audio/audio.wav')
#output
folder="./output_folder/"
name="your_filename.h5"
#save_to acoular h5 format
acoularh5 = tables.open_file(folder+name, mode = "w", title = filename)
acoularh5.create_earray('/','time_data', atom=None, title="", filters=None, \ expectedrows=100000, chunkshape=[256,64], \ byteorder=None, createparents=False, obj=data)
acoularh5.set_node_attr('/time_data','sample_freq', fs)
acoularh5.close()
Адаптируя этот код, разумеется, нужно уменьшить число каналов до реального количества микрофонов в массиве. У UMA-16 их 16.
Затем переходим непосредственно к построению диаграммы направленности. Все приведённые ниже примеры выполняются в интерактивной среде Jupyter Notebook.
Следующий код выводит схему расположения микрофонов miniDSP UMA-16 и выполняет расчёт, необходимый для дальнейшей визуализации диаграммы направленности:
from os import path
import acoular
from pylab import figure, plot, axis, imshow, colorbar, show
micgeofile = path.join(path.split(acoular.__file__)[0], 'xml', 'minidsp_uma16.xml')
datafile="audio.h5"
mg = acoular.MicGeom( from_file=micgeofile )
ts = acoular.TimeSamples( name=datafile )
ps = acoular.PowerSpectra( time_data=ts, block_size=128, window='Hanning' )
rg = acoular.RectGrid( x_min=-0.2, x_max=0.2, y_min=-0.2, y_max=0.2, z=0.3, increment=0.01 )
st = acoular.SteeringVector( grid = rg, mics=mg )
bb = acoular.BeamformerBase( freq_data=ps, steer=st )
pm = bb.synthetic( 8000, 3 )
Lm = acoular.L_p( pm )
figure(2, figsize=(5,5))
plot(mg.mpos[0], mg.mpos[1],'o')
axis('equal')
show()
Результат:

Визуализация диаграммы направленности:
imshow( Lm.T, origin='lower', vmin=Lm.max()-3, \ extent=rg.extend(), interpolation='bicubic')
colorbar()

Чтобы совместить визуальные и звуковые данные, диаграмму можно наложить на видео следующим образом:
Напоследок можно добавить звук к полученному видео, то есть объединить файлы:
ffmpeg -i video.avi -i audio.wav -c:v copy -c:a aac output.mp4
По словам автора, акустическую камеру можно сделать и из более дешёвых компонентов. Например, в китайских магазинах встречается четырёхмикрофонный массив ReSpeaker 4 для Raspberry Pi стоимостью $24,90, а также его аналоги. Кроме того, вместо стандартного алгоритма Acoular можно применить другие методы обработки сигнала, например GCC-PHAT (обобщённая взаимная корреляция).

Видеть звуки и запахи
В заключение стоит напомнить, что человеческое зрение — далеко не безупречный инструмент. У глаза около 120 млн «пикселей», но пропускная способность зрительного нерва примерно в сто раз ниже: его толщина физически ограничена (около 1,2 млн волокон). Значительная часть информации теряется при передаче. Поэтому зрительной коре приходится достраивать картинку: добавлять недостающие объекты и восстанавливать предполагаемый оригинал по сжатому и неполному сигналу. Отсюда берутся разнообразные искажения и дефекты восприятия. [ad_1]
Дерматолог сравнил GPT-6 Astra и Claude на 200 кожных образованиях: свёрточная сеть 2015 года оказалась точнее
Шансы на внеземную жизнь: что говорит астрономия о её возникновении
Неандерталец по одной кости: открытый калькулятор роста и веса на основе научных формул
Лоб под объективом, газировка в награду: как люди готовят учебник для роботов
Какую роль глупость играет в науке
Битва стандартов: как разделить эфир цветного телевидения. Часть 3
Эффект Ноосферного Зеркала: почему «галлюцинации» ИИ — не сбой, а этап настройки интерфейса
Do.31: фантастика не ко времени