Скрипты Praat: создание текстового файла

просто работаю с Praat в данный момент, и я пытаюсь написать сценарий, чтобы сделать следующее с коллекцией из 3 звуковых (повествовательных) файлов. Я справился с пунктом c), часть сценариев относительно проста. Чего я не понимаю, так это того, как записать его в текстовый файл с этими столбцами. Любая помощь будет здорово!

а) создать программу, которая извлекает все интервалы на телефонном уровне каждого из повествований 1–3, которые представляют гласные, метка которых представляет собой одну букву, сохраняя время. Мне нужно, чтобы каждый результирующий звук имел соответствующую метку, которая идентифицирует соответствующую гласную.

б) создает объект Formant (burg), соответствующий каждому из этих интервалов

c) вычисляет среднюю точку каждого объекта Formant

c) получает значения формант 1, 2 и 3 в каждой из этих средних точек

г) записывает текстовый файл со следующим заголовком:

Описание# Обозначение Средняя точка Время F1 F2 F3

и при этом соответствующая информация для каждой гласной


person user1374310    schedule 11.06.2012    source источник


Ответы (2)


Простой способ

Самый простой способ сделать это — записать свой вывод в объект Table, а затем использовать команду Praat Save to comma-separated file, чтобы сохранить его во внешнем файле. В приведенных ниже примерах используется новый (чуть более разумный) новый синтаксис, поэтому обязательно обновите Praat, прежде чем пробовать их (или попробуйте сокращенные версии в истории редактирования этого ответа).

Вот пример:

# Create a Table with no rows
table = Create Table with column names:
..."table", 0, "Narrative Label Midpoint Time F1 F2 F3"

for i to number_of_intervals
  # Assuming you have your Formant objects in an array named "burg"
  selectObject(burg[i])
  # Run your analysis here
  # For this example, I'm assuming values for the columns are in
  # variables called narrative$, label$, midpoint, time, f1, f2 and f3

  selectObject(table)
  Append row
  current_row = Get number of rows
  # Insert your values
  Set string value:  current_row, "Narrative", narrative$
  Set string value:  current_row, "Label", label$
  Set numeric value: current_row, "Midpoint", midpoint 
  Set numeric value: current_row, "Time", time
  Set numeric value: current_row, "F1", f1 
  Set numeric value: current_row, "F2", f2
  Set numeric value: current_row, "F3", f3
endfor

# Save it!
# Remember to select it if the table is not the active selection at
# the end of the loop
Save to comma-separated file: /path/to/file
# And then you can get rid of it
removeObject(table)

Или вы можете использовать, если предпочитаете вкладки

Save to tab-separated file: /path/to/file

Обратите внимание, что этот метод не позволит вам использовать «Рассказ №» в качестве имени столбца.

Путь «l33t»

В качестве альтернативы вы можете использовать файловые директивы Praat для записи непосредственно в файл, как описано в документация:

sep$ = ","
# sep$ = tab$

# Create / overwrite file and write header
writeFileLine: "/path/to/file",
  ..."Narrative#" + sep$ +
  ..."Label"      + sep$ + 
  ..."Midpoint"   + sep$ +
  ..."Time"       + sep$ +
  ..."F1"         + sep$ +
  ..."F2"         + sep$ +
  ..."F3"

for i to number_of_intervals
  selectObject(burg[i])
  # Run your analysis here

  appendFileLine: "/path/to/file",
    ...narrative$        + sep$ +
    ...label$            + sep$ +
    ...string$(midpoint) + sep$ +
    ...string$(time)     + sep$ + 
    ...string$(f1)       + sep$ +
    ...string$(f2)       + sep$ +
    ...string$(f3)

endfor
person jja    schedule 19.02.2013

У группы пользователей Praat есть ответ на аналогичный вопрос здесь.

person user1491920    schedule 27.07.2012
comment
Хотя теоретически это может ответить на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки. - person Shawn Chin; 27.07.2012