mfcc

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

Описание

пример

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

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

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

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

Примеры

свернуть все

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

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

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

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

nbins = 60;
coefficientToAnalyze = 4;

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

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 частоту cepstral коэффициенты для входного аудиосигнала, произведенного в fs Гц. Первый коэффициент в coeffs вектор заменяется логарифмической энергетической ценностью. Набор 5 cepstral коэффициентов используется для расчета дельта и значения дельты дельты.

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

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

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

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

свернуть все

Частота Мэла 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 массив.

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

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

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

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

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

Алгоритмы

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

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

Значение по умолчанию mel набор фильтров линейно располагает первые 10 треугольных фильтров с интервалами и логарифмически располагает остающиеся фильтры с интервалами.

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

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

logE=log(sum(x2))

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

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

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

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

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

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

Ссылки

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

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

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

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

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

Введенный в R2018a