Can run from external directory. Outputs CSV. Works with TextGrids.
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import os
|
||||
from textgrid import *
|
||||
|
||||
if __name__ == "__main__":
|
||||
# parse arguments
|
||||
parser = argparse.ArgumentParser(description='Convert a VOT tier fo a TextGrid to a CSV file. The CSV file will '
|
||||
'contain the filename, the duration of the mark, and the mark name.')
|
||||
parser.add_argument('textgrid_filename', help="name of an input TextGrid file")
|
||||
parser.add_argument('csv_filename', help="name of an output CSV file.")
|
||||
parser.add_argument('tier', help='the tier name of the TextGrid that should be converted to CSV.')
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
out_file = open(args.csv_filename, 'wb')
|
||||
csv_file = csv.writer(out_file)
|
||||
csv_file.writerow(['textgrid_file','time','vot','mark'])
|
||||
|
||||
# read TextGrid
|
||||
textgrid = TextGrid()
|
||||
textgrid.read(args.textgrid_filename)
|
||||
|
||||
# extract tier names
|
||||
tier_names = textgrid.tierNames()
|
||||
|
||||
basename = os.path.splitext(os.path.basename(args.textgrid_filename))[0]
|
||||
|
||||
# check if the VOT tier is one of the tiers in the TextGrid
|
||||
if args.tier in tier_names:
|
||||
tier_index = tier_names.index(args.tier)
|
||||
# run over all intervals in the tier
|
||||
for interval in textgrid[tier_index]:
|
||||
if re.search(r'\S', interval.mark()):
|
||||
intervals = list()
|
||||
intervals.append(basename)
|
||||
intervals.append("{:.3f}".format(interval.xmin()))
|
||||
intervals.append("{:.3f}".format(interval.xmax()-interval.xmin()))
|
||||
intervals.append(interval.mark())
|
||||
csv_file.writerow(intervals)
|
||||
#print intervals
|
||||
# close CSV file
|
||||
out_file.close()
|
||||
|
||||
Reference in New Issue
Block a user