Timo Veldt
January 9th, 2009, 03:08 PM
Hi,
I'm using The Python Wave module and I'm trying to cut a certain segment from an existing wave file (e.g. I have a wave file of say 60 seconds and I want to create a new file containing 10 seconds of the original, but not just any 10 seconds, I want 10 through 20 from the original file).
I have been looking through the documentation but I haven't found anything like this yet.
I am already able to cut certain fragments from the original, but these turned out to be other fragments than the ones I wanted.
Code fragment (see attachment for whole class):
...
def writeTimeInterval(self, start, end):
#This a class method of a class that stores most parameters of the input wave file in internal attributes, hence the self.framerate and self.readPath, etc.
#The number of audioframes before the interval I want
preFrames = start*self.framerate
# The number of audioframes including the fragment I want
intervalFrames = end*self.framerate
inputFile = wave.open(self.readPath, 'r')
#Read in the frames before the interval
preInterval = inputFile.readframes(preFrames)
#From the start of the original to the end of the original (I hope, or should I rewind?))
interval = inputFile.readframes(intervalFrames)
inputFile.close()
#since readframes returns a string of bytes, I assumed I could use lstrip, which is probably completely wrong
interval = interval.lstrip(preInterval)
outputFile = wave.open(self.writePath, 'w')
outputFile.setnchannels(self.nrOfChannels)
outputFile.setframerate(self.framerate)
outputFile.setsampwidth(self.sampleWidth)
outputFile.writeframes(interval)
outputFile.close()
I'm using The Python Wave module and I'm trying to cut a certain segment from an existing wave file (e.g. I have a wave file of say 60 seconds and I want to create a new file containing 10 seconds of the original, but not just any 10 seconds, I want 10 through 20 from the original file).
I have been looking through the documentation but I haven't found anything like this yet.
I am already able to cut certain fragments from the original, but these turned out to be other fragments than the ones I wanted.
Code fragment (see attachment for whole class):
...
def writeTimeInterval(self, start, end):
#This a class method of a class that stores most parameters of the input wave file in internal attributes, hence the self.framerate and self.readPath, etc.
#The number of audioframes before the interval I want
preFrames = start*self.framerate
# The number of audioframes including the fragment I want
intervalFrames = end*self.framerate
inputFile = wave.open(self.readPath, 'r')
#Read in the frames before the interval
preInterval = inputFile.readframes(preFrames)
#From the start of the original to the end of the original (I hope, or should I rewind?))
interval = inputFile.readframes(intervalFrames)
inputFile.close()
#since readframes returns a string of bytes, I assumed I could use lstrip, which is probably completely wrong
interval = interval.lstrip(preInterval)
outputFile = wave.open(self.writePath, 'w')
outputFile.setnchannels(self.nrOfChannels)
outputFile.setframerate(self.framerate)
outputFile.setsampwidth(self.sampleWidth)
outputFile.writeframes(interval)
outputFile.close()