Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# The praat script uses append mode, so we need to clear any prior
# result
if os.path.exists(outputFN):
os.remove(outputFN)
if pitchQuadInterp is True:
doInterpolation = 1
else:
doInterpolation = 0
argList = [inputFN, outputFN, sampleStep,
minPitch, maxPitch, silenceThreshold, pitchUnit, -1, -1,
medianFilterWindowSize, doInterpolation]
scriptName = "get_pitch_and_intensity.praat"
scriptFN = join(utils.scriptsPath, scriptName)
utils.runPraatScript(praatEXE, scriptFN, argList)
piList = loadTimeSeriesData(outputFN, undefinedValue=undefinedValue)
return piList
startTime = targetTime
if reverse is True:
startTime = targetTime - timeStep
# Don't read over the edges
if startTime < 0:
timeStep = startTime + timeStep
startTime = 0
elif startTime + timeStep > self.getDuration():
timeStep = self.getDuration() - startTime
endTime = startTime + timeStep
# 1 Get the acoustic information and the sign for each sample
frameList = self.getSamples(startTime, endTime)
signList = [utils.sign(val) for val in frameList]
# 2 did signs change?
changeList = [signList[i] != signList[i + 1]
for i in range(len(frameList) - 1)]
# 3 get samples where signs changed
# (iterate backwards if reverse is true)
if reverse is True:
start = len(changeList) - 1
stop = 0
step = -1
else:
start = 0
stop = len(changeList) - 1
step = 1
def getValuesInIntervals(self, dataTupleList):
'''
Returns data from dataTupleList contained in labeled intervals
dataTupleList should be of the form:
[(time1, value1a, value1b,...), (time2, value2a, value2b...), ...]
'''
returnList = []
for interval in self.entryList:
intervalDataList = utils.getValuesInInterval(dataTupleList,
interval[0],
interval[1])
returnList.append((interval, intervalDataList))
return returnList
def changeGender(praatEXE, wavFN, outputWavFN, pitchFloor, pitchCeiling,
formantShiftRatio, pitchMedian=0.0, pitchRange=1.0,
duration=1.0, scriptFN=None):
'''
Changes the speech formants in a file using praat's change gender function
PitchMedian = 0.0; no change in median pitch
PitchRange = 1.0; no change in pitch range
'''
if scriptFN is None:
scriptFN = join(utils.scriptsPath,
"change_gender.praat")
# Praat crashes on exit after resynthesis with a klaatgrid
utils.runPraatScript(praatEXE, scriptFN,
[wavFN, outputWavFN, pitchFloor, pitchCeiling,
formantShiftRatio, pitchMedian, pitchRange,
duration])