Praat Scripts

Mithilfe eines Praat Scripts kann man zum Beispiel Daten extrahieren, Grafische Darstellungen von Konturen ausgeben und abspeichern sowie Daten etikettieren. Dieser Abschnitt liefert einen kleinen Überblick über die grundlegenden Konzepte der Praat Scriptsprache. Mit Praat Scripts kann man sowohl Arbeit als auch Zeit sparen. Vor allem, wenn man eine sehr große Menge an Daten verarbeiten muss oder eine bestimmte Aufgabe immer wieder machen muss.

Einführung

Praat Scripts führen Befehle aus, die bereits in Praat integriert sind. Ein Praat Script ist letztendlich nichts anderes, als eine Sammlung von Praat-Befehlen. Um sie auszurufen, muss man die entsprechenden Befehle auch kennen. Einige dieser Befehle findet man bereits in der Praat Oberfläche unter "Query" oder anderen Menüpunkten. Der Vorteil von Scripts ist, dass man automatisch eine Reihe von Befehlen auf Daten anwenden kann, ohne diese einzeln aufrufen zu müssen.

Kommentare

Freizeichen und Tabstops werden überlesen. Um sein Script nachvollziehen zu können, sollte jedes ausführlich kommentiert werden. Kommentare werden in Scripts mit einer Raute (#) beginnend hinzugefügt (siehe Beispiel (1)).

Beispiel (1):
# Hier beginnt das Praat Script
Play
Play
# Das Script spielt zweimal eine Sound Datei aus der Praat-Objects-Liste ab

Variablen

Praat kennt grundlegend zwei Typen von Variablen. Es gibt einerseits numerische Variablen, denen Zahlenwerte zugewiesen werden können. Andererseits gibt es String-Variablen, denen Zeichenketten übergeben werden können. Zu beachten ist, dass Variablennamen stets mit einem Kleinbuchstaben beginnen müssen. Beispiel 02 zeigt eine Zuweisung an eine numerische Variable, Beispiel 03 an eine Stringvariable ($).

Beispiel (2):
# Deklaration einer numerischen Variablen
testNumerische01 = 3
testNumerische02 = 0,5

Beispiel (3):
# Deklaration einer Stringvariablen
testStringvariable01$ = "Phonetik"
testStringvariable02$ = "Funktioniert auch mit Lücken"
fileName$ = "Test.wav"

Variablen werden direkt im Skript definiert bzw. es werden ihnen Werte zugewiesen. Die zweite Möglichkeit besteht darin, ein Ergebnis eines Kommandos einer Variablen zuzuweisen. In Beispiel (4) wird einer Variablen die Anzahl der Intervalle eines TextGrids übergeben.

Beispiel (4):
# Definition einer Variablen mit Zuweisung eines Wertes als Ergebnis aus einem Kommando;
# die Zahl gibt die Ebene der Intervalle an
intervals = Get numbers of intervals... 1

Die dritte Möglichkeit der Variablenbelegung besteht darin, dass man durch ein Formular am Anfang des Scriptes Wert in das Script hineingibt. Beispiel (5) zeigt dies.

Beispiel (5):
# Formularbeginn
form
word name
endform

# Die Variable kann dann im Script wie folgt verwendet werden
select 'name$'
Play

Schleifen

Mit Schleifen kann innerhalb eines Scripts ein Vorgang wiederholt werden. Mit der "for...to..." Schleife wird ein Vorgang solange wiederholt, bis eine Bedingung zutrifft. Formell wird die Schleife wie folgt definiert: for X from Y to Z. Ausformuliert lautet dies: Führe für den Zähler X, vom Startpunkt Y alles in der for-Schleife aus, bis die Bedingung Z erfüllt ist. Es gibt also eine Zählvariable, einen Start- und eine Endwert für die Variable. Die Variablen können folgendermaßen belegt werden:

In Beispiel (6) wird die "for...to..." Schleife verwendet, um die Startpunkte aller Intervalle einer Ebene auszugeben.

Beispiel (6):
# Der Befehl "Get numer of intervals" gibt die Zahl der Labels einer Intervall-Ebene zurück
# (Nummer der Ebene muss übergeben werden, hier: 2)
noi = Get number of intervals... 2
for i from 1 to noi
start = Get starting point... 2 i
printline Start = 'start'
endfor

Sprünge

Sprünge innerhalb eines Praat Scripts dienen dazu, Befehle unter bestimmten Bedingungen auszuführen. Die "if"-Anweisung wird dafür mit dem beginnenden Schlüsselwort "if" eingeleitet und endet mit einem "endif" Befehl. Ein konkretes Anwendungsbeispiel ist in Beispiel (7) gezeigt. Es werden in einer for-Schleife die Intervalle einer Ebene durchlaufen und dann geprüft, ob die Intervalle ein bestimmtes Label ("a") enthalten. Wenn die Labels ein "a" enthalten, wird "Label gefunden!" ausgegeben (printline), wenn nicht, dann passiert nichts.

Beispiel (7):
noi = Get number of intervals... Tier
for i from 1 to noi
label$ = Get label of interval... Tier i
if label$ == "a"
printline Label gefunden!
endif
endfor

Weitere nützliche Befehle: