Как применить скрипт Praat к аудиофайлу? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь изменить форматы аудиофайла на praat в Colab. Я нашел скрипт , который делает это, это код и код для вычисления формантов . Я установил praat:

!sudo apt-get update -y -qqq --fix-missing && apt-get install -y -qqq praat > /dev/null
!wget -qqq http://www.praatvocaltoolkit.com/downloads/plugin_VocalToolkit.zip
!unzip -qqq /content/plugin_VocalToolkit.zip > /dev/null

with open('/content/script.praat', 'w') as f:
  f.write(r"""writeInfoLine: preferencesDirectory$""")

!praat /content/script.praat
/root/.praat-dir

!mv /content/plugin_VocalToolkit/* /root/.praat-dir

!praat --version
Praat 6.0.37 (February 3 2018)

Как применить этот скрипт к нескольким wav файлам без интерфейса пользователя, используя linux командную строку или python?

1 Ответ

1 голос
/ 04 апреля 2020

Общий ответ

Нет. Вы запускаете сценарий, и все зависит от сценария, как он работает, на каких объектах он работает, где эти объекты выбираются, как они выбираются и т. Д. c.

Так что вам всегда нужно смотреть о том, как применить указанный c сценарий, и это всегда влечет за собой выяснение того, как этот сценарий требует ввода и как добраться до этой точки.

конкретный c ответ

На странице нужного сценария написано

Эта команда [что-то делает] с каждым выбранным звуком

, поэтому первым делом нужно открыть нужные файлы и выберите их.

Предположим, вы будете работать с достаточным количеством звуков, чтобы открыть их все в одном go. Если вы работаете с большим количеством звуковых файлов или файлов, которые слишком велики для хранения в памяти, вам придется разбивать задание на более мелкие куски.

Один из способов сделать это - использовать обертку скрипт, который открывал ваши файлы, выбирал их и выполнял другой скрипт, который вы хотите:

# Get a list of all your files
files = Create Strings as file list: "list", "/some/path/*.wav"
total_files = Get number of strings

# Open each of them
for i to total_files
    selectObject: files
    filename$ = Get string: i
    sounds[i] = Read from file: "/some/path/" + filename$    
endfor

# Clear the selection
nocheck selectObject(undefined)

# Add each sound to your selection
for i to total_files
    plusObject: sounds[i]
endfor

# Run your script
runScript: path_to_script$, ...
# where the ... is the list of arguments your script expects

# In your specific case, it would be something like
runScript: preferencesDirectory$ + "/plugin_VocalToolkit/changeformants.praat",
    ... 500, 1500, 2500, 0,     0,    5500, "yes", "yes"
#      ,-´  ,-´  ,--´ ,--´    ,-´       ^     ^      ^
# New F1,  F2,  F3,  F4, and F5 means   |     |      |
#                               Max formant   |      |
#                       Process only voiced parts    |
#                             Retrieve intensity contour

# Do something with whatever the script gives you

Мой Praat довольно ржавый, но это должно, по крайней мере, дать вам представление о том, что делать (отказ от ответственности: у меня есть не запускайте ничего из вышеперечисленного, но с концепциями все должно быть в порядке).

С помощью этого скрипта-обёртки, который где-то хранится, вы можете запустить его из командной строки:

$ praat /path/to/wrapper.praat
...