# Author: Julien Eychenne form Convert annotations to text choice mode 1 button process selected TextGrid button process directory boolean first_tier_only 0 endform ########################################################################################### procedure process_textgrid if first_tier_only ntiers = 1 else ntiers = Get number of tiers endif for i from 1 to ntiers last_speaker$ = "" nint = Get number of intervals: i name$ = Get tier name: i title$ = "Tier " + name$ + " (#" + string$(i) + ")" size = length(title$) separator$ = "" for z from 1 to size separator$ = separator$ + "=" endfor if i > 1 appendFile: filename$, newline$ + newline$ + newline$ endif appendFileLine: filename$, separator$ appendFileLine: filename$, title$ appendFile: filename$, separator$ for j from 1 to nint text$ = Get label of interval: i, j match = index_regex(text$, "^(.+?)\s*:") if match != 0 speaker$ = replace_regex$(text$, "^(.+?)\s*:.*", "\1", 1) if speaker$ == last_speaker$ # Append interval to the current line text$ = replace_regex$(text$, "^(.+?)\s*:\s*", " ", 1) appendFile: filename$, text$ else appendFile: filename$, newline$ + newline$ + text$ last_speaker$ = speaker$ endif else appendFileLine: filename$, text$ endif endfor endfor endproc ########################################################################################### procedure scan_directory: .dirname$ Create Strings as file list: "files", .dirname$ + "/*.TextGrid" str_count = Get number of strings for idx from 1 to str_count tgd$[idx] = Get string: idx endfor for idx from 1 to str_count name$ = tgd$[idx] path$ = .dirname$ + "/" + name$ appendFileLine: filename$, "" appendFileLine: filename$, "" appendFileLine: filename$, "******************************" appendFileLine: filename$, "** File " + name$ + " **" appendFileLine: filename$, "******************************" appendFileLine: filename$, "" Read from file: path$ @process_textgrid endfor endproc ########################################################################################### clearinfo filename$ = chooseWriteFile$: "Save output as TXT file", "output.txt" writeFile: filename$, "" if mode == 1 @process_textgrid else dirname$ = chooseDirectory$: "Select the directory which contains your TextGrid files" @scan_directory: dirname$ endif pauseScript: "Done!"