Оптимальная экстракция функции аудио
audioFeatureExtractor инкапсулирует несколько экстракторов функции аудио в оптимизированную и модульную реализацию.
создает экстрактор функции аудио со значениями свойств по умолчанию.aFE = audioFeatureExtractor()
задает свойства не по умолчанию для aFE = audioFeatureExtractor(Name,Value)aFE использование одного или нескольких аргументов пары "имя-значение".
Window — Окно Analysishamming(1024,"periodic") (значение по умолчанию) | вектор действительных чиселОкно Analysis в виде вектора действительных чисел.
Типы данных: single | double
OverlapLength — Перекройте длину смежных аналитических окон (значение по умолчанию) | целое число в области значений [0, numel (Window))Перекройте длину смежных аналитических окон в виде целого числа в области значений [0, numel(Window)).
Типы данных: single | double
FFTLength — Длина БПФ[] (значение по умолчанию) | положительное целое числоДлина БПФ в виде целого числа. Значение по умолчанию, [], средние значения, что длина БПФ равна длине окна, (numel(Window)).
Типы данных: single | double
SampleRate — Введите частоту дискретизации (Гц) (значение по умолчанию) | неотрицательный скалярВведите частоту дискретизации в Гц в виде неотрицательного скаляра.
Типы данных: single | double
SpectralDescriptorInput — Введите к спектральным дескрипторам"linearSpectrum" (значение по умолчанию) | "melSpectrum" | "barkSpectrum" | "erbSpectrum"Введите к спектральным дескрипторам в виде "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
linearSpectrum — Извлеките линейный спектрfalse (значение по умолчанию) | trueИзвлеките односторонний линейный спектр в виде 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.
Типы данных: логический
melSpectrum — Извлеките mel спектрfalse (значение по умолчанию) | trueИзвлеките односторонний 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.
"FilterBankNormalization" – Нормализация применилась к полосовым фильтрам в виде разделенной запятой пары, состоящей из "FilterBankNormalization" и "bandwidth"область, или "none". Если незаданный, FilterBankNormalization значения по умолчанию к "bandwidth".
"WindowNormalization" – Примените нормализацию окна в виде разделенной запятой пары, состоящей из "WindowNormalization" и true или false. Если незаданный, WindowNormalization значения по умолчанию к true.
"FilterBankDesignDomain" – Область, в которой набор фильтров спроектирован в виде разделенной запятой пары, состоящей из FilterBankDesignDomain и любой "linear" или "warped". Если незаданный, FilterBankDesignDomain значения по умолчанию к "linear".
Типы данных: логический
barkSpectrum — Извлеките спектр Корыfalse (значение по умолчанию) | trueИзвлеките односторонний спектр Коры в виде 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".
Типы данных: логический
erbSpectrum — Извлеките спектр ERBfalse (значение по умолчанию) | trueИзвлеките односторонний спектр ERB в виде true или false.
Чтобы установить параметры экстракции спектра ERB, использовать setExtractorParams:
setExtractorParams(aFE,"erbSpectrum","Name",Value)
"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.
Типы данных: логический
mfcc — Извлеките mel-частоту cepstral коэффициенты (MFCC)false (значение по умолчанию) | trueИзвлеките mel-частоту cepstral коэффициенты (MFCC) в виде true или false.
Чтобы установить параметры экстракции MFCC, использовать setExtractorParams:
setExtractorParams(aFE,"mfcc","Name",Value)
"NumCoeffs" – Количество коэффициентов, возвращенных для каждого окна в виде разделенная запятой пара, состоящая из "NumCoeffs" и положительное целое число. Если незаданный, NumCoeffs значения по умолчанию к 13.
"DeltaWindowLength" – Длина окна Delta в виде разделенной запятой пары, состоящей из "DeltaWindowLength" и нечетное целое число, больше, чем 2. Если незаданный, DeltaWindowLength значения по умолчанию к 9. Этот параметр влияет на mfccDelta и mfccDeltaDelta функции.
"Rectification" – Тип нелинейного исправления в виде разделенной запятой пары, состоящей из "Rectification" и "log" или "cubic-root".
Mel-частота cepstral коэффициенты вычисляется с помощью melSpectrum.
Типы данных: логический
mfccDelta — Извлеките дельту MFCCfalse (значение по умолчанию) | trueИзвлеките дельту MFCC в виде true или false.
Дельта MFCC вычисляется на основе извлеченного MFCC. Параметры устанавливаются на mfcc влияйте на mfccDelta.
Типы данных: логический
mfccDeltaDelta — Извлеките дельту дельты MFCCfalse (значение по умолчанию) | trueИзвлеките дельту дельты MFCC в виде true или false.
Дельта дельты MFCC вычисляется на основе извлеченного MFCC. Параметры устанавливаются на mfcc влияйте на mfccDeltaDelta.
Типы данных: логический
gtcc — Извлеките gammatone cepstral коэффициенты (GTCC)false (значение по умолчанию) | trueИзвлеките gammatone cepstral коэффициенты (GTCC) в виде true или false.
Чтобы установить параметры экстракции GTCC, использовать setExtractorParams:
setExtractorParams(aFE,"gtcc","Name",Value)
"NumCoeffs" – Количество коэффициентов, возвращенных для каждого окна в виде разделенная запятой пара, состоящая из "NumCoeffs" и положительное целое число. Если незаданный, NumCoeffs значения по умолчанию к 13.
"DeltaWindowLength" – Длина окна Delta в виде разделенной запятой пары, состоящей из "DeltaWindowLength" и нечетное целое число, больше, чем 2. Если незаданный, DeltaWindowLength значения по умолчанию к 9. Этот параметр влияет на gtccDelta и gtccDeltaDelta функции.
"Rectification" – Тип нелинейного исправления в виде разделенной запятой пары, состоящей из "Rectification" и "log" или "cubic-root".
gammatone cepstral коэффициенты вычисляются с помощью erbSpectrum.
Типы данных: логический
gtccDelta — Извлеките дельту GTCCfalse (значение по умолчанию) | trueИзвлеките дельту GTCC в виде true или false.
Дельта GTCC вычисляется на основе извлеченного GTCC. Параметры устанавливаются на gtcc влияйте на gtccDelta.
Типы данных: логический
gtccDeltaDelta — Извлеките дельту дельты GTCCfalse (значение по умолчанию) | trueИзвлеките дельту дельты GTCC в виде true или false.
Дельта дельты GTCC вычисляется на основе извлеченного GTCC. Параметры устанавливаются на gtcc влияйте на gtccDeltaDelta.
Типы данных: логический
spectralCentroid — Извлеките спектральный центроидfalse (значение по умолчанию) | trueИзвлеките спектральный центроид в виде true или false.
Спектральный центроид вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralCrest — Извлеките спектральный гребеньfalse (значение по умолчанию) | trueИзвлеките спектральный гребень в виде true или false.
Спектральный гребень вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralDecrease — Извлеките спектральное уменьшениеfalse (значение по умолчанию) | trueИзвлеките спектральное уменьшение в виде true или false.
Спектральное уменьшение вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralEntropy — Извлеките спектральную энтропиюfalse (значение по умолчанию) | trueИзвлеките спектральную энтропию в виде true или false.
Спектральная энтропия вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralFlatness — Извлеките спектральную плоскостьfalse (значение по умолчанию) | trueИзвлеките спектральную плоскость в виде true или false.
Спектральная плоскость вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralFlux — Извлеките спектральный потокfalse (значение по умолчанию) | trueИзвлеките спектральный поток в виде true или false.
Спектральный поток вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Чтобы установить параметры спектральной экстракции потока, использовать setExtractorParams:
setExtractorParams(aFE,"spectralFlux","Name",Value)
"NormType" – Тип нормы раньше вычислял спектральный поток в виде разделенной запятой пары, состоящей из "NormType" и 1 или 2. Если незаданный, NormType значения по умолчанию к 2.
Типы данных: логический
spectralKurtosis — Извлеките спектральный эксцессfalse (значение по умолчанию) | trueИзвлеките спектральный эксцесс в виде true или false.
Спектральный эксцесс вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralRolloffPoint — Извлеките спектральную точку спадаfalse (значение по умолчанию) | trueИзвлеките спектральную точку спада в виде true или false.
Спектральная точка спада вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Чтобы установить параметры спектральной экстракции точки спада, использовать setExtractorParams:
setExtractorParams(aFE,"spectralRolloffPoint","Name",Value)
"Threshold" – Порог спада указывает в виде разделенной запятой пары, состоящей из "Threshold" и скаляр в области значений (0, 1). Если незаданный, Threshold значения по умолчанию к 0.95.
Типы данных: логический
spectralSkewness — Извлеките спектральную скошенностьfalse (значение по умолчанию) | trueИзвлеките спектральную скошенность в виде true или false.
Спектральная скошенность вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralSlope — Извлеките спектральный наклонfalse (значение по умолчанию) | trueИзвлеките спектральный наклон в виде true или false.
Спектральный наклон вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
spectralSpread — Извлеките спектральное распространениеfalse (значение по умолчанию) | trueИзвлеките спектральное распространение в виде true или false.
Спектральное распространение вычисляется на одно из следующих спектральных представлений, как задано свойством SpectralDescriptorInput:
Типы данных: логический
pitch — Извлеките подачуfalse (значение по умолчанию) | trueИзвлеките подачу в виде 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 (никакая медианная фильтрация).
Типы данных: логический
harmonicRatio — Извлеките гармоническое отношениеfalse (значение по умолчанию) | trueИзвлеките гармоническое отношение в виде 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)')

Создайте аудио 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
audioDelta функцией является теперь использованный для расчета mfccDelta, mfccDeltaDelta, gtccDelta, и gtccDeltaDelta. audioDelta алгоритм имеет различное поведение запуска, чем предыдущий алгоритм. Длина окна по умолчанию использовалась для расчета дельт, изменился от 2 к 9. Длина окна дельты 2 больше не поддерживается.
Указания и ограничения по применению:
Вы не можете сгенерировать код непосредственно от audioFeatureExtractor. Вы можете, сгенерировал код C/C++ от функции, возвращенной generateMATLABFunction.
Audio Labeler | audioDataAugmenter | audioDatastore | Извлеките функции аудио | vggishFeatures
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.