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). Вычислите коэффициенты с помощью периодических окон Hann на 50 мс с перекрытием на 25 мс. Замените 0th коэффициент на логарифмическую энергию. Используйте фильтрацию временного интервала.

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

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

[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;
coefficientToAnalyze = 4;

гистограмма (coefs (: coefficientToAnalyze+1), nbins,'Normalization','pdf')
заголовок (sprintf ("Coefficient %d", coefficientToAnalyze))

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

свернуть все

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

Если '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, размер (audioIn,1)]. Число элементов в векторе должно также быть больше OverlapLength.

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

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

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

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

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

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

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

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

Типы данных: 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 Количество аналитических окон звуковой сигнал разделено в. Входной размер, Window, и OverlapLength управляйте этой размерностью: L = пол ((размер (audioIn, 1) − numel (Window))) / (numel(Window)OverlapLength) + 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.

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

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

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

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

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

Алгоритмы

свернуть все

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

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

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

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

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

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

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

logE=log(sum(x2))

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

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

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

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

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

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

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

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

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

Поведение изменяется в R2020b

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

Ссылки

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

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

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

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

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