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