Задать параметры алгоритма увеличения
setAugmenterParams( устанавливает параметры алгоритма увеличения, связанного с aug,algorithmName,params)audioDataAugmenter объект.
setAugmenterParams( без aug,algorithmName)params аргумент восстанавливает algorithmName к их значениям по умолчанию.
Изменение параметров по умолчанию shiftPitch и stretchAudio алгоритмы увеличения.
Считывайте звуковой сигнал и слушайте его.
[audioIn,fs] = audioread('FemaleSpeech-16-8-mono-3secs.wav');
soundsc(audioIn,fs)Создание audioDataAugmenter объект, применяющий сдвиг шага 3 полутоны и временной отрезок с SpeedupFactor из 1.5.
aug = audioDataAugmenter('AugmentationParameterSource','specify', ... 'ApplyPitchShift',true, ... 'SemitoneShift',3, ... 'ApplyTimeStretch',true, ... 'SpeedupFactor',1.5, ... 'ApplyVolumeControl',false, ... 'ApplyAddNoise',false, ... 'ApplyTimeShift',false)
aug =
audioDataAugmenter with properties:
AugmentationMode: 'sequential'
AugmentationParameterSource: 'specify'
ApplyTimeStretch: 1
SpeedupFactor: 1.5000
ApplyPitchShift: 1
SemitoneShift: 3
ApplyVolumeControl: 0
ApplyAddNoise: 0
ApplyTimeShift: 0
Звонить setAugmenterParams для установки LockPhase и PreserveFormants параметры shiftPitch алгоритм увеличения до false. Установите LockPhase параметра stretchAudio алгоритм увеличения до false. Установите CepstralOrder параметра shiftPitch алгоритм для 30.
Увеличьте исходный сигнал и прислушайтесь к результату. Полученный файл имеет слышимое искажение, которое звучит неестественно. Просмотрите параметры алгоритмов увеличения.
setAugmenterParams(aug,'shiftPitch','LockPhase',false,'PreserveFormants',false,'CepstralOrder',30); setAugmenterParams(aug,'stretchAudio','LockPhase',false); data = augment(aug,audioIn,fs); pause(3) augmentationPre = data.Audio{1}; soundsc(augmentationPre,fs) data.AugmentationInfo(1)
ans = struct with fields:
SpeedupFactor: 1.5000
SemitoneShift: 3
augmenterParamsPre = getAugmenterParams(aug); augmenterParamsPre.stretchAudio
ans = struct with fields:
LockPhase: 0
augmenterParamsPre.shiftPitch
ans = struct with fields:
LockPhase: 0
PreserveFormants: 0
CepstralOrder: 30
Постройте график представления во временной области исходного и дополненного сигналов.
t = (0:(numel(audioIn)-1))/fs; taug = (0:(numel(augmentationPre)-1))/fs; plot(t,audioIn,taug,augmentationPre) legend("Original Audio","Augmented Audio") ylabel("Amplitude") xlabel("Time (s)")

Для частичной компенсации слышимого искажения и повышения точности алгоритмов увеличения примените формантную консервацию к shiftPitch алгоритм, применить фазовую блокировку к обоим алгоритмам и изменить кепстральный порядок shiftPitch алгоритм для 25. Прослушивание обработанного звука.
setAugmenterParams(aug,'shiftPitch','LockPhase',true,'PreserveFormants',true,'CepstralOrder',25); setAugmenterParams(aug,'stretchAudio','LockPhase',true); data = augment(aug,audioIn,fs); augmentationPost = data.Audio{1}; soundsc(augmentationPost,fs) data.AugmentationInfo(1)
ans = struct with fields:
SpeedupFactor: 1.5000
SemitoneShift: 3
augmenterParamsPost = getAugmenterParams(aug); augmenterParamsPost.stretchAudio
ans = struct with fields:
LockPhase: 1
augmenterParamsPost.shiftPitch
ans = struct with fields:
LockPhase: 1
PreserveFormants: 1
CepstralOrder: 25
Постройте график исходного звука, а также дополненных данных до и после сохранения форманта, фазовой блокировки и модификации кепстрального порядка.
taug = (0:(numel(augmentationPost)-1))/fs; plot(t,audioIn,taug,augmentationPre) hold on plot(taug,augmentationPost,'LineStyle',':') legend("Original Audio","Pre Formant Preservation," + ... " Phase-Locking, and Cepstral Order", ... "Post Formant Preservation, Phase-Locking, and Cepstral Order") ylabel("Amplitude") xlabel("Time (s)") legend('Location','best')

Верните параметры алгоритма увеличения к значениям по умолчанию. Звонить getAugmenterParams для отображения текущих значений параметров для audioAugmenter объект.
setAugmenterParams(aug,'shiftPitch') setAugmenterParams(aug,'stretchAudio') augmenterParamsDefault = getAugmenterParams(aug); augmenterParamsDefault.stretchAudio
ans = struct with fields:
LockPhase: 0
augmenterParamsDefault.shiftPitch
ans = struct with fields:
LockPhase: 0
PreserveFormants: 0
CepstralOrder: 30
aug - Аудиоданные augmenteraudioDataAugmenter объектAugmenter аудиоданных, указанный как audioDataAugmenter объект.
algorithmName - Наименование алгоритма'stretchAudio' | 'shiftPitch'Имя алгоритма, указанное как 'stretchAudio' или 'shiftPitch.
Примечание
Алгоритмы увеличения должны быть изменены независимо с помощью отдельных вызовов setAugmenterParams для каждого алгоритма.
Типы данных: char | string
params - Параметр, используемый с алгоритмом увеличенияИмя параметра, указанное как символьный вектор, строка или структурный массив. Значения параметров зависят от algorithmName. Определить params как одно из следующих:
При установке algorithmName кому 'stretchAudio', указать params как 'LockPhase' и true или false.
При установке algorithmName кому 'shiftPitch', указать params как одно или все из них:
'LockPhase' и true или false
'PreserveFormants' и true или false
'CepstralOrder' и положительное целое число
Пример: setAugmenterParams(aug,'shiftPitch','LockPhase',true,'PreserveFormants',false,'CepstralOrder',15) включает LockPhase параметр, отключает PreserveFormants и устанавливает кепстральный порядок 15 для shiftPitch алгоритм увеличения.
Типы данных: char | string | struct
addAugmentationMethod | audioDataAugmenter | augment | getAugmenterParams | removeAugmentationMethod
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.