mfcc

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

Синтаксис

coeffs = mfcc(audioIn,fs)
coeffs = mfcc(___,Name,Value)
[coeffs,delta,deltaDelta,loc] = 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 обрабатывает целые речевые данные в пакете. DeltaWindowLength по умолчанию равняется 2. Поэтому delta вычисляется как различие между текущими коэффициентами и предыдущими коэффициентами. deltaDelta вычисляется как различие между током и предыдущими значениями дельты. На основе количества входных строк, длины окна и длины транзитного участка, 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);

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

свернуть все

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

Количество выборок в аналитическом окне раньше вычисляло коэффициенты, заданные как целое число, больше, чем или равный 2. Если незаданный, значения по умолчанию значения 'WindowLength' к round(fs*0.03). Длина окна должна быть в области значений [2,size(audioIn,1)].

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

Количество выборок, которые накладываются или underlap между смежными окнами. Значение 'OverlapLength', которое является:

  • Положительный указывает на перекрытие между смежными окнами.

  • Отрицательный указывает на underlap между смежными окнами.

  • Нуль не указывает ни на какое перекрытие между смежными окнами.

Значение 'OverlapLength' должно быть установлено к меньше, чем 'WindowLength'.

Вот то, как перекрывающиеся кадры смотрят:

Вот то, как underlapping структурирует взгляд:

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

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

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

Функция mfcc использует набор фильтров 40 полуперекрытых треугольников с ребрами полосы, заданными таблицей:

ФильтрыРебра полосы пропускания (Гц)
Отфильтруйте 1[133 267]
Filter2[200 333]
Отфильтруйте 3[267 400]
Отфильтруйте 4[333 467]
Отфильтруйте 5[400 533]
Отфильтруйте 6[467 600]
Отфильтруйте 7[533 667]
Отфильтруйте 8[600 733]
Отфильтруйте 9[667 800]
Отфильтруйте 10[733 867]
Отфильтруйте 11[800 933]
Отфильтруйте 12[867 999]
Отфильтруйте 13[933 1071]
Отфильтруйте 14[999 1147]
Отфильтруйте 15[1071 1229]
Отфильтруйте 16[1147 1316]
Отфильтруйте 17[1229 1410]
Отфильтруйте 18[1316 1510]
Отфильтруйте 19[1410 1618]
Отфильтруйте 20[1510 1733]
Отфильтруйте 21[1618 1856]
Отфильтруйте 22[1733 1988]
Отфильтруйте 23[1856 2130]
Отфильтруйте 24[1988 2281]
Отфильтруйте 25[2130 2444]
Отфильтруйте 26[2281 2618]
Отфильтруйте 27[2444 2804]
Отфильтруйте 28[2618 3004]
Отфильтруйте 29[2804 3217]
Отфильтруйте 30[3004 3446]
Отфильтруйте 31[3217 3692]
Отфильтруйте 32[3446 3954]
Отфильтруйте 33[3692 4236]
Отфильтруйте 34[3954 4537]
Отфильтруйте 35[4236 4860]
Отфильтруйте 36[4537 5206]
Отфильтруйте 37[4860 5577
Отфильтруйте 38[5206 5973]
Отфильтруйте 39[5577 6399]
Отфильтруйте 40[5973 6854]

Ребра полосы пропускания в таблице округлены для удобочитаемости. Для точных ребер смотрите настройки по умолчанию Системы cepstralFeatureExtractor object™.

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

Количество интервалов раньше вычисляло ДПФ оконных входных выборок. Значение длины БПФ должно быть больше, чем или равным значению 'WindowLength'. Аргумент 'WindowLength' задает количество строк в оконном входе. По умолчанию значение длины БПФ установлено к 'WindowLength'.

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

Количество коэффициентов раньше вычисляло дельту и значения дельты дельты, заданные как 2 или нечетное целое число, больше, чем 2.

Если 'DeltaWindowLength' установлен в 2, delta дан различием между текущими коэффициентами и предыдущими коэффициентами,

Если 'DeltaWindowLength' установлен в нечетное целое число, больше, чем 2, значения дельты даны следующим уравнением:

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Дельта cepstral значения вычисляется путем подбора кривой cepstral коэффициентам соседних кадров (кадры M перед текущим кадром и кадрами M после текущего кадра) прямой линией. Для получения дополнительной информации см. [1].

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

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

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

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

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

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

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

свернуть все

Частота Мэла cepstral коэффициенты, возвращенные как L-by-M матрица или L-by-M-by-N массив, где,

  • L Количество кадров звуковой сигнал разделено в. Свойства 'WindowLength' и 'OverlapLength' управляют этой размерностью.

    Количество аудио кадров, L, вычисляется с помощью следующего уравнения:

    • nRows – Количество входных строк.

    • winLen – Количество выборок в аналитическом окне, заданном аргументом 'WindowLength'. Если не заданный, длиной окна является round(fs*0.03).

    • hopLen – Количество выборок в текущем кадре перед запуском следующего кадра. Скачкообразно двиньтесь длиной дают.

  • M Количество коэффициентов возвращено на кадр. Это значение определяется свойствами NumCoeffs и LogEnergy.

    Когда свойство LogEnergy установлено в:

    • добавление Объект предварительно ожидает логарифмическую энергетическую ценность к содействующему вектору. Длина содействующего вектора равняется 1 + NumCoeffs.

    • замена Объект заменяет первый коэффициент на логарифмическую энергию сигнала. Длиной содействующего вектора является NumCoeffs.

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

  • N Количество входных каналов (столбцы).

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

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

Если 'DeltaWindowLength' установлен в 2, delta дан различием между текущими коэффициентами и предыдущими коэффициентами,

Рассмотрите пример, ниже которого вычисляет mel коэффициенты частоты для целого речевого файла. Значением 'DeltaWindowLength' является 2. Функция mfcc делит речь в 1 551 кадр. Каждая строка в матрице coeffs соответствует логарифмической энергетической ценности, сопровождаемой 13 mel частотами cepstral коэффициенты для соответствующего сегмента речевого файла.

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

Первая строка матрицы дельты, delta(1,:) является нулями. Вторая строка, delta(2,:) равняется различию в коэффициентах для текущего кадра, coeffs(2,:) и предыдущего кадра, coeffs(1,:).

Если 'DeltaWindowLength' установлен в нечетное целое число, больше, чем 2, значения дельты даны следующим уравнением:

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Для получения дополнительной информации см. [1].

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

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

Если 'DeltaWindowLength' установлен в 2, deltaDelta дан различием между текущими значениями дельты и предыдущими значениями дельты,

Рассмотрите пример, ниже которого вычисляет mel коэффициенты частоты для целого речевого файла. Значением 'DeltaWindowLength' является 2.

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

Первая строка матрицы deltaDelta, deltaDelta(1,:) является нулями. Вторая строка, deltaDelta(2,:) равняется различию в значениях дельты для текущего кадра, delta(2,:) и предыдущего кадра, delta(1,:).

Если 'DeltaWindowLength' установлен в нечетное целое число, больше, чем 2, значения deltaDelta даны следующим уравнением:

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Для получения дополнительной информации см. [1].

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

Местоположение последней выборки в каждом входном кадре, возвращенном как вектор. Вектор loc дан [t 1, t 2, t 3, …, t n] элементы в следующей схеме, где n соответствует количеству кадров, вход разделен в, и t n является последней выборкой последнего кадра.

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

Алгоритмы

Функция mfcc разделяет целые данные в перекрывающиеся сегменты. Длина каждого сегмента спада определяется аргументом 'WindowLength'. Длина перекрытия между сегментами определяется аргументом 'OverlapLength'.

Функция вычисляет mel частоту cepstral коэффициенты, логарифмическая энергетическая ценность, cepstral дельта и cepstral значения дельты дельты для каждого сегмента согласно алгоритму, описанному в Системном объекте cepstralFeatureExtractor.

Ссылки

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

Введенный в R2018a