Извлечь текст из файла тона Praat в другой текстовый файл

Мне было интересно, могут ли некоторые помочь мне с хитрой вещью, которая извлекает время и частоту контура пата Пата в текстовый файл.

Я начинаю с

File type = "ooTextFile"
Object class = "Pitch 1"

xmin = 0 
xmax = 1.592 
nx = 159 
dx = 0.01 
x1 = 0.006002267573695814 
ceiling = 1900 
maxnCandidates = 2 
frame []: 
    frame [1]:
        intensity = 0 
        nCandidates = 1 
        candidate []: 
            candidate [1]:
                frequency = 0 
                strength = 0.9 
    frame [2]:
        intensity = 0 
        nCandidates = 1 
        candidate []: 
            candidate [1]:
                frequency = 0 
                strength = 0.9 
    frame [3]:
        intensity = 0 
        nCandidates = 1 
        candidate []: 
            candidate [1]:
                frequency = 763.0480724135344 
                strength = 0.9 
    frame [4]:
        intensity = 0 
        nCandidates = 1 
        candidate []: 
            candidate [1]:
                frequency = 763.3612753914916 
                strength = 0.9 
....

и я хотел бы перейти к:

0,0
t1,0
t2,763.0480724135344
t3,763.3612753914916 
....
tn, ...

Также было бы здорово, если бы скрипт мог прочитать информацию в "dx =" и вычислить время для координат х.

Заранее спасибо за помощь.

1 ответ

Я работал над некоторыми процедурами для быстрого преобразования различных типов объектов в представления их таблиц, и Pitch объекты относительно просты. Попробуй это:

# Execute this with your Pitch object selected
@pitchToTable()

procedure pitchToTable ()
  .obj = selected("Pitch")
  .name$ = extractWord$(selected$(), " ")
  .t1 = Get time from frame number: 1
  .m1  = To Matrix
  .m2  = Transpose
  .tor = To TableOfReal
  .id  = To Table: "Time"
  Set column label (index): 2, "F0"
  Formula: "Time", "'.t1' + (Object_'.obj'.dx * (row - 1))"
  Formula: "F0", "if self then self else undefined fi"
  Rename: .name$ + "_pitch"
  removeObject: .m1, .m2, .tor
endproc

Преобразование использует тот факт, что большинство объектов Praat можно привести к объекту Matrix, который уже является таблицей. В этом случае единственные манипуляции, которые необходимо выполнить, - это транспонирование (чтобы иметь вертикальную таблицу) и переименование столбцов.

Другие вопросы по тегам