###################################################### ### get_formants.praat ### ### ### ### MEASURES FORMANT VALUES FOR SEGMENTS IN A TEXTGRID ### ###################################################### Text writing preferences: "UTF-8" #PROMPT THE USER FOR INPUT form Measure formant values for segments in a textgrid sentence sound_file myname positive maximum_formant 5500 positive number_of_formants 5 endform #DELETE THE OLD FORMANT FILE IF IT EXISTS filedelete formants_'sound_file$'.txt #COUNT THE NUMBER OF INTERVALS IN THE PHONES TIER OF THE TEXTGRID select TextGrid 'sound_file$' intervals = Get number of intervals... 1 #GO THROUGH THE PHONE INTERVALS ONE BY ONE for i from 2 to intervals-1 select TextGrid 'sound_file$' phone$ = Get label of interval... 1 i #SEE IF THE INTERVAL LABEL IS A PHONE if phone$ != "" and phone$ != "sp" #GET TIMES DURING THE PHONE start = Get starting point... 1 i end = Get end point... 1 i quarter = start + (end-start) / 4 halfway = start + (end-start) / 2 three_quarters = start + (end-start) * 3 / 4 #IDENTIFY THE WORD j = Get interval at time... 2 halfway word$ = Get label of interval... 2 j word_start = Get starting point... 2 j word_end = Get end point... 2 j #IDENTIFY THE PRECEDING PHONE if start = word_start preceding_phone$ = "#" else preceding_phone$ = Get label of interval... 1 i-1 endif #IDENTIFY THE FOLLOWING PHONE if end = word_end following_phone$ = "#" else following_phone$ = Get label of interval... 1 i+1 endif is_vowel = index (phone$, "1") if is_vowel > 0 #SELECT THE SOUND AND MEASURE THE FORMANTS select Sound 'sound_file$' extract_start = start-0.025 extract_end = end+0.025 Extract part... 'extract_start' 'extract_end' rectangular 1.0 yes To Formant (burg)... 0 'number_of_formants' 'maximum_formant' 0.025 50 #MEASURE F1 AND F2 AT THREE TIMES f1_1 = Get value at time... 1 'quarter' Hertz Linear f2_1 = Get value at time... 2 'quarter' Hertz Linear f1_2 = Get value at time... 1 'halfway' Hertz Linear f2_2 = Get value at time... 2 'halfway' Hertz Linear f1_3 = Get value at time... 1 'three_quarters' Hertz Linear f2_3 = Get value at time... 2 'three_quarters' Hertz Linear #RECORD THE FORMANT MEASUREMENTS fileappend formants_'sound_file$'.txt 'word$','preceding_phone$','phone$','following_phone$','f1_1','f2_1','f1_2','f2_2','f1_3','f2_3''newline$' plus Sound 'sound_file$'_part Remove endif endif endfor #select Formant 'sound_file$' #Remove