getFilters

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

Синтаксис

[filterbank,freq] = getFilters(cepFeatures)

Описание

пример

[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

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