Извлечение кепстральных коэффициентов гамматона, логарифмической энергии, дельты и дельты-дельты
указывает параметры, использующие один или несколько 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')

Чтение в аудиофайле.
[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');

Считывайте аудиофайл и преобразуйте его в частотное представление.
[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))

audioIn - Входной сигналВходной сигнал, заданный как вектор, матрица или 3-D массив.
Если 'FilterDomain'имеет значение 'Frequency' (по умолчанию), то audioIn может быть реальным или сложным.
Если audioIn является действительным, он интерпретируется как сигнал временной области и должен быть вектором столбца или матрицей. Столбцы матрицы обрабатываются как независимые аудиоканалы.
Если audioIn является сложным, он интерпретируется как сигнал частотной области. В этом случае audioIn должен быть массивом L-by-M-by-N, где L - количество точек DFT, M - количество отдельных спектров, а N - количество отдельных каналов.
Если 'FilterDomain'имеет значение 'Time', то audioIn должен быть вещественным вектором-столбцом или матрицей. Столбцы матрицы обрабатываются как независимые аудиоканалы.
Типы данных: single | double
Поддержка комплексного номера: Да
fs - Частота дискретизации (Гц)Частота дискретизации входного сигнала в Гц, заданная как положительный скаляр.
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
coeffs = gtcc(audioIn,fs,'LogEnergy','Replace') возвращает кэпстральные коэффициенты гамматона для входного аудиосигнала, дискретизированного в fs Гц. Для каждого окна анализа первый коэффициент в coeffs вектор заменяют логарифмической энергией входного сигнала.'Window' - Окно, примененное во временной областиhamming(round(fs*0.3),'periodic') (по умолчанию) | векторОкно, примененное во временной области, указанное как разделенная запятыми пара, состоящая из 'Window' и реальный вектор. Число элементов в векторе должно находиться в диапазоне [1,size(. Число элементов в векторе также должно быть больше audioIn,1)]OverlapLength.
Типы данных: single | double
'OverlapLength' - Количество проб, перекрывающихся между соседними окнамиround(0.02*fs) (по умолчанию) | неотрицательный скаляр'NumCoeffs' - Количество возвращенных коэффициентов13 (по умолчанию) | положительное скалярное целоеКоличество коэффициентов, возвращаемых для каждого окна данных, указанное как пара, разделенная запятыми, состоящая из 'NumCoeffs' и целое число в диапазоне [2, v]. v - количество допустимых полос пропускания. Если не указано, NumCoeffs по умолчанию: 13.
Количество допустимых полос пропускания определяется как количество шагов ERB (ERBN) в частотном диапазоне набора фильтров. Диапазон частот блока фильтров определяется FrequencyRange.
Типы данных: single | double
'FilterDomain' - Домен, в котором применяется фильтрация'Frequency' (по умолчанию) | 'Time'Домен, в котором применяется фильтрация, указанный как разделенная запятыми пара, состоящая из 'FilterDomain' и 'Frequency' или 'Time'. Если не указано, FilterDomain по умолчанию: Frequency.
Типы данных: string | char
'FrequencyRange' - Частотный диапазон набора гамматоновых фильтров (Гц)[50 fs/2] (по умолчанию) | двухэлементный вектор строкиЧастотный диапазон набора гамматоновых фильтров в Гц, определяемый как разделенная запятыми пара, состоящая из 'FrequencyRange' и двухэлементный вектор строки возрастающих значений в диапазоне [0, fs/2]. Если не указано, FrequencyRange по умолчанию: [50, fs/2]
Типы данных: single | double
'FFTLength' - Количество ячеек в DFTnumel(Window) (по умолчанию) | положительное скалярное целоеКоличество ячеек, используемых для вычисления дискретного преобразования Фурье (DFT) оконных входных выборок. Длина БПФ должна быть больше или равна количеству элементов в Window.
Типы данных: single | double
'Rectification' - Тип нелинейного выпрямления'log' (по умолчанию) | 'cubic-root'Тип нелинейного исправления, применяемого перед дискретным косинусным преобразованием, указанный как 'log' или 'cubic-root'.
Типы данных: char | string
'DeltaWindowLength' - количество коэффициентов, используемых для вычисления дельты и дельта-дельты;9 (по умолчанию) | нечетное целое число больше двухКоличество коэффициентов, используемых для вычисления дельты и дельта-дельта значений, указанных как разделенная запятыми пара, состоящая из 'DeltaWindowLength' и нечетное целое число больше двух. Если не указано, DeltaWindowLength по умолчанию: 9.
Дельты вычисляются с помощью audioDelta функция.
Типы данных: single | double
'LogEnergy' - Регистрация потребления энергии'Append' (по умолчанию) | 'Replace' | 'Ignore'Потребление энергии в журнале, указанное как разделенная запятыми пара, состоящая из 'LogEnergy' и 'Append', 'Replace', или 'Ignore'. Если не указано, LogEnergy по умолчанию: 'Append'.
'Append' Функция добавляет логарифмическую энергию к вектору коэффициентов. Длина вектора коэффициентов равна 1 + NumCoeffs.
'Replace' - Функция заменяет первый коэффициент логарифмической энергией сигнала. Длина вектора коэффициентов равна NumCoeffs.
'Ignore' - Функция не вычисляет и не возвращает логарифмическую энергию.
Типы данных: char | string
coeffs - кепстральные коэффициенты гамматонаКэпстральные коэффициенты гамматона, возвращаемые в виде матрицы 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
delta - Изменение коэффициентовИзменение коэффициентов из одного окна анализа в другое, возвращаемое как матрица L-за-M или массив L-за-M-за-N. delta массив имеет тот же размер и тот же тип данных, что и coeffs массив. Посмотрите coeffs для определений L, M и N.
Типы данных: single | double
deltaDelta - Изменение значений дельтыloc - Расположение последней пробы в каждом окне анализаРасположение последней выборки в каждом окне анализа, возвращаемое в виде вектора столбца с тем же количеством строк, что и coeffs.
Типы данных: single | double
gtcc функция разбивает все данные на перекрывающиеся сегменты. Длина каждого окна анализа определяется Window. Длина перекрытия между окнами анализа определяется OverlapLength. Алгоритм определения кепстральных коэффициентов гамматона зависит от области фильтра, заданной FilterDomain. Область фильтра по умолчанию - частота.
Коэффициенты кепстра гамматона являются популярными признаками, извлеченными из речевых сигналов для использования в задачах распознавания. В модели «источник-фильтр» речи кепстральные коэффициенты понимаются как представляющие фильтр (речевой тракт). Частотная характеристика голосового тракта является относительно гладкой, тогда как источник озвученной речи может быть смоделирован как импульсный поезд. В результате речевой тракт может быть оценен по спектральной огибающей речевого сегмента.
Мотивирующая идея кепстральных коэффициентов гамматона заключается в сжатии информации о голосовом тракте (сглаженном спектре) в небольшое количество коэффициентов, основанных на понимании улитки. Хотя нет жёсткого стандарта для вычисления коэффициентов, основные шаги очерчены диаграммой.

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

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

FrequencyRange и частота выборки (fs) параметры устанавливаются в банке фильтров с помощью пар имя-значение, вводимых в gtcc функция. Количество фильтров в банке фильтров гамматона определяется как Это примерно соответствует размещению фильтра гамматона каждые 0,9 мм в улитке.hz2erb(FrequencyRange(2)) − hz2erb(FrequencyRange(1))
Выходной сигнал из набора гамматоновых фильтров представляет собой многоканальный сигнал. Каждый канал, выводимый из набора гамматоновых фильтров, буферизуется в перекрывающиеся окна анализа, как определено Window и OverlapLength параметры. Вычисляется энергия для каждого окна анализа данных. STE каналов объединяются. Затем конкатенированный сигнал пропускают через логарифмическую функцию и преобразуют в кепстральную область с использованием дискретного косинусного преобразования (ДКП).
Логарифмическая энергия вычисляется на исходном звуковом сигнале с использованием той же схемы буферизации, что и на выходе банка гамматоновых фильтров.
В R2020b изменилось поведение
Теперь вычисления дельта и дельта-дельта вычисляются с использованием audioDelta , которая имеет поведение запуска, отличное от предыдущего алгоритма. Значение по умолчанию для DeltaWindowLength параметр изменился с 2 кому 9. Длина дельта-окна 2 больше не поддерживается.
WindowLength будет удален в следующем выпускеИзменение поведения в будущем выпуске
WindowLength параметр будет удален из gtcc в будущей версии. Используйте Window вместо этого параметр.
В версиях до R2020b можно указать только длину окна временной области. Окно всегда проектировалось как периодическое окно Хэмминга. Можно заменить экземпляры кода
coeffs = gtcc(audioin,fs,'WindowLength',1024);coeffs = gtcc(audioIn,fs,'Window',hamming(1024,'periodic'));
[1] Шао, Ян, Чжаочжан Цзинь, Делиан Ван и Саундарараджан Шринивасан. «Слуховая функция для надежного распознавания речи». Международная конференция IEEE по акустике, обработке речи и сигналов. 2009.
[2] Валеро, Х. и Ф. Алиас. «Цепстральные коэффициенты гамматона: биологически вдохновленные особенности негласной аудиоклассификации». Транзакции IEEE для мультимедиа. т. 14, выпуск 6, 2012, стр. 1684-1689.
audioDelta | audioFeatureExtractor | Экстрактор элементов Cepstral | cepstralCoefficients | detectSpeech | mfcc
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.