Установите параметры алгоритма увеличения
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
алгоритм, применить фазовую автоподстройку к обоим алгоритмам и изменить порядок cepstral 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
- Увеличение аудиоданныхaudioDataAugmenter
объектAudio data 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
Параметр и устанавливает cepstral порядок 15 для shiftPitch
алгоритм увеличения.
Типы данных: char
| string
| struct
addAugmentationMethod
| audioDataAugmenter
| augment
| getAugmenterParams
| removeAugmentationMethod
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.