Praat scripting notes: Difference between revisions

From Helpful
Jump to navigation Jump to search
mNo edit summary
 
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:
{{ling}}
{{ling}}


https://www.fon.hum.uva.nl/praat/manual/Scripting.html
==Data types and structures==
<!--
There are broadly two types: numeric and string
In forms, [https://www.fon.hum.uva.nl/praat/manual/Scripting_6_1__Arguments_to_the_script.html] represent types and some GUI filtering of their values
word - string without spaces
sentence - string with spaces
text - string with spaces
comment
real
positive - real > 0
integer
natural - integer >= 1
realvector
positivevector
integervector
naturalvector
boolean
choice
option
infile
outfile
folder
-->
===String operations===
<!--
noext$ = filename$ - ".wav"
Read from file: noext$ + ".wav"
writeInfoLine: “The value is ”, b, “.”
# comment (beginning of line only)
not whitespace sensitive (anymore), and people like indenting to suggest structure
-->
===Structures===
<!--
https://www.fon.hum.uva.nl/praat/manual/Scripting_5_6__Arrays_and_dictionaries.html
https://www.fon.hum.uva.nl/praat/manual/Scripting_5_7__Vectors_and_matrices.html
-->
==Objects and selections==
<!--
For anything more complex, you will be working with '''the list and selections within it'''
* [https://www.fon.hum.uva.nl/praat/manual/_selectObject_.html selectObject] change selection, by ID or name
* [https://www.fon.hum.uva.nl/praat/manual/_plusObject_.html plusObject] add to current selection, by ID or name
* [https://www.fon.hum.uva.nl/praat/manual/_minusObject_.html minusOject] removes from current selection, by ID or name
* [https://www.fon.hum.uva.nl/praat/manual/_removeObject_.html removeObject] removes objects from list
:: if in the selection, removes that; does not otherwise affect the selection
* selected$() is a function that returns the '''name''' of objects within the selection
** selected$()
** selected$(num)
** selected$(type$)
** selected$(type$, num)
* selected() is a function that returns the '''ID''' of objects within the selection
** selected() - return ID of the topmost selected object
** selected(number) - return ID of so-manieth item (from the bottom if negative)
** selected (type$) - return ID of first selected object of the type
** selected (type$, i) - return ID of so-manieth selected object of the type
-->
==Files and commands==
<!--
Praat info window
* appendInfoLine - add to info window content
* writeInfoLine - replace all info window content with this (you may prefer to use only append, and the occsaional clearinfo)
* clearinfo - clear info window content
* appendInfo
String variable names end with dollar, numerics do not
fileReadable(path$) - returns 1 if readable, 0 if not
readfile$(path$) - return file contents as string
readfile(path$) - return number from text file
https://www.fon.hum.uva.nl/praat/manual/_readFile-S_.html
environment$(string$)  https://www.fon.hum.uva.nl/praat/manual/_environment-S_.html
runSystem: https://www.fon.hum.uva.nl/praat/manual/_runSystem_.html
runSubprocess(cmd$) - run command
runSubprocess$(cmd$) - runSubprocess(cmd$) and return its output
runSystem$
runScript [https://www.fon.hum.uva.nl/praat/manual/_runScript_.html]
pauseScript [https://www.fon.hum.uva.nl/praat/manual/_pauseScript_.html]
https://www.fon.hum.uva.nl/praat/manual/Scripting_5_8__Including_other_scripts.html
sendsocket fonsg19.hum.uva.nl:6667 display hallo.wav
https://www.fon.hum.uva.nl/praat/manual/Scripting_6_9__Calling_from_the_command_line.html
An object has a full name and a given name, e.g. when you start fresh and create a recording, then
writeInfoLine ()
appendInfoLine( selected$() )
appendInfoLine( selected$("Sound") )
will print
Sound untitled
untitled
The first is a full name, the second a given name. You could split those out like:.
fullName$ = selected$()
type$ = extractWord$ (fullName$, "")
name$ = extractLine$ (fullName$, " ")
appendInfoLine( type$ )
appendInfoLine( name$ )
Which would give:
Sound
untitled
-->
== ==
<!--
for i from 1 to nFiles
    mycode
endfor
while x < 0
    x = x + 2 * pi
endwhile
throws = 0
repeat
    eyes = randomInteger (1, 6) + randomInteger (1, 6)
    throws = throws + 1
until eyes = 12
writeInfoLine: "It took me ", throws, " trials to throw 12 with two dice."
if i < 20 and word$ = “STIM”
  do this
elsif i = 20 and not word$ = “STIM”
  do that
else
  do this
endif
Procedures:
https://www.fon.hum.uva.nl/praat/manual/Scripting_5_5__Procedures.html
==Forms==
<!--
<!--


form presens a form
: "OK" sets the mentioned variables
: "Cancel" sets done
: (doesn't ''define'' one, it does it right then)


form Concatenate sound files
comment Directory of input sound files
text Sound_directory C:\temp\
sentence Sound_file_extension .wav
comment Save the final file as
text Save_as C:\temp\temp.wav
endform


String variable names end with dollar
-->






==Drawing==


<!--
Erase all
Draw inner box
Erase all
-->
==External scripting==
<!--
There are various libraries that interact with praat's files, and make have python initiate praat running praat scripts
For example, praatio allows:
from praatio import textgrid
tg = textgrid.openTextgrid(r"C:\Users\tim\Documents\transcript.TextGrid", False)
# Textgrid, IntervalTier, and PointTier
-->
==Extending praat==
<!--
Add menu command...
Add action command...
-->
==Unsorted==
<!--
'''scripts look like wording, but you won't understand why it works until you figure out the predefined things it's referencing'''
Consider:
Create Strings as file list: "*.wav"
num_files = Get number of strings
for i from 1 to num_files
  selectObject: "Strings files"
  filename$ = Get string: i
  basename$ = filename$ - ".wav"
  Read from file: dir$ + basename$ + ".wav"
endfor
Why does "Get number of files" or "Get String" work?
'''Get is a little magical'''
* Get mean...
Create Strings as file list... list 'source_directory$'/'file_name_or_initial_substring$'*'file_extension$'
head_words = selected("Strings")




https://www.fon.hum.uva.nl/praat/manual/Scripting.html
-->
-->

Latest revision as of 13:16, 20 June 2024

Language units large and small

Marked forms of words - Inflection, Derivation, Declension, Conjugation · Diminutive, Augmentative

Groups and categories and properties of words - Syntactic and lexical categories · Grammatical cases · Correlatives · Expletives · Adjuncts

Words and meaning - Morphology · Lexicology · Semiotics · Onomasiology · Figures of speech, expressions, phraseology, etc. · Word similarity · Ambiguity · Modality ·

Segment function, interaction, reference - Clitics · Apposition· Parataxis, Hypotaxis· Attributive· Binding · Coordinations · Word and concept reference

Sentence structure and style - Agreement · Ellipsis· Hedging

Phonology - Articulation · Formants· Prosody · Sound change · Intonation, stress, focus · Diphones · Intervocalic · Glottal stop · Vowel_diagrams · Elision · Ablaut_and_umlaut · Phonics

Speech processing · Praat notes · Praat plugins and toolkit notes · Praat scripting notes

Analyses, models, software - Minimal pairs · Concordances · Linguistics software · Some_relatively_basic_text_processing · Word embeddings · Semantic similarity

Unsorted - Contextualism · · Text summarization · Accent, Dialect, Language · Pidgin, Creole · Natural language typology · Writing_systems · Typography, orthography · Digraphs, ligatures, dipthongs · More linguistic terms and descriptions · Phonetic scripts

https://www.fon.hum.uva.nl/praat/manual/Scripting.html


Data types and structures

String operations

Structures

Objects and selections

Files and commands

Drawing

External scripting

Extending praat

Unsorted