# This script saves each interval in the selected IntervalTier of a TextGrid to a separate WAV sound file # for each sound file and corresponding TextGrid in a given folder. # # Files are named with the corresponding interval labels (plus a running index number when necessary). # # NOTE: Make sure that the interval labels do not contain forbidden characters! # # This script is distributed under the GNU General Public License. # Copyright 8.3.2002 Mietta Lennes # # Modified by Danielle Daidone 4/27/19 to save labeled intervals as wav files for all sound files and # corresponding TextGrids in a given folder. # The script outputs all names of saved files and automatically excludes # all empty intervals, intervals with a space, or intervals with a line break. ############################################################################################################# form Save intervals to WAV sound files comment Give the folder where the input files are: sentence InputDir C:\Users\ddaidone\Desktop\Test\ comment Which IntervalTier in these TextGrids would you like to process? integer Tier 1 comment Give the folder where you want to save the individual sound files: sentence Folder C:\Users\ddaidone\Desktop\Test\cut\ comment Give an optional prefix for all filenames: sentence Prefix comment Give an optional suffix for all filenames (.wav will be added anyway): sentence Suffix endform writeInfoLine: "The following files were saved:" Create Strings as file list... list 'inputDir$'*.wav numberOfFiles = Get number of strings for ifile to numberOfFiles select Strings list #open sound file fileName$ = Get string... ifile Open long sound file... 'inputDir$''fileName$' soundname$ = selected$ ("LongSound") #open textgrid gridname$ = "'inputDir$''soundname$'.TextGrid" if fileReadable (gridname$) Read from file... 'gridname$' select TextGrid 'soundname$' numberOfIntervals = Get number of intervals... tier # Default values for variables files = 0 intervalstart = 0 intervalend = 0 interval = 1 intname$ = "" intervalfile$ = "" endoffile = Get finishing time # Loop through all intervals in the selected tier of the TextGrid for interval from 1 to numberOfIntervals select TextGrid 'soundname$' intname$ = "" intname$ = Get label of interval... tier interval check = 0 if intname$ = "" check = 1 endif if intname$ = " " check = 1 endif if intname$ = newline$ check = 1 endif if check = 0 intervalstart = Get starting point... tier interval intervalend = Get end point... tier interval select LongSound 'soundname$' Extract part... intervalstart intervalend no filename$ = intname$ intervalfile$ = "'folder$'" + "'prefix$'" + "'filename$'" + "'suffix$'" + ".wav" savedfilename$ = "'prefix$'" + "'filename$'" + "'suffix$'" + ".wav" indexnumber = 0 while fileReadable (intervalfile$) indexnumber = indexnumber + 1 intervalfile$ = "'folder$'" + "'prefix$'" + "'filename$'" + "'suffix$''indexnumber'" + ".wav" savedfilename$ = "'prefix$'" + "'filename$'" + "'indexnumber'" + "'suffix$'" + ".wav" endwhile Write to WAV file... 'intervalfile$' appendInfoLine: newline$, savedfilename$ Remove endif endfor select all minus Strings list Remove endif endfor select all Remove