mfcc

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

Описание

пример

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

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

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

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

Примеры

свернуть все

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

Считайте аудиосигнал из 'Counting-16-44p1-mono-15secs.wav' файл с использованием audioread функция. The mfcc функция обрабатывает все речевые данные в пакете. Исходя из количества входных строк, длины окна и длины перекрытия, mfcc разделяет речь на 1551 систему координат и вычисляет функции cepstral для каждой системы координат. Каждая строка в 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 cepstral, вызовите mfcc с частотным частотным диапазоном звука. Игнорируйте логарифмическую энергию.

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

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

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.

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

свернуть все

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

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

  • Если audioIn является комплексным, интерпретируется как сигнал частотного диапазона. В этом случае audioIn должен быть L -by- M -by- N массивом, где L - количество точек ДПФ, 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) возвращает mel frequency cepstral коэффициенты для аудио входного сигнала, дискретизированного в fs Гц. Первый коэффициент в coeffs вектор заменяется на логарифмическое значение энергии. Набор из 5 коэффициентов cepstral используется для вычисления значений дельты и дельты.

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

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

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

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

свернуть все

Частотные коэффициенты Меля, возвращенные как 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 массив.

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

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

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

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

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

Алгоритмы

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

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

По умолчанию mel filter bank линейно разделяет первые 10 треугольных фильтров и логарифмически разделяет оставшиеся фильтры.

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

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

logE=log(sum(x2))

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

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

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

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

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

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

Ссылки

[1] Рабинер, Лоуренс Р. и Рональд У. Шафер. Теория и приложения цифровой обработки речи. Upper Saddle River, NJ: Pearson, 2010.

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

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

.

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

.

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

Введенный в R2018a