У меня есть следующая проблема: я хочу фильтр нижних частот 240 WAV файлов. Скрипт работает только до тех пор, пока не будут созданы звуковые фильтры с низким проходом и не будут показаны в списке объектов («..._ band»). Однако Praat не экспортирует их как файлы WAV. После выбора выходной папки я получаю предупреждающее сообщение «Команда« Получить количество строк », недоступных для текущего выбора».Как сохранить управляемые файлы WAV в списке объектов?
Одним словом, мой вопрос заключается в том, как я могу сохранить звуки WAV в списке объектов индивидуально с их новыми именами файлов? См. Также Screenshot.
Сценарий см. Ниже.
Большое вам спасибо за помощь!
Привет,
#determine praat version
ver1$ = left$(praatVersion$, (rindex(praatVersion$, ".")-1));
ver1 = 'ver1$'
if ver1 < 5.2
exit Please download a more recent version of Praat
endif
if ver1 == 5.2
ver2$ = right$(praatVersion$, length(praatVersion$) - (rindex(praatVersion$, ".")));
ver2 = 'ver2$'
if ver2 < 4
exit Please download a more recent version of Praat (minor)
endif
endif
beginPause ("Low-Pass Filter Instructions")
comment ("1. Select a folder containing the wave files to be low-pass filtered")
comment ("2. Wave files will be low-pass filtered (0 - 400 Hz)")
comment ("3. Select an output folder for the low-pass filtered wave files to be saved to")
comment ("Click 'Next' to begin")
clicked = endPause("Next", 1);
#wavefile folder path
sourceDir$ = chooseDirectory$ ("Select folder containing wave files")
if sourceDir$ == ""
exit Script exited. You did not select a folder.
else
sourceDir$ = sourceDir$ + "/";
endif
Create Strings as file list... list 'sourceDir$'/*.wav
numberOfFiles = Get number of strings
levels$ = ""
for ifile to numberOfFiles
select Strings list
currentList = selected ("Strings")
filename$ = Get string... ifile
Read from file... 'sourceDir$'/'filename$'
currentSound = selected ("Sound")
filterFreqRange = Filter (pass Hann band)... 0 400 20
select currentSound
Remove
endfor
select currentList
Remove
#output folder path - where the wave files get saved
outputDir$ = chooseDirectory$ ("Select folder to save wave files")
if outputDir$ == ""
exit Script exited. You did not select a folder.
else
outputDir$ = outputDir$ + "/";
endif
numberOfFiles = Get number of strings
for ifile to numberOfFiles
select Strings list
currentList = selected ("Strings")
filename$ = Get string... ifile
currentSound = selected ("Sound")
endif
Save as WAV file... 'outputDir$'/'filename$'
select currentSound
Remove
endfor
#clean up
select currentList
Remove
#clear the info window
clearinfo
#print success message
printline Successfully low-pass filtered 'numberOfFiles' wave files.
Благодарим вас за ответ. К сожалению, это не работает с вашим предложением. – username
Я правильно определил источник проблемы, но не ее степень. Оказывается, у вашего сценария было множество проблем с выбором. Я обновил свой ответ с рабочей версией вашего скрипта и некоторыми ссылками на дополнительные ресурсы. – jja
Большое спасибо за вашу помощь, jja !! Теперь он работает, единственное, что я изменил, это следующее: он сохранил звуки без окончания типа файла: 'Сохранить как WAV-файл: output_dir $ +"/"+ selected $ (" Sound ") +" .wav «' – username