exponenta event banner

audioFeatureExtractor

Оптимизация извлечения звуковых функций

Описание

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

Создание

Описание

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

пример

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

Свойства

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

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

Окно анализа, указанное как реальный вектор.

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

Длина перекрытия соседних окон анализа, заданная как целое число в диапазоне [0, numel(Window)).

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

Длина FFT, заданная как целое число. Значение по умолчанию, [], означает, что длина БПФ равна длине окна, (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.

Типы данных: logical

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

Для задания параметров выделения спектра металла используйте 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", "area", или "none". Если не указано, FilterBankNormalization по умолчанию: "bandwidth".

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

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

Типы данных: logical

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

Для задания параметров выделения спектра Барка setExtractorParams:

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

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

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

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

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

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

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

Типы данных: logical

Извлечь односторонний спектр 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 по умолчанию: ceil(hz2erb(FrequencyRange(2))-hz2erb(FrequencyRange(1))).

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

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

Типы данных: logical

Извлечь кепстральные коэффициенты частоты (MFCC), указанные как true или false.

Для установки параметров извлечения MFCC используйте setExtractorParams:

setExtractorParams(aFE,"mfcc","Name",Value)
Настраиваемые параметры для извлечения MFCC:

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

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

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

Кепстральные коэффициенты mel-частоты вычисляются с использованием melSpectrum.

Типы данных: logical

Извлечь дельту МФКК, указанную как true или false.

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

Типы данных: logical

Извлечь дельта-дельту MFCC, указанный как true или false.

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

Типы данных: logical

Извлечь кепстральные коэффициенты гамматона (GTCC), указанные как true или false.

Для установки параметров извлечения GTCC используйте setExtractorParams:

setExtractorParams(aFE,"gtcc","Name",Value)
Настраиваемые параметры для извлечения GTCC:

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

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

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

Кэпстральные коэффициенты гамматона вычисляются с использованием erbSpectrum.

Типы данных: logical

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

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

Типы данных: logical

Извлечь дельта-дельту GTCC, указанный как true или false.

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Для задания параметров выделения спектрального потока используйте setExtractorParams:

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

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

Типы данных: logical

Экстрактный спектральный куртоз, указанный как true или false.

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

Типы данных: logical

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

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

Для установки параметров извлечения точки спектрального отката используйте setExtractorParams:

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

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

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

Типы данных: logical

Извлечь шаг, указанный как 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 (без медианной фильтрации).

Типы данных: logical

Коэффициент гармоник извлечения, указанный как true или false.

Типы данных: logical

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

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.

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

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

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

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

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

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, спектр Bark, спектр 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-by-1, где numFiles - количество файлов в хранилище данных. Каждый элемент массива ячеек является массивом numHops-by-numFeatures-by-numChannel, где количество переходов и количество каналов зависит от длины и количества каналов аудиофайла, а количество функций является запрошенным количеством функций из аудиоданных.

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