Оптимальная экстракция функции аудио
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.