Sie sind auf Seite 1von 143

Phonetische Analysen mit Praat

Ein Handbuch fr Ein und Umsteiger

Jrg Mayer

Vorabversion
(September 2009)

Phonetische Analysen mit Praat. Ein Handbuch fr Ein und Umsteiger. (Basiert auf der PraatVersion 5.1.xx) Dr. Jrg Mayer, 16. September 2009 (http://www.ims.uni-stuttgart.de/jmayer/resources.html)
A Erstellt mit LTEX

Kommentare, Wnsche, Tippfehlermeldungen etc. sind sehr willkommen! Email: joemayer@gmx.de

Praat: Doing Phonetics by Computer


Praat wird von Paul Boersma und David Weenink am Institute of Phonetic Sciences, University of Amsterdam entwickelt. Praat ist OpenSource und wird unter der GNU General Public License vertrieben. Es ist kostenlos unter folgender URL erhltlich:

www.praat.org
Die Highlights: Praat luft sehr stabil und schnell. Praat fr alle gngigen Betriebssysteme erhltlich und sehr unkompliziert zu installieren. Praat wird stndig und sehr engagiert gepegt und weiterentwickelt. Praat wendet sich ganz spezisch an Phonetiker und bietet fr diese recht kleine Zielgruppe eine berragende Funktionalitt.

Inhaltsverzeichnis
Hinweise 1 Praatologie 1.1 Alles ist ein Objekt . . . 1.2 Objekte sind vergnglich 1.3 Fenster . . . . . . . . . . 1.4 Skripte . . . . . . . . . . 1.5 Verschiedenes . . . . . . 11 13 14 15 16 18 19 21 21 21 22 22 24 24 26 26 26 29 32 34 35 35 37 37 38 38

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Grundlagen 2.1 Dateien und das ObjektFenster . . . . . . . . . . . . . . . 2.1.1 Dateien laden . . . . . . . . . . . . . . . . . . . . . 2.1.2 Dateien speichern . . . . . . . . . . . . . . . . . . . 2.1.3 Objekte verwalten . . . . . . . . . . . . . . . . . . 2.2 SoundObjekte erzeugen . . . . . . . . . . . . . . . . . . . 2.2.1 Aufnahmen erstellen mit Praat . . . . . . . . . . . . 2.2.2 Knstliche Signale mit einer Formel erzeugen . . . . 2.3 Editoren/SoundEditor . . . . . . . . . . . . . . . . . . . . 2.3.1 Fenster ffnen, Darstellung verndern und Abspielen 2.3.2 Signale editieren . . . . . . . . . . . . . . . . . . . 2.3.3 Analysen und Darstellungsoptionen im SoundEditor Spektrogramm . . . . . . . . . . . . . . . . . . . . Grundfrequenzverlauf . . . . . . . . . . . . . . . . Formantenverlauf . . . . . . . . . . . . . . . . . . . 2.4 Informationen, Daten und Hilfe . . . . . . . . . . . . . . . . 2.4.1 Das InfoFenster . . . . . . . . . . . . . . . . . . . 2.4.2 Der DatenEditor . . . . . . . . . . . . . . . . . . . 2.4.3 Hilfe . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

Graphiken erstellen 3.1 GraphikFenster und Viewports . . . . . . . . . . . . . 3.2 Graphiken erstellen mit Draw und Paint . . . . . . . . . 3.2.1 Graphikbefehle im ObjektFenster . . . . . . . . 3.2.2 Graphikbefehle im Editor . . . . . . . . . . . . 3.2.3 Graphikoptionen . . . . . . . . . . . . . . . . . 3.3 Einstellungen und Speicheroptionen im GraphikFenster 3.4 Graphiken ergnzen . . . . . . . . . . . . . . . . . . . . 3.4.1 Text und graphische Elemente . . . . . . . . . . 3.4.2 Achsen markieren und beschriften . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

39 39 42 42 42 43 44 45 46 47 49 49 49 51 56 63 63 64 65 68 68 70 71 73 76 79 79 81 85 86 88 93 93 94 98 99

Doing phonetics 4.1 Annotieren . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Das Prinzip . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Arbeiten mit TextGrids . . . . . . . . . . . . . . . . 4.1.3 Ein Beispiel Schritt fr Schritt . . . . . . . . . . 4.1.4 Ausblick: Einfache Skripte . . . . . . . . . . . . . . Intervall aus Auswahl . . . . . . . . . . . . . . . . . Mittelpunkt berechnen . . . . . . . . . . . . . . . . TextGrids automatisch auswerten . . . . . . . . . . 4.2 Formanten messen . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Die halbautomatische Methode . . . . . . . . . . . . Punktmessung . . . . . . . . . . . . . . . . . . . . Bereichsmessung . . . . . . . . . . . . . . . . . . . 4.2.2 Die manuelle Methode . . . . . . . . . . . . . . . . 4.2.3 Ein Beispiel Schritt fr Schritt . . . . . . . . . . 4.2.4 Ausblick: Einfache Skripte . . . . . . . . . . . . . . Maximum, Minimum und Mittelwert von Formanten ausgeben . . . . . . . . . . . . . . . . . . Graphische Darstellung des Vokalraums erstellen . . 4.3 Dauermessungen . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Die TextGridMethode . . . . . . . . . . . . . . . . 4.3.2 Ein Beispiel Schritt fr Schritt . . . . . . . . . . 4.3.3 Ausblick: Einfache Skripte . . . . . . . . . . . . . . Dauerwerte in ein Tabellenobjet schreiben . . . . . . Sprechgeschwindigkeit analysieren . . . . . . . . . 4.4 Grundfrequenzanalyse und Intonation . . . . . . . . . . . . 4.5 Stimmanalyse . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

PraatSkripte 5.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Einfhrung . . . . . . . . . . . . . . . . . . . . . . 5.1.2 Grundstruktur . . . . . . . . . . . . . . . . . . . . . 5.1.3 Die HistoryFunktion . . . . . . . . . . . . . . . . 5.1.4 SkriptUmgebungen und der SkriptEditor . . . . . 5.2 Die Praatpfanne . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Objekteigenschaften ermitteln und Variablen nutzen 5.2.2 Formulare fr Benutzereingaben . . . . . . . . . . . 5.2.3 Skriptausgaben . . . . . . . . . . . . . . . . . . . . 5.2.4 Dateien verwalten I . . . . . . . . . . . . . . . . . . 5.2.5 Schleifen . . . . . . . . . . . . . . . . . . . . . . . 5.2.6 Pausen, Formeln und Bedingungen . . . . . . . . . 5.2.7 Dateien verwalten II . . . . . . . . . . . . . . . . . 5.2.8 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . .

101 101 101 102 103 107 112 112 115 118 119 122 127 132 139 141 143

A HardwareEmpfehlungen fr hochwertige Aufnahmen B Kalibrierung zur Schalldruckpegelmessung

Abbildungsverzeichnis
2.1 2.2 2.3 3.1 3.2 3.3 4.1 4.2 Das ObjektFenster . . . . . . . . . . . . . . . . . . . . . . . 23 Der SoundEditor . . . . . . . . . . . . . . . . . . . . . . . . 28 Sound-Editor mit Spektrogramm und Grundfrequenzkontur . . 36 Graphiken erstellen mit Viewports . . . . . . . . . . . . . . . 41 Hochwertige Graphik, mit Praat erstellt . . . . . . . . . . . . 41 Plazierung von graphischen Elementen in einer Graphik . . . . 46 Ein annotiertes Signal . . . . . . . . . . . . . . . . . . . . . . 50 Der TextGridEditor . . . . . . . . . . . . . . . . . . . . . . 55

Hinweise
1
Da Praat stndig weiterentwickelt wird, kommen auch immer wieder neue Funktionen und Menbefehle hinzu. Wenn Sie also eine brandneue Praat Version heruntergeladen und installiert haben, kann es sein, dass sich Ihr Praat etwas anders verhlt als hier beschrieben und dass Ihre Mens etwas anders aussehen, als in den hier benutzten Bildschirmfotos. Versuchen Sie, sich dadurch nicht aus der Ruhe bringen zu lassen. . .

2
Alle Beispiele fr phonematische Transkriptionen, die Sie in den folgenden Kapiteln nden, sind in der SAMPANotation angefertigt. SAMPA ist eine ASCIIbasierte Lautschrift und daher sehr zuverlssig und unkompliziert anzuwenden. Mehr Informationen zu SAMPA nden Sie unter http://www.phon.ucl.ac.uk/home/sampa/home.htm Eine bersetzungstabelle zwischen IPA und SAMPASymbolen folgt auf der nchsten Seite.

IPA b d g p t k

SAMPA

IPA

SAMPA

IPA

SAMPA

Plosive b d g p t k

Affrikaten > pf pf > ts ts > tS tS > dZ dZ

Sonoranten m m n n N N l l j j /K R r/R r ungesp. Vokale I I Y Y E E 9 a a O O U U

Frikative f f v v s s z z S S Z Z C x x X X h h Diphtonge aI aI < aU aU < OY OY <

gesp. Vokale i i y y e e 2 a: a: o o u u

zentr. Vokale @ @ 5 6

Diakritika Dehnung i: i: silbische Kons. n =n "

Beispiele: IPA > pfEf5 l@K ZEni: laUgN < " SAMPA pfEf6 l9C@R ZEni: laUg=N

Pfeffer Lcher Genie Laugen

Kapitel 1 Praatologie
Wenn deine Einsicht meiner Lehre widerspricht, so sollst du deiner Einsicht folgen. Buddha

Wenn Sie anfangen, mit Praat zu arbeiten, sollten Sie eine gewisse Aufgeschlossenheit mitbringen. Das gilt fr alle Arten von PraatAnfngern: Solche, die schon mit anderer PhonetikSoftware Erfahrung haben, aber nun auf Praat umsteigen wollen/mssen; solche, die mit Computern und graphischen Benutzeroberchen umgehen knnen, aber noch nie mit einer Phonetik Software zu tun hatten; und solche, die generell nur wenig Computerkenntmisse mitbringen. Grund dafr sind einige Konzepte von Praat, die sich dem Benutzer nicht so ohne weiteres erschlieen, und insbesondere der ersten Gruppe von PraatAnfngern, also denen, die bereits mit Xwaves, Wavesurfer, Audacity oder hnlichen Programmen gearbeitet haben, bisweilen heftiges Stirnrunzeln verursachen. Diese Konzepte mssen Sie kennen dafr lesen Sie dieses Kapitel und Sie mssen Sie akzeptieren! Mehr noch als Neueinsteiger sollten sich also Umsteiger zunchst einmal von buddhistischen Weisheiten lsen: Wenn Sie Ihren bei der Arbeit mit Xwaves oder einem anderen Programm geformten Einsichten folgen anstatt der reinen PraatLehre, werden Sie mit Praat nicht glcklich (ich spreche aus Erfahrung. . . ). Der erfolgversprechende Weg ist stattdessen: Verinnerlichen Sie die PraatLehre, werden Sie Praatologe und justieren Sie Ihre Einsichten neu. Einmal Praatologe, drfen, nein sollen Sie es auch wieder mit Buddha halten: Wenn Ihre Einsicht meinen Ausfhrungen widerspricht, folgen Sie Ihrer Einsicht! Wie

Praatologie

immer bei komplexer Software fhren mehrere Wege zum Ziel und die von mir gewhlten sind mit Sicherheit nicht in jedem Fall die besten und schnellsten.

1.1

Alles ist ein Objekt

Alles, was Sie in Praat tun etwas laden, erstellen, analysieren, modizieren, annotieren usw. tun Sie mit Objekten. Wenn Sie eine wavDatei in Praat laden, erzeugen Sie damit ein SoundObjekt, das Sie z.B. abspielen, editieren oder analysieren knnen. Wenn Sie mit Praat eine Aufnahme erstellen, erzeugen Sie ebenfalls ein SoundObjekt. Wenn Sie eine Aufnahme transkribieren oder sonstwie annotieren wollen, erzeugen Sie ein sogenanntes TextGrid Objekt. Wenn Sie eine Grundfrequenzanalyse durchfhren, erzeugen Sie ein PitchObjekt usw. Praat hat sogar ein eigenes Fenster speziell fr den Umgang mit Objekten: Das ObjektFenster (Praat objects). Alle geladenen oder erzeugten Objekte, die Ihnen aktuell zur Verfgung stehen, werden in diesem Fenster aufgelistet und Sie nden dort Knpfe fr die Objektverwaltung (Umbenennen, Kopieren, Lschen etc.) sowie fr Objektaktionen (Anhren, Editieren, Annotieren, Manipulieren usw.). Dieses ObjektFenster ist das Hauptfenster von Praat. Wenn Sie Praat starten wird das ObjektFenster geffnet, wenn Sie das ObjektFenster schlieen, wird Praat beendet. Im Gegensatz z.B. zu einer Textverarbeitung, einer Tabellenkalkulation oder einem Bildbearbeitungsprogramm wird eine Datei, die Sie in Praat laden, nicht sofort dargestellt, sondern zunchst nur als Objekt in die Liste des ObjektFensters aufgenommen. Das ObjektFenster und das Vorgehen in Praat gleicht also eher dem Programmfenster von z.B. iTunes o..: Sie sehen nicht den Dateiinhalt (wie bei einem Text, einer Tabelle oder einem Bild), sondern eine Liste der verfgbaren Objekte; damit etwas passiert, mssen Sie aus dieser Liste ein (oder auch mehrere) Objekte auswhlen und dann eine Aktion whlen, z.B. Abspielen oder Anzeigen1 . Objekte verfgen ber einen Typ, einen Namen und eine Nummer. Alle drei Informationen werden in der ObjektListe angezeigt. Neben den bereits erPraat-Anfnger beklagen bisweilen, dass Praat bei ihnen nicht luft: Sie haben Praat heruntergeladen und knnen es auch starten, aber wenn sie eine Datei laden, tut sich nichts. Praatologen wissen: Es tut sich sehr wohl etwas wenn auch nicht das, was man erwartet. Die Datei wird nicht abgespielt oder angezeigt, sondern sie wird als Objekt in die ObjektListe aufgenommen. 14
1

Objekte sind vergnglich

whnten Typen Sound, TextGrid und Pitch gibt es noch zahlreiche weitere Typen, darunter Spectrum, Spectrogramm, Formants usw. Zu beachten ist, dass es in der ObjektListe mehrere Objekte desselben Typs und mit dem selben Namen geben kann! Um Verwirrung zu vermeiden, kann es sinnvoll sein, darauf zu achten, Objekten entweder schon bei ihrer Erzeugung einen eindeutigen Namen zu geben oder sie nach der Erzeugung entsprechend umzubenennen. Die ObjektNummer dagegen ist eindeutig. In PraatSkripten kann man darauf zurckgreifen, ansonsten spielt sie nur fr die Sortierung der Objekte in der ObjektListe eine Rolle. Diese Nummer wird fortlaufend vergeben und es gibt meines Wissens keine Mglichkeit, darauf Einuss zu nehmen oder diese nachtrglich zu verndern, d.h. an der Reihenfolge der Objekte in der Liste lsst sich nichts ndern.

1.2

Objekte sind vergnglich

Ein PraatObjekt, egal welchen Typs, wird in den Arbeitsspeicher des Computers geladen und existiert nur dort (Ausnahme: Dateien, die Sie in Praat geladen haben; die existieren natrlich auch noch auf der Festplatte, von wo Sie sie geladen haben). Bei nicht zu groen Objekten hat dies den Vorteil, dass alle ObjektOperationen, Analysen etc. recht zgig erledigt werden. Wenn der Arbeitsspeicher jedoch bei der Arbeit mit groen Objekten2 knapp wird, mssen Teile davon in eine spezielle Datei auf die Festplatte ausgelagert werden, was nicht nur Praat sondern das gesamte System stark verlangsamen kann. Dies sollte nach Mglichkeit verhindert werden. Fr sehr lange Aufnahmen bietet Praat daher die Option, die Datei nicht als Sound sondern als LongSoundObjekt zu laden. Bei LongSoundObjekten wird tatschlich immer nur soviel in den Arbeitsspeicher geladen, wie im Moment fr die Anzeige, das Abspielen oder eine andere Aktion bentigt wird. Allerdings lassen sich nicht alle Aktionen, die sich mit Sound-Objekten durchfhren lassen auch mit LongSoundObjekten durchfhren. Deshalb empehlt es sich in der Regel, lange Aufnahmen in handhabbare Portionen aufzuteilen und diese Portionen in einzelne Dateien abzuspeichern. Stichwort Abspeichern: Daten im Arbeitsspeicher des Computers sind nicht nur sehr schnell in der Bearbeitung sondern auch extrem vergnglich. Wenn Sie Praat beenden, wenn Praat abstrzt (was zum Glck sehr selten passiert)
2

Gro ist z.B. eine einstndige Stereoaufnahme in CDQualitt mit gut 700 MB. 15

Praatologie

oder wenn der Computer abstrzt sind die Daten unwiederbringlich verloren! Das bedeutet, alle Objekte, die Sie whrend einer PraatSitzung erzeugen und/oder verndern, existieren nur temporr und sind sptestens nach dem Beenden von Praat verloren. Wenn Sie sie nicht vorher abspeichern. Dummerweise ist das Abspeichern, also das Schreiben von Objekten auf die Festplatte, ein relativ aufwndiger Vorgang in Praat und nicht mit einem einfachen Tastendruck (z.B. StrgS) erledigt wie in den meisten anderen Programmen. Wie das Abspeichern genau funktioniert, erfahren Sie im nchsten Kapitel. Hier geht es zunchst nur darum, auf das Problem aufmerkam zu machen. Praat untersttzt natrlich auch kein automatisches Abspeichern alle paar Minuten, wie Sie es evtl. aus anderen Programmen kennen. Wenig hilfreich ist auch die Sicherheitsabfrage beim Beenden von Praat, die immer dann angezeigt wird, wenn die Objektliste beim Beenden nicht leer ist. Sie wird nmlich tatschlich immer angezeigt egal ob man die Objekte vorher ordentlich gespeichert hat oder nicht und daher nach den ersten paar PraatSitzungen meist nur noch gedankenlos weggeklickt. Und noch ein letzter Hinweis in dieser Sache:  Wenn Sie ein Objekt (oder Remove Knopf klicken, ist auch mehrere Objekte) auswhlen und auf den  das Objekt weg endgltig und ohne weitere Nachfrage! Das ist besonders  rgerlich, wenn Sie eigentlich auf den benachbarten  Rename. . . Knopf kli cken wollten. Die zwei Knpfe kann man nach einer Stunde konzentrierten Transkribierens schon mal verwechseln und so mit einem Klick eine Stunde Arbeit vernichten. Eine UndoFunktion zum Rckgngigmachen solcher Verklicker gibt es brigens nicht. . .

1.3

Fenster

Die grasche Benutzeroberche von Praat besteht nicht aus einem monolithischen Fenster, in dem alle mglichen Arbeiten ausgefhrt werden, sondern aus einer ganzen Reihe spezialisierter Fenster, in denen jeweils nur bestimmte Arbeiten erledigt werden knnen. Das wichtigste, das ObjektFenster, haben Sie bereits kennengelernt. Wenn Sie Praat starten, wird daneben ein weiteres Fenster, das GraphikFenster (Praat Picture) geffnet. In diesem Fenster (und nur in diesem Fenster) knnen Sie Graphiken erstellen, die dann entweder ausgedruckt oder als GraphikDatei abgespeichert werden knnen, um sie z.B. in ein Textdokument einzubinden. Fr andere Zwecke wird das Fenster
16

Fenster

nicht bentigt, d.h. Sie knnen es normalerweise direkt nachdem Sie Praat gestartet haben auch wieder schlieen und nur bei Bedarf erneut ffnen. Wichtiger sind die EditorFenster, wie z.B. der SoundEditor, in dem Sie ein Signal (Oszillogramm) anzeigen knnen, evtl. zusammen mit einem Spektrogramm, einer PitchKontur, einem Intensittsverlauf etc. Editor-Fenster werden geffnet, wenn Sie im ObjektFenster ein editierbares Objekt, z.B. ein  Edit klicken. Im EditorFenster erlediSoundObjekt, markieren und auf  gen Sie alle interaktiven Arbeiten mit einem Objekt: Hinein und Heraus Zoomen, Teile markieren/lschen/kopieren/einsetzen, Teile anhren, Analysen (z.B. Spektrogramm, Pitch. . . ) anzeigen und ausmessen, Zeitdauern messen, annotieren (transkribieren, kommentieren etc.) usw. Mit diesem Fenster werden Sie also vermutlich die meiste Zeit zu tun haben. Das ObjektFenster ist aber nach wie vor im Hintergrund vorhanden und Sie knnen dorthin wechsen, um z.B. ein weiteres Objekt in einem neuen EditorFenster zu ffnen. Das ObjektFenster (und das Graphik-Fenster) gibt es also nur einmal, von allen Editoren knnen Sie dagegen mehrere Instanzen erzeugen. So ist es u.a. mglich, zwei Signale (bzw. SoundObjekte) jeweils in einem eigenen EditorFenster darzustellen, um beispielsweise bestimmte Parameter zu vergleichen. Aber bedenken Sie, dass die EditorFenster nur der BildschirmDarstellung und der interaktiven Bearbeitung von Objekten dient. Wenn Sie einen Bearbeitungsschritt oder eine Analyse dokumentieren, d.h. ausdrucken oder als GraphikDatei abspeichern wollen, hilft es Ihnen nichts, wenn Sie im Editor Fenster alles schn arrangiert haben: Sie mssen das gewnschte Arrangement erst im Graphik-Fenster replizieren, damit es als Graphik weiterverarbeitet werden kann3 . Und das kann unter Umstnden ziemlich aufwndig sein. . . Neben dem Objekt, dem Graphik und den EditorFenstern gibt es noch weitere Fenster, die sich ffnen, wenn Sie z.B. das Spektrum eines ausgewhlten Signalabschnitts ansehen wollen, oder wenn Sie ein PraatSkript erstellen/bearbeiten wollen etc. Wichtig ist, dass Sie das Prinzip der verschiedenen, spezialisierten Fenster durchschauen und bei mehreren geffneten Fenstern nicht den Durchblick verlieren (Praat bietet kein Men zur Fensterverwaltung).
Alternativ knnen Sie natrlich jederzeit ein Bildschirmfoto eines EditorFensters erstellen. Die Qualitt eines Bildschirmfotos reicht aber nur fr eine Bildschirm bzw. Projektor Prsentation oder auch fr eine Webgraphik, nicht jedoch fr einen einigermaen hochwertigen Ausdruck. 17
3

Praatologie

1.4

Skripte

Praat bringt eine eigene Skriptsprache mit. Skripte sind kleine Programme, vergleichbar mit Makros in anderen Programmen. Damit lassen sich z.B. fehlende Funktionen in Praat nachrsten, umfangreiche Arbeitsablufe knnen automatisiert werden und mit entsprechend komplexen Skripten knnen die Funktionen von Praat zu einer neuen, spezialisierten Anwendung kombiniert werden. In PraatSkripten knnen smtliche Menbefehle, die in der Benutzeroberche zur Verfgung stehen, genutzt werden. Darber hinaus bietet die Sprache einfache Mglichkeiten, Variablen einzusetzen, sie stellt die blichen Schleifen (for, while, repeat) und Kontrollstrukturen (if/then/else) zur Verfgung und sie bietet einige (wenige) Funktionen zur Interaktion mit dem Anwender. Das besondere an der PraatSkriptsprache und damit auch die grte Hrde fr Nutzer, die bereits Erfahrungen mit anderen Skriptsprachen haben, ist, dass sich die Struktur von PraatSkripten sehr stark an der Bedienung der graschen Benutzeroberche orientiert: Um Objektaktionen ausfhren zu knnen, mssen Objekte ausgewhlt werden; um Befehle aus den Mens des Editorfensters nutzen zu knnen, muss ein EditorFenster geffnet werden; um eine neue Graphik zu erstellen, muss zunchst eine bereits vorhandene gelscht werden; die Eigenschaften einer Linie werden nicht als Parameter des LiniezeichnenBefehls bergeben, sondern mssen vorher mit gesonderten Befehlen gesetzt werden usw. Fr komplette Neueinsteiger ist diese Besonderheit vermutlich eher ein Vorteil, denn abgesehen von Variablen, Schleifen und Bedingungen spiegelt die Befehlsfolge in einem PraatSkript ziemlich genau die entsprechenen Mausklicks und Tastatureingaben in der Benutzeroberche wider. Untersttzt wird dieses Konzept durch eine HistoryFunktion: Man ffnet ein neues PraatSkript, lscht die History, fhrt dann smtliche Befehle aus, die das Skript spter automatisch ausfhren soll, und whlt am Ende Paste history, um die Befehlsfolge in das Skript einzufgen. Damit hat man hug (nicht immer) ein lauffhiges Skript erstellt, das man durch die Verwendung von Variablen noch etwas exibler gestalten und zur spteren Verwendung abspeichern kann. Ein Beispiel: Das folgende Skript erzeugt aus einem ausgewhlten Signalabschnitt ein Intervall in einem TextGrid, in welches dann eine Annotation eingetragen werden kann; a und b sind Variablen, Zeilen, die mit # begin18

Verschiedenes

nen sind Kommentare, die bei der Skriptausfhrung ignoriert werden. Alles andere sind Befehle, die Sie wrtlich so in den Mens des Editorfensters wiedernden knnen4 .
1 2 3 4 5 6 7 8

# Intervall aus einer Auswahl erstellen a = Get start of selection b = Get end of selection Move cursor to... a Add on selected tier Move cursor to... b Add on selected tier Select previous interval

Mehr zum Thema Skripte nden Sie in Kapitel 5.

1.5

Verschiedenes

Noch einige Kleinigkeiten, die den Umgang mit Praat bisweilen etwas sperrig gestalten, die sich aber zumindest bisher nicht ndern lassen: Die eingebauten Tastenkrzel lassen sich nicht ndern und es lassen sich auch keine eigenen Tastenkrzel (z.B. fr Skripte) denieren. Mens knnen nicht gelst und dauerhaft angezeigt werden, d.h. wenn Sie fr eine bestimmte Arbeit stndig den/die selben Menbefehl(e) bentigen, mssen Sie jedesmal die Maus zum Men bewegen, auf das Men klicken und dann auf den Befehl klicken. Die Darstellung im EditorFenster ist nicht variabel. Das Signal beansprucht stets die obere Hlfte, die Analysen teilen sich die untere Hlfte des Fensters. Diese Aufteilung kann nicht zugunsten der Analysen verndert werden.

Es geht hier nicht darum, dass sie verstehen, wie das Skript funktioniert oder was es genau tut. Sie sollen nur das Prinzip erkennen. Mehr zum Thema Annotation nden Sie in Abschnitt 4.1. 19

Praatologie

20

Kapitel 2 Grundlagen
2.1
2.1.1

Dateien und das ObjektFenster


Dateien laden

Um Dateien von Ihrer Festplatte in Praat zu laden, bentigen Sie das Read M Men im ObjektFenster. Bevor Sie eine wavDatei laden, mssen Sie entscheiden, ob Sie diese als Sound oder als LongSoundObjekt laden wollen. Das hngt zum einen von der Dateigre und zum anderen von der Gre Ihres Arbeitspeichers ab (vgl. S. 15). Mit dem Befehl Read from le... laden Sie eine wavDatei als SoundObjekt1 , mit Open long sound le... als LongSoundObjekt. Read M > Read from le... wavDatei auswhlen Die Datei erscheint als SoundObjekt in der Objektliste

Mit dem selben Befehl knnen Sie nicht nur wavDateien laden, sondern auch andere Dateitypen, z.B. TextGrids.

Grundlagen

2.1.2

Dateien speichern

Objekte, die im ObjektFenster gelistet sind, werden nicht automatisch auf der Festplatte gespeichert (vgl Abschnitt 1.2). Wenn Sie also ein bestehendes Objekt verndern oder ein neues Objekt erzeugen (z.B. ein TextGrid, s.u.) und dauerhaft erhalten wollen, mssen Sie das Objekt explizit speichern. Dazu dient das Write M Men.
TextGridObjekt speichern:

TextGridObjekt auswhlen (anklicken) Write M > Write to text le...


SoundObjekt speichern:

SoundObjekt auswhlen Write M > Write to WAV le...

2.1.3

Objekte verwalten

Objekte in der Objektliste werden durch Anklicken ausgewhlt. Sie knnen mehrere Objekte auswhlen, indem Sie zuerst ein Objekt anklicken und dann mit gedrckter STRG Taste (Einzelauswahl) oder Umschalt Taste (zusammenhngende Auswahl) weitere Objekte anklicken2 . Die Reihenfolge der Objekte in der Objektliste kann meines Wissens nicht verndert werden. Mit den Knpfen unterhalb der ObjektListe knnen Objekte umbenannt   ( Rename... ), kopiert ( Copy... ) und gelscht ( Remove ) werden. Diese Ak   tionen wirken nur innerhalb von Praat, d.h. ein umbenanntes Objekt erscheint
Auf Tastaturen mit englischer Beschriftung heit die STRGTaste CTRLTaste. Auf AppleTastaturen benutzen Sie statt STRG/CTRL die Befehlstaste. 22
2

Dateien und das ObjektFenster


Dateien laden Objekte als Datei speichern

Sound-Objekt (ausgewhlt) TextGrid-Objekt (nicht ausgewhlt)

ausgewhltes Sound-Objekt anzeigen und editieren ausgewhltes Sound-Objekt abspielen

ausgewhltes Sound-Objekt zur Annotation vorbereiten Liste der verfgbaren Objekte

Dynamisches Aktionsmen ausgewhltes Objekt umbenennen

ausgewhlte(s) Objekt(e) aus der Liste lschen Informationen zum ausgewhlten Objekt (z.B. Abtastrate)

Abbildung 2.1: Das ObjektFenster (Praat Objects).

zwar mit dem neuen Namen in der Objektliste, der Name der Datei auf der Festplatte (sofern sie dort existiert) ndert sich dadurch jedoch nicht. Entsprechend existiert das Duplikat eines Objekts nach einer Kopieraktion nur  Remove bedeutet, dass das marinnerhalb von Praat, nicht auf der Festplatte.  kierte Objekt aus der Objektliste und aus dem Arbeitsspeicher verschwindet; existiert eine entsprechende Datei auf der Festplatte, bleibt diese natrlich erhalten; gibt es keine Kopie des Objekts auf der Festplatte, ist das Objekt unwiederbringlich verloren. Mit dem  Info Knopf kann man einige allgemeine Eigenschaften von Objekten anzeigen, bei einem SoundObjekt z.B. die Gesamtdauer und die Abtast rate (sampling frequency). Mit  Inspect kann der Inhlt eines Objekts darge stellt und abgefragt werden, bei einem SoundObjekt z.B. die einzelnen Abtastwerte. Rechts im ObjektFenster bendet sich das dynamische Aktionsmen. Dynamisch heit, dass immer nur die Aktionen angezeigt werden, die mit dem/den ausgewhlten Objekt(en) mglich sind. Wenn ein SoundObjekt ausgewhlt
23 

Grundlagen 

ist, erscheint unter anderem z.B. der  Play Knopf zum Abspielen des Objekts, ist dagegen ein TextGridObjekt ausgewhlt, erscheint dieser Knopf nicht.

2.2
2.2.1

SoundObjekte erzeugen
Aufnahmen erstellen mit Praat

Mit dem PraatSoundRecorder knnen AudioAufnahmen erstellt werden. Die Befehle zum ffnen des SoundRecorderFensters benden sich im New M Men des Objektfensters. Es gibt zwei AufnahmeBefehle, einen fr MonoAufnahmen und einen fr StereoAufnahmen, wobei in der Phonetik MonoAufnahmen in der Regel vollkommen ausreichen. Ein MonoSignal aufnehmen (ein Kanal): New M > Record mono Sound... Ein StereoSignal aufnehmen (zwei Kanle): New M > Record stereo Sound... Das SoundRecorderFenster:

24

SoundObjekte erzeugen

Im Abschnitt Channels kann nichts verndert werden; wenn Sie statt einer Mono doch eine Stereoaufnahme machen wollen (oder umgekehrt), mssen  Sie den SoundRecorder schlieen ( Close anklicken) und mit dem entspre chenden Befehl im New M Men erneut ffnen. Die Auswahl im Abschnitt Input source hngt von der verfgbaren Audio Hardware Ihres Computers ab; whlen Sie die gewnschte Aufnahmequelle durch Anklicken aus. Im Abschnitt Sampling frequency stellen Sie ein, mit welcher Abtastrate das analoge Signal digitalisiert wird; die Auswahl hier hngt ebenfalls von Ihrer Hardware ab. Die Abtasttiefe betrgt immer 16 Bit (wie bei AudioCDs).


Record Die Aussteuerungsanzeige (Meter) wird leider erst aktiviert, wenn Sie  geklickt haben, wenn also die Aufnahme bereits luft. Machen Sie also vor einer wichtigen Aufnahme zunchst eine Testaufnahme, um den Pegel korrekt auszusteuern der obere, rote Bereich sollte unbedingt vermieden werden. Falls die entsprechenden Regler zum Aussteuern nicht im SoundRecorder angezeigt werden (abhngig vom System), verwenden Sie bei integrierter Hardware die MixerAnwendungen des Betriebssystems (WindowsMixer, Alsa Mixer (Linux), Systemeinstellungen/Ton (Mac OS X) etc.) oder bei externer Hardware den Drehregler am Gert. Nach der Testaufnahme sollten Aufnahmeparameter wie der Mikrophonabstand etc. natrlich nicht mehr verndert werden. Record , zum Stoppen Stop und Zum Starten einer Aufnahme klicken Sie     Play . Wenn die Aufnahme unterbrochen wird, bevor Sie Stop zum Anhren   geklickt haben, ist vermutlich die Buffer size fr Aufnahmen zu niedrig eingestellt. Diese Einstellung ist im Praat M Men > Preferences > Sound recording preferences... zu nden, angegeben in Megabyte (MB).3  

Wenn Sie eine Aufnahme verwerfen wollen, klicken Sie erneut  Record , um  eine neue Aufnahme zu machen, oder klicken Sie  Close , um den SoundRe corder zu schlieen.


Wenn Sie eine Aufnahme behalten wollen, klicken Sie entweder  to list Save , um die Aufnahme als SoundObjekt in die Objektliste zu bernehmen,
Fr eine 5mintige Mono-Aufnahme mit einer Abtastrate von 22050 kHz (und einer Abtasttiefe von 16 Bit) bentigt man etwa 13 MB. Verdoppelt sich die Aufnahmezeit, verdoppelt sich auch der Speicherbedarf (10 Min. = 26 MB); bei doppelter Abtastrate (CD Qualitt: 44,1 kHz) verdoppelt sich ebenfalls der Speicherbedarf (10 Min./44,1 kHz = 52 MB); und auch eine Stereoaufnahme bentigt doppelt soviel Speicher wie eine Monoaufnahme (10 Min./44,1 kHz/Stereo = 104 MB). 25
3

Grundlagen

und fahren Sie mit einer weiteren Aufnahme fort, oder klicken Sie  Save to list & Close , um die Aufnahme als SoundObjekt zu bernehmen und  den SoundRecorder zu schlieen. In beiden Fllen liegt die Aufnahme aber nur als SoundObjekt im chtigen Arbeitsspeicher vor vergessen Sie daher nicht, wichtige Aufnahmen mit Hilfe eines WriteBefehls dauerhaft auf Ihrer Festplatte zu speichern. WriteBefehle gibt es, wie Sie wissen, im Write M Men des Objektfensters, aber auch im File M Men des SoundRecorders. Bei sehr langen Aufnahmen kann es passieren, dass diese nicht als Sound Objekt bernommen werden knnen. Speichern Sie in diesem Fall die Aufnahme aus dem SoundRecorder direkt auf die Festplatte ( File M > Write to WAV le...), schlieen Sie den SoundRecorder (Close) und ffnen Sie die Aufnahme als LongSound ( Read M > Open long sound le...).

2.2.2

Knstliche Signale mit einer Formel erzeugen

. . . under construction . . .

2.3

Editoren/SoundEditor

Zur Darstellung und zum Bearbeiten editierbarer Objekte hlt Praat mehrere Editoren bereit, die sich jeweils in einem eigenen Fenster ffnen. Wir beschrnken uns hier zunchst einmal darauf, ein Sound-Objekt visuell darzustellen als Oszilogramm im SoundEditor. Diese Darstellung knnen Sie interaktiv nutzen und verndern. Die Gre der Signaldarstellung passt sich dem EditorFenster an, d.h. indem Sie das Fenster vergrern vergrern Sie auch die Gesamtdarstellung. Innerhalb des Fensters knnen Sie verschieden groe Signalabschnitte darstellen (Zoomen), wenn nicht das ganze Signal dargestellt wird, knnen Sie im Signal blttern und Sie knnen das Signal anhren (ganz, nur den dargestellten Abschnitt, nur den ausgewhlten Abschnitt).

2.3.1

Fenster ffnen, Darstellung verndern und Abspielen

Um ein SoundObjekt in ein EditorFenster zu laden, gehen Sie folgendermaen vor:


26

Editoren/SoundEditor

Ein SoundObjekt im ObjektFenster auswhlen Auf  Edit klicken




Das Signal wird im SoundEditor dargestellt Die folgenden Angaben beziehen sich auf die Mens im EditorFenster. In der Regel wird angegeben, wo sich die Befehle in den Mens des Editor Fensters nden. Bei regelmiger Nutzung lohnt es sich jedoch unbedingt, in den Mens auf die dort angegebenen Tastaturkrzel zu achten und diese zu nutzen.

Zoomen: View M > Zoom out View M > Zoom in oder auch mit Hilfe der ZoomKnpfe unten links im EditorFenster (vgl. Abb. 2.2)

27

Grundlagen

Abbildung 2.2: Der SoundEditor; Zoomen, Blttern und Abspielen.

Blttern: vorwrts: Seite nach untenTaste rckwrts: Seite nach obenTaste oder mit Hilfe des Schiebereglers ganz unten im EditorFenster (vgl. Abb. 2.2)

Einen Signalabschnitt auswhlen: in das Oszillogramm klicken+halten ziehen loslassen Durch Klicken+Ziehen mit der Maus und gleichzeitiges Drcken der Taste kann eine bestehende Auswahl verndert werden. Umschalt UmschaltKlicken in die Nhe des Anfangs einer Auswahl verschiebt den Anfang, UmschaltKlicken in die Nhe des Endes einer Auswahl verschiebt entsprechend das Ende. Nur ausgewhlten Abschnitt anzeigen: View M > Zoom to selection
28

Editoren/SoundEditor

Abspielen (siehe auch View M Men): ausgewhlten Signalabschnitt bzw. ab Cursorposition: Tabulator Taste anhalten I: Tabulator Taste (aktuelle Position = neue Cursorposition) anhalten II: Esc Taste (Cursorposition bleibt erhalten)

kompletten Fensterinhalt abspielen: Umschalt Tabulator +

oder klicken Sie in einen der Abspielbalken unterhalb der Signaldarstellung (vgl. Abb. 2.2) Mehrere Editoren Es ist mglich, mehrere Editoren gleichzeitig zu ffnen. Wenn Sie z.B. den Grundfrequenzverlauf eines Signals genauer inspizieren wollen, knnen Sie neben dem SoundEditor auch das dazugehrige PitchObjekt in einem PitchEditor ffnen. Um die beiden Editoren zu synchronisieren, muss der GroupKnopf unten rechts in beiden EditorFenstern aktiviert werden. Dadurch wird z.B. das Zoom-Verhalten synchronisiert, d.h. wenn Sie in einem Editor zoomen, zoomt der andere Editor zum selben Abschnitt. Auch Markierungen wirken sich auf beide Editoren aus. Die Synchronisation ist nicht immer erwnscht. Deaktivieren Sie in diesem Fall die GroupKnpfe in den gefneten EditorFenstern.

2.3.2

Signale editieren

Um aus einer langen Aufnahme kleinere Abschnitte zu extrahieren, um diese dann separat zu bearbeiten, gibt es im File M Men des SoundEditors entsprechende Befehle (Extract oder Write). Wenn Sie den Abschnitt direkt aus dem Editor als Datei auf die Festplatte speichern wollen, verwenden Sie einen WriteBefehl im File M Men des Editors. Der Abschnitt wird dann auf die Festplatte geschrieben, erscheint aber nicht als SoundObjekt in der Objektliste. Wenn Sie den Abschnitt nur vorbergehend in Praat bentigen, verwenden Sie einen ExtractBefehl; der Abschnitt erscheint dann als neues Objekt im ObjektFenster und kann wie ein SoundObjekt weiterbenutzt werden. Wie
29

Grundlagen

Sie wissen, werden neu erstellte Objekte in Praat zunchst nur im Arbeitsspeicher verwaltet, d.h. beim Beenden von Praat gehen sie verloren. Soll der Abschnitt doch als Datei dauerhaft gesichert werden, whlen Sie ihn in der Objektliste aus und speichern Sie ihn mit Write M > Write to WAV le... (im ObjektFenster).

Der Reihe nach: Sound oder LongSoundObjekt im ObjektFenster auswhlen


Edit klicken auf  Im Editor den relevanten Signalabschnitt auswhlen (klicken+halten ziehen loslassen) 

klicken Sie auf das File M Men im Editor und whlen Sie. . . - Write selected sound to WAV le... (Abschnitt wird als Datei gespeichert; Sie werden nach einem Verzeichnis und einem Namen gefragt) oder: - Extract selected sound (preserve times) (Startzeitpunkt des Abschnitt wird aus der Originaldatei bernommen) oder: - Extract selected sound (time from 0) (Startzeit des Abschnitt wird auf 0 gesetzt) bei Bedarf nchsten Signalabschnitt auswhlen Statt Abschnitte zu extrahieren (das Originalsignal bleibt dabei unverndert), knnen Abschnitte auch ausgeschnitten bzw. kopiert und an anderer Stelle
30

Editoren/SoundEditor

eingesetzt werden (cut, copy, paste im Edit M Men des SoundEditors). Dadurch wird das Originalsignal verndert, allerdings zunchst nur innerhalb von Praat bzw. im Arbeitsspeicher des Computers. Zum dauerhaften Speichern des editierten Signals verwenden Sie wie gehabt den WriteBefehl im ObjektFenster.

31

Grundlagen

2.3.3

Analysen und Darstellungsoptionen im SoundEditor

Zustzlich zum Signal knnen im SoundEditor die folgenden 5 Analysen dargestellt werden: Spektrogramm, Grundfrequenzverlauf, Intensittsverlauf, Formantspuren und glottale Impulse. Zur Darstellung der ersten 4 Analysen wird das EditorFenster in zwei vertikalen Hlften geteilt; das Signal erscheint oben, whrend smtliche Analysen in der unteren Hlfte dargestellt werden. Glottale Impulse werden dagegen oben im Oszillogramm angezeigt. Jede Anlysemethode hat ein eigenes Men:
Spectrum M Pitch M Intensity M Formant M Pulses M

In jedem dieser Mens steht an erster Stelle der Show xyzBefehl, mit dem die jeweilige Analyse an (durch ein Hkchen markiert) bzw. abgeschaltet wird, gefolgt von einem Xyz settingsBefehl, der ein Einstellungsfenster fr die jeweilige Analyse ffnet.

Darunter nden sich in jedem Men weitere Befehle, um Informationen und Daten abzufragen (Query), Graphiken im GraphikFenster zu erstellen (Draw) oder ein neues Objekt zu erstellen (Extract).
32

Editoren/SoundEditor

Ob eine Analyse tatschlich angezeigt wird, hngt davon ab, wie gro der Signalabschnitt ist, der aktuell im EditorFenster angezeigt wird. Ist der Abschnitt grer als der Wert Longest analysis sehen Sie statt einer Analyse einen Warnhinweis (To see the analysis, zoom in. . . ). Nun mssen Sie entweder einen krzeren Signalabschnitt darstellen (Zoom in) oder den Wert fr die lngste Analyse erhhen: View M > Show analyses... > Longest analysis (s).4

Es folgen die grundlegenden Einstellungsoptionen fr Spektrogramme, Grundfrequenzkonturen und Formantkonturen. Mehr Details nden Sie in Kapitel 4. In allen Einstellungsfenstern gibt es einen  Standards Knopf, um  smtliche Einstellungen auf die Vorgabewerte zurck zu setzen. Mit  Apply  OK werden die nderungen auf die jeweilige Analyse angewendet oder  sofort, wenn die Analyse bereits dargestellt wird, ansonsten sobald sie die Analyse aktivieren.

Ist der Wert zu hoch, wird Praat sehr langsam. Welcher Wert sinnvoll ist, hngt von der Leistung Ihres Computersystems ab. Der Standardwert 5 Sek. kann aber auf aktuellen Computern auf jeden Fall grozgig erhht werden. 33

Grundlagen

Spektrogramm Anzeige ein/aus: Spectrum M > Show spectrogram Grundeinstellungen ffnen: Spectrum M > Spectrogram settings... Einige der folgenden Einstellungen sind von der Abtastrate (Sampling frequency) abhngig. Diese erfahren Sie, wenn Sie im Query M Men auf Sound info klicken.

Empfehlungen fr die SpektrogrammEinstellungen:


View range (Hz): Dargestellter Frequenzbereich.

erster Wert: 0, zweiter Wert: maximal halbe Abtastrate (z.B. Abtastrate = 22050 Hz zweiter Wert max. 11000 Hz)
Window length (s): Einstellung fr Schmalband oder Breitbandspek-

trogramm; abhngig von der Abtastrate. - Formel: 1/Abtastrate(Hz) Analysepunkte = W indow length(s)
34

Editoren/SoundEditor

- typische Werte fr die Anzahl der Analysepunkte: Schmalband = 1024, Breitband = 128 - Beispiel (Breitbandspektrogramm, Abtastrate = 22050 Hz): 1/22050 128 = 0, 006
Dynamic range (dB): Vereinfacht gesagt beeinusst dieser Wert die Schwrzung des Spektrogramms (hhere Werte: dunkler, niedrigere Werte: heller).

Grundfrequenzverlauf Anzeige ein/aus: Pitch M > Show pitch Grundeinstellungen ffnen: Pitch M > Pitch settings...
Pitch range (Hz): legt fest, welcher Frequenzbereich dargestellt wird.

(z.B Mnnerstimmen: 50 200 Hz, Frauenstimmen: 100 400 Hz.) Fr die restliche Einstellungen knnen die Standardwerte bernommen werden.

Formantenverlauf Anzeige ein/aus: Formant M > Show formants Grundeinstellungen ffnen: Formant M > Formant settings...
Maximum formant (Hz): Empfehlung fr Frauen: 5500 Hz, fr Mnner:

5000 Hz Fr die restliche Einstellungen knnen die Standardwerte bernommen werden.

35

Grundlagen

Signal

Analysen
hier: - Spektrogramm (grau) - Grundfrequenz (blau)

Skalierung Spektrogramm

Skalierung Grundfrequenz

Abbildung 2.3: Zweigeteiltes EditorFenster mit Spektrogramm und Grundfrequenzkontur.

36

Informationen, Daten und Hilfe

2.4
2.4.1

Informationen, Daten und Hilfe


Das InfoFenster

Das InfoFenster hat zwei Funktionen: Erstens knnen Skripte in das Infofenster schreiben, um z.B. dem Benutzer mitzuteilen, was gerade passiert; mehr zu dieser Funktion im Kapitel 5. Zweitens werden im Infofenster die Ausgaben von Abfragebefehlen ausgegeben. Abfragebefehle beginnen meist mit Get und benden sich in den Query M Mens. Haben Sie beispielsweise im ObjektFenster ein SoundObjekt ausgewhlt und klicken dann im Query M Men des ObjektFensters auf den Befehl Get number of channels, wird die abgefragte Information (z.B. 1 channel (mono)) im Infofenster  Info Knopf angezeigt. Auch die InfoBefehle sind Abfragebefehle, z.B. der   im ObjektFenster. Klicken Sie auf den  Info Knopf, wenn ein SoundObjekt ausgewhlt ist, werden verschiedene Informationen (Name, Dauer, Abtastrate etc.) zu diesem Objekt im Infofenster angezeigt (die selben Informationen erhalten Sie auch, wenn Sie ein SoundObjekt im Editor ffnen und den Befehl Sound info im Query M Men des Editors whlen). Die Ausgaben im Infofenster knnen Sie verndern (s. Cut, Copy, Paste, Erase im Edit M Menu des Infofensters) und ergnzen, d.h. Sie knnen in das Infofenster tippen. Der Fensterinhalt kann als Textdatei abgespeichert werden ( File M > Save as...). Achtung: Die meisten (alle?) Abfragebefehle lschen den Fensterinhalt bevor sie in das Infofenster schreiben.

37

Grundlagen

2.4.2

Der DatenEditor


Wenn Sie im ObjektFenster auf  Inspect klicken, ffnet sich ein neues Fens ter: der DatenEditor (DataEditor). Darin wird der Inhalt eines Objekt strukturiert dagestellt und kann auch editiert werden. Bei einem SoundObjekt erhalten Sie z.B. eine (u.U. sehr lange!) Tabelle mit den einzelnen Abtastwerten. Bei einem TextGridObjekt knnen Sie die einzelnen Annotationsereignisse (Kombinationen aus Zeitpunkten und Text) darstellen (und verndern). Das ganze gleicht ein wenig einem (recht unhandlichen) XMLEditor und soll hier nur der Vollstndigkeit halber erwhnt werden Sie werden den DatenEditor selten bis nie bentigen.

2.4.3

Hilfe

Praat bringt eine sehr umfangreiche Hilfefunktion mit, die wie das Pragramm selbst auch regelmig aktualisiert wird. Somit ist die Hife immer auf dem neuesten Stand und deckt alle PraatFunktionen ab (das ist bei einem Open SourceProjekt nicht selbstverstndlich!). Allerdings eignet sich die Praat Hilfe meiner Erfahrung nach nicht besonders gut dazu, PraatNeulingen den Einstieg in das Programm zu ermglichen. Das ist die Aufgabe der vorliegenden Seiten. Wenn Sie aber erste Erfahrungen mit Praat gesammelt haben, sollten Sie die Hilfe unbedingt nutzen. Die Einstiegseite Praat Intro errichen Sie u.a. ber das Help M Men im ObjektFenster. Dort nden Sie Links zu einigen einfhrenden Abschnitten, die die grundlegenden Arbeitstechniken von Praat behandeln, sowie Tutorials zu weiterfhrenden Themen. Sehr empfehlenswert ist aber auch die kontextsensitive Hilfe. So hat z.B.  Help Knopf, der zu einer Erluterung der jedes Einstellungsfenster einen  einzelnen Parameter fhrt. Das hilft bei der Beantwortung von Fragen wie Was bewirkt eine nderung des dynamic range in den Spektrogramm Einstellungen? Auch die einzelnen Fenster verfgen ber kontextsensitive Help M Mens zum direkten Aufruf spezieller Hilfeseiten zum Objekt Fenster, zum GraphikFenster, zum SoundEditor etc.

38

Kapitel 3 Graphiken erstellen


Wie bereits erwhnt, knnen Sie natrlich jederzeit vllig unabhngig von Praat Bildschirmfotos der aktuellen Darstellung erzeugen. Die Qualitt der so erzeugten Graphikdateien reicht aber nicht fr hochwertige Ausdrucke aus. Wenn Sie direkt aus Praat etwas ausdrucken oder mit Hilfe von Praat hochwertige Graphikdateien erzeugen wollen, mssen Sie stattdessen mit dem GraphikFenster (Praat Picture) und den Draw bzw. PaintBefehlen arbeiten.

3.1

GraphikFenster und Viewports

Das Graphik-Fenster stellt eine 12x12 Zoll groe Arbeitsche bereit (ca. 30,5x30,5 cm; 1 Zoll (inch) = 2,54 cm). Da Sie normalerweise kleinere Graphiken bentigen werden, gibt es die Mglichkeit, diese Arbeitsche in kleinere Parzellen zu unterteilen und nur innerhalb einer solchen Parzelle eine Graphik zu erstellen anstatt auf der gesamten Arbeitsche. Diese Parzellen heien in Praat Viewports. Wenn Sie direkt aus dem Graphik Fenster heraus drucken wollen, sollten Sie die ViewportGre an die Papiergre anpassen (bevor Sie eine Graphik erstellen!). Wenn Sie stattdessen eine Graphikdatei erstellen wollen, die z.B. in eine Textverarbeitung importiert werden soll, knnen Sie sich bei der ViewportGre ebenfalls an der Zielgre des Ausdrucks orientieren (Breite fr eine eingebette Graphik auf einer DIN A4 Seite/Hochkant z.B. 5 Zoll), Sie mssen diese Angaben jedoch nicht ganz so genau nehmen, da ja die Graphik in der Textverarbeitung noch nach-

Graphiken erstellen

trglich skaliert werden kann. Bedenken Sie aber: Wenn Sie in Praat eine beschriftete Graphik erstellen und z.B. eine 10PunktSchrift verwenden, wird durch das Verkleinern der Graphik in der Textverarbeitung natrlich auch die Schrift kleiner. Grundstzlich gilt: Denieren Sie zuerst einen passenden Viewport und erstellen Sie dann die Graphik(en) die Gre einer Graphik (die durch die ViewportGre vorgegeben ist) lt sich nachtrglich nicht mehr ndern. Wenn Sie Praat starten, ffnet sich immer auch das GraphikFenster. Voreingestellt ist ein 6x4ZollViewport, zu erkennen an der blauen Randmarkierung (xKoordinaten/Breite: 0 - 6 Zoll, yKoordinaten/Hhe: 0 - 4 Zoll). Am einfachsten denieren Sie eine andere ViewportGre mit der Maus: Klicken Sie irgendwo in die Arbeitsche des Graphik-Fensters, halten Sie die Maustaste gedrckt und ziehen Sie einen passenden Rahmen auf (in 0,5Zoll Schritten). Wenn Sie den Viewport feiner einstellen wollen, als die 0,5Zoll Schritte erlauben, knnen Sie die Koordinaten auch als Zahlenwerte eingeben: ffnen Sie mit Select M > Select outer viewport... den Eingabedialog1 . Es ist auch mglich, aus mehreren einzelnen Graphiken eine komplexe Gesamtgraphik zu erstellen: Denieren Sie einen Viewport (z.B. Breite: 0 - 5 Zoll, Hhe: 0 - 2 Zoll) und erstellen Sie eine Graphik (Abb. 3.1, ganz links) Denieren Sie den nchsten Viewport (Breite: 0 - 5 Zoll, Hhe: 2 - 4 Zoll) und erstellen Sie eine weitere Graphik (Abb. 3.1, 2. von links) Denieren Sie den dritten Viewport (Breite: 0 - 5 Zoll, Hhe: 4 - 6 Zoll) und erstellen Sie die dritte Graphik (Abb. 3.1, 3. von links) Denieren Sie einen Viewport, der alle anderen umfasst (Breite: 0 - 5 Zoll, Hhe: 0 - 6 Zoll) und drucken bzw. speichern Sie die Gesamtgraphik (Abb. 3.1, ganz rechts) Eine auf diese Weise erstellte Graphik sehen Sie in Abbildung 3.2 (im Praat GraphikFenster als EPSDatei gespeichert und in PDF konvertiert).
Wenn Sie einen outer viewport denieren, ist darin ein etwa 1,5 cm breiter Rand enthalten, d.h. die erzeugte Graphik ist etwas kleiner als der Viewport. Wenn Sie auf den Rand verzichten wollen, whlen Sie einen inner viewport. Es kann dann aber passieren, dass Beschriftungen abgeschnitten werden. 40
1

GraphikFenster und Viewports

Abbildung 3.1: Graphiken erstellen mit Viewports.

Mit Viewports denieren Sie also zunchst den Bereich der Arbeitsche, in dem eine Graphik erstellt wird (bei Bedarf mehrmals), und am Ende denieren Sie damit den Bereich der Arbeitsche, der tatschlich gedruckt/gespeichert wird.

0.6219

-0.5273 3.899 Time (s)

5.4

5000 Frequency (Hz) 0 3.899 Time (s)

5.4

200 Pitch (Hz) 50 3.899 Time (s)

5.4

Abbildung 3.2: Hochwertige Graphik, mit Praat erstellt (EPS/PDF).


41

Graphiken erstellen

3.2

Graphiken erstellen mit Draw und Paint

Um einen Viewport im GraphikFenster mit Inhalt zu fllen, benutzen Sie die DrawBefehle (die meisten Objekte zeichnen Sie mit einem DrawBefehl, Spektrogramme werden jedoch mit einem PaintBefehl gemalt; im Prinzip verhalten sich die Befehle aber gleich). Sie knnen eine Graphik entweder aus dem ObjektFenster erstellen oder aus einem Editor.

3.2.1

Graphikbefehle im ObjektFenster

Um eine Graphik aus dem ObjektFenster erstellen, whlen Sie ein Objekt zu Draw... (z.B. SoundObjekte) bzw. in der Objektliste aus und klicken Sie auf   Draw M > Draw... (z.B. PitchObjekte) bzw. Paint... (SpectrogramObjekte).  Eine kombinierte Graphik aus Sound und TextGridObjekt erhalten Sie,  Draw... klicken. Andere Objekte wenn Sie beide Objekte auswhlen und auf  lassen sich leider nicht so einfach kombinieren, sondern nur durch die sukzessive Verwendung mehrerer Viewports (s.o.).

3.2.2

Graphikbefehle im Editor

Aus einem Editor, z.B. dem SoundEditor, erstellen Sie eine Graphik, indem Sie den dargestellten Signalabschnitt bzw. die dargestellten Analysen in das GraphikFenster bertragen. Gehen Sie folgendermaen vor:

Signalabschnitte zeichnen: > Draw visible sound... Der Signalabschnitt, der aktuell im SoundEditor zu sehen ist, wird in das GraphikFenster (genauer: in den dort denierten Viewport) gezeichnet
File M

> Draw selected sound... Nur der ausgewhlte Signalabschnitt wird in den Viewport gezeichnet.
File M 42

Graphiken erstellen mit Draw und Paint

Analysen zeichnen: > Paint visible spectrogram... Das Spektrogram, das aktuell im SoundEditor zu sehen ist, wird in den Viewport gemalt.
Spectrum M Pitch M > Draw visible pitch contour... Zeichnet den aktuell sichtbaren Grundfrequenzverlauf in den Viewport.

Die DrawBefehle in den brigen Analysemens verhalten sich entsprechend.

3.2.3

Graphikoptionen

Ein Draw oder PaintBefehl ffnet immer ein Einstellungsfenster, in welchem Sie verschiedene Graphikoptionen festlegen knnen. Wenn Sie die Befehle aus dem ObjektFenster aktivieren, knnen Sie in den Optionen den darzustellenden Bereich whlen (RangeParameter):
Time range; hier knnen Sie einen Signalabschnitt whlen (Start und

Endzeitpunkt)
Frequency range; bestimmen Sie, welcher Frequenzbereich dargestellt

werden soll
Vertical range; bei einem Oszillogramm der darzustellende Amplitu-

denbereich Auerdem bekommen Sie in diesem Fall einige Analysespezische Optionen angeboten (bei einem Spektrogramm z.B. den dynamic range). Probieren Sie zunchst die Standardeinstellungen bzw. bernehmen Sie die Parameter aus den Analyseeinstellungen im SoundEditor und testen Sie dann verschiedene Einstellungen, bis die erzeugte Graphik Ihren Vorstellungen entspricht. Zum Ausprobieren von verschiedenen Graphikoptionen empehlt es sich ge  OK den Apply Knopf zu klicken; Sie nerell, im Einstellungsfenster statt   sehen das Ergebnis Ihrer Einstellungen im GraphikFenster und das Einstellungsfenster bleibt fr weitere Anpassungen sichtbar. Vergessen Sie aber nicht, im GraphikFenster mit Edit M > Undo die nderungen rckgngig zu
43

Graphiken erstellen 

machen, bevor Sie mit vernderten Optionen erneut auf  Apply klicken, sonst wird die neue Version ber die alte Graphik gezeichnet. Die Einstellungsfenster der Draw bzw. PaintBefehle aus dem SoundEditor weisen keine RangeParameter auf. Das ist nicht ntig, da Sie ja die jeweiligen Darstellungsbereiche durch Zoomen, Auswhlen und Analyseeinstellungen bereits festgelegt haben, und es hier nur darum geht, das Dargestellte in das GraphikFenster zu bertragen. Stattdessen gibt es andere Optionen:
Erase rst; wenn Sie diese Option auswhlen, wird der komplette Ar-

beitsbereich im GraphikFenster gelscht, bevor die neue Graphik erstellt wird; also vorsichtig verwenden. . .
Write name at top; bestimmen Sie ob bzw. wo der Name des Objekts

der Graphik hinzugefgt wird


Draw selection times/hairs; die aktuelle Auswahl im SoundEditor erscheint in Form von Zeitpunkten (times) und/oder als senkrechte gestrichelte Linien (hairs) in der Graphik

Die GarnishOption, die in allen Einstellungsfenstern auftaucht, garniert die zu erstellende Graphik mit Beschriftungen der x und yAchsen sowie mit einer Box um das Signal, das Spektrogramm, die PitchKontur etc. herum. Wenn Sie etwas mehr Einuss auf diese Garnierung nehmen wollen, schalten Sie die Option aus und fgen Sie die gewnschten Effekte nachtrglich hinzu (s. Abschnitt 3.4).

3.3

Einstellungen und GraphikFenster

Speicheroptionen

im

Im Pen M Men des GraphikFensters werden die Eigenschaften von Linien eingestellt (Art, Dicke und Farbe). Welche Teile einer Graphik durch diese Einstellungen beeinusst werden, ist schwer voherzusagen probieren Sie es aus! So wird z.B. die durch die GarnishOption erzeugte Box immer mit schwarzen Linien gezeichnet, unabhngig von der hier eingestellten Farbe. Die Einstellung der Liniendicke hat aber durchaus Auswirkungen auf die Box. Eine gezeichnete Pitch-Kontur bernimmt die Einstelungen fr die Linienfarbe und dicke, eine gespecklete Kontur bernimmt nur die Farbeinstellung, die SpecklePunkte sind immer gleich gro.
44

Graphiken ergnzen

Im Font M Men knnen Sie Schriftart und gre voreinstellen. Diese Einstellungen wirken sich auf die Achsbeschriftungen aus. Wichtig: Nehmen Sie die gewnschten Einstellungen vor, bevor Sie eine Graphik erstellen. Fr einmal erstellte Graphiken knnen diese Einstellungen nachtrglich nicht mehr verndert werden.

Speicheroptionen
Statt eine Graphik direkt aus dem GraphikFenster auszudrucken ( File M > Print), knnen Sie sie auch zur spteren Verwendung abspeichern. Um eine Sichrungskopie anzulegen, whlen Sie File M > Write to praat picture le.... Mit einer solchen Datei knnen Sie zwar auerhalb von Praat nicht viel anfangen, dafr ist es aber mglich, die Datei jederzeit wieder in Praat zu laden ( File M > Read from praat picture le...) und weiter zu bearbeiten. Um die erzeugte Graphikdatei auerhalb von Praat weiterzuverwenden, whlen Sie ein anderes Graphikformat. Sehr gut geeignet ist das EPSFormat ( File M > Write to EPS le...), das Sie in andere Programme entweder direkt oder ber den Umweg einer PDFKonvertierung einbinden knnen. Auf Macs wird auerdem das PICTFormat angeboten, das aber meiner Erfahrung nach nicht zuverlssig funktioniert. Die Alternativen unter Windows kann ich nicht beurteilen.

3.4

Graphiken ergnzen

Haben Sie ein Objekt mit Hilfe eines Draw bzw. PaintBefehls in einem Viewport plaziert, knnen Sie die Graphik durch Text, verschiedene Linien und Formen sowie Achsmarkierungen und beschriftungen ergnzen.
45

Graphiken erstellen

3.4.1

Text und graphische Elemente

Um Text, Linien, Rechtecke, Kreise etc. an einer beliebigen Position innerhalb der Graphik zu plazieren, nutzen Sie die Befehle im World M Men: Text..., Draw line..., Draw/Paint rectangle, Draw/Paint circle... usw. (Draw Befehle zeichnen Umrisse, PaintBefehle malen gefllte Formen). In allen Einstellungsfenstern mssen Sie u.a. Koordinaten angeben, um das Objekt zu plazieren. Diese Koordinaten beziehen sich auf die x und yAchse der zuletzt erstellten Graphik. Ein Beispiel (vgl. Abb. 3.3): In einem Viewport wurde ein Spektrogramm mit den folgenden Einstellungen erstellt: Time range: 3.9-5.4 Sek., Frequency range: 0-5000 Hz. Um dieser Graphik den roten Kreis in Abb. 3.3 hinzuzufgen, stellt man zunchst die Farbe auf Rot ( Pen M > Red) und whlt dann World M >
Draw circle...

Die Koordinaten des Kreismittelpunktes gibt man im Koordinatensystem des Spektrogramms an: 4.6 auf der xAchse (Zeit) und 3000 auf der yAchse (Frequenz) (vgl. die blauen Linien in Abb. 3.3). Den Kreisradius gibt man in den Einheiten der xAchse an.

5000 4500 4000 Frequency (Hz) 3500 3000 2500 2000 1500 1000 500 0 3.899 4 4.25 4.5 4.75 Time (s) 5 5.25

5 4.5 4 Frequency (kHz) 3.5 3 2.5 2 1.5 1 0.5 0 5.4

Abbildung 3.3: Plazierung von graphischen Elementen in einer Graphik.


46

Graphiken ergnzen

Im Untermen World M > Measure nden Sie Befehle, um die Einheiten des aktuellen Graphikobjekts (world coordinates) in Millimeter umzurechnen. Wenn Sie z.B. im obigen Beispiel einen Kreis mit genau 15 mm Durchmesser bentigen, whlen Sie World M > Measure > Horizontal mm to wc..., geben  OK Sie in das Dialogfenster die gewnschte Distanz ein (15 mm), klicken Sie  und bertragen Sie das Ergebnis aus dem InfoFenster in das Kreisradiusfeld des Draw circle...-Dialogs.

3.4.2

Achsen markieren und beschriften

Mit den Befehlen im Margins M Men knnen die Garnierungen, die durch die GarnishOption hinzugefgt werden, ergnzt oder von Grund auf neu erstellt werden.
Margins M

> Draw inner box zeichnet eine Box um das Objekt

Die Text xyz...Befehle fgen Achsbeschriftungen hinzu; mit aktivierter FarOption bekommt die Beschriftung mehr Abstand zur Achse Die Marks xyz every...Befehle steuern die Markierungsstriche an den Achsen und deren Beschriftung mit entsprechenden Zahlenwerten; die Units/DistanceEinstellung anhand eines Beispiels: - Um die yAchse (Frequenz) eines Spektrogramms mit der Einheit Hz zu beschriften, whlen Sie Units = 1 (da der frequency range in Hz angegeben ist) und als Distance z.B. 500; damit erhalten Sie alle 500 Hz eine Markierung (vgl. Abb. 3.3, linke Achse) - Um in kHz zu beschriften, whlen Sie Units = 1000 (1000 Hz = 1 kHz) und Distance = 0.5 (vgl. Abb. 3.3, rechte Achse) Wenn Sie die Markierung nicht ber die Units/Distance-Methode festlegen wollen, sondern einfach die Anzahl der Markierungen angeben wollen, nutzen Sie einen Befehl aus dem Untermen Margins M > Marks Mit den One mark xyz...Befehlen erzeugen Sie eine einzelne Markierung auer der Reihe; Sie knnen die Markierung mit dem entsprechenden Zahlenwert beschriften oder mit einem beliebigen Text

47

Graphiken erstellen

48

Kapitel 4 Doing phonetics


Dieses Kapitel behandelt einige typische Aufgaben und Ttigkeiten, die mit Hilfe von Praat erledigt werden knnen. Dargestellt wird jeweils die grunstzliche Herangehensweise in der Benutzeroberche von Praat. Dies dient dazu, dass Sie sich mit der konkreten Arbeitsweise in Praat vertraut machen und kleinere Projekte durchfhren knnen. Fr mittlere und grere Projekte ist es jedoch in aller Regel ntig, die einzelnen notwendigen Arbeitsschritte auf der Basis der hier vorgestellten Herangehensweise zu analysieren und weitgehend mit Hilfe von PraatSkripten zu automatisieren. Als Anregung nden Sie einige einfache SkriptBeispiele am Ende der jeweiligen Abschnitte. Wenn Sie sich angeregt fhlen und die Skripte gerne komplett nachvollziehen und evtl. Ihren Anforderungen anpassen wollen, sollten Sie frher oder spter Kapitel 5 durcharbeiten.

4.1
4.1.1

Annotieren
Das Prinzip

Eine Annotation ist eine zeitlich alinierte (time aligned) Beschreibung eines Signals, d.h. eine Annotation besteht aus einer Beschreibung (einem Label bzw. einem Etikett), welche mit einem bestimmten Zeitpunkt oder Zeitabschnitt des Signals assoziiert ist. Dabei kann ein Signal auf ganz verschiedenen Beschreibungsebenen annotiert werden, wie z.B. der segmentalen Ebene (phonematische Transkription), der Silbenebene (Silbengrenzen), der Wor-

Doing phonetics

Signal

Annotation

Abbildung 4.1: Ein annotiertes Signal. Das TextGrid besteht hier aus 7 tiers: (1) Wrter (orthographisch), (2) Silbengrenzen, (3) Silbenbetonung (1 = betont, 2 = unbetont), (4) Phoneme im Silbenverbund (SAMPA), (5) Einzelphoneme (SAMPA), (6) Wortarten und (7) Pitchakzente. Die ersten 6 tiers sind IntervalTiers (Annotation zwischen einem Anfangs und einem Endzeitpunkt; Intervallgrenzen sind durch vertikale blaue Linien markiert), die Pitchakzente ganz unten sind in einem PointTier annotiert.

tebene (orthographische Transkription), der syntaktischen Ebene (Konstituentengrenzen) usw. In Praat werden Annotationen in sogenannten TextGridObjekten abgelegt (ein Beispiel ist in Abbildung 4.1 dargestellt). Ein TextGridObjekt besteht aus einem oder mehreren tiers (Zeilen), wobei jedes tier fr eine unabhngige Annotationsebene steht. Ein TextGrid kann also z.B. ein tier fr eine phonematische Transkription, ein tier fr eine enge phonetische Transkription und ein tier fr eine Transkription der Intonation enthalten. Jedes TextGridObjekt ist genau einem SoundObjekt fest zugeordnet (einem SoundObjekt knnen jedoch mehrere TextGridObjekte zugeordnet werden). Praat unterscheidet zwei Typen von tiers: IntervalTiers und PointTiers. Interval tiers eignen sich fr die Annotation von ausgedehnten Ereignissen mit einem Anfangs und Endzeitpunkt, wie z.B. Segmente oder Silben (Assoziation eines Etiketts mit einem Zeitabschnitt). Point tiers eignen sich dage50

Annotieren

gen zur Annotation von punktuellen Ereignissen, z.B. Vokalmittelpunkte oder PitchAkzente (Assoziation eines Etiketts mit einem Zeitpunkt). Annotiert wird im TextGridEditor (vgl. Abb. 4.1 und 4.2). Dieser unterscheidet sich im wesentlichen dadurch vom SoundEditor, dass er ber drei zustzliche Mens verfgt, die der Bearbeitung von tiers dienen:
Interval M Boundary M Tier M

Alle nderungen, die Sie im TextGridEditor machen (Hinzufgen/Verschieben/Lschen von Annotationen usw.), werden sofort in das TextGridObjekt geschrieben. Wie alle neu erzeugten oder vernderten Objekte, existiert das TextGridObjekt jedoch zunchst nur im Arbeitsspeicher. Soll es nach dem Beenden von Praat erhalten bleiben, muss es auf die Festplatte gespeichert werden: im TextGridEditor: File M > Write TextGrid to text le... oder: TextGridObjekt im ObjektFenster auswhlen Write M > Write to text le...

4.1.2

Arbeiten mit TextGrids

1. TextGrid erzeugen und ffnen Im ObjektFenster ein SoundObjekt auswhlen Ein TextGridObjekt erzeugen: Annotate - M > To TextGrid... Im Einstellungsfenster bestimmen Sie die Anzahl, den Namen und den Typ der gewnschten tiers - All tier names: Geben Sie, durch Leerzeichen getrennt, die Namen der tiers an; dadurch bestimmen Sie Namen und Anzahl der tiers in Ihrem TextGrid; tiers, die Sie hier denieren und deren Name nicht im nchsten Feld auftaucht, sind automatisch interval tiers - Point tiers?: Soll eines (oder mehrere, durch Leerzeichen getrennt) der zuvor
51

Doing phonetics

denierten tiers ein point tier sein, tragen Sie hier den/die Namen ein  - klicken Sie  OK Im ObjektFenster das SoundObjekt (Klick) und das zugehrige TextGridObjekt (STRG +Klick) auswhlen TextGridEditor ffnen:  Edit 2a. Intervall einfgen (interval tier) Ein Intervall ist, wie gesagt, durch einen Anfangs und einen Endzeitpunkt deniert. Diese Zeitpunkte heien boundaries, da es sich dabei immer um die Grenze zwischen zwei benachbarten Intervallen handelt, d.h. der Endzeitpunkt eines Intervalls ist immer gleichzeitig der Anfangszeitpunk des folgenden Intervalls. Gehen Sie folgendermaen vor, um boundaries einzufgen: Im Signal auf den Anfang des gewnschten Intervalls klicken; im Signal erscheint der Cursor (rote, gepunktete Linie), in den tiers erscheinen grne Linien: boundaryKandidaten boundary einfgen: Interval M > Add interval on tier 1 (oder einem anderen tier) oder: Boundary M > Add on tier 1 (oder einem anderen tier) oder:


sofern das richtige tier aktiviert ist, drcken Sie einfach Enter (ein tier wird aktiviert, indem Sie in das tier klicken; vgl. Abb. 4.2) oder: klicken Sie in den kleinen Kreis eines boundaryKandidaten All diese Alternativen sind quivalent, suchen Sie sich die fr Sie bequemste aus. Waren Sie erfolgreich, ist aus dem grnen boundaryKandidat eine rote boundary geworden und das Intervall nach der boundary ist gelb markiert.
52

Annotieren

Obwohl Sie nur eine Grenze eingefgt haben, haben Sie damit schon zwei Intervalle erzeugt: Intervall 1 vom Anfang der Datei bis zur Grenze, Intervall 2 von der Grenze bis zum Ende der Datei. Vermutlich ist das noch nicht das, was Sie eigentlich wollten. Um also das gewnschte Intervall zu denieren, fgen Sie auf die gleiche Weise wie oben beschrieben eine weitere boundary hinzu: Im Signal auf das Ende des gewnschten Intervalls klicken boundary einfgen Jetzt haben Sie ihr WunschIntervall deniert, aber es ist noch nicht ausgewhlt (gelb markiert). Zum Markieren klicken Sie irgendwo in das Ziel Taste) Intervall. Dann knnen Sie erstmal anhren (z.B. mit der Tabulator und prfen, ob die Grenzen korrekt gesetzt sind. Sind sie es nicht, knnen sie eine boundary folgendermaen verschieben: darauf klicken+halten verschieben loslassen. Boundaries lassen sich natrlich auch lschen: Aktivieren Sie eine boundary, indem Sie darauf klicken (eine aktive boundary ist wird rot dargestellt) und whlen Sie Boundary M > Remove. Falls Sie in zwei benachbarte Intervalle schon Labels eingegeben haben (s.u.) und die Grenze dazwischen lschen, bleiben beide Labels in dem neu entstandenen greren Intervall erhalten. 2b. Zeitpunkt einfgen (point tier) (Zeitpunkte in point tiers heien auch boundaries, obwohl der Begriff hier nicht besonders sinnvoll ist. . . ) Im Signal auf den entsprechenden Zeitpunkt klicken boundary einfgen: Boundary M > Add on tier 1 (oder einem anderen tier) oder:

sofern das richtige tier aktiviert ist, drcken Sie Enter oder: klicken Sie in den kleinen Kreis eines boundaryKandidaten Boundaries lschen: Siehe oben.
53

Doing phonetics

3. Label eingeben Annotieren heit, beliebige Informationen zeitlich aliniert mit einem Signal zu verknpfen. Dadurch, dass Sie in den vorangegangenen Schritten das Zeitintervall bzw. den Zeitpunkt deniert haben, haben Sie die Voraussetzung fr das time alignment geschaffen. Jetzt mssen Sie nur noch die Information, also ein Label bzw. ein Etikett eingeben. Das kann beliebiger Text sein, von einem einzelnen Symbol (auch phonetische Symbole sind mglich, siehe Phonetic symbols im Help M Men des TextGridEditors) ber z.B. ToBI Labels (H*+L, L-L% etc.) zur Beschreibung der Intonation oder Krzeln zur Bestimmung der Wortart bis hin zu lngeren Texten (z.B. knnen Sie die orthographische Transkription eines Satzes in ein Intervall schreiben, welches Sie um diesen Satz herum erstellt haben). Um ein Label einzugeben, klicken Sie in das ZielIntervall und tippen Sie los fertig. Als kleine Hilfe gibt es den LabelEditor: Die weie Flche zwischen Mens und Oszillogramm (vgl. Abb 4.2). Klicken Sie hinein und bearbeiten Sie ihre Labels (Einfgen, Lschen, Ergnzen etc. wie in einem normalen Texteditor). Farbenlehre Hier noch einmal zusammengfasst, was die Farben im TextGridEditor bedeuten. Boundaries: grn, mit kleinem Kreis: boundaryKandidat in einem interval tier schwarz, mit kleinem Kreis: boundaryKandidat in einem point tier blau: eingefgte boundary, inaktiv rot: eingefgte boundary, aktiv/ausgewhlt Intervalle: wei: inaktiv gelb: aktiv/ausgewhlt Tiers: Beschriftung (links: Nummer, rechts: Name) schwarz: inaktiv Beschriftung rot: aktiv

54

Annotieren

Label-Editor

1. Tier (aktiv) 2. Tier (inaktiv)

ausgewhltes Intervall

Zoomknpfe

Abspielbalken

1. Tier (inaktiv) 2. Tier (aktiv) ausgewhlte boundary

Abbildung 4.2: Der TextGridEditor, mit aktiviertem interval tier (oben) und aktiviertem point tier (unten).

55

Doing phonetics

4.1.3

Ein Beispiel Schritt fr Schritt

Wortgrenzen markieren und Wrter orthographisch transkribieren.

1 Im ObjektFenster ein SoundObjekt auswhlen.

2 Ein zugehriges TextGridObjekt erzeugen.

3 Fr Wortgrenzen eignet sich ein Interval tier (Wrter haben einen Anfangs und einen Endzeitpunkt) z.B. mit dem Namen "woerter".

56

Annotieren

4 Im ObjektFenster das SoundObjekt und das zugehrige TextGrid Objekt auswhlen und im TextGridEditor ffnen.

5 Der TextGrid-Editor erscheint in einem neuen Fenster. Evtl. werden bei Ihnen zwischen dem Signal und dem TextGrid noch diverse Analysen angezeigt.

6 ffnen der AnalyseEinstellungen.

57

Doing phonetics

7 Um Wortgrenzen einigermaen genau zu markieren, ist ein Breitband Spektrogramm hilfreich, andere Analysen knnen deaktiviert werden.

8 Evtl. mssen die SpektrogrammEinstellungen angepasst werden, um ein BreitbandSpektrogramm zu erzeugen (vgl. 2.3.3).

9 Nun machen Sie sich auf die Suche nach dem ersten Wort (Abschnitt markieren anhren Markierung korrigieren anhren usw.).

58

Annotieren

10 Fgen Sie eine Grenze am Wortanfang ein (vgl. S. 52).1

11 Die Grenze erscheint im woertertier und ist aktiv (rot). Durch das Einfgen der Grenze sind zwei Intervalle entstanden; das zweite Intervall ist aktiv (gelb), d.h. Sie knnen sofort lostippen und das entsprechende Wort eingeben. Oder Sie setzen erst alle Grenzen und ergnzen dann in einem zweiten Durchgang die Labels.

12 Klicken Sie an das Ende des Wortes (im Signal oder im Spektrogramm, nicht im TextGrid) und fgen Sie eine weitere Grenze hinzu. Oder Sie benutzen in Schritt 10 das Skript von Seite 63; dann werden mit einem Klick beide Grenzen erzeugt und Sie ersparen sich die erneute Suche nach dem Wortende.
In neueren PraatVersionen (sptestens ab 5.1.10, evtl. schon etwas frher) werden, wenn im Oszillogramm eine Auswahl existiert, endlich mit einem Klick beide Grenzen eingefgt, sowohl am Anfang als auch am Ende der Auswahl. Schritt 12 und das dort erwhnte Skript auf Seite 63 sind damit obsolet. 59
1

Doing phonetics

13 Wiederholen Sie die Schritte 912 bis alle Wortgrenzen markiert sind. Nutzen Sie bei lngeren Aufnahmen die Zoom und Blttern Funktionen. 14 Wenn Sie noch keine Labels eingegeben haben, gehen Sie nun zurck zum Anfang und klicken Sie in das erste Intervall, das Sie beschriften mchten.

15 Geben Sie ein Label ein. Im LabelEditor zwischen Men und Signal knnen Sie Ihre Eingabe gegebenenfalls korrigieren. Pausen am Anfang oder Ende der Aufnahme oder auch zwischen Wrtern knnen z.B. mit dem Etikett <P> annotiert werden.

60

Annotieren

16 Klicken Sie in das nchste Intervall und geben Sie ein Label ein usw.

Oder benutzen Sie das Tastaturkrzel fr den Befehl View M > Select next interval. Auf diese Weise knnen Sie sich durch das ganze tier arbeiten und smtliche Labels eingeben, ohne die Hnde von der Tastatur zu nehmen.

61

Doing phonetics

17 Wenn es beim time alignment auf Genauigkeit ankommt, sollten Sie Ihre Annotation am Ende nochmals berprfen: Gehen Sie zum Anfang der Aufnahme und whlen Sie eine relativ starke Vergrerung (Zoom in). Blttern Sie dann durch das Signal und korrigieren Sie gegebenenfalls die Grenzen der Intervalle (anklicken+halten verschieben loslassen). Wenn es um segmentale Annotationen geht (Laut, Silben, Wortgrenzen etc.), verlassen Sie sich nicht allein auf Ihr Gehr, sondern orientieren Sie sich am Spektrogramm.

18 Vergessen Sie nicht, Ihre Annotation zu speichern!!!

62

Annotieren

4.1.4

Ausblick: Einfache Skripte

Intervall aus Auswahl (Dieses Skript ist sptestens ab Praat 5.1.10 berssig, da die entsprechende Funktionalitt nun in Praat integriert ist.) Stellen Sie sich vor, Sie haben im Oszillogramm einen Signalausschnitt markiert und mchten nun in einem interval tier ein Intervall erzeugen mit einer boundary am Anfang der Auswahl und einer boundary am Ende der Aus Taste drcken) knnen Sie nur die wahl. Mit den Praat-Befehlen (z.B. Enter boundary am Anfang setzen; gleichzeitig verschwindet dadurch die Auswahl, d.h. Sie mssen das Ende erneut suchen und anklicken, um dann die zweite boundary einzufgen. Mit dem folgenden kleinen PraatSkript, das Sie schon aus der Einfhrung kennen (vgl. S. 19), knnen Sie jedoch die gewnschte Funktion implementieren: Es erzeugt aus einem ausgewhlten Signalabschnitt ein Intervall in einem TextGrid, in welches dann ein Label eingetragen werden kann. Zeilen, die mit # beginnen, sind Kommenare, d.h. sie werden bei der Ausfhrung des Skripts ignoriert und dienen nur der Erluterung.

Skript 4.1.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

# Der Anfangszeitpunkt der Auswahl wird der # Variablen a zugewiesen a = Get start of selection # Der Endzeitpunkt der Auswahl wird der # Variablen b zugewiesen b = Get end of selection # Der Signalcursor wird zum Anfang bewegt Move cursor to... a # In das aktive tier wird eine boundary eingefgt Add on selected tier # Der Signalcursor wird zum Ende bewegt # und es wird eine weitere boundary eingefgt Move cursor to... b Add on selected tier # Da nach dem Einfgen einer boundary das nachfolgende # Intervall ausgewhlt ist, braucht es zur Aktivierung

63

Doing phonetics

22 23

# des Zielintervalls den folgenden Befehl Select previous interval

Um das Skript zu benutzen, ffnen Sie ein neues EditorSkript ( File M > New editor script) und kopieren Sie die Befehle in das neu geffnete Fenster, den sogenannten SkriptEditor (die Kommentare knnen Sie natrlich weglassen). Aktivieren Sie dann ein geeignetes interval tier, whlen sie einen Signalabschnitt aus und klicken Sie dann im SkriptEditor auf Run M > Run. Mittelpunkt berechnen Ein mgliches Szenario: Sie haben in einem interval tier Vokale annotiert und wollen nun in der Mitte des Vokals z.B. Formanten messen. Als Voraussetzung dafr berechnet das folgende Skript den Mittelpunkt eines gegebenen Intervalls und fgt in einem point tier eine boundary ein.2 Zum Messen von Formanten oder andere Arbeitsschritte muss das Skript entsprechend erweitert werden.
Skript 4.1.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

# # a b c

Mittelpunkt des Intervalls aus Startzeitpunkt (a) und Lnge (b) berechnen; der Mittelpunkt wird c zugewiesen = Get start of selection = Get selection length = a+(b/2)

# Mit dem folgenden Befehl verlsst das Skript die # Editor-Umgebung und kann somit auf Befehle des # Objekt-Fensters zugreifen endeditor # Da beim ersten Skriptaufruf vermutlich sowohl Sound-Objekt # als auch TextGrid markiert sind, im folgenden aber nur das # TextGrid bearbeitet werden soll, muss hier die Markierung # des Sound-Objekts aufgehoben werden. # # Anzahl der markierten Objekte feststellen nos = numberOfSelected () # Wenn mehr als ein Objekt markiert ist... if nos > 1 # ID des Sound-Objekts feststellen sound = selected ("Sound")
2

Wenn Sie einen anderen Zeitpunkt als den Mittelpunkt bentigen, mssen Sie nur die Formel in Zeile 5 entsprechend anpassen. 64

Annotieren

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

# Markierung des Sound-Objekts aufheben minus sound endif # Sicherstellen, dass ein TextGrid markiert ist; # Wenn nicht, bricht das Skript mit einer Fehlermeldung ab textgrid = selected ("TextGrid") # ID des Zielintervalls feststellen; # 1 = Nummer des Interval-Tier im TextGrid; # c = Mittelpunkt des Intervalls (s.o.); noi = Get interval at time... 1 c # Label im Zielintervall abfragen; # 1 = Nummer des Interval-Tier im TextGrid; # noi = ID des Zielintervalls label$ = Get label of interval... 1 noi # Boundary in das Point-Tier eintragen. # Die boundary wird mit dem Label aus dem Intervall annotiert; # 2 = Nummer des Point-Tier im TextGrid; # c = Annotationspunkt (Mittelpunkt) # label$: Label aus dem Intervall einfgen; Insert point... 2 c label$ # Zurck in die Editor-Umgebung editor # Cursor zu dem ermitelten Zeitpunkt bewegen Move cursor to... c

Skript benutzen: Ein neues EditorSkript ffnen ( File M > New editor script) und die Befehle in den SkriptEditor kopieren. Das Skript geht davon aus, dass Sie einen TextGridEditor geffnet haben, wobei das erste tier ein interval tier mit annotierten Intervallen ist, das zweite tier ein leeres point tier. Dann mssen Sie nur noch ein Intervall aktivieren (hinein klicken) und das Skript starten (im SkriptEditor Run M > Run whlen). TextGrids automatisch auswerten Sie haben Laute, Silben oder Wrter annotiert, um deren Dauer zu messen. Entweder Sie klicken nun in jedes Intervall, lesen die Dauer ab (vgl. Kapitel 4.3) und notieren die Werte von Hand. Oder Sie benutzen das folgende Skript, das Intervall fr Intervall durch ein TextGridtier springt und die Dauer sowie das Label im InfoFenster ausgibt in einer ordentlichen Tabelle mit ei65

Doing phonetics

ner Zeile pro Intervall. Diese Tabelle knnen Sie speichern (im InfoFenster: File M > Save as...) und dann z.B. in einer Tabellenkalkulation weiterverarbeiten. Hier zunchst einmal das ObjektFenster mit dem ausgewhlten TextGrid und die Ausgabe im InfoFenster:

Und hier das Skript dazu:


Skript 4.1.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14

# Sicherstellen, dass ein TextGrid markiert ist; # Wenn nicht, bricht das Skript mit einer Fehlermeldung ab textgrid$ = selected$ ("TextGrid") # Festlegen, welches TextGrid-tier ausgewertet werden soll tier_nr = 1 # berschrift und Kopfzeile in das Info-Fenster schreiben echo Auswertung von textgrid$ printline printline Nr.tab$Dauer (in ms)tab$Label printline # Anzahl der Intervalle abfragen

66

Annotieren

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

noi = Get number of intervals... tier_nr # Die folgende Schleife (for ... endfor) springt # von Intervall zu Intervall for zaehler from 1 to noi # Startzeitpunkt des aktuelen Intervalls abfragen sp = Get start point... tier_nr zaehler # Endzeitpunkt des aktuelen Intervalls abfragen ep = Get end point... tier_nr zaehler # Dauer berechnen (ep-sp), in Millisekunden konvertieren # (*1000) und Nachkommastellen entfernen (round) dur = round((ep-sp)*1000) # Label des aktuelen Intervalls abfragen label$ = Get label of interval... tier_nr zaehler # neue Zeile in das Info-Fenster schreiben printline zaehlertab$tab$durtab$tab$label$ # Zum nchsten Intervall springen oder Schleife beenden endfor

Skript benutzen: Ein neues Skript ffnen ( Praat M > New Praat script) und die Befehle in den SkriptEditor kopieren. Dann im ObjektFenster ein TextGridObjekt auswhlen und das Skript starten (im SkriptEditor Run M > Run whlen). Wenn Sie in dem ausgewhlten TextGrid nicht das erste tier auswerten wollen (sondern z.B. das dritte), passen Sie die Variable tier_nr in Zeile 6 entsprechend an (z.B. tier_nr = 3).

67

Doing phonetics

4.2

Formanten messen

In der Literatur werden unzhlige Methoden beschrieben, um Formanten zu messen, alle mit spezischen Vor und Nachteilen, die hier nicht diskutiert werden sollen. Auch in Praat gibt es viele Mglichkeiten, Formanten zu messen, die hier ebenfalls nicht alle behandelt werden. Ich werde mich auf zwei Varianten beschrnken und es Ihrer Experimentierfreude (untersttzt durch die Praat-Hilfe) berlassen, weitere Methoden und Vorgehensweisen zu entdecken. Wenn Sie ein Projekt bearbeiten, sollten Sie sich jedoch zu Beginn auf eine Methode festlegen, die am besten zu Ihren Daten und Anforderungen passt, und diese dann durchgehend beibehalten. Der Grund dafr ist, dass unterschiedliche Messmethoden in der Regel auch leicht unterschiedliche Werte liefern, d.h. wenn Sie whrend eines Projekts die Methode wechseln, sind die gewonnenen Ergebnisse nicht mehr vollstndig vergleichbar. Bevor Sie Formanten messen, verschaffen Sie sich erst einmal einen berblick ber Ihre Daten mit Hilfe eines Breitbandspektrogramms. Welche Einstellungen dafr notwendig sind, ist auf Seite 34 nachzulesen.

4.2.1

Die halbautomatische Methode

Die einfachste und meist auch sehr adquate Mglichkeit, Formanten zu messen, bietet der Formantenalgorithmus von Praat. Dieser Algoriyhmus versucht, unter Bercksichtigung verschiedener Parameter, sowohl Formantfrequenzen als auch bandbreiten der ersten 5 Formanten aus dem Signal zu berechnen. Einige der Parameter knnen in den Einstellungen ( Formant M > Formant settings...) verndert werden. Bevor Sie anfangen, Formanten zu messen, sollten Sie hier zumindest einen Parameter an Ihre Aufnahme anpassen: Die obere Grenze des Frequenzbereichs, in dem Praat nach den Formanten sucht (Maximum formant). Diese Einstellung ist vom Alter bzw. vom Geschlecht der Sprecherin/des Sprechers abhngig. Die folgenden Werte werden in der PraatHilfe empfohlen: Frauen
Maximum formant (Hz):

Mnner

Erwachsene Kinder

5500 5000 ca. 8000

68

Formanten messen

ber die anderen Parameter erfahren Sie mehr, wenn Sie im Einstellungsfens ter  Help anklicken. Dort ist auch der Berechnungsalgorithmus kurz beschrieben.

Um sich das Ergebniss des Formantenalgorithmus anzusehen, whlen Sie Formant M > Show formants

Damit Sie das ganze besser einschtzen knnen, sollten Sie auf jeden Fall auch zugleich ein (Breitband) Spektrogramm anzeigen: Spectrum M > Show spectrogram Nun gibt es mehrere Mglichkeiten, wie Sie an Formantwerte kommen: (1) Entweder Sie messen an beliebigen Zeitpunkten oder (2) Sie messen immer an einem xen Punkt (z.B. immer am Vokalmittelpunkt) oder (3) Sie schauen sich den Formantenverlauf ber einige Millisekunden hinweg an und picken sich einen Wert heraus oder (4) Sie messen den Formantenverlauf ber einige Millisekunden hinweg und nehmen den Mittelwert oder. . .
69

Doing phonetics

Punktmessung Bei den Mglichkeiten (1) und (2) handelt es sich um Punktmessungen3 Wenn Sie sich fr Mglichkeit (1) entschieden haben, whlen Sie einen Zeitpunkt aus (z.B. indem Sie in das Oszillogramm oder in die Analysedarstellung klicken) und verfahren Sie wie unten angegeben. Bei Mglichkeit (2) mssen Sie z.B. mit Hilfe eines Skripts sicherstellen, dass der Cursor zum gewnschten Zeitpunkt bewegt wird. Ein BeispielSkript, das den Cursor zum Mittelpunkt eines zuvor annotierten Segments bewegt, nden Sie auf Seite 64. Bendet sich der Cursor am gewnschten Zeitpunkt im Signal, gehen Sie wie folgt vor: Formantfrequenzen der ersten 4 Formanten anzeigen: Formant M > Formant listing (im InfoFenster wird der Messzeitpunkt (erster Wert) und die Formantfrequenzen von F1 F4 angezeigt, jeweils durch ein Leerzeichen getrennt)

oder: Formantfrequenz und bandbreite einzeln anzeigen: Formant M > Get rst/second/third/fourth formant bzw. Formant M > Get rst/second/third/fourth bandwidth

Genau genommen handelt es sich bei der Messung an einem bestimmten Zeitpunkt nicht um eine Punktmessung, da der Zeitpunkt nur den Mittelpunkt eines Analysefensters bestimmt, in dem die Berechnung dann tatschlich durchgefhrt wird. 70

Formanten messen

Die Messwerte werden im InfoFenster angezeigt und jede Messung berschreibt die vorherige Anzeige, d.h. wenn Sie die Werte weiterverarbeiten wollen, mssen Sie sie sofort notieren oder per Kopieren/Einfgen in ein anderes Programm (z.B. eine Tabellenkalkulation) bertragen. Oder Sie schreiben ein Skript, das diese lstige und fehlerbehaftete Aufgabe fr Sie bernimmt. . . Bereichsmessung Fr die Varianten (3) und (4) markieren Sie zunchst einen Signalabschnitt, z.B. einen ganzen Vokal. Dies knnen Sie von Hand machen oder indem Sie in ein zuvor erstelltes Intervall klicken oder wie auch immer. Fr Variante (3) lassen Sie sich alle Formantwerte (F1 F4) innerhalb des ausgewhlten Bereichs anzeigen, indem Sie Formant M > Formant listing whlen. Das InfoFenster zeigt dann eine Tabelle mit der folgenden Struktur: 1. Spalte: 2. Spalte: Zeitpunkt F1 Ein Beispiel: 3. Spalte: F2 4. Spalte: F3 5. Spalte: F4

Whlen Sie einen Wert oder eine ganze Zeile aus und notieren oder kopieren Sie das Ergebnis (letztendlich handelt es sich hier also auch um eine Punktmessung). Diese Methode eignet sich z.B., um Extremwerte zu nden: Wenn ein Formant zu Beginn des Vokals ansteigt und zum Ende hin wieder abfllt, knnen
71

Doing phonetics

Sie auf diese Art und Weise z.B. den Hchstwert ermitteln (der mit der grten Annherung des Vokaltrakts an das artikulatorische Ziel korreliert). Umgekehrt suchen Sie nach dem tiefsten Wert, wenn der Formant sich zu Beginn abwrts und zum Ende hin aufwrts bewegt. Auch dies lt sich natrlich am besten mit Hilfe eines Skripts bewerkstelligen. Variante (4) eignet sich dagegen eher, um einen unruhigen Formantverlauf (z.B. aufgrund schlechter Signalqualitt) zu gltten. Whlen Sie einen nicht zu groen Signalabschnitt aus und nutzen Sie dann die Get rst/second/third/fourth formantBefehle im Formant M Men. Es wird dann automatisch der Mittelwert fr den jeweiligen Formanten innerhalb des ausgewhlten Abschnitts berechnet und im InfoFenster ausgegeben.

Grundstzlich sollten Sie bei der halbautomatischen Messmethode nie vergessen, die angezeigten Werte auf Plausibilitt zu berprfen. Der Formantenalgorithmus von Praat ist gut, aber nicht unfehlbar!

72

Formanten messen

4.2.2

Die manuelle Methode

In diesem Abschnitt wird beschrieben, wie Sie vorgehen knnen, um in Praat Formanten von Hand in einem Spektrum zu messen. Es geht hier jedoch nur darum, aufzuzeigen, wie die notwendigen Analysen und Anzeigen generiert und ausgemessen werden. Die eigentliche Arbeit die Interpretation der Analysen und die Identikation von Formanten erfordert unbedingt ein gewisses Ma an Erfahrung, welches in diesem Rahmen nicht vermittelt werden kann. Um ein Spektrum an der Cursorposition zu berechnen und anzuzeigen whlen Sie Spectrum M > View spectral slice. Die Gre des Analysefensters bernimmt Praat aus den Spectrogram settings, d.h. abhngig von dem dort eingestellten Wert erhalten Sie ein Breitband oder ein Schmalbandspektrum. Das Spektrum wird in einem neuen Fenster angezeigt, dem SpectrumEditor:

Wenn man auf einen Punkt in dem weien Graphikbereich klickt, erscheint ein roter Kreuzcursor und die entsprechenden Frequenz und Amplitudenwerte werden oberhalb bzw. links des Spektrums angezeigt. Um also Formantfrequenzen zu messen, mssen Sie darauf achten, dass die vertikale Linie des Kreuzcursors korrekt plaziert ist.

73

Doing phonetics

Der Befehl Spectrum M > View spectral slice erzeugt immer auch ein neues SpectrumObjekt in der Objektliste. Das ist dann praktisch, wenn Sie ein Glttungsverfahren wie z.B. LPC auf das Spektrum anwenden wollen. Whlen Sie in diesem Fall das neue SpectrumObjekt im ObjektFenster aus, kli LPC und cken Sie auf  smoothing... geben Sie die entsprechenden Parameter  OK erzeugt ein neues SpectrumObjekt, welches Sie mit ein. Ein Klick auf   einem Klick auf  einem neuen SpectrumEditor ffnen und ausmessen Edit in knnen.

74

Formanten messen

Diese Schritte knnen mit dem folgenden EditorSkript automatisiert werden:


1 2 3 4 5 6 7 8

# Spektrum erzeugen View spectral slice #Sound-Editor verlassen endeditor # LPC-Spektrum erzeugen... LPC smoothing... 10 50 # ...und darstellen Edit

Whlen Sie im SoundEditor File M > New editor script und schreiben/kopieren Sie die obigen Befehle in den Editor (passen Sie bei Bedarf die LPC-Parameter an). Oder erstellen Sie das Skript selbst mit Hilfe der History Funktion: Whlen Sie im SkriptEditor Edit M > Clear history. Erstellen Sie dann ein Spektrum, wenden Sie die LPC-Glttung an und laden Sie das LPC Spektrum in den SpectrumEditor (wie oben beschrieben). Wechseln Sie dann wieder in den SkriptEditor und whlen Sie Edit M > Paste history. Zuletzt mssen Sie noch den Befehl endeditor an zweiter Stelle einfgen. Wenn Sie nun in das Signal klicken und das Skript starten, erscheinen sofort die beiden Spektren: ein OriginalSpektrum und ein LPCSpektrum.

75

Doing phonetics

4.2.3

Ein Beispiel Schritt fr Schritt

F1 und F2 von isoliert gesprochenen Vokalen messen. 1 Im ObjektFenster das SoundObjekt auswhlen und im SoundEditor ffnen.

2 Analysen kongurieren.

3 Zum Messen von Formanten bentigen wir ein Spektrogramm und die Formantenanalyse.

76

Formanten messen

4 Einstellungen fr das (Breitband) Spektrogram (siehe S. 34) und die Formantenanalyse (siehe S. 68) anpassen.

5 Ersten Vokal auswhlen und anhren.

77

Doing phonetics

6 In die Vokalmitte klicken und Formanten anzeigen.

7 Notieren/kopieren Sie den zweiten (erster Formant) und den dritten Wert (zweiter Formant) aus dem InfoFenster.

8 Wiederholen Sie das Vorgehen ab Schritt 5, um die restlichen Vokalformanten zu messen.

78

Formanten messen

4.2.4

Ausblick: Einfache Skripte

Maximum, Minimum und Mittelwert von Formanten ausgeben Wenn Sie in einem ausgewhlten Signalabschnitt die Extremwerte und den Mittelwert eines Formanten bentigen, knnen Sie entweder Formant M > Formant listing whlen und sich die Werte aus der angezeigten Tabelle zusammensuchen bzw. berechnen (wenn Sie nur an Mittelwerten interessiert sind, schauen Sie auf Seite 72 nach). Oder Sie benutzen das folgende Skript.
Skript 4.2.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

#Startzeitpunkt der Auswahl bestimmen start = Get start of selection #Endzeitpunkt der Auswahl bestimmen end = Get end of selection # Formant-Objekt erzeugen Extract visible formant contour # Sound-Editor verlassen endeditor # Werte abfragen und runden x = Get maximum... 1 start end Hertz maxf1 = round(x) x = Get maximum... 2 start end Hertz maxf2 = round(x) x = Get minimum... 1 start end Hertz minf1 = round(x) x = Get minimum... 2 start end Hertz minf2 = round(x) x = Get mean... 1 start end Hertz meanf1 = round(x) x = Get mean... 2 start end Hertz meanf2 = round(x)

None None None None

# Werte im Info-Fenster ausgeben clearinfo printline tab$tab$tab$ F1tab$tab$ F2 printline Maximumtab$tab$maxf1tab$tab$maxf2 printline Minimumtab$tab$minf1tab$tab$minf2 printline Mittelwerttab$tab$meanf1tab$tab$meanf2 # Formant-Objekt entfernen Remove

Das Skript erzeugt die folgende Ausgabe im Info-Fenster:


79

Doing phonetics

Skript benutzen: Neues EditorSkript ffnen (im SoundEditor: File M > New editor script) und die obigen Befehle in den SkriptEditor kopieren. Signalabschnitt auswhlen und das Skript starten ( Run M > Run). Wenn Sie an weiteren Werten interessiert sind (z.B. Standardabweichnung), recherchieren Sie zunchst die Abfragemglichkeiten, die Praat fr Formant Objekte anbietet. Erstellen Sie dazu ein FormantObjekt ( Formant M > Extract visible formant contour) und schauen Sie sich im Query - M Men des ObjektFensters um. Ergnzen Sie dann das Skript mit den entsprechenden Abfragebefehlen (nutzen Sie die HistoryFunktion; siehe S. 103).

80

Formanten messen

Graphische Darstellung des Vokalraums erstellen Annotieren Sie zunchst die Vokale in einer Aufnahme mit isoliert gesprochenen Vokalen. Aktivieren Sie dann die Spektrogramm und Formantenanalyse. Das Ergebniss sollte ungefhr so aussehen:

Mit dem folgenden Skript wird das GraphikFenster initialisiert; kopieren Sie die Befehle in ein PraatSkript ( Praat M > New Praat script) und fhren Sie das Skript einmal aus. Sie knnen das Skript danach wieder schlieen.
Skript 4.2.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14

# Vokalraumgraphik initialisieren Erase all Select outer viewport... 0 5 0 4 Black Line width... 1 Plain line Helvetica 10 Axes... 2500 0 1000 0 Marks right every... 1 500 yes yes yes Marks top every... 1 500 yes yes yes Draw inner box Text right... yes F1 Text top... yes F2

81

Doing phonetics

Das Initialisierungsskript erzeugt die folgende Graphik:

Klicken Sie dann im TextGridEditor in das erste Vokalintervall. . .

82

Formanten messen

. . . und starten Sie das folgende Skript (Befehle in ein neues EditorSkript kopieren ( File M > New editor script), dann im SkriptEditor Run M > Run whlen):
Skript 4.2.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

# Startzeitpunkt des ausgewhlten Intervalls bestimmen start = Get starting point of interval # Endzeitpunkt des ausgewhlten Intervalls bestimmen end = Get end point of interval # Mittelpunkt berechnen... mitte = start+((end-start)/2) # ...und Cursor bewegen Move cursor to... mitte # Label abfragen label$ = Get label of interval # Formanten abfragen und runden x = Get first formant f1 = round(x) x = Get second formant f2 = round(x) # Sound-Editor verlassen endeditor # Schriftattribute festlegen Times 12 Black # Vokallabel an den F1/F2-Schnittpunkt im Vokalraum schreiben Text... f2 Centre f1 Half label$

Klicken Sie in das nchste Intervall und starten Sie das Skript erneut. Wiederholen Sie diese Schritte, bis alle Vokale wie in der folgenden Abbildung dargestellt werden (zur Weiterverarbeitung siehe Kapitel 3).

83

Doing phonetics

84

Dauermessungen

4.3

Dauermessungen

Im Prinzip sind Dauermessungen mit Praat, genauso wie mit jedem anderen Programm, welches einen interaktiven Zugriff auf ein Oszillogramm erlaubt, trivial: Einen beliebigen Signalabschnitt im SoundEditor markieren, die Dauer (in Sekunden) ablesen fertig.

Die Dauer kann sowohl ber als auch unter dem markierten Abschnitt abgelesen werden; im Beispiel oben sind es 0,123329 Sekunden bzw. 123,3 Millisekunden (wie Sie wissen, knnen die Bereiche, wo die Dauer angezeigt wird, auch angeklickt werden, um den markierten Signalabschnit abzuspielen). Neben der Dauer zeigt Praat im oberen Anzeigebereich in Klammern auch die Frequenz in Hertz an. Wenn Sie also weit genug in den stimmhaften Bereich eines Signals hinein zoomen und eine Periode markieren, kann neben der Periodendauer auch die Grundfrequenz abgelesen werden (im Beispiel unten: Periodendauer = 7,65 ms, Grundfrequenz = 130,6 Hz). Tip: Markieren Sie die Periode zunchst grob und nutzen Sie dann die Befehle Move start of selection to nearest zero crossing und Move end of selection to nearest zero crossing aus dem Select M Men.

85

Doing phonetics

Technisch ist es also kein Problem, die Dauer beliebiger Einheiten zu messen, angefangen bei subsegmentalen Einheiten, wie z.B. die Verschluss oder Aspirationsphasen von Plosiven oder die Transitionsphasen am Anfang oder am Ende von Vokalen, ber Segmente, Silben, Wrter und Phrasen, bis hin zu ganzen uerungen. Problematisch ist es allerdings, die Grenzen solcher Einheiten im akustischen Signal genau zu denieren. Hierzu mssen Sie geeignete Kriterien (z.B. ein Vokal endet, wo der zweite Formant endet) in der Literatur recherchieren und konsistent auf Ihr Material anwenden. Planen Sie jedoch unbedingt eine bungsphase ein, da bei der praktischen Umsetzung der Kriterien erfahrungsgem Fragen und Unsicherheiten auftauchen, die weitgehend geklrt werden sollten, bevor mit den eigentlichen Messungen begonnen wird.

4.3.1

Die TextGridMethode

Bei Dauermessungen in greren Korpora sollte man auf jeden Fall mit TextGrids arbeiten (s. Kapitel 4.1), aber auch schon bei kleineren Projekten ist ein solches Vorgehen unbedingt empfehlenswert. Hierbei werden in einem ersten Schritt die zu messenden Einheiten in einem TextGrid annotiert, um dann im zweiten Schrit die Zeitdauern aus dem TextGrid zu extrahieren. Dieses Vorgehen hat einige entscheidende Vorteile, die unten aufgefhrt sind, whrend der Nachteil ein etwas grerer Arbeitsaufwand minimal ist: Statt einen Signalabschnitt durch Ziehen mit der Maus im Oszillogramm zu mar Taste zu korrigieren, kieren und die Markierung mit gedrckter Umschalt setzt man einfach zwei Grenzen in einem Interval Tier, die durch Ziehen mit der Maus jederzeit feinjustiert werden knnen, und vergibt ein Label. Und ab einer gewissen Projektgre fllt sogar dieser Nachteil weg, d.h. wenn Sie viele Einheiten messen mssen, bedeutet die TextGridMethode einen geringeren Arbeitsaufwand. Die Vorteile der TextGridMethode: Arbeitsaufwand: Bei der einfachen Methode wird ein Signalabschnitt markiert und dann die Dauer abgelesen und notiert. Wenn die Signalabschnitte stattdessen in einem TextGrid annotiert werden, knnen die Zeitdauern mit geringem Aufwand (ein kleines Skript) automatisch extrahiert und in einem Format bereit gestellt werden, welches ohne weiteres z.B. in eine Tabellenkalkulation importiert werden kann. Je
86

Dauermessungen

nachdem, wieviel Sie messen mssen, verringert sich dadurch ab einer gewissen Menge der Arbeitsaufwand entscheidend. Auerdem werden Ablese und Tippfehler ausgeschlossen. Dokumentation/Nachvollziehbarkeit: Mit der einfachen Methode haben Sie am Ende eine Tabelle mit Messwerten. Wenn die zu messenden Einheiten jedoch in einem TextGrid annotiert werden (und nicht vergessen wird, das TextGrid zu speichern. . . ), kann jederzeit nachvollzogen werden, was und wie gemessen wurde. Nur so kann z.B. objektiv geprft werden, wie gut die oben angesprochenen Kriterien zur Segmentierung von Einheiten im akustischen Signal angewendet wurden. Mit der TextGridMethode wird also nicht nur das Ergebniss, sondern auch der Weg dorthin dokumentiert. Auch wenn beispielsweise im Rahmenn von Konsistenztests mehrere Personen das selbe Material analysieren, knnen nur TextGrids Aufschluss darber geben, weshalb unterschiedliche Personen evtl. zu unterschiedlichen Ergebnissen kommen. Nachbearbeitung: Nur mit der TextGridMethode kann eine Daueranalyse ohne groen Aufwand nachbearbeitet werden. Stellt sich z.B. nach einer gewissen Zeit ein Segmentierungskriterium als wenig sinnvoll heraus, knnen die bisher bearbeiteten Daten auf der Basis eines modizierten Kriteriums korrigiert werden, indem man die TextGrids durchgeht und die boundaries entsprechend anpasst. Automatisierung: Wie oben angesprochen bietet nur die TextGrid Methode die Mglichkeit, die Datenerfassung zumindest teilweise mit Hilfe von Skripten zu automatisieren, was bei umfangreichen Analysen unerlsslich ist. Selbst wenn Ihnen die Mhe, ein kleines Skript zu erstellen, zu viel ist, lohnt sich die TextGridMethode. In diesem Fall erstellen Sie zunchst eine Annotation und klicken dann nacheinander im Interval Tier alle relevanten Intervalle an, lesen die Dauerwerte ab und notieren diese. Auf diese Weise protieren Sie immer noch von zwei Vorteilen: Sie dokumentieren Ihre Analyse und haben die Mglichkeit zur Nachbearbeitung. Dieses Vorgehen wird im nchsten Abschnitt an einem Beispiel erlutert. Ein Beispiel fr ein einfaches Auswertungsskript nden Sie im Abschnitt 4.1.4 auf Seite 65ff.

87

Doing phonetics

4.3.2

Ein Beispiel Schritt fr Schritt

Dauermessung bei Vollvokalen mit Hilfe eines TextGrids. 1 Im ObjektFenster das SoundObjekt auswhlen und ein zugehriges TextGridObjekt erzeugen.

2 Ein Interval tier mit dem Namen vokale denieren.

3 Sound und TextGridObjekt auswhlen und im Editor ffnen.

88

Dauermessungen

4 Als Material dient hier die Aufnahme einer Nachsprechaufgabe mit einem Patienten. Auf der Suche nach dem ersten Vokal wird die erste Patientenuerung markiert (erkennbar an der greren Intensitt im Vergleich mit der vorangehenden uerung) und Zoom to selec sel Knopf ganz unten geklickt. tion im View M Men gewhlt oder der 

5 Als Hilfe bei der Segmentierung von Vokalen ist ein Breitband Spektrogram ntzlich (Einstellungen siehe S. 34): Show spectrogramm im Spectrum M Men.

89

Doing phonetics

6 Ersten Vokal grob auswhlen und anhren.

7 Enter drcken. Damit wird in aktuellen PraatVersionen ein vollstndiges Intervall eingefgt. In lteren Versionen wird nur der Vokalanfang eingefgt, die boundary am Ende muss extra eingefgt werden. Intervallgrenzen gegebenenfalls mit Hilfe des Spektrogramms durch ziehen mit der Maus justieren und dann in das Intervall klicken und ein Label eintragen.

8 Dauerwert ablesen und notieren. Nchsten Vokal suchen und weiter mit Schritt 6. Oder sie annotieren die Aufnahme in einem Rutsch durch und berlassen das Ablesen der Dauerwerte einem Skript. In diesem Fall wiederholen Sie die Schrite 6 und 7 bis das Ende der Aufnahme erreicht ist
90

Dauermessungen

und speichern das TextGrid sicherheitshalber ab: Write TextGrid to text le... im File M Men des TextGridEditors. Der TextGridEditor kann nun geschlossen werden. 9 Sicherstellen, dass im ObjektFenster nur das eben erstellte TextGrid ausgewhlt ist.

10 Whlen Sie im Praat M Men New Praat script und tippen bzw. kopieren Sie die folgenden Zeilen in das neue Skript (es handelt sich hier um eine etwas vereinfachte und unkommentierte Version des Skripts von Seite 65ff).
1 2 3 4 5 6 7 8 9 10 11

noi = Get number of intervals... 1 clearinfo for n from 1 to noi label$ = Get label of interval... 1 n if label$ <> "" start = Get start point... 1 n end = Get end point... 1 n dauer = round((end-start)*1000) printline label$tab$dauer endif endfor

11 Skript starten.

91

Doing phonetics

12 Wenn alles gut geht, erscheint im InfoFenster eine Tabelle mit allen Labels, die zuvor vergeben wurden, in der ersten Spalte und den dazugehrigen Dauerwerten (in Millisekunden, gerundet) in der zweiten Spalte; z.B. so:

13 Die Tabelle kann nun als ASCIIDatei gespeichert werden.

14 Import in OpenOfce: Neues Tabellendokument erzeugen


Einfgen Tabelle aus Datei...

ASCIIDatei auswhlen Tabulator als Trennzeichen auswhlen Der Import in andere Programme ist hnlich unkompliziert.

92

Dauermessungen

4.3.3

Ausblick: Einfache Skripte

Dauerwerte in ein Tabellenobjet schreiben Das folgende Skript schreibt Dauerwerte von Vokalen in ein Praat Tabellenobjekt mit zwei Spalten: Spalte 1 fr die Werte von ungespannten (Kurz) Vokalen, Spalte 2 fr die Werte von gespannten (Lang) Vokalen. Das Skript funktioniert nur mit einem TextGrid, in dem ausschlielich Vokale annotiert sind. Die Unterscheidung zwischen Lang und Kurzvokalen basiert auf dem :Diakritikum: Etiketten, die ein : enthalten zhlen als Langvokal, alle anderen als Kurzvokal. Wenn das Material also Diphtonge enthlt und diese als Langvokale bercksichtigt werden sollen, muss entweder das Skript entsprechend angepasst werden, oder die Diphtonge werden hilfweise mit : transkribiert (aI:, aU:, oI:).
Skript 4.3.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

# Im ausgewhlten TextGrid Objekt-ID, # Objektname und Anzahl der Intervale abfragen textgrid = selected ("TextGrid") name$ = selected$ ("TextGrid") noi = Get number of intervals... 1 # Tabelle mit zwei Spalten (namens "kurz" und "lang") erstellen Create Table with column names... name$ 1 kurz lang table = selected ("Table") # Hilfsvariablen initiieren kurz_no = 0 lang_no = 0 # Die folgende Schleife springt von Intervall zu Intervall... for n from 1 to noi select textgrid # Label abfragen label$ = Get label of interval... 1 n # Wenn das Label nicht leer ist... if label$ <> "" # Start- und Endzeitpunkt abfragen und Dauer berechnen start = Get start point... 1 n end = Get end point... 1 n dauer = round((end-start)*1000) # Enthllt das Label ein ":"? is_long = index(label$, ":") select table nor = Get number of rows # Wenn Langvokal... if is_long > 0

93

Doing phonetics

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

lang_no = lang_no+1 if lang_no > nor #Tabellenzeile hinzufgen Append row endif # Dauerwert in die Tabelle eintragen Set numeric value... lang_no lang dauer # Wenn Kurzvokal... else kurz_no = kurz_no+1 if kurz_no > nor Append row endif Set numeric value... kurz_no kurz dauer endif endif endfor

Skript benutzen: Neues PraatSkript ffnen ( Praat M > New Praat script) und die obigen Befehle in den SkriptEditor kopieren. TextGridObjekt im Objektfenster auswhlen und das Skript starten ( Run M > Run). Fr Tabellenobjekte stellt Praat eine ganze Reihe von Darstellungs und Bearbeitungsfunktionen zur Verfgung: Aus Spalten knnen Scatter plots erzeugt werden (s. Draw M Men), die Differenz zwischen zwei Spalten kann mit Hilfe eines tTest auf Signikanz geprft werden (s. Query M Men) oder die Tabelle kann einer Regressionsanalyse zugefhrt werden (s. Analyse M Men). Daneben gibt es natrlich auch die Mglichkeit, Tabellenobjekte als simple ASCII-Datei ( Write M Write to table le...) oder als XMLDatei ( Write M Write to text le...) zu speichern. Sprechgeschwindigkeit analysieren Die Sprechgeschwindigkeit kann auf ganz unterschiedliche Art und Weise deniert und gemessen werden. Angegeben wird sie in der Regel in der Form linguistische Einheiten pro Zeiteinheit, also z.B. Phone pro Sekunde, Silben pro Sekunde, Wrter pro Minute etc.. Zu beachten ist, dass die verschiedenen Denitionen bzw. Messmethoden nicht besonders gut korrelieren, d.h. wenn z.B. bei einer Patientengruppe die Sprechgeschwindigkeit als Phone/Sekunde gemessen wird, sind die Ergebnisse kaum vergleichbar mit Studien, in denen die Sprechgeschwindigkeit bei der gleichen Patientengruppe als Silben/Sekunde gemessen wurde. Wichtig ist auch, sich vor der Analyse zu
94

Dauermessungen

entscheiden, wie mit Sprechpausen zu verfahren ist: Sollen sie in die Gesamtdauer mit einieen oder sollen sie von der Gesamtdauer abgezogen werden. Fr beide Mglichkeiten gibt es Argumente. . . Das folgende Skript misst die Sprechgeschwindigkeit in Form von Silben pro Sekunde. Es erwartet ein TextGrid, in dem Silben und Pausen annotiert sind. Als Pausenetikett erwartet das Skript standardmig <P>, in dem Dialog, der nach dem Skriptstart erscheint, kann jedoch auch ein anderes Etikett angegeben werden. Als Silben zhlen alle Intervalle, die kein Pausenetikett aufweisen, d.h. es werden auch leere Intervalle akzeptiert (bei der TextGrid Erstellungen mssen daher nur Silbengrenzen in Form von boundaries eingefgt werden, es muss aber kein Etikett vergeben werden, was den Arbeitsaufwand etwas verringert). Ebenso gut funktioniert es aber mit einem einheitlichen Silbenetikett, z.B. $, oder einer phonematischen Transkription der Silben, z.B. /zIl/ /b@n/ /tse:/ /l@n/ usw. Das Skript bietet auerdem die Option, die u.U. recht langen Pausen am Anfang (Onset) und am Ende der Aufnahme (Offset) aus der Analyse zu exkludieren.
Skript 4.3.2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

# Benutzerabfrage (Tier-Nummer, Pausenlabel und On-/Offset) form Sprechgeschwindigkeitsanalyse comment In welchem Tier sind die Pausen und Silben annotiert? integer Tier_Nr 1 comment Mit welchem Label sind Pausen etikettiert? comment (Keine Leerzeichen erlaubt!) word Pausenlabel <P> comment Soll die erste und letzte Pause exkludiert werden? choice AnfangEnde_exkludieren 1 button Ja button Nein endform # Basisdaten erheben und Variablen initiieren clearinfo textgrid = selected ("TextGrid") noi = Get number of intervals... tier_Nr gesamtDauer = Get total duration printline Gesamtdauer der Aufnahme: gesamtDauer Sekunden startLabel = 1 endLabel = noi anzahlSilben = 0 anzahlPausen = 0 pausenDauer = 0 # Wenn On- und Offset exkludiert werden sollen... if anfangEnde_exkludieren = 1

95

Doing phonetics

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

erstesLabel$ = Get label of interval... tier_Nr 1 letztesLabel$ = Get label of interval... tier_Nr noi # Testen, ob das erste Label wirklich eine Pause ist # Wenn ja, Pausendauer von der Gesamtdauer abziehen if erstesLabel$ = pausenlabel$ start = Get start point... tier_Nr 1 ende = Get end point... tier_Nr 1 dauer = ende-start gesamtDauer = gesamtDauer-dauer startLabel = 2 endif # Testen, ob das letzte Label wirklich eine Pause ist # Wenn ja, Pausendauer von der Gesamtdauer abziehen if letztesLabel$ = pausenlabel$ start = Get start point... tier_Nr noi ende = Get end point... tier_Nr noi dauer = ende-start gesamtDauer = gesamtDauer-dauer endLabel = noi-1 endif print Gesamtdauer ohne erste/letzte Pause: printline gesamtDauer Sekunden endif # Schleife durch die Intervalle for n from startLabel to endLabel label$ = Get label of interval... tier_Nr n if label$ = pausenlabel$ # Pausen zhlen anzahlPausen = anzahlPausen+1 start = Get start point... tier_Nr n ende = Get end point... tier_Nr n dauer = ende-start # Pausendauer aufaddieren pausenDauer = pausenDauer+dauer else # Silben zhlen anzahlSilben = anzahlSilben+1 endif endfor # Sprechgeschwindigkeit (inkl. und exkl. Pausen) berechnen dauerOhnePausen = gesamtDauer-pausenDauer sprechGeschw1 = anzahlSilben/gesamtDauer sprechGeschw2 = anzahlSilben/dauerOhnePausen # Ergebnisse ausgeben printline printline Anzahl Silben: anzahlSilben printline Anzahl Sprechpausen: anzahlPausen printline Sprechpausendauer gesamt: pausenDauer Sekunden

96

Dauermessungen

79 80 81 82 83 84 85 86 87 88

printline print Gesamtdauer inklusive Sprechpausen: printline gesamtDauer Sekunden print Sprechgeschwindigkeit (Sprechpausen inkludiert): printline sprechGeschw1 Silben/Sekunde printline print Gesamtdauer exklusive Sprechpausen: printline dauerOhnePausen Sekunden print Sprechgeschwindigkeit (Sprechpausen exkludiert): printline sprechGeschw2 Silben/Sekunde

Skript benutzen: Neues PraatSkript ffnen ( Praat M > New Praat script) und die obigen Befehle in den SkriptEditor kopieren. TextGridObjekt im Objektfenster auswhlen und das Skript starten ( Run M > Run). Die Ausgabe im InfoFenster sollte ungefhr so aussehen:

In dem Beispiel betrgt die Sprechgeschwindigkeit 4,6 Silben/Sekunde, wenn die Gesamtuerungsdauer auch die Sprechpausen enthlt, und 5,3 Silben/Sekunde, wenn die Sprechpausen von der Gesamtuerungsdauer abgezogen werden.

97

Doing phonetics

4.4

Grundfrequenzanalyse und Intonation

. . . under construction . . .

98

Stimmanalyse

4.5

Stimmanalyse

. . . under construction . . .

99

Doing phonetics

100

Kapitel 5 PraatSkripte
5.1
5.1.1

Grundlagen
Einfhrung

Skripte sind kleine Computerprogramme, die mglichst schnell und mglichst unkompliziert eine bestimmte Aufgabe erledigen sollen. Im Gegensatz zu richtigen Computerprogramme geht es bei Skripten nicht so sehr um einen sauberen Programmierstil und efziente Algorithmen, sondern darum, einen wiederkehrenden und daher nervigen und/oder fehleranflligen Arbeitsschritt ohne groen Aufwand zu automatisieren. Skripte sind also eher mit Makros als mit ausgewachsenen Programmen vergleichbar. Zur Erstellung von Skripten gibt es Skriptsprachen, wobei der bergang zu Programmiersprachen ieend ist. Bekannte Skriptsprachen sind z.B. Perl, PHP oder die verschiedenen ShellDialekte (sh, bash, tcsh etc.). Diese etablierten Skriptsprachen verfgen mittlerweile ber einen enormen Funktionsumfang, mit dem sich auch sehr komplexe Anwendungen realisieren lassen. Fr den ursprnglichen Einsatzzweck von Skriptsprachen als schnelle, unkomplizierte Automatisierungswerkzeuge sind jedoch ein paar wenige simple Sprachkonstrukte schon ausreichend: die Mglichkeit, mit Variablen umzugehen Kontrollstrukturen zur Abfrage von Bedingungen (if/then/else) Schleifenkonstrukte zur wiederholten Abarbeitung von Befehlen

PraatSkripte

evtl. eine einfache Mglichkeit zur Interaktion mit dem Benutzer einige auf den Anwendungsbereich der Skriptssprache abgestimmte Befehle und Funktionen Genau diese Mglichkeiten und nicht viel mehr bietet die in Praat eingebaute Skriptsprache. In diesem Kapitel wird versucht, die Grundlagen, die Sie zur Erstellung von PraatSkripten bentigen, zu vermitteln. Sptestens wenn Sie das Prinzip einmal verstanden und erste Erfahrungen gesammelt haben, nutzen Sie bitte auch das Praat Scripting tutorial (zu nden im Help M Men). Dort sind alle Mglichkeiten, die die PraatSkriptsprache bietet, dokumentiert. Sehr hilfreich ist es auch, sich (funktionierende) PraatSkripte von anderen anzuschauen und zu versuchen, die Arbeitsweise der Skripte nach zu vollziehen.

5.1.2

Grundstruktur

Ein PraatSkript ist eine einfache Textdatei. Pro Zeile drfen Sie genau einen Befehl notieren, bei Bedarf zusammen mit den notwendigen Argumenten. Leerzeilen werden ignoriert, Sie drfen beliebig viele davon einfgen. Ebenso werden Leerzeichen (oder Tabulatoren) am Zeilenanfang ignoriert, auch davon drfen Sie beliebig viele einfgen. Beides dient bei lngeren Skripten der bersichtlichkeit, d.h. Sie knnen zusammengehrige Befehlsblcke durch Leerzeilen trennen und Sie knnen z.B. Befehle innerhalb einer Schleife einrcken. Wenn eine Zeile mit # beginnt, wird sie als Kommentar interpretiert und ebenfalls ignoriert. Nutzen Sie diese Mglichkeit, um komplexere Skripte zu dokumentieren, insbesondere, wenn Sie Skripte weitergeben. (Aber auch wenn Sie ein selbst geschriebenes Skript nach einem Jahr wieder vorholen und modizieren wollen, werden Sie fr Kommentare dankbar sein.) Kommentare drfen nicht am Ende einer Zeile nach einem Befehl eingefgt werden, aber vor dem #Zeichen drfen Leerzeichen stehen. Im einfachsten Fall besteht ein PraatSkript aus einer Abfolge von Men Befehlen, ein Befehl pro Zeile. Alle Befehle mssen exakt so in das Skript gechrieben werden, wie sie auch in den Mens der Benutzeroberche auftauchen, inklusive Leerzeichen, Punkte, Klammern und natrlich Gro /Kleinschreibung. Die HistoryFunktion hilft, hierbei Fehler zu vermeiden (vgl. Abschnitt 5.1.3). Diese Befehle werden dann der Reihe nach von oben nach unten abgearbeitet. Ist ein QueryBefehl dabei, wird das Ergebnis in
102

Grundlagen

das InfoFenster geschrieben, ein EditBefehl ffnet ein EditorFenster, der To TextGrid...Befehl erzeugt ein TextGridObjekt usw. alles funktioniert genau so, wie wenn Sie die Befehle in den Mens angeklickt htten.

5.1.3

Die HistoryFunktion

Wenn Sie ein Skript erstellen, erweist sich die HistoryFunktion eine Art MakroRecorder als sehr hilfreich. Sie erlaubt es, eine oder mehrere aufeinanderfolgende Benutzereingaben aufzuzeichnen und in ein Skript zu kopieren (Benutzereingaben knnen sowohl Mausklicks als auch Tastatureingaben z.B. in Einstellungsfenstern sein). Wenn Sie also einen bestimmten Befehl oder eine Befehlssequenz in einem Skript bentigen, ist es oft bequemer (weniger Tipparbeit) und sicherer (weniger Tippfehler), den/die Befehl/e erst einmal tatschlich in der Benutzeroberche anzuklicken und auszufhren, und dann Ihre KlickHistory in das Skript zu kopieren. Ausgangspunkt ist der SkriptEditor; entweder er ist bereits geffnet, weil Sie gerade an einem Skript arbeiten, oder Sie fnen ihn (vgl. Abschnitt 5.1.4. Whlen Sie dann im Edit M Men > Clear history1 . Dann knnen Sie den SkriptEditor erst einmal ignorieren. Fhren Sie jetzt smtliche Befehle aus, die spter das Skript ausfhren soll. Wenn Sie versehentlich einen falschen Befehl anklicken oder in einem Eingabefenster einen unpassenden Wert eingeben, ist das nicht weiter schlimm: berssige Befehle knnen Sie spter im Skript einfach lschen und die Parameter, die Sie einer Funktion bergeben, knnen jederzeit verndert und angepasst werden. Auch die Reihenfolge der Befehle kann natrlich nachtrglich gendert werden. Hier ein Beispiel Schritt fr Schritt:

Praat zeichnet stndig Ihre Eingaben auf und speichert sie in der History. Damit also wirklich nur die relevanten Eingaben, die Sie ab einem bestimmten Zeitpunkt vornehmen, in der History auftauchen und in Ihr Skript kopiert werden, mssen Sie die History, die mit Ihren bisherigen Eingaben bereits prall gefllt ist, zunchst mit dem ClearBefehl leeren. 103

PraatSkripte

1 Im SkriptEditor die History lschen.

2 SoundObjekt fr die Annotation vorbereiten.

3 TierNamen eingeben und OK klicken.

104

Grundlagen

4 Ein Label einfgen.

5 Z.B. <P> fr Pause.

6 Sound und TextGridObjekt auswhlen und im Editor ffnen.

105

PraatSkripte

7 Zurck im SkriptEditor die aufgezeichneten Befehle einfgen2 .

8 Das Skript kann jetzt editiert werden: Befehle lschen, Reihenfolge verndern, Parameter anpassen etc.

9 Schlieen Sie den SoundEditor, lschen Sie das zuvor erstellte TextGridObjekt und starten Sie das Skript.

Der Befehl Paste history lscht nicht die History. Wenn Sie Ihr Skript mit HistoryHilfe erweitern wollen, sollten Sie vor der Aufzeichnung eines relevanten Befehlsblocks den Clear Befehl verwenden. 106

Grundlagen

Falls Sie beim nachtrglichen Editieren nicht versehentlich einen Fehler eingebaut haben, werden jetzt nacheinander die Befehle ausgefhrt und Sie knnen das Ergebnis in der Benutzeroberche verfolgen und berprfen. Schauen wir uns das erzeugte Skript noch einmal genauer an:
1 2 3 4 5

To TextGrid... "Vokale Mittelpunkte" Mittelpunkte Set interval text... 1 1 <P> select Sound demo plus TextGrid demo Edit

In den Zeilen 1 und 2 steht jeweils ein Befehl (To TextGrid... bzw. Set interval text...) mit Argumenten (die Argumente sind die Parameter, die Sie in das Eingabefenster eingegeben haben). Befehl und Argumente und auch die Argumente untereinander sind jeweils durch Leerzeichen getrennt. In Zeile 1 ist das erste Argument ein String, der selbst Leerzeichen enthalten kann, daher ist das Argument in Anfhrungszeichen eingerahmt (Vokale Mittelpunkte). Der Befehl in Zeile 5 (Edit) kommt ohne Argumente aus. Die Befehle in den Zeilen 3 und 4 (select bzw. plus) sind keine MenBefehle, sondern Befehle, die eine Objektauswahl per Mausklick simulieren: select simuliert einen einfachen Mausklick, mit dem ein Objekt ausgewhlt wird, plus simuliert einen Taste, mit dem die Auswahl erweitert werMausklick mit gedrckter STRG den kann. Beide Befehle verlangen als erstes Argument den Objekttyp und als zweites Argument den Namen des Objekts. Die HistoryFunktion ist sehr ntzlich, um die genaue Schreibweise von Befehlen und auch die Anzahl und die Reihenfolge ihrer Argumente korrekt in ein Skript zu bernehmen. Sptestens jedoch, wenn Sie Bedingungen, Schleifen oder Variablen benutzen wollen, mssen Sie selbst Hand anlegen und etwas Tipparbeit investieren. Und auch der Wechsel zwischen verschiedenen Umgebungen (siehe 5.1.4) wird nicht aufgezeichnet und automatisch eingetragen; die ensprechenden Befehle mssen von Hand nachgetragen werden. In den meisten Fllen werden Sie die HistoryFunktion daher eher selektiv benutzen, um gezielt einzelne Teile eines Skripts zu generieren.

5.1.4

SkriptUmgebungen und der SkriptEditor

Praat unterscheidet zwischen zwei SkriptUmgebungen: Shell (Objektfenster und Graphikfenster) und Editoren (alle Editoren). ShellSkripte knnen smt107

PraatSkripte

liche Befehle des Objektfensters (inklusive des dynamischen Mens) und des Graphikfensters nutzen; ShellSkripte knnen jedoch nicht ohne weiteres die Befehle in den Mens eines Editors, z.B. des SoundEditors nutzen. Wenn Sie also mit dem folgenden ShellSkript versuchen, ein SoundObjekt im Sound-Editor zu ffnen und die SpektrogrammAnzeige zu aktivieren, wrde das Skript nach dem ersten Befehl mit einer Fehlermeldung abbrechen (versuchen Sie es ruhig aus, es wird nicht die letzte Fehlermeldung sein, die Sie zu sehen bekommen. . . ):
1 2 3 4

# Shell-Befehl (wird korrekt ausgefhrt): Edit # Editor-Befehl (wird nicht ausgefhrt): Show spectrogram

Umgekehrt gilt fr EditorSkripte, dass alle Befehle in den Mens des jeweiligen Editors verwendet werden knnen, nicht jedoch die Befehle der Shell (also des Objekt und des Graphikfensters). Das folgende EditorSkript, das in einem TextGridEditor zunchst ein Intervall einfgt und dann versucht, mit Hilfe eines ShellBefehls ein Label zu vergeben, wird also ebenfalls scheitern:
1 2 3 4 5 6

# Editor-Befehl aus dem Interval-Men # des TextGrid-Editors (ok): Add interval on tier 1 # Shell-Befehl aus dem Modify-Men # des Objektfensters (nicht ok): Set interval text... 1 2 Label

Die Entscheidung, ob Sie ein Shell oder ein EditorSkript benutzen, liegt bei Ihnen. Je nachdem, auf welche Art Sie den SkriptEditor starten, ffnen Sie ein Shell oder ein EditorSkript: ShellSkript: ffnen Sie das Praat M Men und whlen Sie New Praat script, wenn Sie ein neues ShellSkript erstellen wollen, oder Open Praat script..., wenn Sie ein ShellSkript von der Festplatte laden wollen. EditorSkript: ffnen Sie das File M Men eines Editors und whlen Sie New editor script oder Open editor script...
108

Grundlagen

Mit beiden Methoden wird der Skript-Editor geffnet (Sie drfen brigens auch mehrere Skript-Editoren gleichzeitig geffnet haben) und auf den ersten Blick knnen Sie vermutlich keinen Unterschied erkennen der Skript Editor verfgt ber die selben Mens und Befehle und verhlt sich auch sonst immer gleich, egal ob Sie ein Shell oder ein EditorSkript bearbeiten. Den einzigen Hinweis darauf, in welcher SkriptUmgebung Sie sich benden, nden Sie im Fenstertitel. Bei einem ShellSkript steht dort nur der Skriptname, gefolgt von script:

Ein EditorSkript ist dagegen immer einem bestimmten Editor zugeordnet, was auch im Fenstertitel deutlich wird. Dort nden Sie nach dem Skriptnamen in eckigen Klammern die folgenden Angaben: ObjektNummer, Objekt bzw. EditorTyp und ObjektName:

Abhngig davon, in welcher Umgebung Ihr Skript seine Arbeit aufnehmen soll, entscheiden Sie sich also fr ein Shell oder fr ein EditorSkript und beginnen mit der Eingabe von Befehlen. Glcklicherweise stellt Praat zwei Befehle zur Verfgung, fr den Fall, dass Sie aus einem ShellSkript in eine Editorumgebung wechseln mssen, oder auch fr den umgekehrten Fall, den Wechsel von einem EditorSkript in die ShellUmgebung: editor und endeditor. Betrachten wir zunchst den zweiten Fall. Angenommen, Sie haben in einem SoundEditor einen Signalabschnitt markiert, den Sie nun mit Hilfe eines Skripts extrahieren und in einem neuen SoundEditor ffnen wollen. Whlen Sie hierzu im File M Men des SoundEditors New editor script, um ein neues EditorSkript zu ffnen. Schreiben Sie den entsprechenden ExtractBefehl in die erste Zeile (von Hand oder via History). Mit dem Befehl endeditor teilen Sie dem Skript als nchstes mit, dass es die EditorUmgebung verlassen soll, es bendet sich nun in der ShellUmgebung. Deshalb drfen Sie in die dritte Zeile den ShellBefehl Edit schreiben:
1 2 3

Extract selected sound (time from 0) endeditor Edit

Damit haben Sie nun zwei geffnete SoundEditoren, einen mit dem Originalsignal und einen neuen mit dem extrahierten Abschnitt. Sie knnten nun
109

PraatSkripte

auf die Idee kommen, das Skript so zu erweitern, dass der Cursor in dem neuen SoundEditor an den Anfang bewegt wird. Dazu, so knnte man annehmen, wechseln Sie mit editor wieder in die EditorUmgebung und fgen einen Move cursorBefehl aus dem Select M Men des SoundEditors ein:
4 5

editor Move cursor to... 0

Das Skript ist zwar sprachlich korrekt, d.h. Sie werden keine Fehlermeldung zu sehen bekommen, aber es tut nicht, was Sie eigentlich wollten: Der Cursor wird nicht in dem neuen SoundEditor auf 0 gesetzt sondern im Originalsignal! Der Grund dafr ist, dass das EditorSkript mit einem bestimmten Editor fest assoziiert ist, und zwar mit dem Editor, aus dem heraus es gestartet wurde. Dieser Editor ist sozusagen seine Heimat und dorthin kehrt es nach seinem Ausug in die Shell zurck. Und das ist in unserem Fall natrlich schauen Sie in den Fenstertitel der SoundEditor mit dem Originalsignal. Aber auch dieses Verhalten knnen Sie beeinussen, indem Sie dem editorBefehl zwei Argumente mit auf den Weg geben: Typ und Name des Zieleditors. Lassen Sie diese Argumente weg, kehrt das Skript immer zu seinem Heimateditor zurck. Damit unser Skript also doch noch das tut, was es eigentlich soll, muss der Befehl in Zeile 4 ergnzt werden um den Typ des Zieleditors: Sound und um den Namen des Zieleditors: untitled (extrahierte Signale erhalten immer den Namen untitled) Hier nochmal das vollstndige Skript:
1 2 3 4 5

Extract selected sound (time from 0) endeditor Edit editor Sound untitled Move cursor to... 0

Zum endeditorBefehl gibt es brigens noch eine Alternative: den Editor Befehl Close aus dem File M Men. Mit endeditor wird eine Editor Umgebung verlassen, ohne das EditorFenster zu schlieen; mit Close verlassen Sie die EditorUmgebung und schlieen auch das entsprechende Fenster:
110

Grundlagen

1 2 3 4 5

Extract selected sound (time from 0) Close Edit editor Sound untitled Move cursor to... 0

Der gleiche Mechanismus (editor/endeditor/Close) funktioniert auch in umgekehrter Richtung, wenn Sie aus einem ShellSkript in eine Editorumgebung wechseln wollen (und wieder zurck). In diesem Fall mssen Sie jedoch dem editorBefehl immer die entsprechenden Argumente mitgeben (Typ und Name), denn ein ShellSkript kennt natrlich keinen Heimateditor, seine Heimat ist die Shell. Das Skript vom Anfang dieses Abschnitts msste also um einen editorBefehl erweitert werden, damit es funktioniert. Gehen wir davon aus, dass Sie ein SoundObjekt namens demo editieren wollen:
1 2 3 4 5 6

# Shell-Befehl (wird korrekt ausgefhrt): Edit # in die Editor-Umgebung wechseln: editor Sound demo # Editor-Befehl (wird jetzt auch korrekt ausgefhrt): Show spectrogram

Wenn Sie ein SoundObjekt annotieren wollen, achten Sie auf den korekten EditorTyp (Zeile 5):
1 2 3 4 5 6

To TextGrid... "Phrasen Akzente" Akzente select Sound demo plus TextGrid demo Edit editor TextGrid demo Show pitch

Und vergessen Sie nicht die notwendigen UmgebungsBefehle an der richtigen Stelle nachzutragen, wenn Sie mit der HistoryFunktion arbeiten!

111

PraatSkripte

5.2

Die Praatpfanne

In diesem Abschnitt werden nun nach und nach alle Zutaten der Praat Skriptsprache (Variablen, Bedingungen, Schleifen usw.) prsentiert und in die Pfanne geworfen, um daraus ein leckeres Skript zu zaubern. Als Ausgangspunkt dient ein leicht abgewandeltes Skript aus dem letzten Abschnitt, das zu einem Sound-Objekt ein TextGrid erzeugt, beides zusammen in einem Editor ffnet und ein Spektrogramm anzeigt:
1 2 3 4 5 6

To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound demo plus TextGrid demo Edit editor TextGrid demo Show spectrogram

Das Skript geht davon aus, dass ein SoundObjekt ausgewhlt ist. In der ersten Zeile wird zu diesem SoundObjekt ein TextGrid mit zwei tiers erzeugt, wovon eines ein point tier ist (wenn Sie kein point tier bentigen lassen Sie das zweite Argument einfach weg). Die Zeilen 2 und 3 simulieren die Auswahl mit der Maus, Zeile 4 ffnet den TextGridEditor. Zeile 5 wechselt in die EditorUmgebung und Zeile 6 aktiviert schlielich die Spektrogrammanzeige im Editor. Soweit sollte alles bekannt sein.

5.2.1

Objekteigenschaften ermitteln und Variablen nutzen

In dieser Form ist das Skript allerdings ziemlich unpraktisch, da es nur mit SoundObjekten namens demo funktioniert. Stellen Sie sich vor, Sie htten mehrere SoundObjekte geladen, z.B. sprecher01, sprecher02, sprecher03 usw., in denen Sie nacheinander die Vokale und die Vokalmittelpunkte annotieren wollen. Wenn Sie das Skript nutzen wollen, mssten Sie jedesmal alle Vorkommen von demo durch den jeweiligen Objektnamen ersetzen. Bequemer wre es, wenn Sie nur das SoundObjekt anklicken und dann das Skript starten mssten, ohne sich um den Objektnamen zu kmmern. Dafr muss am Anfang des Skripts der Objektname des aktuell ausgewhlten Objekts ausgelesen und in eine Variable geschrieben werden; die restlichen Befehle arbeiten dann mit der Variablen anstatt mit einem fest einprogrammierten Namen. Zum Ermitteln von Objekteigenschaften gibt es die Funktion selected () in verschiedenen Varianten. Hier einige Beispiele:
112

Die Praatpfanne

selected () ermittelt die Nummer des ersten ausgewhlten Objekts. selected$ () ermittelt Name und Typ des ersten ausgewhlten Objekts. selected (Sound) ermittelt die Nummer des ersten ausgewhlten

SoundObjekts.
selected$ (Sound) ermittelt den Namen des ersten ausgewhlten

SoundObjekts.
selected$ (TextGrid) ermittelt den Namen des ersten ausgewhlten

TextGridObjekts.
selected$ (Sound, 2) ermittelt den Namen des zweiten ausgewhl-

ten SoundObjekts. Diese Varianten der Funktion selected () zeigen einige Eigenheiten der Praat Skriptsprache, die man auch bei anderen Konstrukten wiederndet. Zum Beispiel: das $Zeichen: Ohne $Zeichen sind Funktionen und Variablen fr Zahlen zustndig, mit $Zeichen dagegen fr Strings (Buchstabenketten); das $Zeichen klebt direkt am Funktions oder Variablennamen, ohne Leerzeichen dazwischen! runde Klammern: Argumente von Funktionen stehen in runden Klammern; zwischen Funktionsname und erster Klammer kann ein Leerzeichen stehen, muss aber nicht. doppelte Anfhrungszeichen: StringArgumente fr Funktionen bentigen doppelte Anfhrungszeichen, numerische Argumente nicht. optionale Argumente: Bei Befehlen und Funktionen knnen Argumente bisweilen weggelassen werden (vgl. auch den editorBefehl); Praat ergnzt dann DefaultWerte. Zurck zu unserer Aufgabenstellung. Wenn wir davon ausgehen, dass beim Skriptstart immer nur genau ein SoundObjekt ausgewhlt ist, knnen wir zu folgender Variante greifen (mit $Zeichen, weil wir am Namen des Objekts interessiert sind): selected$ (Sound). Diese Funktion liefert uns den Namen des ausgewhlten Objekts. Jetzt brauchen wir nur noch ein Gef, in dem
113

PraatSkripte

wir diese Information speichern und bereithalten: eine Variable. Deren Name drfen wir selbst aussuchen; erlaubt sind beliebige Kombinationen aus Buchstaben, Zahlen und Unterstrichen, wobei das erste Zeichen ein Kleinbuchstabe sein muss. Nennen wir die Variable z.B. objektName$; das $Zeichen ist notwendig, weil wir die Variable nicht mit Zahlenwerten sondern mit Strings fttern wollen. Hier also die erste Verfeinerung des Ausgangsskripts, das dadurch deutlich exibler einsetzbar ist:

1 2 3 4 5 6 7

objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show spectrogram

Zeile 1:

Name des ausgewhlten SoundObjekts ermitteln und in der Variablen objektName$ speichern. Die Zuweisung des Werts, den die Funktion erzeugt, an die Variable bernimmt das Gleichheitszeichen.

Zeilen 3, 4 und 6:

Statt des statischen Objektnamens demo wird hier der Wert, der in der Variablen objektName$ gespeichert ist, eingesetzt. Die Variable muss (!) zwischen einfachen Anfhrungszeichen stehen, sonst versucht Praat ein Objekt namens objektName$ zu verwenden. Die einfachen Anfhrungszeichen bedeuten also, dass an dieser Stelle der Wert, der in der Variablen gespeichert ist, eingesetzt werden soll, nicht der Variablenname selbst.

Bis jetzt mssen Sie Ihre WavDateien einzeln mit Read from le... in Praat laden, dann eine nach der anderen anklicken und das Skript starten. Wenn Sie ein ganzes Verzeichnis voller WavDateien haben, die Sie alle nacheinander auf die gleiche Weise bearbeiten wollen, ist das ziemlich mhsam. Versuchen wir also, auch den Ladevorgang zu automatisieren. Das ist ein bisschen aufwndiger als die bisherige Verfeinerung, deshalb zerlegen wir die Aufgabe in mehrere Teilschritte und legen das obige Skript erst einmal zur Seite; wir werden spter darauf zurckkommen. Im ersten Teilschritt teilen wir dem Skript mit, in welchem Verzeichnis sich die Dateien benden.
114

Die Praatpfanne

5.2.2

Formulare fr Benutzereingaben

Wenn ein Skript bestimmte Informationen vom Benutzer bentigt, bevor es mit der Arbeit beginnen kann, kann man es dazu veranlassen, zuerst ein Formular anzuzeigen, in das der Benutzer die entsprechenden Informationen eintragen muss. Erst wenn das geschehen ist und der Benutzer auf OK klickt, fhrt das Skript mit der Arbeit fort. Dies lsst sich mit dem form...endform Konstrukt bewerkstelligen. Das Konstrukt begint mit der Anweisung form, gefolgt von einem Argument. Das Argument bestimmt den Titel des Fensters, in dem das Formular angezeigt wird. In den folgenden Zeilen wird der Inhalt des Formulars, die einzelnen Formularfelder, deniert, bevor es mit der Anweisung endform beendet wird (die Einrckung der Zeilen 2 und 3 ist optional und dient nur der bersichtlichkeit):
1 2 3 4

form Fenstertitel ...Felddefinition... ...Felddefinition... endform

Ein Formular darf im Prinzip beliebig viele Felddenitionen bzw. Felder enthalten.3 Eine Felddenition besteht in der Regel aus drei Bestandteilen: (1) Feldtyp, (2) Variablenname und (3) voreingestellter Wert. Feldtyp: Legt fest, welche Art von Werten der Benutzer in das Feld eingeben darf, z.B. beliebige Zahlen (real), nur positive Zahlen (positive), nur Ganzzahlen (integer), nur Strings ohne Leerzeichen (word) oder auch Strings mit Leerzeichen (sentence) usw. Die vollstndige Liste der Feldtypen nden Sie im Praat Scripting tutorial. Die Benutzereingaben werden berprft. Stimmen sie nicht mit dem Feldtyp berein, gibt es meistens, aber leider nicht immer, eine Fehlermeldung.4
Aber Achtung: Das Formularfenster hat keine ScrollMglichkeit, d.h. wenn Sie tatschlich sehr viele Felder denieren, kann es sein, dass das Formularfenster nicht auf den Bildschirm passt und die zuletzt denierten Felder nicht mehr sichtbar sind. Wenn Sie planen, Ihre Skripte weiterzugeben, denken Sie daran, dass andere evtl. einen kleineren Bildschirm bzw. eine geringere Ausung haben. 4 Wenn man etwa in ein wordFeld einen String mit Leerzeichen eingibt (z.B. Hallo Welt) werden alle Zeichen bis zum ersten Leerzeichen bernommen und der Rest ignoriert. Das Skript arbeitet dann mit dieser Eingabe (Hallo) weiter, ohne dass der Benutzer gewarnt wird. 115
3

PraatSkripte

Variablenname: Hier wird die Variable angegeben, in der die Benutzereingabe gespeichert wird. Diese Variable steht natrlich spter im gesamten Skript zur Verfgung. Die Form der Angabe ist allerdings ein bisschen gewhnungsbedrftig. Grundstzlich gelten die bekannten Einschrnkungen fr Variablennamen (Buchstaben, Zahlen, Unterstriche). Da der Variablenname jedoch im Formularfenster angezeigt wird, gibt es, wohl aus optischen Grnden, ein paar Besonderheiten: (1) Der Variablenname darf hier mit einem Grobuchstaben beginnen, spter im Skript mssen Sie aber wieder einen Kleinbuchstaben verwenden; (2) Unterstriche im Variablennamen werden im Formularfenster durch Leerzeichen ersetzt; (3) Sie drfen an einen Variablennamen eine Angabe in Klammern anhngen (z.B. Grundfrequenz_(Hz)), die im Formularfenster angezeigt wird, spter jedoch nicht Teil des Variablennamens ist; (4) Variablen, die Strings aufnehmen sollen, bekommen hier kein $Zeichen angeklebt, spter im Skript mssen Sie das $Zeichen jedoch anfgen. Voreinstellung: Hier knnen Sie einen Standardwert angeben und der Benutzer entscheidet, ob er diesen bernimmt oder einen neuen Wert eingibt. Diese Angabe ist optional; passen Sie sie Ihren Bedrfnissen an. Unser Formular soll einen Verzeichnispfad abfragen. Da Verzeichnisnamen Leerzeichen enthalten drfen, bietet sich der Feldtyp sentence an:
1 2 3

form Bitte fllen Sie das folgende Formular aus sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo endform

Dieses Skript generiert das folgende Formularfenster. Der Benutzer kann die Voreinstellung bernehmen oder verndern und dann OK klicken.

Unter Windows muss dem Verzeichnispfad brigens ein Laufwerksbuchstabe und ein Doppelpunkt vorangestellt werden, z.B.
C:/Dokumente und Einstellungen/jm/Eigene Dateien/Aufnahmen 116

Die Praatpfanne

Wenn Sie gerne etwas mehr mit dem Benutzer kommunizieren mchten, als es Variablennamen und Voreinstellungen zulassen, benutzen Sie eine comment Zeile:
1 2 3 4

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo endform

Auer Eingabenfeldern knnen auch Mens deniert werden. Sie knnten den Benutzer z.B. noch fragen, mit welcher Art von Spektrogramm er gerne arbeiten mchte. Damit schlieen wir den ersten Teilschritt, die Abfrage von Benutzereingaben, erst einmal ab.
1 2 3 4 5 6 7 8

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform

Zeile 5:

Mit der Anweisung optionmenu wird das Men initialisiert; Spektrogramm: deniert die Variable, in der die Benutzereingabe gespeichert wird (spter im Skript: spektrogramm bzw. spektrogramm$) und 1 heit, dass der erste Meneintrag voreingestellt sein soll. Die Meneintrge werden anschlieend mit Hilfe der Anweisung option deniert.
117

Zeilen 6 und 7:

PraatSkripte

5.2.3

Skriptausgaben

Nachdem wir dem Skript nun einiges mitgeteilt haben, wre es schn, wenn uns das Skript auch mal etwas sagen wrde. Selbst wenn das fertige Skript gar keine Ausgabe erzeugen soll, ist es unbedingt empfehlenswert, whrend der Skripterstellung immer mal wieder einen der folgenden Befehle zu nutzen, um zu berprfen, was das Skript gerade tut. Lassen Sie sich Variablen ausgeben, damit Sie sehen, ob die Wertzuweisung korrekt funktioniert hat; lassen Sie sich Berechnungsergebnisse anzeigen, damit Sie sehen, ob Ihre Formeln fehlerfrei und die Ergebnisse plausibel sind; geben Sie Schleifenzhler aus, damit Sie wissen, wie oft eine Schleife durchlaufen wird usw. Alle Skriptausgaben werden in das InfoFenster geschrieben (und knnen aus diesem z.B. auch in eine Textdatei abgespeichert werden). Sie nden smtliche Ausgabebefehle im Praat Scripting tutorial; wir werden uns hier auf die beiden Befehle echo und printline beschrnken.
echo Hallo Welt lscht den Inhalt des InfoFensters und schreibt dann

Hallo Welt in die erste Zeile.


printline Hallo Welt schreibt Hallo Welt in eine neue Zeile, ohne

die vorherigen Ausgaben zu lschen. Testen wir also, ob mit unserem Eingabeformular alles in Ordnung ist und die Variablen korrekte Werte enthalten:
1 2 3 4 5 6 7 8 9 10

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform echo Eingegebener Pfad: pfad_zu_den_Dateien$ printline Bevorzugtes Spektrogramm: spektrogramm$

Zeile 9: echo

sorgt fr ein leeres InfoFenster und schreibt dann alles was folgt in die erste Zeile; Variablen zwischen einfachen Anfhrungszeichen werden durch ihren Wert ersetzt.

118

Die Praatpfanne

Zeilen 3 und 9 bzw. 5 und 10:

Achten Sie auf die Variablennamen (Formular vs. Rest des Skripts): Grobuchstaben am Anfang mssen durch Kleinbuchstaben ersetzt werden; sonstige Grobuchstaben drfen nicht durch Kleinbuchstaben ersetzt werden (pfad_zu_den_Dateien und pfad_zu_den_dateien sind zwei vollkommen unterschiedliche Variablen!); da es sich um StringVariablen handelt, muss das $Zeichen angehngt werden. erzeugt einen Zeilenumbruch und gibt dann alles was folgt aus.

Zeile 10: printline

Die Ausgabe knnte z.B. so aussehen, je nachdem, welche Angaben in dem Formulargemacht wurden:

5.2.4

Dateien verwalten I

Dem Skript ist nun bekannt, wo es nach WavDateien suchen soll. Also lassen wir es suchen und die gefundenen Dateien auisten. Diese Aufgabe erledigt eine Befehlszeile. Der Befehl heit Create Strings as le list... und ist im New M Men des Objektfensters zu nden. Das erste Argument des Befehls ist der Name des StringsObjekts, das er erzeugt; nennen wir es z.B. DateiListe (es handelt sich hier um einen Objektnamen, nicht um einen Variablennamen, daher darf der erste Buchstabe ein Grobuchstabe sein). Das zweite Argument ist ein Verzeichnispfad und optional ein Dateiselektor, in dem das Jokerzeichen * vorkommen darf. Einige Variationen einer Create Strings as le list...Befehlszeile:
Create Strings as file list... DateiListe /tmp/ ndet alle

Dateien im Verzeichnis /tmp/ und schreibt die Dateiennamen in das StringsObjekt DateiListe, ein Dateiname pro Zeile.
119

PraatSkripte

Create Strings as file list... DateiListe /tmp/test.wav

schreibt nur test.wav in die DateiListe.


Create Strings as file list... DateiListe /tmp/*.wav

ndet alle Dateien, die mit .wav enden und schreibt die Dateiennamen in die DateiListe
Create Strings as file list... DateiListe /tmp/sprecher*.wav

ndet alle Dateien, die mit sprecher anfangen und mit .wav enden und schreibt die Dateiennamen in die DateiListe (z.B. sprecher01.wav, sprecher02.wav, sprecher03.wav usw.). Da wir alle WavDateien laden wollen, ergnzen wir das Formularskript um die dritte Variante. (Normalerweise gilt: Ein Befehl pro Zeile, eine Zeile pro Befehl. Es gibt jedoch eine Mglichkeit, einen langen Befehl auf zwei Zeilen umzubrechen. Die zweite Zeile muss dann mit drei Punkten und einem Leerzeichen beginnen. Diese Mglichkeit wird hier genutzt, weil der Befehl sonst das Seitenlayout sprengen wrde. Wenn Sie den Befehl im SkriptEditor eingeben, ist das natrlich unntig.)
1 2 3 4 5 6 7 8 9 10 11 12

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform echo Eingegebener Pfad: pfad_zu_den_Dateien$ printline Bevorzugtes Spektrogramm: spektrogramm$ Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav

Wenn alles gut geht erzeugt das Skript ein neues StringsObjekt namens DateiListe. Wenn Sie das Objekt in der Objektliste auswhlen, ndert sich das dynamische Men und es erscheinen einige Knpfe/Befehle, die Sie bisher vermutlich noch nicht gesehen haben. Aber es gibt auch altbekanntes, z.B. den   Edit Knopf. Klicken Sie Edit , um die Dateiliste anzusehen und zu berpr  fen: Werden alle WavDateien in dem Verzeichnis, das Sie angegeben haben, aufgelistet? Im QueryBereich des dynamischen Mens nden Sie zwei Befehle, die wir in das Skript einbauen werden: Get number of strings und Get string.... Der
120

Die Praatpfanne

erste Befehl gibt die Anzahl der Strings (= Zeilen) in einem StringsObjekt aus und mit dem zweiten Befehl kann ber die Angabe der Zeilennummer gezielt ein String abgefragt werden. Statt ans InfoFenster leiten wir die Ausgabe der beiden Befehle jeweils in eine Variable:
1 2

anzahlDateien = Get number of strings dateiName$ = Get string... 1

Zeile 1:

Da unser StringsObjekt Dateinamen enthlt, nennen wir die Variable, in der wir die Anzahl der Strings speichern, anzahlDateien (die Anzahl ist ein numerischer Wert, deshalb kein $Zeichen). Der Befehl bentigt kein weiteres Argument. Hier wird der String in der ersten Zeile des markierten Strings Objekts abgefragt und in der Variablen dateiName$ gespeichert (der Wert ist ein String, deshalb ein $Zeichen). Als Argument bentigt der Befehl die Zeilennummer, hier 1.

Zeile 2:

Das Skript kennt jetzt den Pfad zu den Dateien und die Namen der Dateien, die uns interessieren genug Informationen, um die Dateien zu laden. Bestens dafr geeignet ist der bekannte Read from le...Befehl aus dem Read M Men des Objektfensters. Der Befehl nimmt als Argument genau die Informationen, die in den beiden Variablen pfad_zu_den_Dateien$ und dateiName$ gespeichert ist:
1

Read from file... pfad_zu_den_Dateien$/dateiName$

Zur Erinnerung:

Da an der entsprechenden Stelle nicht der Variablenname, sondern der Wert, der aktuell in der Variablen gespeichert ist, eingesetzt werden soll, werden einfache Anfhrungszeichen bentigt.

Auf die gleiche Weise knnen mit Hilfe eines WriteBefehls natrlich auch Objekte gespeichert, d.h. auf die Festplatte geschrieben werden, z.B.:
1 2

select Strings DateiListe Write to raw text file... pfad_zu_den_Dateien$/dateiliste.txt

Darauf werden wir spter zurckkommen. Jetzt kmmern wir uns erst einmal darum, das Skript so zu erweitern, dass wirklich nacheinander alle relevanten Dateien geladen werden. Bisher wird nur eine Datei geladen, nmlich diejenige, deren Dateiname sich in der Zeile des StringsObjekts bendet, deren Zeilennummer wir dem Befehl Get string... bergeben.
121

PraatSkripte

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform echo Eingegebener Pfad: pfad_zu_den_Dateien$ printline Bevorzugtes Spektrogramm: spektrogramm$ Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings dateiName$ = Get string... 1 Read from file... pfad_zu_den_Dateien$/dateiName$

Zeilen 9 und 10:

Die Ausgabebefehle knnen Sie gelegentlich entfernen, sie dienten ja nur der berprfung. Hier wird festgelegt, welche Datei mit dem nchsten Befehl in Zeile 16 geladen wird. Auf die hier gezeigte Art ist das immer die selbe Datei, was natrlich unerwnscht ist.

Zeile 15:

5.2.5

Schleifen

Wenn ein Skript mehrmals hintereinander die gleiche Befehlssequenz ausfhren soll und wenn sich ein Kriterium dafr denieren lsst, unter welchen Umstnden bzw. wie oft die Befehle ausgefhrt werden sollen, dann kann eine Schleife verwendet werden. In unserem Fall knnen wir genau sagen, wie oft die Befehlssequenz zum Laden einer Datei ausgefhrt werden soll: So lange, bis alle Dateien geladen sind. Die Sequenz besteht bisher nur aus den zwei folgenden Befehlen:
15 16

dateiName$ = Get string... 1 Read from file... pfad_zu_den_Dateien$/dateiName$

Nun sollen zwar die Befehle mehrmals ausgefhrt werden, nicht jedoch jedesmal mit den selben Argumenten sonst htten wir nicht viel gewonnen. In unserem Fall muss sich genau ein Argument verndern: Die Zeilennummer, die dem Befehl Get string... bergeben wird. Wir wrden gerne mit der ersten Zeile (bergebenes Argument = 1) starten und dann Schritt fr Schritt die
122

Die Praatpfanne

restlichen Zeilennummern abrufen, um nach und nach alle Dateien zu laden. Dazu muss das Argument fr den Get string...Befehl als Variable realisiert werden, deren Wert ausgehend von 1 bei jedem Schleifendurchlauf um 1 erhht wird. Als Schleifenkonstrukt bietet sich in diesem Fall eine forSchleife an.5 Bei einer for-Schleife wird am Anfang eine numerische Variable und ein Wertebereich angegeben., z.B.:
1

for zaehler from 4 to 10

Hier ist zaehler die Variable (den Namen knnen Sie wie immer frei whlen) und 410 ist der Wertebereich; das Ganze wird eingebettet in die Schleifenanweisung for ... from ... to. Am Ende der Schleife, also nach der zu wiederholenden Befehlssequenz, muss das Konstrukt mit der Anweisung endfor abgeschlossen werden. Beim ersten Schleifendurchlauf wird nun der Variablen der niedrigste Wert des Wertebereichs zugewiesen und die Befehlssequenz wird von oben nach unten abgearbeitet. Vor dem nchsten Durchlauf wird der Wert um 1 erhht und die Befehlssequenz wird erneut von oben nach unten abgearbeitet. Das wird so lange wiederholt, bis die Variable den hchsten Wert erreicht hat; dann luft die Schleife noch einmal durch und wird dann beendet und das Skript fhrt mit den Befehlen nach der endfor Anweisung fort. Komplett wrde das Ganze so aussehen (die Einrckung ist wie immer optional und dient nur der bersichtlichkeit):
1 2 3 4 5

for zaehler from 4 to 10 Befehl1 Befehl2 ... endfor

Und hier eine kleine Testschleife mit einem echten Befehl; probieren Sie es aus:
1 2 3 4
5

clearinfo for zaehler from 1 to 20 printline zaehler endfor

Praat kennt noch zwei weitere Schleifenkonstrukte, vgl. Abschnitt Loops im Praat Scripting tutorial. 123

PraatSkripte

Fr unsere Dateiliste brauchen wir einen Zhler, dessen Wertebereich von 1 bis zur letzten Zeile reicht. Die hchste Zeilennummer (= Anzahl der Dateien) liegt bereits in der Variablen anzahlDateien vor. Dieser Zhler nennen wir ihn dateiNr kann ohne weitere Modikation auch als Argument fr den Get string...Befehl dienen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings for dateiNr from 1 to anzahlDateien dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ endfor

Zeile 14:

Hier beginnt die Schleife und die Variable dateiNr wird nach und nach mit Werten zwischen 1 und anzahlDateien gefttert. Pro Schleifendurchlauf wird ein Dateiname wird aus dem Strings Objekt DateiListe ausgelesen, beginnend bei Zeile 1 bis im letzten Durchgang (wenn dateiNr = anzahlDateien) die letzte Zeile ausgelesen wird.

Zeile 15:

Sieht vernnftig aus? Funktioniert aber nicht! Und zwar weil nach dem ersten Schleifendurchlauf das neu eingelesene SoundObjekt ausgewhlt ist (wie wenn Sie es mit der Maus angeklickt hten), so dass beim zweiten Durchlauf der Befehl in Zeile 15 zurecht eine Fehlermeldung verursacht: Aus einem SoundObjekt kann kein String ausgelesen werden6 . Die Ursache fr
Probieren Sie es ruhig aus und Sie werden sehen, dass die Schleife tatschlich einmal durchlaufen wird, d.h. die erste Datei erscheint in Ihrer Objektliste. Das ist eine typische Eigenschaft von Skriptsprachen: Die Befehle werden Schritt fr Schritt abgearbeitet, bis das Skript zu Ende ist oder bis der erste Fehler auftritt. Bei den meisten echten Programmiersprachen wrde der Fehler schon beim kompilieren gefunden, also bevor auch nur ein Befehl ausgefhrt wurde. 124
6

Die Praatpfanne

dieses Verhalten ist, dass Praat immer automatisch das zuletzt erzeugte Objekt auswhlt. Und durch das Einlesen einer WavDatei mit dem Read from le...Befehl wird nun mal ein neues SoundObjekt in der Objektliste erzeugt. Zu Beginn eines Schleifendurchlaufs muss also mittels eines selectBefehls sichergestellt werden, dass das entsprechende StringsObjekt ausgewhlt ist.
14 15 16 17 18

for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ endfor

Beim ersten Durchlauf ist das zwar berssig, da das StringsObjekt unmittelbar vorher erzeugt wurde (Create Strings as le list...) und somit automatisch ausgewhlt ist, es schadet aber auch nichts. Und ab dem zweiten Durchlauf ist es, wie gesagt, unbedingt erforderlich. Diesen Mechanismus mssen Sie bei der SkriptErstellung immer im Hinterkopf behalten. Wenn die korrekte Funktion eines Befehls davon abhngt, dass ein bestimmtes Objekt ausgewhlt ist, prfen Sie unbedingt, ob dieses Objekt tatschlich ausgewhlt ist, wenn der Befehl an der Reihe ist. Ein berssiger selectBefehl schadet nichts ein fehlender selectBefehl kann bse Folgen haben: Stellen Sie sich vor, Sie mchten mit einem SkriptBefehl in einem bestimmten SoundObjekt Formanten messen. Wenn nun an dem Punkt, an dem der Formantenbefehl abgearbeitet wird, versehentlich ein anderes SoundObjekt ausgewhlt ist, berechnet das Skript anstandslos Formantfrequenzen, aber leider im falschen Signal. Und Sie bekommen von dem Missgeschick u.U. berhaupt nichts mit, da beide Objekte vom selben Typ sind und somit keine Fehlermeldung erscheint. Zurck zu unserem Skript. Den Ladevorgang haben wir jetzt ganz gut im Griff. Nach Eingabe eines Verzeichnisnamens werden auf Knopfdruck alle WavDateien aus diesem Verzeichnis geladen. Aber wir erinnern uns: Diese Dateien sollen annotiert werden. Warum also nicht einfach das Annotationsskript von Seite 114 in die Schleife einbauen:
1 2 3 4 5 6

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband

125

PraatSkripte

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show spectrogram endeditor endfor

Zeilen 18:

Das Eingabeformular wird gleich am Anfang erzeugt und angezeigt. Die Eingabe ist danach erledigt. Eine Dateiliste wird erzeugt und die Anzahl der gefundenen Dateien wird in einer Variablen gespeichert. Die forSchleife mit der ZhlerVariablen dateiNr.

Zeilen 1012:

Zeilen 1426: Zeilen 1525:

Die zu wiederholende Befehlssequenz (Datei laden, zur Annotation vorbereiten, im Editor ffnen) Der erste Befehl der Befehlssequenz (Zeile 15) ist ein ShellBefehl, deshalb muss am Ende der Sequenz die EditorUmgebung verlassen werden.

Zeile 25:

Achtung: Testen Sie das Skript nicht, wenn Sie viele WavDateien in Ihrem Zielverzeichnis haben! In der jetzigen Form werden nmlich alle Dateien auf einen Schlag geladen und jede Datei wird sofort in einem eigenen TextGrid Editor geffnet. Praktischer wre folgender Ablauf: Erste Datei laden und im Editor ffnen In aller Ruhe annotieren Editor schlieen und nchste Datei laden
126

Die Praatpfanne

5.2.6

Pausen, Formeln und Bedingungen

Ausgehend von der letzten Version unseres Skriptes wnschen wir uns also, dass das Skript nach der Zeile 24 eine Pause einlegt, bis wir fertig sind mit annotieren. Nichts leichter als das: Fgen wir einfach einen pauseBefehl ein (und, um den Editor zu schlieen, ersetzen wir auch noch den endeditor Befehl durch den CloseBefehl):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show spectrogram pause Nchste Datei laden? Close endfor

Zeile 25:

Der pauseBefehl unterbricht vorbergehend den Skriptablauf  Continue und generiert ein Fenster. Wenn in dem Fenster der  Knopf geklickt wird, wird das Skript fortgesetzt. Das Argument des pauseBefehls wird als Text in dem Fenster angezeigt. Whrend das Skript pausiert, knnen Sie beliebige Dinge in Praat tun, z.B.  eine Annotation erstellen. Wenn alles erledigt ist drcken Sie  Continue .

127

PraatSkripte

Zeile 26:

Der erste Befehl nach der Pause (Close) schliet den TextGrid Editor und das Skript kehrt in die ShellUmgebung zurck.

Ein Problem gibt es noch mit dem Befehl Show spectrogram, der offensichtlich nicht das macht, was sein Name vermuten lsst (passender wre ein Name wie Toogle spectrogram). Wahrscheinlich haben Sie bei der Arbeit in der Benutzeroberche auch schon bemerkt, dass sich Sound bzw. TextGrid Editoren merken, welche Analysen Sie angezeigt haben wollen und welche nicht. Wenn Sie einen SoundEditor ffnen, das Spektrogramm einschalten und den SoundEditor wieder schlieen, wird das Spektrogramm immer angezeigt, wenn Sie einen neuen SoundEditor ffnen. Um eine Analyse wieder auszuschalten, mssen Sie erneut den ShowBefehl anklicken. Genauso verhlt sich auch das Skript. Nehmen wir an, Sie htten bevor Sie das Skript starten in einem Sound oder TextGridEditor smtliche Analysen ausgeschaltet. Beim ersten Schleifendurchlauf ist dann alles in Ordnung, Show spectrogram schaltet das Spektrogramm ein. Der Editor merkt sich jedoch diesen Zustand und ffnet sich beim zweiten Durchlauf mit eingeschaltetem Spektrogramm, woraufhin Show spectrogram das Spektrogramm ausschaltet. Beim dritten Durchlauf geht wieder alles gut usw. Dieses Verhalten kann man kontrollieren, indem man statt Show spectrogram den folgenden Befehl verwendet (im Editor zu nden im View M Men):
1

Show analyses... yes no no no no 60

Das erste Argument (yes) schaltet das Spektrogramm ein immer, egal ob es zuvor ein oder ausgeschaltet war. Die restlichen Argumente stehen fr die brigen Analysen (Pitch, Intensity, Formants, Pulses); wenn Sie davon welche bentigen, ersetzten Sie no durch yes. Das letzte Argument ist der Wert fr Longest analysis (siehe S. 33). Bei dieser Gelegenheit knnten wir auch gleich auf den im Eingabeformular ausgedrckten Benutzerwunsch hinsichtlich der Spektrogrammcharakteristik (Breit oder Schmalband) eingehen, den wir bisher vollkommen ignoriert haben. Welcher Spektrogrammtyp angezeigt wird, wird in Praat ber die Angabe Window length in den Spektrogrammeinstellungen gesteuert (Spectrogramm settings...). Diese Angabe ist das dritte Argument (0.006) des folgenden Befehls (die ersten beiden Argumente legen den View range fest, das letzte Argument ist der Dynamic range):
1

Spectrogram settings... 0 8000 0.006 50

128

Die Praatpfanne

Zur Berechnung der adquaten Window length bentigt man die Abtastrate des analysierten Signals und die Anzahl der Analysepunkte (siehe S. 34). Letztendlich ist es die Anzahl der Analysepunkte, die ber die Spektrogrammcharakteristik entscheidet: Wenige Analysepunkte (z.B. 128) ergeben eine Breitbandcharakteristik, viele Punkte (z.B. 1024) eine Schmalbandcharakteristik. Die Window length wird mit folgender Formel berechnet: W indow length = 1/Abtastrate(Hz) Analysepunkte Die Abtastrate eines SoundObjekts kann mit dem Befehl Get samling frequency abgefragt und in einer Variablen gespeichert werden:
1

abtastRate = Get sampling frequency

Dann kann man die obige Formel praktisch unverndert in ein Praatskript schreiben (weitere mathematische Operatoren nden Sie im Praat Formulas tutorial). Beachten Sie, dass man in Formeln auf die einfachen Anfhrungszeichen vor und nach einer Variablen verzichten darf.
1 2 3 4 5

abtastRate = Get sampling frequency # Breitbandspektrogramm: windowLength = 1/abtastRate*128 # Schmalbandspektrogramm: windowLength = 1/abtastRate*1024

Jetzt mssen wir nur noch eine Anweisung der Form Wenn es ein Breitbandspektrogramm sein soll, nimm die erste Formel, sonst nimm die zweite Formel in das Skript einbauen. Das geht mit einem if...elseKonstrukt:
1 2 3 4 5

if Bedingung Befehl_1 else Befehl_2 endif

Die Semantik des Konstrukts: Wenn die Bedingung erfllt ist, wird Befehl_1 ausgefhrt, sonst Befehl_2. Das abschlieende endif ist obligatorisch. Anstelle einzelner Befehle sind auch Befehlssequenzen erlaubt:
1 2

if Bedingung Befehl_1a

129

PraatSkripte

3 4 5 6 7 8 9 10 11

Befehl_1b Befehl_1c ... else Befehl_2a Befehl_2b Befehl_2c ... endif

Fr den Fall, dass man mehrere Bedingungen prfen mchte, gibt es noch die Anweisung elsif, die auch mehrmals vorkommen darf:
1 2 3 4 5 6 7 8 9

if Bedingung_1 Befehl_1 elsif Bedingung_2 Befehl_2 elsif Bedingung_3 Befehl_3 else Befehl_4 endif

Zur Formulierung von Bedingungen gibt es Vergeichsoperatoren (zu nden im Praat Formulas tutorial unter Operators) fr Zahlen wie auch fr Strings. Vergleichsoperatoren fr Zahlen sind z.B.: = <> < <= > >= gleich ungleich kleiner als kleiner oder gleich grer als grer oder gleich

Zur Erinnerung hier nochmal unser Eingabeformular:


1 2 3 4 5 6 7 8

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform

130

Die Praatpfanne

In Zeile 5 wird bestimmt, dass die gewhlte Option in der Variablen spektrogramm abgespeichert wird, und zwar als Zahl: Whlt der Benutzer die erste Option hat spektrogramm den Wert 1, whlt er die zweite Option hat spektrogramm den Wert 2. Unsere Abfrage knnen wir also wie folgt formulieren:
1 2 3 4 5

if spektrogramm = 1 windowLength = 1/abtastRate*128 else windowLength = 1/abtastRate*1024 endif

Jetzt muss das alles nur noch an der richtigen Stelle in das Skript eingebaut werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ abtastRate = Get sampling frequency if spektrogramm = 1 windowLength = 1/abtastRate*128 else windowLength = 1/abtastRate*1024 endif objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show analyses... yes no no no no 60 Spectrogram settings... 0 8000 windowLength 50 pause Nchste Datei laden? Close endfor

131

PraatSkripte

Zeilen 117: Zeile 18:

Hier hat sich nichts verndert

Nachdem die Datei in Zeile 17 geladen wurde, ist das ensprechende SoundObjekt ausgewhlt ein guter Zeitpunkt, um die Abtastrate abzufragen. Nachdem die Abtastrate bekannt ist, knnen wir auch gleich die Window length berechnen, abhngig von der gewhlten Spektrogrammcharakteristik. Diesen Block knnte man auch spter einbauen, auf jeden Fall aber vor Zeile 31, denn da wird windowLength verwendet. Der Ersatz fr Show spectrogram. Einstellen der Spektrogrammcharakteristik.

Zeilen 1923:

Zeile 30: Zeile 31:

5.2.7

Dateien verwalten II

Eine wichtige Sache knnte man noch in das Skript einbauen: Das Sichern der neu erstellten TextGrids. Eine passende Stelle dafr ist das Ende der Befehlssequenz in der forSchleife, nach dem pauseBefehl. Whrend der Pause wird annotiert; unmittelbar nach der Pause, wenn die Annotation abgeschlos  Continue klickt, sollte sptestens die Annotation sen ist und der Benutzer auf  gespeichert werden; danach beginnt ein neuer Schleifendurchlauf mit dem Laden der nchsten Datei. Wenn am Ende der Befehlssequenz gesichert wird, ist auerdem sichergestellt, dass das TextGrid der letzten Datei im letzten Schleifenduchlaufs ebenfalls gesichert wird. Bisher wird nach der Pause mit dem CloseBefehl nur der Editor geschlossen und die EditorUmgebung verlassen. Das kann so bleiben. Das Skript bendet sich also in der ShellUmgebung und in der Objektliste sind zwei Objekte ausgewhlt: ein SoundObjekt und ein TextGridObjekt (siehe Zeile 26 und 27 in der aktuellen Ausbaustufe des Skripts). In dem Szenario, fr das das Skript erstellt wird, wird nur das TextGrid bearbeitet, das SoundObjekt wird nicht verndert. Da es bereits auf der Festplatte liegt, braucht es auch nicht gespeichert zu werden. Wir bentigen also zuerst einen selectBefehl, damit nur das TextGrid ausgewhlt ist:
1

select TextGrid objektName$

132

Die Praatpfanne

Bevor nun das TextGrid gespeichert wird, knnte man sicherheitshalber noch berprfen, ob es eine Datei diesen Namens schon gibt, um in diesem Fall das automatische Speichern abzubrechen. Es bleibt dann dem Benutzer berlassen, das TextGrid von Hand zu speichern, evtl. unter einem anderen Namen. Praat stellt die Funktion leReadable () zur Verfgung, um zu prfen, ob eine Datei existiert und lesbar ist. Die Funktion liefert den Wert true, wenn die bergebene Datei existiert und lesbar ist, und false, wenn sie nicht lesbar ist und daher vermutlich auch nicht existiert.7 Die zu prfende Datei wird (inklusive Verzeichnispfad) zwischen runden Klammern als Argument bergeben. Und zwar entweder als String zwischen doppelten Anfhrungszeichen, z.B.
fileReadable (/Users/jm/Tmp/praatdemo/demo01.TextGrid)

oder als Kombination aus Strings und StringVariablen, ebenfalls zwischen doppelten Anfhrungszeichen; in diesem Fall mssen die Variablen zustzlich von einfachen Anfhrungszeichen eingerahmt sein; z.B.
fileReadable (pfad_zu_den_Dateien$/demo01.TextGrid)

oder nur als StringVariable, dann aber ohne (!) Anfhrungszeichen, z.B.
fileReadable (textGrid$)

Nach dem selben merkwrdigen und sehr fehleranflligen Prinzip funktioniert brigens auch die Wertzuweisung an eine StringVariable. Den Zuweisungsoperator kennen Sie bereits von numerischen Variablen: das Gleichheitszeichen.8 Wie die Wertzuweisung an numerische Variablen funktioniert, ist ebenfalls bekannt; Zahlen, Formeln, Formeln mit Variablen alles kein Problem und keinerlei Stress mit Anfhrungszeichen:
zahl = 10 zahl = ((10+4)/2)*3 zahl = 1/abtastRate*128
Es kann natrlich sein, dass eine Datei existiert, aber aus irgendeinem Grund nicht lesbar ist. In diesem Fall liefert die Funktion ebenfalls false. Das ist zwar nicht ganz das Verhalten, das wir wollen, leider gibt es aber keinen einfachen Weg, diese Lcke zu schlieen. Gleichzeitig ist dieser Fall (vorhanden aber nicht lesbar) eher unwahrscheinlich, so dass man damit leben kann. 8 Das Gleichheitszeichen ist sozusagen ein Homonym. In anderen Kontexten hat es eine vllige andere Semantik, nmlich die eines Vergleichsoperators; z.B. in einer ifBedingung. 133
7

PraatSkripte

Anders bei StringVariablen. Der zugewiesene Wert (String) muss zwischen doppelten Anfhrungszeichen stehen, auer wenn es sich ausschlielich um eine andere StringVariable handelt. Bei einer Kombination aus String(s) und Variablen mssen Sie doppelte und einfache Anfhrungszeichen verwenden: Wertzuweisung
string$ = Hallo Welt string2$ = schne neue string$ = Hallo string2$ Welt string$ = Hallo string2$ Welt string$ = string2$

Inhalt von string$ Hallo Welt Hallo schne neue Welt Hallo string2$ Welt schne neue

Da Pfad und Dateinamen mindestens zweimal bentigt werden (fr die leReadablePrfung und fr den eigentlichen Speichervorgang), werden wir die Angabe in eine StringVariable schrieben. Auf diese Weise muss man sich die Arbeit mit den Anfhrungszeichen nur einmal machen. Wenn die TextGrids im gleichen Verzeichnis wie die WavDateien gespeichert werden, liegt der Pfad bereits in der Variablen pfad_zu_den_Dateien$ vor. Fr den Dateinamen knnte man den Objektnamen (liegt in der Variablen objektName$ ebenfalls bereits vor) mit einer Endung kombinieren, z.B. TextGrid.
1

textGrid$ = "pfad_zu_den_Dateien$/objektName$.TextGrid"

Da die leReadableFunktion true bzw. false als Ergebnis liefert, eignet sie sich als Bedingung in einer ifKonstruktion:
1 2 3 4 5

if fileReadable (textGrid$) [nicht speichern] else [speichern] endif

Wenn die Datei bereits existiert, ist die Bedingung erfllt (true) und das neue TextGrid soll erst einmal nicht gespeichert werden. Ist die Bedingung nicht erfllt (false), kann gespeichert werden. Im ersten Fall sollte der Benutzer informiert werden, damit er bei Bedarf von Hand speichern kann. Im zweiten Fall wird das TextGrid mit Write to text le... gespeichert.
134

Die Praatpfanne

1 2 3 4 5 6 7 8

if fileReadable (textGrid$) printline Achtung! printline Die Datei textGrid$ existiert bereits. printline Das TextGrid objektName$ wurde printline nicht gespeichert. else Write to text file... textGrid$ endif

Das Ganze sieht dann so aus:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings clearinfo for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ abtastRate = Get sampling frequency if spektrogramm = 1 windowLength = 1/abtastRate*128 else windowLength = 1/abtastRate*1024 endif objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show analyses... yes no no no no 60 Spectrogram settings... 0 8000 windowLength 50 pause Nchste Datei laden? Close select TextGrid objektName$ textGrid$ = "pfad_zu_den_Dateien$/objektName$.TextGrid" if fileReadable (textGrid$) printline Achtung! printline Die Datei textGrid$ existiert bereits.

135

PraatSkripte

40 41 42 43 44 45

printline Das TextGrid objektName$ wurde printline nicht gespeichert. else Write to text file... textGrid$ endif endfor

Zeilen 3544:

Hier nden Sie alle Neuerungen aus diesem Abschnitt: TextGrid auswhlen (35), Dateinamen konstruieren und in eine Variable schreiben (36), Existenz der Datei abfragen (37) und entweder eine Warnung ausgeben (3841) oder speichern (43).

Zeile 14:

Die clearinfoAnweisung ffnet ein neues, leeres InfoFenster, in dem etwaige Warnungen ausgegeben und gesammelt werden.

Wenn Sie Ihren Arbeitsplatz gerne sauber halten, knnen Sie ganz zum Schluss (wenn Sie einigermaen sicher sind, dass das Skript genau das macht, was Sie wollen) noch ein paar Aufrumbefehle ergnzen. So knnte man beispielsweise das eben bearbeitete SoundObjekt mitsamt dem gespeicherten TextGrid aus der Objektliste entfernen, bevor die nchste Datei geladen wird. Da natrlich nur gespeicherte TextGrids entfernt werden sollen, passt diese Aufrumaktion am besten in den elseBlock, nach den WriteBefehl.
35 36 37 38 39 40 41 42 43 44 45 46 47

select TextGrid objektName$ textGrid$ = "pfad_zu_den_Dateien$/objektName$.TextGrid" if fileReadable (textGrid$) printline Achtung! printline Die Datei textGrid$ existiert bereits. printline Das TextGrid objektName$ wurde printline nicht gespeichert. else Write to text file... textGrid$ plus Sound objektName$ Remove endif endfor

Zeile 44:

Das TextGrid ist bereits ausgewhlt (vgl. Zeile 35), daher muss die Auswahl nur um das SoundObjekt erweitert werden.
Remove Knopf aus dem ObDen RemoveBefehl kennen Sie als  jektfenster; er entfernt die ausgewhlten Objekte aus der Objektliste. 

Zeile 45:

136

Die Praatpfanne

Damit die Objektliste wieder genauso aussieht, wie vor dem Skriptstart, wird ganz am Ende, nach dem letzten Schleifenduchlauf, noch das StringsObjekt enfernt. Das fertige PraatpfannenSkript sehen Sie an einem Stck auf der nchsten Seite.

137

Dateien laden und annotieren


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welche Art von Spektrogramm angezeigen? optionmenu Spektrogramm: 1 option Breitband option Schmalband endform Create Strings as file list... DateiListe ... pfad_zu_den_Dateien$/*.wav anzahlDateien = Get number of strings clearinfo for dateiNr from 1 to anzahlDateien select Strings DateiListe dateiName$ = Get string... dateiNr Read from file... pfad_zu_den_Dateien$/dateiName$ abtastRate = Get sampling frequency if spektrogramm = 1 windowLength = 1/abtastRate*128 else windowLength = 1/abtastRate*1024 endif objektName$ = selected$ ("Sound") To TextGrid... "Vokale Mittelpunkte" Mittelpunkte select Sound objektName$ plus TextGrid objektName$ Edit editor TextGrid objektName$ Show analyses... yes no no no no 60 Spectrogram settings... 0 8000 windowLength 50 pause Nchste Datei laden? Close select TextGrid objektName$ textGrid$ = "pfad_zu_den_Dateien$/objektName$.TextGrid" if fileReadable (textGrid$) printline Achtung! printline Die Datei textGrid$ existiert bereits. printline Das TextGrid objektName$ wurde printline nicht gespeichert. else Write to text file... textGrid$ plus Sound objektName$ Remove endif endfor select Strings DateiListe Remove

Die Praatpfanne

5.2.8

Fazit

Wenn Sie ffter mal Vokale und Vokalmittelpunkte in mehreren Dateien aus einem Verzeichnis annotieren mssen, dann ist das Skript sehr hilfreich und kann produktiv eingestetzt werden. Wenn Sie statt Vokalen z.B. intonatorische Parameter annotieren mssen, kann das Skript schnell angepasst werden. Denieren Sie in Zeile 26 ein passendes TextGrid, z.B.
26

To TextGrid... "Phrasen Pitchakzente" Pitchakzente

und erzeugen Sie in den Zeilen 31 und 32 eine Pitchanzeige statt eines Spektrogramms, z.B. so:
31 32

Show analyses... no yes no no no 50 Pitch settings... 50 300 Hertz autocorrelation automatic

Wenn Sie wollen, entfernen Sie noch die Zeilen 47 und 1924 fertig. Oder lassen Sie den Benutzer den Pitchrange einstellen:
1 2 3 4 5 6 7 8

\begin{skript}[label=Dateien laden und annotieren,showspaces=false] form Bitte fllen Sie das folgende Formular aus comment Geben Sie den Pfad zu Ihren Wav-Dateien an. sentence Pfad_zu_den_Dateien /Users/jm/Tmp/praatdemo comment Welcher Pitchrange soll angezeigt werden? natural Range_von_(Hz) 50 natural Range_bis_(Hz) 300 endform

...
31 32

Show analyses... no yes no no no 50 Pitch settings... range_von range_bis Hertz autocorrelation automatic

Das Skript in seiner jetzigen Form kann Sie also bei einer bestimmten Aufgabe untersttzen und kann auch relativ schnell an andere, hnliche Aufgaben angepasst werden. Das ist alles, was Sie von einem Skript erwarten sollten. Versuchen Sie nicht vor allem nicht als Anfnger zuviel in ein Skript zu packen, sondern bleiben Sie mglichst nah an der konkreten Aufgabe, die Sie automatisieren wollen. Wenn Sie Vokale annotieren mssen, erstellen Sie ein Skript, das Sie genau dabei untersttzt. Denken Sie nicht: Manchmal muss ich
139

PraatSkripte

aber auch Intonation annotieren, warum schreib ich nicht einfach gleich ein Skript fr beides? Erstens ist das nicht einfach und deshalb dauert es zweitens viel lnger, ein solch komplexes, generisches Skript zu schreiben, als ein einfaches, spezialisiertes Skript zu schreiben und spter, wenn es soweit ist, an eine neue Aufgabe anzupassen, wobei das fr eine neue konkrete Aufgabe angepasste Skript drittens die Aufgabe vermutlich besser und schneller erledigt, als das generische Skript. Begreifen Sie Skripte als einfache, anspruchslose, vielleicht sogar etwas primitive Werkzeuge und setzten Sie sie entsprechend ein. Analysieren Sie Ihre Aufgabe(n) und Ihre Arbeitsweise und erstellen Sie daran angepasste Skripte. Bemhen Sie sich nicht um Perfektion, aber achten Sie auf Zuverlssigkeit: Wenn Sie Analysen und Berechnungen automatisieren, machen Sie Stichproben und prfen Sie die Ergebnisse auf Plausibilitt. Seien Sie besonders skeptisch, wenn ein Skript auf Anhieb zu funktionieren scheint. . .

140

Anhang A HardwareEmpfehlungen fr hochwertige Aufnahmen


. . . under construction . . .

HardwareEmpfehlungen fr hochwertige Aufnahmen

142

Anhang B Kalibrierung zur Schalldruckpegelmessung


. . . under construction . . .

Das könnte Ihnen auch gefallen