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 функция обрабатывает целые речевые данные в пакете. 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);

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

[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;
for i = 1:size(coeffs,2)
    figure
    histogram(coeffs(:,i),nbins,"Normalization","pdf")
    title(sprintf("Coefficient %d",i-1))
end

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

свернуть все

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

  • Если 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 коэффициентов используется для расчета дельта и значения дельты дельты.

Количество выборок в аналитическом окне раньше вычисляло коэффициенты в виде целого числа, больше, чем или равный 2. Если незаданный, 'WindowLength' значения по умолчанию значения к раунду (fs*0.03). Длина окна должна быть в области значений [2, размер (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.

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

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

По умолчанию, BandEdges вектор с 42 элементами, который приводит к банку с 40 ленточными фильтрами, который охватывает приблизительно 133 Гц к 6 864 Гц:

ФильтрыРебра полосы пропускания (Гц)
Отфильтруйте 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.

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

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

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

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

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

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

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

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

delta=k=MMkcoeffs(k,:)k=MMk2

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

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

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

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

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

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

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

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

свернуть все

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

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

    Количество аудио систем координат, L, вычисляется с помощью следующего уравнения:L=floor((nRowswinLen)/hopLen)+1.

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

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

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

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

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

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

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

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

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

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

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

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

Рассмотрите пример, ниже которого вычисляет 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, значения дельты даны следующим уравнением:

delta=k=MMkcoeffs(k,:)k=MMk2

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

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

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

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

Рассмотрите пример, ниже которого вычисляет 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 значения даны следующим уравнением:

deltaDelta=k=MMkdelta(k,:)k=MMk2

Функция использует приближение наименьших квадратов локального наклона по области вокруг выборки текущего времени. Для получения дополнительной информации см. [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.

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

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

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

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

Введенный в R2018a