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