exponenta event banner

mfcc

Извлечение MFCC, энергии регистрации, дельты и дельта-дельты звукового сигнала

Описание

пример

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

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

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

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

Примеры

свернуть все

Вычислить частотные кепстральные коэффициенты речевого сигнала, используя mfcc функция. Функция возвращает delta, изменение коэффициентов и deltaDelta, изменение значений дельты. Логарифмическое значение энергии, которое вычисляет функция, может предварять вектор коэффициентов или заменять первый элемент вектора коэффициентов. Это выполняется в зависимости от того, установлен ли параметр 'LogEnergy' аргумент для 'Append' или 'Replace'.

Считывание звукового сигнала из 'Counting-16-44p1-mono-15secs.wav' с использованием audioread функция. mfcc функция обрабатывает все речевые данные в пакете. На основе количества входных строк, длины окна и длины перекрытия. mfcc разделяет речь на 1551 кадр и вычисляет кепстральные признаки для каждого кадра. Каждая строка в coeffs матрица соответствует логарифмическому значению энергии, за которым следуют 13 мел-частотных кепстральных коэффициентов для соответствующего кадра речевого файла. Функция также вычисляет loc, местоположение последней выборки в каждом входном кадре.

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

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

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

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

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

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

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

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 массив.

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

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

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

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

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

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

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

Пример: [coeffs,delta,deltaDelta,loc] = mfcc(audioIn,fs,'LogEnergy','Replace','DeltaWindowLength',5) возвращает частотные кепстральные коэффициенты для входного аудиосигнала, дискретизированного в fs Гц. Первый коэффициент в coeffs вектор заменяют на логарифмическое значение энергии. Набор из 5 кепстральных коэффициентов используется для вычисления дельты и дельта-дельта значений.

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

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

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

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

Число коэффициентов, возвращаемых для каждого окна данных, указанное как целое число в диапазоне [2 v], где v - количество допустимых полос пропускания.

Количество допустимых полос пропускания определяется как sum(BandEdges <= floor(fs/2))-2. Полоса пропускания действительна, если ее края опускаются ниже fs/2, где fs - частота дискретизации входного аудиосигнала, указанная в качестве второго аргумента, fs.

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

Границы полос набора фильтров в Гц, определяемые как неотрицательный монотонно увеличивающийся вектор строки в диапазоне [0, fs/2]. Количество ребер полосы должно находиться в диапазоне [4, 160]. mfcc функция проектирует полуперекрывающиеся треугольные фильтры на основе BandEdges. Это означает, что все границы полосы, за исключением первой и последней, также являются центральными частотами проектируемых полосовых фильтров.

По умолчанию BandEdges является 42-элементным вектором, что приводит к 40-полосному набору фильтров, который охватывает приблизительно от 133 Гц до 6864 Гц. Диапазоны по умолчанию разнесены, как описано в [2].

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

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

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

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

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

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

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

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

Укажите, как логарифмическая энергия отображается на выходе вектора коэффициентов, указанного как:

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

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

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

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

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

свернуть все

кепстральные коэффициенты частоты Mel, возвращаемые в виде матрицы 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 массив.

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

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

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

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

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

Алгоритмы

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

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

Набор фильтров по умолчанию линейно размещает первые 10 треугольных фильтров, а остальные - логарифмически.

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

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

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

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

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

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

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

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

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

Ссылки

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

[2] Панель слуховых инструментов. https://engineering.purdue.edu/~malcolm/interval/1998-010/AuditoryToolboxTechReport.pdf

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

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

.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.

Массивы графических процессоров
Ускорьте выполнение кода с помощью графического процессора (GPU) с помощью Parallel Computing Toolbox™.

Представлен в R2018a