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".

  • "WindowNormalization" – Примените нормализацию окна в виде разделенной запятой пары, состоящей из "WindowNormalization" и true или false. Если незаданный, WindowNormalization значения по умолчанию к true.

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

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

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

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

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

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

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

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

  • "WindowNormalization" – Примените нормализацию окна в виде разделенной запятой пары, состоящей из "WindowNormalization" и true или false. Если незаданный, WindowNormalization значения по умолчанию к true.

  • "FilterBankDesignDomain" – Область, в которой набор фильтров спроектирован в виде разделенной запятой пары, состоящей из FilterBankDesignDomain и любой "linear" или "warped". Если незаданный, FilterBankDesignDomain значения по умолчанию к "linear".

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

Извлеките односторонний спектр Коры в виде 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.

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

  • "WindowNormalization" – Примените нормализацию окна в виде разделенной запятой пары, состоящей из "WindowNormalization" и true или false. Если незаданный, WindowNormalization значения по умолчанию к true.

  • "FilterBankDesignDomain" – Область, в которой набор фильтров спроектирован в виде разделенной запятой пары, состоящей из FilterBankDesignDomain и любой "linear" или "warped". Если незаданный, FilterBankDesignDomain значения по умолчанию к "linear".

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

Извлеките односторонний спектр 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))).

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

  • "WindowNormalization" – Примените нормализацию окна в виде разделенной запятой пары, состоящей из "WindowNormalization" и true или false. Если незаданный, WindowNormalization значения по умолчанию к true.

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

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

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

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

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

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

  • "Rectification" – Тип нелинейного исправления в виде разделенной запятой пары, состоящей из "Rectification" и "log" или "cubic-root".

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 значения по умолчанию к 9. Этот параметр влияет на gtccDelta и gtccDeltaDelta функции.

  • "Rectification" – Тип нелинейного исправления в виде разделенной запятой пары, состоящей из "Rectification" и "log" или "cubic-root".

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Выведите отображение и отдельные параметры экстрактора функции
generateMATLABFunctionСоздайте функцию MATLAB, совместимую с генерацией кода C/C++

Примеры

свернуть все

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

[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)')

Figure contains an axes. The axes with title Pitch contains an object of type line.

Создайте аудио 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: 6).

adsTall =

  M×1 tall cell array

    { 539648×1 double}
    { 227497×1 double}
    {   8000×1 double}
    { 685056×1 double}
    { 882688×2 double}
    {1115760×2 double}
    { 505200×2 double}
    {3195904×2 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 12 sec
Evaluation completed in 12 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 может не соответствовать настройке по умолчанию функций, выведенных соответствующими отдельными экстракторами функции.

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

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

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

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

Введенный в R2019b