basic and advanced praat scripting kyuchul yoon division of english kyungnam university seoul...

Post on 22-Dec-2015

243 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Basic and advanced Praat Scripting

Kyuchul YoonDivision of English

Kyungnam University

Seoul National University, Linguistics Department, 2006. 12.09

2

Praat Scripting Language

• Where to Get Help

• A Brief Look at a Sample Script

• Basic Topics

• Advanced Topics

• Hands-on Activities

• Scripting Examples

3

Where to Get Help

• Built-in manual “Help” menu of Praat (“search” button)

• Official Praat homepagewww.praat.org

• Discussion grouphttp://uk.groups.yahoo.com/group/praat-users/

• Scripts from other people“Files” menu from the discussion grouphttp://ling.osu.edu/~kyoon/scripts/praat/http://ling.osu.edu/~welby/praat.html

4

A Brief Look at a Sample Script

5

Basic Topics• Looks of Praat• What Praat can do• What is an object? (.TextGrid)• How to run a script (example)• Language elements

– Comments, continuation lines, white space– Variables, arrays, formulas– Jumps, loops

6

Basic Topics: Looks of Praat

• Windows: Praat objects, Praat picture, Editor• Menus: Praat, New, Read, Write

• Command buttons (context-sensitive)– Activated when an object is selected– Changes depending on the type of an object (e.g. Sound)

…Help, Edit, Play, Draw…, Query-, Modify-, Annotate-Analyse: Periodicity-, Spectrum-, Formants & LPC-, …, To Intensity…Manipulate: To Manipulation…Synthesize: Convert-, Filter-, Combine sounds-

• Command buttons (fixed)– Rename…, Copy…, Info, Remove, Inspect

7

Basic Topics: What Praat can do

• General functionsSound recordingAnalyses (spectral, pitch, formant, intensity)AnnotationManipulation (pitch, duration, intensity, formant)

• Specialized functionsVoice analysis (jitter, shimmer, noise)Listening experimentsFilteringSynthesis (source-filter, articulatory)Learning (neural networks, OT learning)Statistics (multi-dimensional scaling, etc.)

8

Basic Topics: What is an object? (.TextGrid)

• A segment of computer memory

• Contains a set of data in the Praat program

• Resides in the Praat object window (e.g. sample.wav)– e.g.) Sound sample

• Is NOT a file! (Must be saved!)

• Needs to be clicked to be selected (Shift, Ctrl, dragging)• Types of objects

Sound, Spectrum, Spectrogram, TextGrid, Pitch, Formant, Intensity, Manipulation

9

Basic Topics: What is an object? (.TextGrid)

• TextGrid object– Created with a sound object selected

Annotate- To TextGrid…

– Used for annotation (segmentation and labeling)

– Consists of a number of tiers

– Two kinds of tiers: • Interval tier: a connected sequence of labeled intervals with

boundaries in between

• Point tier: a sequence of labeled points

10

Basic Topics: What is an object? (.TextGrid)

• Examining an object through Query…– Gives you information about the selected object

– Information is displayed by default in the Info window

– Query results can be used to put information into a variable• myStartTime = Get start time• myPointLabel$ = Get label of point… 1 1

• Modifying an object through Modify…– Query results can be used to modify an object, e.g. TextGrid

• Set point text… 1 1 ‘myPointLabel$’

11

Basic Topics: How to run a script (example)

• What is a script?– An executable text with menu commands and action commands– Praat ==> New/Open Praat script– In the script editor, Run ==> Run

• Edit ==> Paste history in the script editor– Records all the menu/action commands– Can be used to copy/paste recorded commands– Constants could be replaced with variables– Clear history to erase all the earlier commands– A good source for beginners!

12

Basic Topics: How to run a script (example)Read from file... D:\recording\2syllAP-LHa.wavTo TextGrid... "phonological phonetic" phoneticplus Sound 2syllAP-LHaEditselect TextGrid 2syllAP-LHaInsert boundary... 1 0.5Set interval text... 1 1 test=================================================================fileLocation$ = "D:\recording\2syllAP-LHa.wav"uTonesTierName$ = "phonological"sTonesTierName$ = "phonetic"uTonesTier = 1intervalText$ = "test"Read from file... 'fileLocation$'Rename… soundObjTo TextGrid... "'uTonesTierName$' 'sTonesTierName$'" 'sTonesTierName$'Rename… textgridObjplus Sound soundObjEditpause Insert a sample interval?select TextGrid textgridObjInsert boundary... uTonesTier 0.5Set interval text... uTonesTier 1 'intervalText$'

Paste history

Now a script!

13

Basic Topics: Language elements

• Comments, continuation lines, white space– All white spaces (and tabs) at line beginnings are ignored

• You can use indenting to make your script readable (tabs preferred)sum = 0for i to 10 for j to 10 sum = sum + i*j endforendforpause The total sum is ‘sum’

– Comments lines start with # or ! or ; (# preferred)

– You can split long command lines into multiple lines using …• myStringVariable$ = left$(myMainSentence$, (lengthOfUtterance-

…lengthOfRightWord))

14

Basic Topics: Language elements• Variables, arrays, formulas

– Numeric variables, variable = formula• e.g.) lengthOfSentence = 10

– String variables (end in a dollar sign), variable$ = string• e.g.) sentenceToProcess$ = “Praat rules”• Predefined string variables: newline$, tab$, shellDirectory$

– Variable substitution (in between single quotes), ‘variable$’• e.g.) echo The number of characters is ‘lengthOfSentence’

• e.g.) Try ‘lengthOfSentence:2’

– Array variables: simulated with quote substitution• e.g.) for j from 1 to 5

square‘j’ = j*jendfor

square1 = 1, square2 = 4, square3 = 9, square4 = 16, square5 = 25

15

Basic Topics: Language elements

• Jumps, loopsfor/endfor

################################################# throws = 0repeat

sum = randomInteger(1,6) + randomInteger(1,6) throws = throws + 1

until sum = 12echo Took me ‘throws’ trials

#################################################throws = 1sum = randomInteger(1,6) + randomInteger(1,6)while sum <> 12 throws = throws + 1

sum = randomInteger(1,6) + randomInteger(1,6)endwhileecho Took me ‘throws’ trials

16

Advanced Topics

• Arguments to commands/scripts

• Object selection

• Calling system commands

• Info window, user interaction, file handling

• Scripting in an editor window

17

Advanced Topics Arguments to commands/scripts• form/endform keywords

form Types of script arguments

natural numOfSentences_(positive_whole_number) 337

integer amplitudeSteps_(whole_number) -2000

real factorOfZoomOut_(real_number) -3.5

positive factorOfZoomIn_(positive_real_number) 4.7

comment A line with any text

word targetWord_(string_without_spaces) school

sentence targetSentence_(any_short_string) my school

text targetText_(variableName_not_shown) my school bus

boolean trueOrFalse_(with_a_checkbox) 1

choice myChoice_(with_a_radiobox) 1

button choice 1

button choice 2

button choice 3

comment Choose any color

optionmenu Color: 2

option Red

option Green

endform

18

Advanced Topics Object selection

• How to select objects from your script

select Sound hello1plus Sound hello2minus Sound hello2select allminus Sound hello2Rename… greeting1Remove

##################fullFileName$ = “male02-Seoul-32yrs.wav”Read from file… ‘fullFileName$’filePrefix$ = fullFileName$ - “.wav”newTextGridName$ = filePrefix$ + “.TextGrid”

19

Advanced Topics Calling system commands

• Call system (DOS/Unix/Linux) commands from a script

directoryName$ = “resultFolder”system_nocheck mkdir ‘directoryName$’

will create a new subfolder in the current folder

20

Advanced Topics Info window, user interaction, files

• Writing to the Info window from a script…– echo text, clearinfo, print text, printtab, printline text

• A sample scriptclearinfoprintline Minimum MaximumminValue = 1maxValue = 10print ‘minValue’printtabprint ‘maxValue’

21

Advanced Topics Info window, user interaction, files

• Messages to the user– exit text : to stop the execution of the script with the text message– nowarn Write to WAV file… hello.wav : prevents warning

messages, e.g. about clipped sound samples– noprogress To Pitch… 0 75 500 : prevents from showing a

progress window– nocheck Remove : causes the script to continue even if there’s

nothing to remove– pause text : temporarily halts a Praat script. Continue & Stop buttons.

• Can be used to accept user actions which will be stored in variables• e.g.) User selecting a particular section of a sound object in

an editorstartOfSelection = Get start of selectionendOfSelection = Get end of selection

22

Advanced Topics Info window, user interaction, files

• File handling– Reading an existing file, e.g. hello.wav, sentences.txt

• Read from file… C:/sound/hello.wav• Read Strings from raw text file… C:/text/sentences.txt

– Creating a new text file in the current folder, e.g. result.txt• fileappend result.txt Hello world!’newline$’• fileappend result.txt I am back!

– Deleting an existing file• filedelete C:/sound/hello.wav

– Getting a list of file names of a particular folder• Create Strings as file list… fileListObj C:/sound/*.wav

– The object fileListObj has a list of filename strings in one column

– With for/endfor, repeated actions can be taken

23

Advanced Topics Scripting in an editor window

• In a Praat script– editor/endeditor required

• In an editor script– Only endeditor is required

editor Sound soundObj#do your stuff herecursorPosition = Get cursorSelect... cursorPosition-0.02 cursorPosition+0.02Extract sound selection (time from 0)

endeditor

To Spectrum (fft)

Edit

24

Hands-on Activities

• Write a script that will help measure the duration of a user-selected segment for all of the .wav files in a folder

Keywords to use:

form/endformCreate Strings as file list…for/endforEditpausefileappend

25

Hands-on Activities# Put variables hereform Parameter settings

word inFolder_(with_sounds) demo-folderword outFile_(to_be_created) measurements.txt

endform# Make a list of files in the folderCreate Strings as file list... fileListObj ‘inFolder$’/*.wavSortnumOfFiles = Get number of stringspause ‘numOfFiles’ files identified. Continue? # Loop through each filefor iFile to numOfFiles

select Strings fileListObjfileName$ = Get string... iFilepause Opening the file ‘fileName$’Read from file... ‘inFolder$’/’fileName$’Rename... soundObjEditeditor Sound soundObj

pause Select the target segmenttargetDuration = Get selection length

endeditorRemovefileappend ‘outFile$’ ‘fileName$’‘tab$’‘targetDuration:2’‘newline$’

endforRemove all# End of script

26

Scripting Examples

• Scripts for

(1) Prosody swapping(2) Speech corpus searching(3) K-ToBI labeling

top related