Skip to content

Instantly share code, notes, and snippets.

@alejandrorangel
Last active August 29, 2015 14:20
Show Gist options
  • Save alejandrorangel/bf4de0b49699c13ce2b5 to your computer and use it in GitHub Desktop.
Save alejandrorangel/bf4de0b49699c13ce2b5 to your computer and use it in GitHub Desktop.
This script get the ranges of the audio samples and create csv of the samples
import csv, glob, os, sys
SAMPLES = 100 #100 samples = 1 second
DIRECTORY = raw_input("Enter the path of your files: ")
RANGE_DIRECTORY = DIRECTORY+'ranges/'
TALKER_HEADER = 'person'
PITCH_HEADER = 'F0_Hz'
RANGE_HEADER = 'range'
def calculateRange(window):
value = max(window)-min(window)
return value
filelist = list()
intervieweeList = list()
interviewerList = list()
intervieweeRange= list()
interviewerRange= list()
os.chdir(DIRECTORY)
for counter, files in enumerate(glob.glob("*.csv")):
filelist.append(files)
for fileitem in filelist:
print (DIRECTORY+fileitem)
with open(DIRECTORY+fileitem) as csvfile:
csv_f = csv.DictReader(csvfile)
for row in csv_f:
if row[TALKER_HEADER] == 'interviewer':
interviewerList.append(float(row[PITCH_HEADER]))
if len(interviewerList) == (SAMPLES):
interviewerRange.append(calculateRange(interviewerList))
interviewerList.pop(0)
if row[TALKER_HEADER] == 'interviewee':
intervieweeList.append(float(row[PITCH_HEADER]))
if len(intervieweeList) == (SAMPLES):
intervieweeRange.append(calculateRange(intervieweeList))
intervieweeList.pop(0)
print (sum(intervieweeRange) / float(len(intervieweeRange)))
print (sum(interviewerRange) / float(len(interviewerRange)))
if not os.path.exists(RANGE_DIRECTORY):
os.makedirs(RANGE_DIRECTORY)
with open(RANGE_DIRECTORY+'range_'+fileitem, 'w') as csvfile:
fieldnames = [TALKER_HEADER, RANGE_HEADER]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in intervieweeRange:
writer.writerow({TALKER_HEADER: 'interviewee', RANGE_HEADER: row})
for row in interviewerRange:
writer.writerow({TALKER_HEADER: 'interviewer', RANGE_HEADER: row})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment