gtcc

Извлеките gammatone cepstral коэффициенты, логарифмическая энергия, дельта и дельта дельты

Описание

пример

coeffs = gtcc(audioIn,fs) возвращает gammatone cepstral коэффициенты (GTCCs) для аудиовхода, произведенного на частоте fs Гц.

пример

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

пример

[coeffs,delta,deltaDelta,loc] = gtcc(___) возвращает дельту, дельту дельты и местоположение в выборках, соответствующих каждому окну данных. Этот выходной синтаксис может использоваться с любым из предыдущих входных синтаксисов.

Примеры

свернуть все

Получите gammatone cepstral коэффициенты для звукового файла с помощью настроек по умолчанию. Постройте график результатов.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

[coeffs,~,~,loc] = gtcc(audioIn,fs);

t = loc./fs;

plot(t,coeffs)
xlabel('Time (s)')
title('Gammatone Cepstral Coefficients')
legend('logE','0','1','2','3','4','5','6','7','8','9','10','11','12', ...
    'Location','northeastoutside')

Читайте в звуковом файле.

[audioIn,fs] = audioread('Turbine-16-44p1-mono-22secs.wav');

Вычислите 20 GTCC использующие фильтры, равномерно распределенные по шкале ERB между hz2erb(62.5) и hz2erb(12000). Вычислите коэффициенты с помощью 50 MS Windows с перекрытием на 25 мс. Замените 0th коэффициент на логарифмическую энергию. Используйте фильтрацию временного интервала.

[coeffs,~,~,loc] = gtcc(audioIn,fs, ...
                       'NumCoeffs',20, ...
                       'FrequencyRange',[62.5,12000], ...
                       'WindowLength',round(0.05*fs), ...
                       'OverlapLength',round(0.025*fs), ...
                       'LogEnergy','Replace', ...
                       'FilterDomain','Time');

Постройте график результатов.

t = loc./fs;

plot(t,coeffs)
xlabel('Time (s)')
title('Gammatone Cepstral Coefficients')
legend('logE','1','2','3','4','5','6','7','8','9','10','11','12','13', ...
    '14','15','16','17','18','19','Location','northeastoutside');

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

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

win = hann(1024,"periodic");
S = stft(audioIn,"Window",win,"OverlapLength",512,"Centered",false);

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

coeffs = gtcc(S,fs,"LogEnergy","Ignore");

Во многих приложениях наблюдения GTCC преобразованы в итоговую статистику для использования в задачах классификации. Постройте функции плотности вероятности каждого из gammatone cepstral коэффициенты, чтобы наблюдать их распределения.

nbins = 60;
for i = 1:size(coeffs,2)
    figure
    histogram(coeffs(:,i),nbins,'Normalization','pdf')
    title(sprintf("Coefficient %d",i-1))
end

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

свернуть все

Входной сигнал, заданный как вектор, матрица или трехмерный массив.

Если 'FilterDomain'установлен в 'Frequency' (значение по умолчанию), затем audioIn может быть действительным или комплексным.

  • Если audioIn действительно, это интерпретировано как сигнал временной области и должно быть вектор-столбцом или матрицей. Столбцы матрицы обработаны как независимые звуковые каналы.

  • Если audioIn является комплексным, это интерпретировано как сигнал частотного диапазона. В этом случае, audioIn должен быть L-by-M-by-N массив, где L является количеством точек ДПФ, M является количеством отдельных спектров, и N является количеством отдельных каналов.

Если 'FilterDomain'установлен в 'Time', затем audioIn должен быть действительный вектор-столбец или матрица. Столбцы матрицы обработаны как независимые звуковые каналы.

Типы данных: single | double
Поддержка комплексного числа: Да

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

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

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

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

Пример: coeffs = gtcc(audioIn,fs,'LogEnergy','Replace') возвращает gammatone cepstral коэффициенты для входного аудиосигнала, произведенного в fs Гц. Для каждого аналитического окна, первого коэффициента в coeffs вектор заменяется логарифмической энергией входного сигнала.

Количество выборок в аналитическом окне раньше вычисляло коэффициенты, заданные как разделенная запятой пара, состоящая из 'WindowLength' и целое число в области значений [2, размер (audioIn,1)]. Если незаданный, WindowLength значения по умолчанию к раунду (0.03*fs).

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

Количество выборок перекрывается между смежными окнами, заданными как разделенная запятой пара, состоящая из 'OverlapLength' и целое число в области значений [0, WindowLength). Если незаданный, OverlapLength значения по умолчанию к раунду (0.02*fs).

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

Количество коэффициентов, возвращенных для каждого окна данных, заданных как разделенная запятой пара, состоящая из 'NumCoeffs' и целое число в области значений [2, v]. v является количеством допустимых полос пропускания. Если незаданный, NumCoeffs значения по умолчанию к 13.

Количество допустимых полос пропускания задано как количество шагов ERB (ERBN) в частотном диапазоне набора фильтров. Частотный диапазон набора фильтров задан FrequencyRange.

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

Область, в которой можно применить фильтрацию, заданную как разделенная запятой пара, состоящая из 'FilterDomain' и 'Frequency' или 'Time'. Если незаданный, FilterDomain значения по умолчанию к Frequency.

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

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

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

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

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

Количество коэффициентов раньше вычисляло дельту и значения дельты дельты, заданные как разделенная запятой пара, состоящая из 'DeltaWindowLength' и два или нечетное целое число, больше, чем два. Если незаданный, DeltaWindowLength значения по умолчанию к 2.

Если DeltaWindowLength установлен в 2, delta дан различием между текущими коэффициентами и предыдущими коэффициентами.

Если DeltaWindowLength установлен в нечетное целое число, больше, чем 2, следующее уравнение задает их значения:

Функция использует приближение наименьших квадратов локального наклона по области вокруг коэффициентов текущего аналитического окна. Дельта cepstral значения вычисляется путем подбора кривой cepstral коэффициентам соседних аналитических окон (аналитические окна M перед текущим аналитическим окном и аналитическими окнами M после текущего аналитического окна) к прямой линии. Для получения дополнительной информации см. [3].

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

Регистрируйте энергетическое использование, заданное как разделенная запятой пара, состоящая из 'LogEnergy' и 'Append'замена, или 'Ignore'. Если незаданный, LogEnergy значения по умолчанию к Append.

  • 'Append' – Функция предварительно ожидает логарифмическую энергию к содействующему вектору. Длина содействующего вектора равняется 1 + NumCoeffs.

  • 'Replace' – Функция заменяет первый коэффициент на логарифмическую энергию сигнала. Длиной содействующего вектора является NumCoeffs.

  • 'Ignore' – Функция не вычисляет или возвращает логарифмическую энергию.

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

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

свернуть все

Коэффициенты Gammatone cepstral, возвращенные как L-by-M матрица или L-by-M-by-N массив, где:

  • L Количество аналитических окон звуковой сигнал разделено в. Входной размер, WindowLength, и OverlapLength управляйте этой размерностью: L = пол ((размер (audioIn, 1) − WindowLength)) / (WindowLengthOverlapLength) + 1.

  • M Количество коэффициентов возвращено на систему координат. Это значение определяется NumCoeffs и LogEnergy.

    Когда LogEnergy установлен в:

    • 'Append' – Объект предварительно ожидает логарифмическую энергетическую ценность к содействующему вектору. Длина содействующего вектора равняется 1 + NumCoeffs.

    • 'Replace' – Объект заменяет первый коэффициент на логарифмическую энергию сигнала. Длиной содействующего вектора является NumCoeffs.

    • 'Ignore' – Объект не вычисляет или возвращает логарифмическую энергию. Длиной содействующего вектора является NumCoeffs.

  • N Количество входных каналов (столбцы). Это значение является размером (audioIn,2).

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

Изменитесь в коэффициентах от одного аналитического окна до другого, возвращенного как L-by-M матрица или L-by-M-by-N массив. delta массив одного размера и тип данных с coeffs массив. Смотрите coeffs для определений L, M и N.

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Для получения дополнительной информации см. [3].

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

Изменитесь в delta значения, возвращенные как L-by-M матрица или L-by-M-by-N массив. deltaDelta массив одного размера и тип данных с coeffs и delta массивы. Смотрите coeffs для определений L, M и N.

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Для получения дополнительной информации см. [3].

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

Местоположение последней выборки в каждом аналитическом окне, возвращенном как вектор-столбец с одинаковым числом строк как coeffs.

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

Алгоритмы

свернуть все

gtcc функционируйте разделяет целые данные в перекрывающиеся сегменты. Длина каждого аналитического окна определяется WindowLength. Длина перекрытия между аналитическими окнами определяется OverlapLength. Алгоритм, чтобы определить gammatone cepstral коэффициенты зависит от области фильтра, заданной FilterDomain. Область фильтра по умолчанию является частотой.

Фильтрация частотного диапазона

gtcc вычисляет gammatone cepstral коэффициенты, логарифмическая энергетическая ценность, дельта и значения дельты дельты для каждого аналитического окна согласно алгоритму, описанному в cepstralFeatureExtractor.

Фильтрация временного интервала

Если FilterDomain задан как 'Time', gtcc функционируйте использует gammatoneFilterBank применять фильтрацию временного интервала. Основные шаги gtcc алгоритм обрисован в общих чертах схемой.

FrequencyRange и частота дискретизации (fs) параметры устанавливаются на наборе фильтров с помощью входа пар "имя-значение" для gtcc функция. Количество просачивается, gammatone набор фильтров задан как hz2erb(FrequencyRange(2)) − hz2erb(FrequencyRange(1)).This примерно соответствует размещению фильтра gammatone каждые 0,9 мм в улитке уха.

Выход от gammatone набора фильтров является многоканальным сигналом. Каждый канал выход от gammatone набора фильтров буферизуется в перекрытые аналитические окна, как задано WindowLength и OverlapLength. Затем периодическое Окно Хэмминга применяется к каждому аналитическому окну. Энергия для каждого аналитического окна данных вычисляется. STE каналов конкатенирована. Конкатенированный сигнал затем передается через функцию логарифма и преобразовывается к cepstral области с помощью дискретного косинусного преобразования (DCT).

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

Ссылки

[1] Шао, ян, Чжаочжан Цзинь, Дэлян Ван и Сундарарэджэн Сринивасан. "Слуховая функция устойчивого распознавания речи". Международная конференция IEEE по вопросам акустики, речи и обработки сигналов. 2009.

[2] Валеро, X., и F. Псевдоним. "Коэффициенты Gammatone Cepstral: Биологически Вдохновленные Функции Неречевой Классификации Аудио". Транзакции IEEE на Мультимедиа. Издание 14, Выпуск 6, 2012, стр 1684–1689.

[3] Rabiner, Лоуренс Р. и Рональд В. Шафер. Теория и приложения цифровой речевой обработки. Верхний Сэддл-Ривер, NJ: Пирсон, 2010.

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

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

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

| | |

Введенный в R2019a