Оптимальная экстракция функции аудио
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"
.
Типы данных: логический
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
.
"Normalization"
– Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization"
и "bandwidth"
или "area"
. Если незаданный, Normalization
значения по умолчанию к "bandwidth"
.
Типы данных: логический
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
.
"Normalization"
– Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization"
и "bandwidth"
или "area"
. Если незаданный, Normalization
значения по умолчанию к "bandwidth"
.
Типы данных: логический
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)))
"Normalization"
– Нормализация применилась к полосовым фильтрам, заданным как разделенная запятой пара, состоящая из "Normalization"
и "bandwidth"
или "area"
. Если незаданный, Normalization
значения по умолчанию к "bandwidth"
.
Типы данных: логический
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
значения по умолчанию к 2
. Этот параметр влияет на mfccDelta
и mfccDeltaDelta
функции.
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
значения по умолчанию к 2
. Этот параметр влияет на gtccDelta
и gtccDeltaDelta
функции.
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 | Выведите отображение и отдельные параметры экстрактора функции |
Читайте в звуковом сигнале.
[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
может не соответствовать настройке по умолчанию функций, выведенных соответствующими отдельными экстракторами функции.
Audio Labeler | audioDataAugmenter
| audioDatastore
| cellfun
| gather
| subset
| tall
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.