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

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