getFilters

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

Описание

пример

[filterbank,freq] = getFilters(cepFeatures) возвращает набор фильтров и соответствующие интервалы частоты в Гц. Каждый столбец набора фильтров соответствует одному полосовому фильтру. filterbank не определен, пока объект не заблокирован.

Примеры

свернуть все

Слуховой набор фильтров содержит набор полосовых фильтров, которые используются, чтобы извлечь функции cepstral из звукового сигнала. Функции cepstral включают cepstral коэффициенты (coeffs), различие между током и предыдущими cepstral коэффициентами (delta), и различие между током и предыдущими значениями дельты, deltaDelta. getFilters функция возвращает слуховой набор фильтров и соответствующие интервалы частоты.

Считайте звуковой сигнал из 'SpeechDFT-16-8-mono-5secs.wav' файл. Извлеките сегмент на 40 мс из аудиоданных. Создайте cepstralFeatureExtractor Система object™, который принимает входной аудиосигнал временного интервала, произведенный на уровне 8 кГц.

[audioFile, fs] = audioread('SpeechDFT-16-8-mono-5secs.wav');
duration = round(0.04*fs); % 40 ms
audioSegment = audioFile(5500:5500+duration-1);
cepFeatures = cepstralFeatureExtractor('SampleRate',fs)
cepFeatures = 
  cepstralFeatureExtractor with properties:

   Properties
     FilterBank: 'Mel'
    InputDomain: 'Time'
      NumCoeffs: 13
      FFTLength: []
      LogEnergy: 'Append'
     SampleRate: 8000

  Show all properties

Передайте аудио сегмент на 40 мс как вход к cepstralFeatureExtractor алгоритм. Алгоритм вычисляет mel коэффициенты частоты, логарифмическую энергию, дельту и значения дельты дельты аудио сегмента.

[coeffs,delta,deltaDelta] = cepFeatures(audioSegment); 

Используя getFilters функционируйте, получите набор фильтров, который вычисляет функции cepstral. Каждый столбец в наборе фильтров содержит полосовой фильтр. Интервалы частоты, соответствующие полосовым фильтрам, отображены в Bins. Обратите внимание на то, что getFilters функция требует cepstralFeatureExtractor объект, который будет заблокирован.

[filterbank, freq] = getFilters(cepFeatures);

Постройте набор фильтров, и вы видите, что столбцы 33 - 40 набора фильтров имеют нулевые элементы. Эти столбцы соответствуют фильтрам, ребра полосы которых (один или оба) выше частоты Найквиста, (fs/2). В этом примере частота Найквиста составляет 4 кГц.

plot(freq,filterbank)

cepFeatures.BandEdges(33:40)
ans = 1×8
103 ×

    3.6915    3.9543    4.2357    4.5371    4.8601    5.2059    5.5765    5.9733

nnz(filterbank(:,33:40))
ans = 0

Выпустите экстрактор функции cepstral, возражают и передают различный звуковой сигнал, произведенный на уровне 22,5 кГц.

release(cepFeatures)
[audioFileTwo, fsTwo] = audioread('NoisySpeech-16-22p5-mono-5secs.wav');
duration = round(0.04*fsTwo); % 40 ms
audioSegmentTwo = audioFileTwo(5500:5500+duration-1);
cepFeatures = cepstralFeatureExtractor('SampleRate',fsTwo)
cepFeatures = 
  cepstralFeatureExtractor with properties:

   Properties
     FilterBank: 'Mel'
    InputDomain: 'Time'
      NumCoeffs: 13
      FFTLength: []
      LogEnergy: 'Append'
     SampleRate: 22500

  Show all properties

Частота Найквиста является 22,500/2, который составляет 11 250 Гц. Извлеките cepstral функции второго аудио сегмента. Постройте набор фильтров, который используется для расчета функции cepstral. Увеличьте масштаб оси для сравнения.

[coeffsTwo,deltaTwo,deltaDeltaTwo] = cepFeatures(audioSegmentTwo);
[filterbankTwo, freqTwo] = getFilters(cepFeatures);
plot(freqTwo,filterbankTwo)
axis([0 8000 0 0.015])

Все ребра полосы ниже частоты Найквиста, и полосовые фильтры в наборе фильтров имеют ненулевые коэффициенты.

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

свернуть все

Введите экстрактор функции cepstral, заданный как cepstralFeatureExtractor Системный объект. Использовать getFilters функция, объект должен быть заблокирован. Набор фильтров задан только, когда объект заблокирован. Объект заблокирован, когда вы вызываете объектный алгоритм.

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

свернуть все

Набор фильтров, используемый, чтобы вычислить функции cepstral, возвратился как матрица. Каждый столбец матрицы соответствует одному полосовому фильтру в наборе фильтров. Количество столбцов в матрице дано m – 2, где m является длиной вектора, вы задаете в BandEdges свойство Системного объекта. Количество строк в матрице соответствует длине БПФ. По умолчанию длина БПФ равняется количеству строк во входном сигнале. Можно также задать длину БПФ через FFTLength свойство Системного объекта.

Если частота Найквиста, fs/2, меньше частот ребра полосы, вы задаете в BandEdges свойство, коэффициенты полосовых фильтров, которые выходят за пределы области значений Найквиста, обнуляются. fs является частотой дискретизации, которую вы задаете в SampleRate свойство Системного объекта.

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

Интервалы частоты, соответствующие набору фильтров в Гц, возвращенном как вектор-строка. Длина вектора равняется длине БПФ.

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

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

Введенный в R2018a