gtcc

Извлеките коэффициенты гамматона 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')

Figure contains an axes. The axes with title Gammatone Cepstral Coefficients contains 14 objects of type line. These objects represent logE, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.

Чтение в аудио файла.

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

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

[coeffs,~,~,loc] = gtcc(audioIn,fs, ...
                       'NumCoeffs',20, ...
                       'FrequencyRange',[62.5,12000], ...
                       'Window',hann(round(0.05*fs),'periodic'), ...
                       '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');

Figure contains an axes. The axes with title Gammatone Cepstral Coefficients contains 20 objects of type line. These objects represent logE, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19.

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

[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 преобразуются в сводную статистику для использования в задачах классификации. Постройте график функции плотности вероятностей для одного из коэффициентов гамматона cepstral, чтобы наблюдать его распределения.

nbins = 60;
coefficientToAnalyze = 4;

гистограмма (коэффициенты (:, коэффициентToAnalyze + 1), nbins,'Normalization','pdf')
заголовок (sprintf ("Coefficient %d", коэффициентToAnalyze))

Figure contains an axes. The axes with title Coefficient 4 contains an object of type histogram.

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

свернуть все

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

Если '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 вектор заменяется на журнал энергию входного сигнала.

Окно, примененное во временном интервале, задается как разделенная разделенными запятой парами, состоящая из 'Window' и вектор действительных чисел. Количество элементов в векторе должно быть в области значений [1, size (audioIn,1)]. Количество элементов в векторе также должно быть больше OverlapLength.

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

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

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

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

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

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

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

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

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

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

Количество интервалов, используемых для вычисления дискретного преобразования Фурье (DFT) оконных входных выборок. Длина БПФ должна быть больше или равной количеству элементов в Window.

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

Тип нелинейного выпрямления, примененного до дискретного косинусного преобразования, заданный как 'log' или 'cubic-root'.

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

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

Дельты вычисляются с помощью audioDelta функция.

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

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

  • 'Append' - Функция подготавливает энергию журнала к вектору коэффициентов. Длина вектора коэффициентов 1 + NumCoeffs.

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

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

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

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

свернуть все

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

  • L - Количество окон анализа, в которых разбит аудиосигнал. Размер входа, Window, и OverlapLength управляйте этой размерностью: L = floor ((size (audioIn1) − число (Window))) / (numel(Window)OverlapLength) + 1.

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

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

    • 'Append' - Функция готовит значение энергии журнала к вектору коэффициентов. Длина вектора коэффициентов 1 + NumCoeffs.

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

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

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

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

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

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

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

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

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

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

Алгоритмы

свернуть все

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

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

Коэффициенты Gammatone cepstrum являются популярными функциями, извлеченными из речевых сигналов для использования в задачах распознавания. В модели речи «источник-фильтр» кепстральные коэффициенты понимаются как представляющие фильтр (голосовой тракт). Частотная характеристика голосового тракта относительно гладкая, в то время как источник голосовой речи может быть смоделирован как импульсный train. В результате голосовой тракт может быть оценен спектральной огибающей речевого сегмента.

Мотивирующая идея гамматоновых кепстральных коэффициентов состоит в том, чтобы сжать информацию о голосовом тракте (сглаженном спектре) в небольшое количество коэффициентов, основанных на понимании улитки. Несмотря на отсутствие жесткого стандарта для вычисления коэффициентов, основные шаги описаны схемой.

Группа гамматоновых фильтров по умолчанию состоит из гамматоновых фильтров, расположенных линейно по шкале ERB между 50 и 8000 Гц. Банк фильтров разработан designAuditoryFilterBank.

Информация, содержащаяся в коэффициенте zeroth gammatone cepstral, часто увеличивается на или заменяется энергией журнала. Вычисление журнала энергии зависит от области входа.

Если вход является сигналом временной области, энергия журнала вычисляется с помощью следующего уравнения:

logE=log(sum(x2))

Если вход является частотным диапазоном сигналом, энергия журнала вычисляется с помощью следующего уравнения:

logE=log(sum(|x|2)/FFTLength)

Фильтрация во временной области

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

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

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

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

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

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

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

Изменение поведения в будущем релизе

Ссылки

[1] Shao, Yang, Zhaozhang Jin, Deliang Wang и Soundarajan Srinivasan. «Звуковая функция для робастного распознавания речи». Международная конференция IEEE по акустике, речи и обработке сигналов. 2009.

[2] Valero, X., and F. Alias. Gammatone Cepstral Coefficients: Biological Inspired Features for Non-Speech Audio Classification (неречевая аудио классификация). Транзакции IEEE на мультимедиа. Том 14, Выпуск 6, 2012, стр. 1684-1689.

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

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

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