Как устроена акустическая камера, которая делает окружающие звуки видимыми

Прокомментировать Просмотры: 3

Определение источника звука с помощью самодельной акустической камеры

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

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

Многоликая акустическая камера

Само словосочетание «акустическая камера» в разные эпохи означало совершенно разные вещи.

  1. Структура внутреннего уха. Впервые термин возник в 1898 году: немецкий физиолог Юлиус Эвальд изучал внутреннее ухо и обнаружил в нём участок, напоминающий пластины Хладни — фигуры, которые резонируют под действием акустических колебаний. Эту область Эвальд и назвал «акустической камерой».

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

    Снимок, полученный подводной акустической камерой австралийской компании HW Technologies
    Снимок, полученный подводной акустической камерой австралийской компании HW Technologies
  3. Медицинские сканеры. В этом случае термин относится к любому массиву преобразователей, предназначенному для локализации источников звука, нередко в паре с оптической камерой. Такие системы применяются в диагностике.

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

    Камера с увеличенной апертурой способна строить акустические изображения и голограммы в реальном времени.

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

Чертёж из патента US3895340A
Чертёж из патента US3895340A

Сферы применения

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

Так, в научной работе по аэроакустике показано, что при посадке самолёта основной источник шума — шасси:

Карты распределения шума, полученные с помощью фазированных антенных решёток на разных частотах
Карты распределения шума, полученные с помощью фазированных антенных решёток на разных частотах

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

Акустически прозрачные сферические массивы на 48 и 120 каналов со встроенной видеокамерой
Акустически прозрачные сферические массивы на 48 и 120 каналов со встроенной видеокамерой

На видео показано, как отслеживается БПЛА с помощью популярного питоновского пакета Acoular (примеры кода для обработки звука в этом пакете приведены ниже):

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

Такая камера выручает при диагностике неисправностей в машинах и механизмах, указывая на источник звука. А если проколота велосипедная шина, место прокола видно сразу.

Экран Acoustic Visualizer
Экран Acoustic Visualizer

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

Портативная акустическая камера FOTRIC TD2
Портативная акустическая камера FOTRIC TD2

Камеры своими руками

Устройство представляет собой массив микрофонов, одновременно записывающих звук. Зная точное время прихода сигнала на каждый микрофон и его громкость, можно вычислить координаты источника. Эту работу выполняет DSP.

Американский энтузиаст Майкл Нават (Michael Navat) в своём DIY-проекте постарался сделать акустическую камеру как можно проще. Список необходимого более чем скромен:

По сути, USB-массив UMA-16 v2 — это уже почти готовая акустическая камера. Остаётся лишь подобрать подходящее программное обеспечение.

USB-массив UMA-16 v2, фото из магазина. В центре — отверстие для опционального модуля камеры
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 (обобщённая взаимная корреляция).

ReSpeaker 4
ReSpeaker 4

Видеть звуки и запахи

В заключение стоит напомнить, что человеческое зрение — далеко не безупречный инструмент. У глаза около 120 млн «пикселей», но пропускная способность зрительного нерва примерно в сто раз ниже: его толщина физически ограничена (около 1,2 млн волокон). Значительная часть информации теряется при передаче. Поэтому зрительной коре приходится достраивать картинку: добавлять недостающие объекты и восстанавливать предполагаемый оригинал по сжатому и неполному сигналу. Отсюда берутся разнообразные искажения и дефекты восприятия.Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов