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):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):testNumerische01 = 3
testNumerische02 = 0,5
Beispiel (3):
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):# 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):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:
- Zählvariable: Jede Variable möglich; Meistens "i" oder "j".
- Startwert der Zählvariable: Entweder eine Variable, die einen numerischen Wert enthält, oder aber auch direkt durch eine Zahl übernommen wird (so zum Beispiel 1).
- Endwert der Zählvariable: Gibt an, wie lang die Schleife durchlaufen wird; Muss entweder aus einer numerischen Variablen bestehen, oder aber mit einer Zahl bestimmt werden
In Beispiel (6) wird die "for...to..." Schleife verwendet, um die Startpunkte aller Intervalle einer Ebene auszugeben.
Beispiel (6):# (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):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:
- pause: Dieser Befehl erlaubt das Anhalten des Scriptes an der entsprechenden Stelle.
- echo oder printline: Diese Befehle steuern die Ausgabe von Text und Variablen im Info Window. Mit dem Befehl echo lässt sich darüber hinaus im Zusammenhang mit dem Befehl pause jeder Variablenwert ausgeben (sinnvoll bei der Fehlersuche).
- Create Strings as file list...: Mit diesem Befehl kann man Dateien als Liste einlesen um zum Beispiel das Script auf einen ganzen Ordner anzuwenden.
- fileappend Pfad Text: Dieser Befehl ermöglicht es, Informationen in Dateien zu schreiben, statt die Ergebnisse im Info Window auszugeben.
- Ein Script als Befehl in ein Praat Menü hinzufügen: Jedes Script kann als Befehl in ein Praat Menü eingebaut werden. Dazu befindet sich im Script Editor ein Fenster unter: File/Add to menu. Es gibt "fixed" Menüs, wie bspw. New, Read und Write im Objects Fenster. Daneben gibt es "dynamic" Menüs. Dies gilt aber nur für "LongSounds". Nach dem Hinzufügen, kann man im entsprechenden Menü den Befehl für das Praat Script finden und dieses direkt von dort aus starten. Alternativ kann man immer noch mit dem Script Editor über "Run/Run" das Script starten.