designAuditoryFilterBank

Проектирование банка слуховых фильтров

Описание

пример

filterBank = designAuditoryFilterBank(fs) возвращает банк слуховых фильтров частотного диапазона, filterBank.

пример

filterBank = designAuditoryFilterBank(fs,Name,Value) задает опции с использованием одного или нескольких Name,Value аргументы в виде пар.

[filterBank,Fc,BW] = designAuditoryFilterBank(___) возвращает центральную частоту и пропускную способность каждого фильтра в группе фильтров. Можно использовать этот синтаксис выхода с любым из предыдущих синтаксисов входа.

Примеры

свернуть все

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

fs = 44.1e3;
fb = designAuditoryFilterBank(fs);

Набор фильтров по умолчанию состоит из 32 треугольных полосно-пропускающих фильтров, разнесенных равномерно по шкале меля между 0 и fs/ 2 Гц.

numBands = size(fb,1)
numBands = 32

designAuditoryFilterBank предназначен для фильтрации в частотном диапазоне. По умолчанию designAuditoryFilterBank принимает ДПФ с 1024 точками и возвращает двусторонний банк фильтров частотного диапазона с 513 точками.

numPoints = size(fb,2)
numPoints = 513

Считывайте аудио и преобразуйте его в односторонний спектр степени.

[audioIn,fs] = audioread("Laughter-16-8-mono-4secs.wav");

win = hamming(1024,"periodic");
noverlap = 512;
fftLength = 1024;
[S,F,t] = stft(audioIn,fs, ...
               "Window",win, ...
               "OverlapLength",noverlap, ...
               "FFTLength",fftLength, ...
               "FrequencyRange","onesided");
PowerSpectrum = S.*conj(S);

Создайте mel-основанную группу слуховых фильтров. Постройте график банка фильтров.

numBands = 32;
область значений = [0,4000];
нормализация = "bandwidth";

[fb, cf] = designAuditoryFilterBank ( fs,...
                                   "FFTLength", fftLength ,...
                                   "NumBands", numBands ,...
                                   "FrequencyRange", область значений ,...
                                   "Normalization", нормализация);

график (F, fb. ')
сетка on
заголовок ("Mel Filter Bank")
xlabel ("Frequency (Hz)")

Figure contains an axes. The axes with title Mel Filter Bank contains 32 objects of type line.

Чтобы применить фильтрацию частотного диапазона, выполните матричное умножение набора фильтров и спектрограммы степени.

X = fb*PowerSpectrum;

Визуализация мощности в относительных диапазонах в дБ.

XdB = 10*log10(X);

surf(t,cf,XdB,"EdgeColor","none");
xlabel("Time (s)")
ylabel("Frequency (Hz)")
zlabel("Power (dB)")
view([45,60])
title('Mel-Based Spectrogram')
axis tight

Figure contains an axes. The axes with title Mel-Based Spectrogram contains an object of type surface.

Считывайте аудио и преобразуйте его в односторонний спектр степени.

[audioIn,fs] = audioread("RockDrums-44p1-stereo-11secs.mp3");

win = hann(round(0.03*fs),"periodic");
noverlap = round(0.02*fs);
fftLength = 2048;

[S,F,t] = stft(audioIn,fs, ...
               "Window",win, ...
               "OverlapLength",noverlap, ...
               "FFTLength",fftLength, ...
               "FrequencyRange","onesided");
PowerSpectrum = S.*conj(S);

Создайте банк слуховых фильтров на основе коры. Постройте график банка фильтров.

numBands = 32;
область значений = [0,22050];
нормализация = "area";
designDomain = "linear";

[fb, cf] = designAuditoryFilterBank ( fs,...
    "FrequencyScale","bark", ...
    "FFTLength", fftLength ,...
    "NumBands", numBands ,...
    "FrequencyRange", область значений ,...
    "Normalization", нормализация ,...
    "FilterBankDesignDomain", designDomain);

график (F, fb. ');
сетка on
заголовок ("Bark Filter Bank")
xlabel ("Frequency (Hz)")

Figure contains an axes. The axes with title Bark Filter Bank contains 32 objects of type line.

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

X = pagemtimes(fb,PowerSpectrum);

Визуализация мощности в относительных диапазонах в дБ.

XLdB = 10*log10(X(:,:,1));
XRdB = 10*log10(X(:,:,2));

surf(t,cf,XLdB,"EdgeColor","none");
xlabel("Time (s)")
ylabel("Frequency (Hz)")
view([0,90])
title("Bark-Based Spectrogram (Left Channel)")
axis tight

Figure contains an axes. The axes with title Bark-Based Spectrogram (Left Channel) contains an object of type surface.

surf(t,cf,XRdB,"EdgeColor","none");
xlabel("Time (s)")
ylabel("Frequency (Hz)")
view([0,90])
title("Bark-Based Spectrogram (Right Channel)")
axis tight

Figure contains an axes. The axes with title Bark-Based Spectrogram (Right Channel) contains an object of type surface.

Считывайте аудио и преобразуйте его в односторонний спектр степени.

[audioIn,fs] = audioread("NoisySpeech-16-22p5-mono-5secs.wav");

win = hann(round(0.04*fs),"periodic");
noverlap = round(0.02*fs);
fftLength = 1024;

[S,F,t] = stft(audioIn,fs, ...
               "Window",win, ...
               "OverlapLength",noverlap, ...
               "FFTLength",fftLength, ...
               "FrequencyRange","onesided");
PowerSpectrum = S.*conj(S);

Создайте банк слуховых фильтров на базе ERB. Постройте график банка фильтров.

numBands = 32;
область значений = [0,11025];
нормализация = "bandwidth";

[fb, cf] = designAuditoryFilterBank ( fs,...
    "FrequencyScale","erb", ...
    "FFTLength", fftLength ,...
    "NumBands", numBands ,...
    "FrequencyRange", область значений ,...
    "Normalization", нормализация);

график (F, fb. ');
сетка on
заголовок ("ERB Filter Bank")
xlabel ("Frequency (Hz)")

Figure contains an axes. The axes with title ERB Filter Bank contains 32 objects of type line.

Чтобы применить фильтрацию частотного диапазона, выполните матричное умножение набора фильтров и спектрограммы степени.

X = fb*PowerSpectrum;

Визуализация мощности в относительных диапазонах в дБ.

XdB = 10*log10(X);
surf(t,cf,XdB,"EdgeColor","none");
xlabel("Time (s)")
ylabel("Frequency (Hz)")
view([0,90])
title("ERB-Based Spectrogram")
axis tight

Figure contains an axes. The axes with title ERB-Based Spectrogram contains an object of type surface.

Входные параметры

свернуть все

Частота дискретизации создания фильтра в Гц, заданная как положительная скалярная величина.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: "FrequencyScale","mel"

Шкала частоты, используемая для разработки группы слуховых фильтров, заданная как разделенная разделенными запятой парами, состоящая из 'FrequencyScale' и "mel", "bark", или "erb".

Типы данных: char | string

Число точек, используемых для вычисления ДПФ, заданное как разделенная разделенными запятой парами, состоящая из 'FFTLength' и положительное целое число.

Типы данных: single | double

Количество полосно-пропускающих фильтров, заданное как разделенная разделенными запятой парами, состоящая из 'NumBands' и положительное целое число. Количество полосно-пропускающих фильтров по умолчанию зависит от FrequencyScale:

  • Если FrequencyScale установлено в "bark" или "mel", затем NumBands по умолчанию является 32.

  • Если FrequencyScale установлено в "erb", затем NumBands по умолчанию - ceil (hz2erb(FrequencyRange(2))-hz2erb(FrequencyRange(1))).

Типы данных: single | double

Частотная область значений, в котором можно проектировать группу слуховых фильтров в Гц, задаётся как разделенная разделенными запятой парами, состоящая из 'FrequencyRange' и двухэлементный вектор-строка монотонно увеличивающихся значений в область значений [0, fs/2].

Типы данных: single | double

Метод нормализации, используемый на весах группы фильтров:

  • "bandwidth" - Веса каждого полосного фильтра нормированы соответствующей полосой пропускания фильтра.

  • "area" - Веса каждого полосно-пропускающего фильтра нормированы соответствующей площадью полосно-пропускающего фильтра.

  • "none" - Веса фильтров не нормированы.

Типы данных: char | string

Создайте односторонний или двусторонний банк фильтров, заданный как разделенная разделенными запятой парами, состоящая из 'OneSided' и любой из них true или false.

Типы данных: logical

Область, в котором разработан банк фильтров, задаётся как разделенная разделенными запятой парами, состоящая из 'FilterBankDesignDomain' и любой из них "linear" или "warped". Установите область проекта банка фильтров равной "linear" для разработки полосно-пропускающих фильтров в линейной области (Гц). Установите область проекта банка фильтров равной "warped" для разработки полосно-пропускающих фильтров в области деформации (mel или Bark).

Зависимости

Этот параметр применяется только в том случае FrequencyScale установлено в "mel" (по умолчанию) или "bark".

Типы данных: char | string

Выходные аргументы

свернуть все

Банк слуховых фильтров, возвращенный как M -by- N матрица, где M - количество полос (NumBands), и N количество точек частоты одностороннего спектра (ceil (FFTLength/2)).

Типы данных: double

Центральные частоты полосно-пропускающих фильтров в Гц, возвращенные как вектор-строка с NumBands элементы.

Типы данных: double

Шумовая полоса полосно-пропускающих фильтров в Гц, возвращенная как вектор-строка с NumBands элементы.

Типы данных: double

Алгоритмы

Mel filter bank спроектирован как полуперекрытые треугольники, равномерно расположенные по шкале mel. [1]

Блок фильтров коры выполнен в виде полуперекрытых треугольников с равными интервалами по шкале коры. [2]

Группа фильтров ERB спроектирована как гамматоновые фильтры [4], центральные частоты которых равномерно разнесены по шкале ERB. [3]

Вопросы совместимости

расширить все

Поведение изменено в R2020b

Ссылки

[1] О'Шагнесси, Дуглас. Речевая коммуникация: человек и машина. Reading, MA: Addison-Wesley Publishing Company, 1987.

[2] Траунмюллер, Хартмут. Аналитические выражения для тонотопической сенсорной шкалы. Журнал Акустического общества Америки. Том 88, выпуск 1, 1990, стр. 97-100.

[3] Glasberg, Brian R., and Brian C. J. Moore. «Вывод фигур слухового фильтра из данных Notched-Noise». Исследование слуха. Том 47, Выпуски 1-2, 1990, стр. 103-138.

[4] Слейни, Малкольм. «Эффективная реализация банка аудиторных фильтров Паттерсона-Холдворта». Apple Computer Technical Report 35, 1993.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2019b