def getManipulatedParamaters(tgFN, tierName, modFunc, filterFunc=None, useBlanks=False): ''' Get intervals for source and target audio files Use this information to find out how much to stretch/shrink each source interval. The target values are based on modfunc. ''' fromExtractInfo = utils.getIntervals(tgFN, tierName, filterFunc, useBlanks) durationParameters = [] for fromInfoTuple in fromExtractInfo: fromStart, fromEnd = fromInfoTuple[:2] toStart, toEnd = modFunc(fromStart), modFunc(fromEnd) # Praat will ignore a second value appearing at the same time as # another so we give each start a tiny offset to distinguish intervals # that start and end at the same point toStart += PRAAT_TIME_DIFF fromStart += PRAAT_TIME_DIFF ratio = (toEnd - toStart) / float((fromEnd - fromStart)) ratioTuple = (fromStart, fromEnd, ratio) durationParameters.append(ratioTuple) return durationParameters
def getMorphParameters(fromTGFN, toTGFN, tierName, filterFunc=None, useBlanks=False): ''' Get intervals for source and target audio files Use this information to find out how much to stretch/shrink each source interval. The target values are based on the contents of toTGFN. ''' if filterFunc is None: filterFunc = lambda entry: True # Everything is accepted fromEntryList = utils.getIntervals(fromTGFN, tierName, includeUnlabeledRegions=useBlanks) toEntryList = utils.getIntervals(toTGFN, tierName, includeUnlabeledRegions=useBlanks) fromEntryList = [entry for entry in fromEntryList if filterFunc(entry)] toEntryList = [entry for entry in toEntryList if filterFunc(entry)] assert (len(fromEntryList) == len(toEntryList)) durationParameters = [] for fromEntry, toEntry in zip(fromEntryList, toEntryList): fromStart, fromEnd = fromEntry[:2] toStart, toEnd = toEntry[:2] # Praat will ignore a second value appearing at the same time as # another so we give each start a tiny offset to distinguish intervals # that start and end at the same point toStart += PRAAT_TIME_DIFF fromStart += PRAAT_TIME_DIFF ratio = (toEnd - toStart) / float((fromEnd - fromStart)) durationParameters.append((fromStart, fromEnd, ratio)) return durationParameters
def getMorphParameters(fromTGFN, toTGFN, tierName, filterFunc=None, useBlanks=False): ''' Get intervals for source and target audio files Use this information to find out how much to stretch/shrink each source interval. The target values are based on the contents of toTGFN. ''' if filterFunc is None: filterFunc = lambda entry: True # Everything is accepted fromEntryList = utils.getIntervals(fromTGFN, tierName, includeUnlabeledRegions=useBlanks) toEntryList = utils.getIntervals(toTGFN, tierName, includeUnlabeledRegions=useBlanks) fromEntryList = [entry for entry in fromEntryList if filterFunc(entry)] toEntryList = [entry for entry in toEntryList if filterFunc(entry)] assert(len(fromEntryList) == len(toEntryList)) durationParameters = [] for fromEntry, toEntry in zip(fromEntryList, toEntryList): fromStart, fromEnd = fromEntry[:2] toStart, toEnd = toEntry[:2] # Praat will ignore a second value appearing at the same time as # another so we give each start a tiny offset to distinguish intervals # that start and end at the same point toStart += PRAAT_TIME_DIFF fromStart += PRAAT_TIME_DIFF ratio = (toEnd - toStart) / float((fromEnd - fromStart)) durationParameters.append((fromStart, fromEnd, ratio)) return durationParameters
def _plotResults(durationParameters, fromTGFN, toTGFN, tierName, stepList, outputPNGFN, filterFunc, includeUnlabeledRegions): # Containers fromDurList = [] toDurList = [] actDurList = [] labelList = [] fromExtractInfo = utils.getIntervals(fromTGFN, tierName, filterFunc, includeUnlabeledRegions) toExtractInfo = utils.getIntervals(toTGFN, tierName, filterFunc, includeUnlabeledRegions) # Get durations for fromInfoTuple, toInfoTuple in zip(fromExtractInfo, toExtractInfo): fromStart, fromEnd = fromInfoTuple[:2] toStart, toEnd = toInfoTuple[:2] labelList.append(fromInfoTuple[2]) fromDurList.append(fromEnd - fromStart) toDurList.append(toEnd - toStart) # Get iterpolated values for stepAmount in stepList: tmpDurList = [] for fromStart, fromEnd, ratio in durationParameters: dur = (fromEnd - fromStart) percentChange = 1 + (ratio - 1) * stepAmount tmpDurList.append(dur * percentChange) actDurList.append(tmpDurList) # Plot data plot_morphed_data.plotDuration(fromDurList, toDurList, actDurList, labelList, outputPNGFN)