designAuditoryFilterBank

Спроектируйте слуховой набор фильтров

Описание

пример

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

пример

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

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

Примеры

свернуть все

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

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

Набор фильтров по умолчанию состоит из 32 треугольных полосовых фильтров, расположенных с интервалами равномерно по шкале mel между 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 (фс, ...
                                   "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 (фс, ...
    "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 (фс, ...
    "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 значения по умолчанию, чтобы перекрыть (hz2erb(FrequencyRange(2))-hz2erb(FrequencyRange(1))).

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

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

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

Метод нормализации использовал на весах набора фильтров:

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

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

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

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

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

Типы данных: логический

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

Зависимости

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

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

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

свернуть все

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

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

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

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

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

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

Алгоритмы

mel набор фильтров спроектирован как полуперекрытые треугольники, равномерно распределенные по шкале mel. [1]

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

Набор фильтров ERB спроектирован как gammatone фильтры [4], чьи центральные частоты равномерно распределены по шкале ERB. [3]

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

развернуть все

Поведение изменяется в R2020b

Ссылки

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

[2] Traunmüller, Hartmut. "Аналитические Выражения для Тонотемы Сенсорная Шкала". Журнал Акустического Общества Америки. Издание 88, Выпуск 1, 1990, стр 97–100.

[3] Glasberg, Брайан Р. и Брайан К. Дж. Мур. "Деривация Слуховых Форм Фильтра из С пазами шумовых Данных". Слушание Исследования. Издание 47, Выпуски 1-2, 1990, стр 103–138.

[4] Slaney, Малкольм. "Эффективное внедрение Паттерсона-Холдуорта слуховой набор фильтров". Технический отчет 35, 1993 Apple Computer.

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

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

Смотрите также

| | | | | | |

Введенный в R2019b