1 2 ############################################################ 3 ### get_formants.praat 4 ### 5 ### 6 ### MEASURES FORMANT VALUES FOR SEGMENTS IN A TEXTGRID 7 ############################################################ 8 9 #PROMT THE USER FOR INPUT 10 form Measure formant values for segments in a textgrid 11 sentence sound_file myname 12 positive maximum_formant 5500 13 positive number_of_formants 5 14 endform 15 16 #DELETE THE OLD FORMANT FILE IF IT EXISTS 17 filedelete formants_'sound_file$'.txt 18 19 #SELECT THE SOUND AND FIND THE FORMANTS 20 select Sound 'sound_file$' 21 To Formant (burg)... 0 'number_of_formants' 'maximum_formant' 0.025 50 22 23 #COUNT THE NUMBER OF INTERVALS IN THE PHONES TIER OF THE TEXTGRID 24 select TextGrid 'sound_file$' 25 intervals = Get number of intervals... 1 26 27 #GO THROUGH THE PHONE INTERVALS ONE BY ONE 28 for i from 2 to intervals-1 29 select TextGrid 'sound_file$' 30 phone$ = Get label of interval... 1 i 31 32 #SEE IF THE INTERVAL LABEL IS A PHONE 33 if phone$ != "" and phone$ != "sp" 34 35 #GET TIMES DURING THE PHONE 36 start = Get starting point... 1 i 37 end = Get end point... 1 i 38 quarter = start + (end-start) / 4 39 halfway = start + (end-start) / 2 40 three_quarters = start + (end-start) * 3 / 4 41 42 #IDENTIFY THE WORD 43 j = Get interval at time... 2 halfway 44 word$ = Get label of interval... 2 j 45 46 word_start = Get starting point... 2 j 47 word_end = Get end point... 2 j 48 49 #IDENTIFY THE PRECEDING PHONE 50 if start = word_start 51 left$ = "#" 52 else 53 left$ = Get label of interval... 1 i-1 54 endif 55 56 #IDENTIFY THE FOLLOWING PHONE 57 if end = word_end 58 right$ = "#" 59 else 60 right$ = Get label of interval... 1 i+1 61 endif 62 63 #MEASURE F1 AND F2 AT THREE TIMES 64 select Formant 'sound_file$' 65 f1_1 = Get value at time... 1 'quarter' Hertz Linear 66 f2_1 = Get value at time... 2 'quarter' Hertz Linear 67 f1_2 = Get value at time... 1 'halfway' Hertz Linear 68 f2_2 = Get value at time... 2 'halfway' Hertz Linear 69 f1_3 = Get value at time... 1 'three_quarters' Hertz Linear 70 f2_3 = Get value at time... 2 'three_quarters' Hertz Linear 71 72 #RECORD THE FORMANT MEASUREMENTS 73 fileappend formants_'sound_file$'.txt 'word$','left$','phone$','right$','f1_1','f2_1','f1_2','f2_2','f1_3','f2_3''newline$' 74 endif 75 endfor 76 77 select Formant 'sound_file$' 78 Remove