Добавьте пользовательский метод увеличения
addAugmentationMethod(
добавляет пользовательский алгоритм увеличения в aug
,algorithmName
,algorithmHandle
)audioDataAugmenter
объект.
addAugmentationMethod(
задает опции с использованием одного или нескольких aug
,algorithmName
,algorithmHandle
,Name,Value
)Name,Value
аргументы в виде пар.
Можно расширить возможности audioDataAugmenter
путем добавления пользовательских методов увеличения.
Считывайте аудиосигнал и слушайте его.
[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');
sound(audioIn,fs)
Создайте audioDataAugmenter
объект. Установите вероятность применения белого шума в 0
.
augmenter = audioDataAugmenter('AddNoiseProbability',0)
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 VolumeGainRange: [-3 3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 0.0050]
Задайте пользовательский алгоритм увеличения, который применяет розовый шум. The AddPinkNoise
алгоритм добавляется к augmenter
свойства.
algorithmName = 'AddPinkNoise'; algorithmHandle = @(x)x+pinknoise(size(x),'like',x); addAugmentationMethod(augmenter,algorithmName,algorithmHandle) augmenter
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 VolumeGainRange: [-3 3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 0.0050] AddPinkNoiseProbability: 0.5000
Установите вероятность добавления розового шума равной 1
.
augmenter.AddPinkNoiseProbability = 1
augmenter = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 1 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 VolumeGainRange: [-3 3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 0.0050] AddPinkNoiseProbability: 1
Увеличьте исходный сигнал и прослушайте результат. Осмотрите параметры примененных алгоритмов увеличения.
data = augment(augmenter,audioIn,fs); sound(data.Audio{1},fs) data.AugmentationInfo(1)
ans = struct with fields:
SpeedupFactor: 1
SemitoneShift: 0
VolumeGain: 2.4803
TimeShift: -0.0022
AddPinkNoise: 'Applied'
Постройте график спектрограмм mel исходных и дополненных сигналов.
melSpectrogram(audioIn,fs)
title('Original Signal')
melSpectrogram(data.Audio{1},fs)
title('Augmented Signal')
В этом примере вы добавляете пользовательский метод увеличения, который применяет медианную фильтрацию к вашему аудио.
Считывайте аудиосигнал и слушайте его.
[audioIn,fs] = audioread("Counting-16-44p1-mono-15secs.wav");
sound(audioIn,fs)
Создайте случайный последовательный увеличитель, который добавляет шум с областью значений ОСШ от 5 дБ до 10 дБ. Установите вероятность применения регулирования объема, растяжения времени, перемены тангажа и сдвига времени на 0
. Задайте NumAugmentations
на 4
чтобы создать 4 отдельных увеличения.
aug = audioDataAugmenter('NumAugmentations',4, ... "AddNoiseProbability",1, ... "SNRRange",[5,10], ... "VolumeControlProbability",0, ... "TimeStretchProbability",0, ... "TimeShiftProbability",0, ... "PitchShiftProbability",0)
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 4 TimeStretchProbability: 0 PitchShiftProbability: 0 VolumeControlProbability: 0 AddNoiseProbability: 1 SNRRange: [5 10] TimeShiftProbability: 0
Функции addAugmentationMethod
с именем алгоритма и указателем на функцию. Задайте имя алгоритма следующим MedianFilter
и указатель на функцию как movmedian
с длиной окна 3 элемента. Увеличение добавляется к свойствам вашего audioDataAugmenter
объект.
algorithmName = 'MedianFilter';
algorithmHandle = @(x)(movmedian(x,100));
addAugmentationMethod(aug,algorithmName,algorithmHandle)
aug
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 4 TimeStretchProbability: 0 PitchShiftProbability: 0 VolumeControlProbability: 0 AddNoiseProbability: 1 SNRRange: [5 10] TimeShiftProbability: 0 MedianFilterProbability: 0.5000
Установите вероятность применения медианной фильтрации в 80%.
aug.MedianFilterProbability = 0.8
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 4 TimeStretchProbability: 0 PitchShiftProbability: 0 VolumeControlProbability: 0 AddNoiseProbability: 1 SNRRange: [5 10] TimeShiftProbability: 0 MedianFilterProbability: 0.8000
Функции augment
на аудио, чтобы создать 4 увеличения.
data = augment(aug,audioIn,fs);
Можно проверить строение параметров каждого увеличения с помощью AugmentationInfo
табличная переменная. Если для увеличения применялась медианная фильтрация, то AugmentationInfo
перечисляет параметр следующим 'Applied'
. Если медианная фильтрация не применялась для увеличения, то AugmentationInfo
перечисляет параметр следующим 'Bypassed'
.
augmentationToInspect = 2;
Данные .AugmentationInfo (aughmentationToInspect)
ans = struct with fields:
SNR: 9.5787
MedianFilter: 'Applied'
Слушайте аудио, которое вы проверяете. Постройте график представления исходных и дополненных сигналов во временной области.
augmentation = data.Audio{augmentationToInspect}; sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs; taug = (0:(numel(augmentation)-1))/fs; plot(t,audioIn,taug,augmentation) legend("Original Audio","Augmented Audio") ylabel("Amplitude") xlabel("Time (s)")
Можно задать дополнительные параметры и соответствующие области значений параметров (для использования при AugmentationParamterSource
установлено на 'random'
) и значений параметров (для использования при AugmentationParamterSource
установлено на 'specify'
). Вы должны задать дополнительные параметры, области значений параметров и значения параметров во время вызова addAugmentationMethod
.
Функции removeAugmentationMethod
чтобы удалить MedianFilter
СПОСОБ УВЕЛИЧЕНИЯ. Функции addAugmentationMethod
снова на этот раз задает параметр увеличения, область значений параметров и значение параметров. Увеличение и область значений параметров добавляются к свойствам вашего audioDataAugmenter
объект.
removeAugmentationMethod(aug,'MedianFilter') algorithmName = 'MedianFilter'; augmentationParameter = 'MedianFilterWindowLength'; parameterRange = [1,200]; parameterValue = 100; algorithmHandle = @(x,k)(movmedian(x,k)); addAugmentationMethod(aug,algorithmName,algorithmHandle, ... 'AugmentationParameter',augmentationParameter, ... 'ParameterRange',parameterRange, ... 'ParameterValue',parameterValue) aug
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 4 TimeStretchProbability: 0 PitchShiftProbability: 0 VolumeControlProbability: 0 AddNoiseProbability: 1 SNRRange: [5 10] TimeShiftProbability: 0 MedianFilterProbability: 0.5000 MedianFilterWindowLengthRange: [1 200]
В текущем строении трубопровода увеличения значение параметров не применимо. ParameterValue
применяется, когда AugmetnationParameterSource
установлено на 'specify'
. Задайте AugmentationParameterSource
на 'specify'
чтобы включить текущее значение параметров.
aug.AugmentationParameterSource = 'specify'
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'specify' ApplyTimeStretch: 1 SpeedupFactor: 0.8000 ApplyPitchShift: 1 SemitoneShift: -3 ApplyVolumeControl: 1 VolumeGain: -3 ApplyAddNoise: 1 SNR: 5 ApplyTimeShift: 1 TimeShift: 0.0050 ApplyMedianFilter: 1 MedianFilterWindowLength: 100
Задайте AugmentationParameterSource
на random
а затем позвоните augment
.
aug.AugmentationParameterSource = "random";
data = augment(aug,audioIn,fs);
Если для увеличения применялась медианная фильтрация, то AugmentationInfo
В перечислено примененное значение.
augmentationToInspect = 3;
Данные .AugmentationInfo (aughmentationToInspect)
ans = struct with fields:
SNR: 8.7701
MedianFilter: 117.9847
Слушайте аудио, которое вы проверяете. Постройте график представления исходных и дополненных сигналов во временной области.
augmentation = data.Audio{augmentationToInspect}; sound(augmentation,fs) t = (0:(numel(audioIn)-1))/fs; taug = (0:(numel(augmentation)-1))/fs; plot(t,audioIn,taug,augmentation) legend("Original Audio","Augmented Audio") ylabel("Amplitude") xlabel("Time (s)")
Считывайте аудиосигнал и слушайте его.
[audioIn,fs] = audioread('RockDrums-44p1-stereo-11secs.mp3');
sound(audioIn,fs)
Создание и audioDataAugmenter
объект, который выводит 5 увеличений. Установите AddNoiseProbability
на 0
.
aug = audioDataAugmenter('NumAugmentations',5,'AddNoiseProbability',0);
Добавьте реверберацию как пользовательский алгоритм увеличения. The applyReverb
функция создает reverberator
объект, обновляет частоту дискретизации, предварительную задержку и влажную/сухую смесь, как указано, и затем применяет реверберацию. Чтобы минимизировать вычислительные накладные расходы, объект reverberator является постоянным. Объект сбрасывается при каждом вызове, чтобы избежать смешения хвоста реверберации между аудио файлов.
type applyReverb.m
function audioOut = applyReverb(audio,preDelay,wetDryMix,sampleRate) persistent reverbObject if isempty(reverbObject) reverbObject = reverberator; end reverbObject.SampleRate = sampleRate; reverbObject.PreDelay = preDelay; reverbObject.WetDryMix = wetDryMix; audioOut = reverbObject(audio); reset(reverbObject) end
Добавить applyReverb
как пользовательский метод увеличения. Чтобы задать несколько параметров для пользовательского метода, задайте параметры, области значений параметров и значения параметров как массивы ячеек с таким же количеством камер. Установите вероятность применения реверберации в 1
.
algorithmName = 'Reverb'; algorithmHandle = @(x,preDelay,weDryMix)applyReverb(x,preDelay,weDryMix,fs); parameters = {'PreDelay','WetDryMix'}; parameterRanges = {[0,1],[0,1]}; parameterValues = {0,0.3}; addAugmentationMethod(aug,algorithmName,algorithmHandle, ... 'AugmentationParameter',parameters, ... 'ParameterRange',parameterRanges, ... 'ParameterValue',parameterValues) aug.ReverbProbability = 1
aug = audioDataAugmenter with properties: AugmentationMode: 'sequential' AugmentationParameterSource: 'random' NumAugmentations: 5 TimeStretchProbability: 0.5000 SpeedupFactorRange: [0.8000 1.2000] PitchShiftProbability: 0.5000 SemitoneShiftRange: [-2 2] VolumeControlProbability: 0.5000 VolumeGainRange: [-3 3] AddNoiseProbability: 0 TimeShiftProbability: 0.5000 TimeShiftRange: [-0.0050 0.0050] ReverbProbability: 1 PreDelayRange: [0 1] WetDryMixRange: [0 1]
Функции augment
для создания 5 дополнений.
data = augment(aug,audioIn,fs);
Проверьте строение каждого увеличения с помощью AugmentationInfo
.
augmentationToInspect = 1;
Данные .AugmentationInfo (aughmentationToInspect)
ans = struct with fields:
SpeedupFactor: 1
SemitoneShift: -1.4325
VolumeGain: 0
TimeShift: 0
Reverb: [0.2760 0.4984]
Слушайте аудио, которое вы проверяете. Постройте график представления исходных и дополненных сигналов во временной области.
augmentation = data.Audio{augmentationToInspect}; sound(augmentation,fs) t = (0:(size(audioIn,1)-1))/fs; taug = (0:(size(augmentation,1)-1))/fs; plot(t,audioIn(:,1),taug,augmentation(:,1)) legend("Original Audio","Augmented Audio") ylabel("Amplitude") xlabel("Time (s)")
aug
- Увеличение аудиоданныхaudioDataAugmenter
объектaudioDataAugmenter
объект.
algorithmName
- Имя алгоритмаИмя алгоритма, заданное как вектор символов или строка. algorithmName
должно быть уникальным именем свойства на audioDataAugmenter
, aug
.
Типы данных: char
| string
algorithmHandle
- Handle to function, который реализует пользовательский алгоритм увеличенияfunction_handle
Указатель на функцию, которая реализует пользовательский алгоритм увеличения, заданный как function_handle
.
Типы данных: function_handle
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'AugmentationParameter,'PreDelay'
'AugmentationParameter'
- Параметр увеличенияПараметр увеличения, заданный как вектор символов, строка, массив ячеек из векторов символов или массив ячеек из строк.
Используйте массивы ячеек, чтобы создать несколько параметров увеличения. Если вы создаете несколько параметров увеличения, вы также должны задать ParameterRange
и ParameterValue
как массивы ячеек, содержащие информацию для каждого параметра увеличения.
Пример: 'AugmentationParameter','PreDelay'
Пример: 'AugmentationParameter',{'PreDelay','HighCutFrequency'}
Типы данных: char
| string
'ParameterRange'
- область значений параметров[0,1]
(по умолчанию) | двухэлементный вектор недекретирующих значений | массив ячеек двухэлементных векторов недекретирующих значенийОбласть значений параметров, заданный как двухэлементный вектор неразрешающих значений (для единственного параметра) или массив ячеек из двухэлементных векторов неразрешающих значений (для нескольких параметров).
Пример: 'ParameterRange',[0,1]
Пример: 'ParameterRange',{[0,1],[20,20000]}
Чтобы включить это свойство, задайте свойство AugmentationParameterSource своего audioDataAugmenter
объект к 'random'
.
Типы данных: single
| double
| cell
'ParameterValue'
- Значение параметров0
(по умолчанию) | скалярный вектор | | массив ячеек из скаляров или векторовЗначение параметров, заданное как скаляр, вектор или массив ячеек скаляров или векторов.
Пример: 'ParameterValue',0
Пример: 'ParameterValue',[0,0.5,1]
Пример: 'ParameterValue',{0,20000}
Пример: 'ParameterValue',{[0,0.5,1],20000}
Чтобы включить это свойство, задайте свойство AugmentationParameterSource своего audioDataAugmenter
на 'random'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Поддержка комплексного числа: Да
audioDataAugmenter
| removeAugmentationMethod
| reverberator
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.