Добавить пользовательский метод увеличения
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]
Укажите пользовательский алгоритм увеличения, применяющий розовый шум. 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'
Постройте график спектрограмм исходных и дополненных сигналов.
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)Создайте случайный последовательный аугментатор, который добавляет шум с диапазоном SNR от 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;
data.AugmentationInfo(augmentationToInspect)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;
data.AugmentationInfo(augmentationToInspect)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);
Добавление реверберации в качестве пользовательского алгоритма увеличения. applyReverb функция создает 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;
data.AugmentationInfo(augmentationToInspect)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 - Аудиоданные augmenteraudioDataAugmenter объектaudioDataAugmenter объект.
algorithmName - Наименование алгоритмаИмя алгоритма, указанное как символьный вектор или строка. algorithmName должно быть уникальным именем свойства в audioDataAugmenter, aug.
Типы данных: char | string
algorithmHandle - Дескриптор функции, реализующей пользовательский алгоритм увеличения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]}
Чтобы включить это свойство, задайте свойство AugingParameterSource для audioDataAugmenter объект в 'random'.
Типы данных: single | double | cell
'ParameterValue' - Значение параметра0 (по умолчанию) | скаляр | вектор | массив ячеек скаляров или векторовЗначение параметра, указанное как скаляр, вектор или массив ячеек скаляров или векторов.
Пример: 'ParameterValue',0
Пример: 'ParameterValue',[0,0.5,1]
Пример: 'ParameterValue',{0,20000}
Пример: 'ParameterValue',{[0,0.5,1],20000}
Чтобы включить это свойство, задайте свойство AugingParameterSource для audioDataAugmenter кому 'random'.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного номера: Да
audioDataAugmenter | removeAugmentationMethod | reverberator
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.