Введение в дифференциальный Beamforming

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

Дополнение по сравнению с дифференциальными массивами микрофона

Массивы микрофона были развернуты во многих аудиоприложениях. В зависимости от размещения массивы микрофона могут быть разделены на две основных категории: аддитивные массивы микрофона и дифференциальные массивы микрофона. Аддитивные массивы микрофона похожи на массивы, используемые в других приложениях, как радиосвязи. Для аддитивного массива микрофона цель состоит в том, чтобы когерентно объединить сигналы от каждого канала, таким образом, мы можем сформировать узкий луч к источнику и улучшить сигнал до шумового отношения. Несколько таких beamforming алгоритмов покрыты Акустическим Beamforming Используя пример Микрофона Массивов.

Несмотря на то, что аддитивные массивы микрофона очень полезны, они страдают от нескольких ограничений. Для цели рисунка давайте зададим массив с 2 элементами с интервалом 5 см и давайте посмотрим на его шаблон между 1-4 кГц. Обратите внимание на то, что несмотря на то, что промежутки полосы звуковой частоты от 20 Гц до 20 кГц, полосы на 1-4 кГц особенно важны для речевой разборчивости. Интервал 5 см в массиве является приблизительно половиной длины волны на уровне 4 кГц.

c = 343;
f = (1:4)*1e3;
fmax = f(end);
lambda = c/fmax;

d = 0.05;
N = 2;
micarraya = phased.ULA(N,d);

pattern(micarraya,f,-180:180,0,'PropagationSpeed',c)

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

Da = directivity(micarraya,f,[0;0],'PropagationSpeed',c);
clf;
plot(f/1e3,Da,'-o');
xlabel('Frequency (kHz)');
ylabel('Directivity (dBi)');
title('Additive Microphone Array Directivity');

Figure contains an axes object. The axes object with title Additive Microphone Array Directivity contains an object of type line.

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

Много конфигураций массивов были исследованы, чтобы обойти эти ограничения. Вложенный массив является одним таким примером. Во вложенном массиве небольшие массивы встраиваются в большой массив. Можно затем активировать различные элементы через различные диапазоны частот, чтобы произвести подобные шаблоны через полосу. Рассмотрите следующий массив с 4 элементами

Nn = 4;
nestedpos = [zeros(1,Nn);[0 1 2 4]*d;zeros(1,Nn)];
micarrayn = phased.ConformalArray('ElementPosition',nestedpos);
viewArray(micarrayn);
set(gcf,'Color','w');

Если вы используете первое и вторые элементы для полос приблизительно 4 кГц; первое и третьи элементы для полос между 2 и 3 кГц; и первое и четвертые элементы для полос приблизительно 1 кГц, получившиеся диаграммы направленности похожи

wn = [1 1 1 1;0 0 0 1;0 1 1 0;1 0 0 0];
pattern(micarrayn,f,-180:180,0,'PropagationSpeed',c,'Weights',wn);

В графике шаблоны от 1, 2, и 4 кГц чрезвычайно идентичны друг другу, но шаблон на 3 кГц все еще отличается. Кроме того, число элементов удвоены в этом проекте. В действительности, чтобы получить вложенный массив, который может иметь шаблон инварианта частоты через многочисленную полосу, вам будет нужно большое количество элементов микрофона, таким образом, этот подход не будет очень практичен.

Технология дифференциального массива микрофона (DMA) является другим возможным решением. Поскольку DMAs может сформировать шаблоны инварианта частоты, они становятся ценными инструментами для аудиоприложений.

Первый порядок линейный DMA

В отличие от аддитивного массива микрофона, DMA более чувствителен к пространственной производной акустического поля вокруг массива, таким образом имя "дифференциал". Поскольку невозможно вычислить истинную производную между элементами микрофона, различие между измерениями в каждом элементе микрофона используется, чтобы аппроксимировать производную. Поскольку пара тесно расположенных элементов может измерить производную более точно, интервал элемента в DMA в целом намного меньше, чем длина волны. Следующий код создает линейную матрицу с 2 элементами с интервалом 1/10 длины волны.

micarrayd = phased.ULA(N,lambda/10);
viewArray(micarrayd)
set(gcf,'Color','w');

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

Поскольку дифференциал beamforming измеряет полевые производные, его точки основного лепестка к endfire направлению. endfire направление приезжает ось линейной матрицы. Это понятно, потому что для аддитивного массива, основной лепесток в развороте, который является перпендикуляром направления к оси массивов, и производная в том направлении 0. Поэтому проект DMA часто о пустом размещении. Для двухэлементного линейного DMA, когда основной лепесток в endfire, можно только управлять одним пустым местоположением. Это упоминается как DMA первого порядка. Однако даже при том, что существует только одно пустое местоположение, варьируясь, местоположение может привести к нескольким интересным шаблонам.

Во-первых, поместите пустой указатель в разворот массива. Это означает, что мы должны вычислить вектор веса, когда объединено с держащимися векторами для endfire и поперечных направлений, чтобы сгенерировать модульный ответ и пустой ответ, соответственно. Такой вектор веса может быть выведен с помощью подхода наименьшего квадрата.

stvd = phased.SteeringVector('SensorArray',micarrayd,'PropagationSpeed',c);
ang_d = 90;  % endfire
ang_n = 0;   % broadside
C = stvd(f,[ang_d ang_n]);
r = [1;0];
w = complex(zeros(N,numel(f)));
for m = 1:numel(f)
    w(:,m) = C(:,:,m)'\r;
end

clf;
pattern(micarrayd,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

Получившийся шаблон имеет форму диполя. Обратите внимание на то, что шаблоны от всех частот являются перекрытием, таким образом, они являются инвариантными через целый диапазон частот. Направленность является теперь константой по частоте как показано в следующем рисунке.

Dd = directivity(micarrayd,f,ang_d,'PropagationSpeed',c,'Weights',w);
clf;
plot(f/1e3,Dd,'-o');
ylim([0 5]);
xlabel('Frequency (kHz)');
ylabel('Directivity (dBi)');
title('2-element Linear DMA Dipole Directivity');

Figure contains an axes object. The axes object with title 2-element Linear DMA Dipole Directivity contains an object of type line.

Другая важная эффективность charactersitic сопоставленный с массивом микрофона является своим сигналом к шумовому отношению (ОСШ) усиление по белому шуму.

agd = phased.ArrayGain('SensorArray',micarrayd,'PropagationSpeed',c,'WeightsInputPort',true);
wngd = agd(f,ang_d,w);
clf;
plot(f/1e3,wngd,'-*');
xlabel('Frequency (kHz)');
ylabel('White Noise Gain (dB)');
title('2-element Linear DMA Dipole SNR Gain');

Figure contains an axes object. The axes object with title 2-element Linear DMA Dipole SNR Gain contains an object of type line.

Как видно из графика усиление ОСШ этого DMA ниже 0 дБ через целый частотный диапазон, это означает, что шум значительно усилен, особенно в низкочастотных областях. По сравнению с аддитивными массивами это - вероятно, самая большая проблема, сопоставленная с DMAs. Поэтому инженеры, возможно, должны сделать компромисс между более фокусируемым лучом, который помогает контакту с реверберацией в переполненной среде и более высокому полученному ОСШ сигнала.

Что, если пустой указатель расположен в другом конце endfire направления?

ang_n = -90;   % endfire
C = stvd(f,[ang_d ang_n]);
r = [1;0];
for m = 1:numel(f)
    w(:,m) = C(:,:,m)'\r;
end

pattern(micarrayd,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

Теперь получившийся шаблон является кардиоидой. Можно также поместить пустой указатель в-45 градусов, чтобы получить суперкардиоидную форму.

ang_n = -45;   % endfire
C = stvd(f,[ang_d ang_n]);
r = [1;0];
for m = 1:numel(f)
    w(:,m) = C(:,:,m)'\r;
end

pattern(micarrayd,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

wngd = agd(f,ang_d,w);
clf;
plot(f/1e3,wngd,'-*');
xlabel('Frequency (kHz)');
ylabel('White Noise Gain (dB)');
title('2-element Linear DMA Supercardioid SNR Gain');

Figure contains an axes object. The axes object with title 2-element Linear DMA Supercardioid SNR Gain contains an object of type line.

Обратите внимание на то, что суперкардиоидная форма обеспечивает лучшее усиление ОСШ, чем дипольная форма.

Высший порядок линейный DMA

Вы, вероятно, заметили, что для первого порядка линейный DMAs, можно присвоить 1 пустое направление. В общем случае линейная матрица N-элемента может сформировать (N-1)-th DMA порядка, с возможностью выделения N-1 аннулирует. Например, для третьего DMA порядка с четырьмя микрофонами, можно поместить 3, аннулирует для суперкардиоидной диаграммы направленности.

N = 4;
micarrayd3 = phased.ULA(N,lambda/10);
stvd3 = phased.SteeringVector('SensorArray',micarrayd3,'PropagationSpeed',c);
ang_d = 90;            % endfire
ang_n = [0 -30 -90];   % nulls
C = stvd3(f,[ang_d ang_n]);
r = [1;zeros(numel(ang_n),1)];
w = complex(zeros(N,numel(f)));
for m = 1:numel(f)
    w(:,m) = C(:,:,m)'\r;
end

pattern(micarrayd3,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

Усиление ОСШ более высокого Одера DMAs все еще переносит тот же тренд как DMA первого порядка.

agd = phased.ArrayGain('SensorArray',micarrayd3,'PropagationSpeed',c,'WeightsInputPort',true);
wngd = agd(f,ang_d,w);
clf;
plot(f/1e3,wngd,'-*');
xlabel('Frequency (kHz)');
ylabel('White Noise Gain (dB)');
title('4-element Linear DMA Supercardioid SNR Gain');

Figure contains an axes object. The axes object with title 4-element Linear DMA Supercardioid SNR Gain contains an object of type line.

Возможно присвоить, аннулирует с кратностью также. Вот пример, где вы устанавливаете пустой указатель в-90 градусах к кратности 2.

ang_d = 90;            % endfire
ang_n = [0 -90 -90];   % nulls
C = stvd3(f,[ang_d ang_n]);
r = [1;zeros(numel(ang_n),1)];
w = complex(zeros(N,numel(f)));
for m = 1:numel(f)
    Cmn = C(:,:,m);
    Cmn(:,3) = diag(0:N-1)*Cmn(:,3);
    w(:,m) = Cmn'\r;
end

pattern(micarrayd3,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

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

  1. Держащаяся степень жертв свобод от массива. Поскольку L-th заказывает линейный DMA, можно самое большее указать, что L-1 аннулирует, остающийся пустой указатель выбран алгоритмом на основе заданных пустых местоположений. Поэтому первый порядок линейный DMA не управляем.

  2. В отличие от аддитивного массива, форма луча линейного DMA не сохраняется, когда управляется.

Следующий отрывок показывает, как регулировать линейный DMA. В этом случае основной луч управляется к развороту. Кроме того, пустой указатель помещается в 70 градусов от разворота. Остающийся пустой указатель выведен держащимся алгоритмом весов.

ang_d = 0;    % broadside
ang_n = 70;   % nulls
xnlast = mod(-1/sum(1./sind(ang_n))+1,2)-1;
ang_n(end+1) = asind(xnlast);

Остальная часть процесса похожа на проект DMA по умолчанию.

C = stvd3(f,[ang_d ang_n]);
r = [1;zeros(numel(ang_n),1)];
w = complex(zeros(N,numel(f)));
for m = 1:numel(f)
    Cmn = C(:,:,m);
    w(:,m) = Cmn'\r;
end

pattern(micarrayd3,f,-180:180,0,'PropagationSpeed',c,'Weights',w);

Обратите внимание на то, что основной лепесток находится теперь к поперечному направлению. Из-за симметрии линейной матрицы, получившийся шаблон также имеет эквивалентный backlobe. В некоторых проектах это может быть смягчено путем принятия элемента микрофона с маленьким backlobes.

Сводные данные

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

Ссылки

[1] Джингдонг Чен, Джейкоб Бенести и Чао Пань, На разработке и реализации Линейных Дифференциальных Массивов Микрофона, Журнале Акустического Общества Америки, Издания 136, № 6, 2014

[2] Джейкоб Бенести, Джингдонг Чен, и Чао Пань, основные принципы дифференциального Beamforming, Спрингера, 2016.

[3] Джилу Чжин и др., Регулируя Исследование Линейных Дифференциальных Массивов Микрофона, Транзакций IEEE/ACM об Аудио Речи, и Обработки Языка, Издания 29, 2021

Для просмотра документации необходимо авторизоваться на сайте