exponenta event banner

gtcc

Извлечение кепстральных коэффициентов гамматона, логарифмической энергии, дельты и дельты-дельты

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

[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);

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

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

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

nbins = 60;
coefficientToAnalyze = 4;

histogram(coeffs(:,coefficientToAnalyze+1),nbins,'Normalization','pdf')
title(sprintf("Coefficient %d",coefficientToAnalyze))

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

Количество выборок, перекрывающихся между соседними окнами, указанное как пара, разделенная запятыми, состоящая из 'OverlapLength' и целое число в диапазоне [0, numel(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

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

свернуть все

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

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

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

    Когда LogEnergy имеет значение:

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

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

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

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

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

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

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

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

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

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

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

Алгоритмы

свернуть все

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

Фильтрация частотной области

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

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

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

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

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

logE = log (сумма (x2))

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

logE = log (сумма (| x | 2 )/FFTLength)

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

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

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

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

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

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

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

В R2020b изменилось поведение

Изменение поведения в будущем выпуске

Ссылки

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

[2] Валеро, Х. и Ф. Алиас. «Цепстральные коэффициенты гамматона: биологически вдохновленные особенности негласной аудиоклассификации». Транзакции IEEE для мультимедиа. т. 14, выпуск 6, 2012, стр. 1684-1689.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2019a