audioFeatureExtractor

Оптимальная экстракция функции аудио

Описание

audioFeatureExtractor инкапсулирует несколько экстракторов функции аудио в оптимизированную и модульную реализацию.

Создание

Описание

aFE = audioFeatureExtractor() создает экстрактор функции аудио со значениями свойств по умолчанию.

пример

aFE = audioFeatureExtractor(Name,Value) задает свойства не по умолчанию для aFE использование одного или нескольких аргументов пары "имя-значение".

Свойства

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

Основные свойства

Окно Analysis, заданное как вектор действительных чисел.

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

Перекройте длину смежных аналитических окон, заданных как целое число в области значений [0, numel(Window)).

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

Длина БПФ, заданная как целое число. Значение по умолчанию, [], средние значения, что длина БПФ равна длине окна, (numel(Window)).

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

Введите частоту дискретизации в Гц, заданном как неотрицательный скаляр.

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

Введите к спектральным дескрипторам, заданным как "linearSpectrum", "melSpectrum", "barkSpectrum", или "erbSpectrum".

Спектральные дескрипторы, затронутые этим свойством:

Вход спектра к спектральным дескрипторам совпадает с выходом от соответствующей функции:

Например, если вы устанавливаете "SpectralDescriptorInput" к "barkSpectrum", и "spectralCentroid" к true, затем aFE возвращает центроид спектра Коры по умолчанию.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
aFE = audioFeatureExtractor("SampleRate",fs, ...
                            "SpectralDescriptorInput","barkSpectrum", ...
                            "spectralCentroid",true);
barkSpectralCentroid = extract(aFE,audioIn);
Если вы задаете barkSpectrum не по умолчанию использование setExtractorParams, затем спектр Коры не по умолчанию является входом к спектральным дескрипторам. Например, если вы вызываете setExtractorParams(aFE,"barkSpectrum","NumBands",40), затем aFE возвращает центроид спектра Коры с 40 полосами.

setExtractorParams(aFE,"barkSpectrum","NumBands",40)
bark40SpectralCentroid = extract(aFE,audioIn);

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

Функции, чтобы извлечь

Извлеките односторонний линейный спектр, заданный как true или false.

Чтобы установить параметры линейной экстракции спектра, используйте setExtractorParams:

setExtractorParams(aFE,"linearSpectrum","Name",Value)
Устанавливаемые параметры для линейной экстракции спектра:

  • "FrequencyRange" – Частотный диапазон извлеченного спектра в Гц, заданном как разделенная запятой пара, состоящая из "FrequencyRange" и двухэлементный вектор растущих чисел в области значений [0, SampleRate/2]. Если незаданный, FrequencyRange значения по умолчанию к [0, SampleRate/2].

  • "SpectrumType" – Тип спектра, заданный как разделенная запятой пара, состоящая из "SpectrumType" и "power" или "magnitude". Если незаданный, SpectrumType значения по умолчанию к "power".

Типы данных: логический

Извлеките односторонний mel спектр, заданный как true или false.

Чтобы установить параметры mel экстракции спектра, используйте setExtractorParams:

setExtractorParams(aFE,"melSpectrum","Name",Value)
Устанавливаемые параметры для экстракции спектра Коры:

  • "FrequencyRange" – Частотный диапазон извлеченного спектра в Гц, заданном как разделенная запятой пара, состоящая из "FrequencyRange" и двухэлементный вектор растущих чисел в области значений [0, SampleRate/2]. Если незаданный, FrequencyRange значения по умолчанию к [0, SampleRate/2].

  • "SpectrumType" – Тип спектра, заданный как разделенная запятой пара, состоящая из "SpectrumType" и "power" или "magnitude". Если незаданный, SpectrumType значения по умолчанию к "power".

  • "NumBands" – Количество mel полос, заданных как разделенная запятой пара, состоящая из "NumBands" и целое число. Если незаданный, NumBands значения по умолчанию к 32.

  • "Normalization" – Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization" и "bandwidth" или "area". Если незаданный, Normalization значения по умолчанию к "bandwidth".

Типы данных: логический

Извлеките односторонний спектр Коры, заданный как true или false.

Чтобы установить параметры экстракции спектра Коры, используйте setExtractorParams:

setExtractorParams(aFE,"barkSpectrum","Name",Value)
Устанавливаемые параметры для экстракции спектра Коры:

  • "FrequencyRange" – Частотный диапазон извлеченного спектра в Гц, заданном как разделенная запятой пара, состоящая из "FrequencyRange" и двухэлементный вектор растущих чисел в области значений [0, SampleRate/2]. Если незаданный, FrequencyRange значения по умолчанию к [0, SampleRate/2].

  • "SpectrumType" – Тип спектра, заданный как разделенная запятой пара, состоящая из "SpectrumType" и "power" или "magnitude". Если незаданный, SpectrumType значения по умолчанию к "power".

  • "NumBands" – Количество полос Bark, заданных как разделенная запятой пара, состоящая из "NumBands" и целое число. Если незаданный, NumBands значения по умолчанию к 32.

  • "Normalization" – Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization" и "bandwidth" или "area". Если незаданный, Normalization значения по умолчанию к "bandwidth".

Типы данных: логический

Извлеките односторонний спектр ERB, заданный как true или false.

Чтобы установить параметры экстракции спектра ERB, используйте setExtractorParams:

setExtractorParams(aFE,"erbSpectrum","Name",Value)
Устанавливаемые параметры для экстракции спектра ERB:

  • "FrequencyRange" – Частотный диапазон извлеченного спектра в Гц, заданном как разделенная запятой пара, состоящая из "FrequencyRange" и двухэлементный вектор растущих чисел в области значений [0, SampleRate/2]. Если незаданный, FrequencyRange значения по умолчанию к [0, SampleRate/2].

  • "SpectrumType" – Тип спектра, заданный как разделенная запятой пара, состоящая из "SpectrumType" и "power" или "magnitude". Если незаданный, SpectrumType значения по умолчанию к "power".

  • "NumBands" – Количество полос ERB, заданных как разделенная запятой пара, состоящая из "NumBands" и целое число. Если незаданный, NumBands значения по умолчанию, чтобы перекрыть (hz2erb(FrequencyRange (2))-hz2erb(FrequencyRange (1))).

  • "Normalization" – Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization" и "bandwidth" или "area". Если незаданный, Normalization значения по умолчанию к "bandwidth".

Типы данных: логический

Извлеките mel-частоту cepstral коэффициенты (MFCC), заданную как true или false.

Чтобы установить параметры экстракции MFCC, используйте setExtractorParams:

setExtractorParams(aFE,"mfcc","Name",Value)
Устанавливаемые параметры для экстракции MFCC:

  • "NumCoeffs" – Количество коэффициентов возвращено для каждого окна, заданного как разделенная запятой пара, состоящая из "NumCoeffs" и положительное целое число. Если незаданный, NumCoeffs значения по умолчанию к 13.

  • "DeltaWindowLength" – Длина окна Delta, заданная как разделенная запятой пара, состоящая из "DeltaWindowLength" и 2 или нечетное целое число. Если незаданный, DeltaWindowLength значения по умолчанию к 2. Этот параметр влияет на mfccDelta и mfccDeltaDelta функции.

Mel-частота cepstral коэффициенты вычисляется с помощью melSpectrum.

Типы данных: логический

Извлеките дельту MFCC, заданного как true или false.

Дельта MFCC вычисляется на основе извлеченного MFCC. Параметры устанавливаются на mfcc влияйте на mfccDelta.

Типы данных: логический

Извлеките дельту дельты MFCC, заданного как true или false.

Дельта дельты MFCC вычисляется на основе извлеченного MFCC. Параметры устанавливаются на mfcc влияйте на mfccDeltaDelta.

Типы данных: логический

Извлеките gammatone cepstral коэффициенты (GTCC), заданный как true или false.

Чтобы установить параметры экстракции GTCC, используйте setExtractorParams:

setExtractorParams(aFE,"gtcc","Name",Value)
Устанавливаемые параметры для экстракции GTCC:

  • "NumCoeffs" – Количество коэффициентов возвращено для каждого окна, заданного как разделенная запятой пара, состоящая из "NumCoeffs" и положительное целое число. Если незаданный, NumCoeffs значения по умолчанию к 13.

  • "DeltaWindowLength" – Длина окна Delta, заданная как разделенная запятой пара, состоящая из "DeltaWindowLength" и 2 или нечетное целое число. Если незаданный, DeltaWindowLength значения по умолчанию к 2. Этот параметр влияет на gtccDelta и gtccDeltaDelta функции.

gammatone cepstral коэффициенты вычисляются с помощью erbSpectrum.

Типы данных: логический

Извлеките дельту GTCC, заданного как true или false.

Дельта GTCC вычисляется на основе извлеченного GTCC. Параметры устанавливаются на gtcc влияйте на gtccDelta.

Типы данных: логический

Извлеките дельту дельты GTCC, заданного как true или false.

Дельта дельты GTCC вычисляется на основе извлеченного GTCC. Параметры устанавливаются на gtcc влияйте на gtccDeltaDelta.

Типы данных: логический

Извлеките спектральный центроид, заданный как true или false.

Спектральный центроид вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральный гребень, заданный как true или false.

Спектральный гребень вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральное уменьшение, заданное как true или false.

Спектральное уменьшение вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральную энтропию, заданную как true или false.

Спектральная энтропия вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральную плоскость, заданную как true или false.

Спектральная плоскость вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральный поток, заданный как true или false.

Спектральный поток вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Чтобы установить параметры спектральной экстракции потока, используйте setExtractorParams:

setExtractorParams(aFE,"spectralFlux","Name",Value)
Устанавливаемые параметры для спектральной экстракции потока:

  • "NormType" – Тип нормы раньше вычислял спектральный поток, заданный как разделенная запятой пара, состоящая из "NormType" и 1 или 2. Если незаданный, NormType значения по умолчанию к 2.

Типы данных: логический

Извлеките спектральный эксцесс, заданный как true или false.

Спектральный эксцесс вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральную точку спада, заданную как true или false.

Спектральная точка спада вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Чтобы установить параметры спектральной экстракции точки спада, используйте setExtractorParams:

setExtractorParams(aFE,"spectralRolloffPoint","Name",Value)
Устанавливаемые параметры для спектральной экстракции потока:

  • "Threshold" – Порог точки спада, заданной как разделенная запятой пара, состоящая из "Threshold" и скаляр в области значений (0, 1). Если незаданный, Threshold значения по умолчанию к 0.95.

Типы данных: логический

Извлеките спектральную скошенность, заданную как true или false.

Спектральная скошенность вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральный наклон, заданный как true или false.

Спектральный наклон вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките спектральное распространение, заданное как true или false.

Спектральное распространение вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:

Типы данных: логический

Извлеките подачу, заданную как true или false.

Чтобы установить параметры экстракции подачи, используйте setExtractorParams:

setExtractorParams(aFE,"pitch","Name",Value)
Устанавливаемые параметры для экстракции подачи:

  • "Method" – Метод раньше вычислял подачу, заданную как разделенная запятой пара, состоящая из "Method" и "PEF", "NCF", "CEP", "LHS", или "SRH". Если незаданный, Method значения по умолчанию к "NCF". Для описания доступных методов экстракции подачи смотрите pitch.

  • "Range" – Расположитесь в искать подачу в Гц, заданном как разделенная запятой пара, состоящая из "Range" и двухэлементный вектор-строка из увеличения значений. Если незаданный, Range значения по умолчанию к [50,400].

  • "MedianFilterLength" – Средняя длина фильтра раньше сглаживала оценки подачи в зависимости от времени, заданный как разделенная запятой пара, состоящая из "MedianFilterLength" и положительное целое число. Если незаданный, MedianFilterLength значения по умолчанию к 1 (никакая медианная фильтрация).

Типы данных: логический

Извлеките гармоническое отношение, заданное как true или false.

Типы данных: логический

Функции объекта

extractИзвлеките функции аудио
setExtractorParamsУстановите значения параметров не по умолчанию для отдельных экстракторов функции
infoВыведите отображение и отдельные параметры экстрактора функции

Примеры

свернуть все

Читайте в звуковом сигнале.

[audioIn,fs] = audioread("Counting-16-44p1-mono-15secs.wav");

Создайте audioFeatureExtractor возразите, что извлекает MFCC, дельта MFCC, дельта дельты MFCC, подача и спектральный центроид звукового сигнала. Используйте аналитическое окно на 30 мс с перекрытием на 20 мс.

aFE = audioFeatureExtractor( ...
    "SampleRate",fs, ...
    "Window",hamming(round(0.03*fs),"periodic"), ...
    "OverlapLength",round(0.02*fs), ...
    "mfcc",true, ...
    "mfccDelta",true, ...
    "mfccDeltaDelta",true, ...
    "pitch",true, ...
    "spectralCentroid",true);

Вызовите extract извлекать функции аудио из звукового сигнала.

features = extract(aFE,audioIn);

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

idx = info(aFE)
idx = struct with fields:
                mfcc: [1 2 3 4 5 6 7 8 9 10 11 12 13]
           mfccDelta: [14 15 16 17 18 19 20 21 22 23 24 25 26]
      mfccDeltaDelta: [27 28 29 30 31 32 33 34 35 36 37 38 39]
    spectralCentroid: 40
               pitch: 41

Стройте обнаруженную подачу в зависимости от времени.

t = linspace(0,size(audioIn,1)/fs,size(features,1));
plot(t,features(:,idx.pitch))
title('Pitch')
xlabel('Time (s)')
ylabel('Frequency (Hz)')

Создайте аудио datastore, который указывает на аудиосэмплы, включенные с Audio Toolbox®.

folder = fullfile(matlabroot,'toolbox','audio','samples');
ads = audioDatastore(folder);

Найдите все файлы, которые соответствуют частоте дискретизации 44,1 кГц и затем subset datastore.

keepFile = cellfun(@(x)contains(x,'44p1'),ads.Files);
ads = subset(ads,keepFile);

Преобразуйте данные в tall массив. tall массивы оценены только, когда вы запрашиваете их явным образом использование gather. MATLAB® автоматически оптимизирует вычисления в очереди путем минимизации количества проходов через данные. Если у вас есть Parallel Computing Toolbox™, можно распространить вычисления через несколько машин. Аудиоданные представлены как высокий массив ячеек M-1, где M является количеством файлов в аудио datastore.

adsTall = tall(ads)
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).

adsTall =

  Mx1 tall cell array

    { 539648x1 double}
    { 227497x1 double}
    {   8000x1 double}
    { 685056x1 double}
    { 882688x2 double}
    {1116283x2 double}
    { 505726x2 double}
    {3195904x2 double}
        :         :
        :         :

Создайте audioFeatureExtractor возразите, чтобы извлечь mel спектр, спектр Коры, спектр ERB и линейный спектр от каждого звукового файла. Используйте аналитическое окно по умолчанию и длину перекрытия для экстракции спектра.

aFE = audioFeatureExtractor('SampleRate',44.1e3, ...
    'melSpectrum',true, ...
    'barkSpectrum',true, ...
    'erbSpectrum',true, ...
    'linearSpectrum',true);

Задайте cellfun функционируйте так, чтобы функции аудио были извлечены из каждой ячейки длинного массива. Вызовите gather оценивать длинный массив.

specsTall = cellfun(@(x)extract(aFE,x),adsTall,"UniformOutput",false);
specs = gather(specsTall);
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: Completed in 10 sec
Evaluation completed in 10 sec

specs переменная, возвращенная из, собирается, numFiles-1 массив ячеек, где numFiles является количеством файлов в datastore. Каждый элемент массива ячеек является numHops numFeatures numChannels массивом, где количество транзитных участков и количество каналов зависят от длины и количества каналов звукового файла, и количество функций является требуемым количеством функций от аудиоданных.

numFiles = numel(specs)
numFiles = 12
[numHops1,numFeaturesFile1,numChanelsFile1] = size(specs{1})
numHops1 = 1053
numFeaturesFile1 = 620
numChanelsFile1 = 1
[numHops2,numFeaturesFile2,numChanelsFile2] = size(specs{2})
numHops2 = 443
numFeaturesFile2 = 620
numChanelsFile2 = 1

Алгоритмы

audioFeatureExtractor создает конвейер извлечения признаков на основе ваших выбранных функций. Уменьшать расчеты, audioFeatureExtractor представления посредника повторных использований. Некоторые промежуточные представления могут быть выведены как функции:

Например, чтобы создать объект, который извлекает центроид спектра Коры, поток спектра Коры, подачи, гармоническое отношение и дельта дельты MFCC, задают audioFeatureExtractor как:

 aFE = audioFeatureExtractor( ...
     "SpectralDescriptorInput","barkSpectrum", ...
     "spectralCentroid",true, ...
     "spectralFlux",true, ...
     "pitch",true, ...
     "harmonicRatio",true, ...
     "mfccDeltaDelta",true)
aFE = 

  audioFeatureExtractor with properties:

   Properties
                     Window: [1024×1 double]
              OverlapLength: 512
                 SampleRate: 44100
                  FFTLength: []
    SpectralDescriptorInput: 'barkSpectrum'

   Enabled Features
     mfccDeltaDelta, spectralCentroid, spectralFlux, pitch, harmonicRatio

   Disabled Features
     linearSpectrum, melSpectrum, barkSpectrum, erbSpectrum, mfcc, mfccDelta
     gtcc, gtccDelta, gtccDeltaDelta, spectralCrest, spectralDecrease, spectralEntropy
     spectralFlatness, spectralKurtosis, spectralRolloffPoint, spectralSkewness, spectralSlope, spectralSpread


   To extract a feature, set the corresponding property to true.
   For example, obj.mfcc = true, adds mfcc to the list of enabled features.
Эта настройка соответствует подсвеченному конвейеру извлечения признаков:

Примечание

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

Введенный в R2019b