diff MFCC.py @ 8:6cafb481a1e5

Python3 readiness (thanks to 2to3) Currently tested only on 2.7 though.
author Dan Stowell <danstowell@users.sourceforge.net>
date Thu, 29 Nov 2012 11:17:45 +0000
parents 7a20cff05bd6
children c7fa1f02f5f8
line wrap: on
line diff
--- a/MFCC.py	Thu Nov 29 11:06:56 2012 +0000
+++ b/MFCC.py	Thu Nov 29 11:17:45 2012 +0000
@@ -40,16 +40,16 @@
 		if self.updated: return self.valid
 		self.updated = True
 		self.valid = False
-		print 'Updating parameters and recalculating filters: '
-		print 'Nyquist: ',self.NqHz
+		print('Updating parameters and recalculating filters: ')
+		print('Nyquist: ',self.NqHz)
 		
 		if self.maxHz > self.NqHz : 
 			raise Exception('Maximum frequency must be smaller than the Nyquist frequency')
 		
 		self.maxMel = 1000*log(1+self.maxHz/700.0)/log(1+1000.0/700.0)
 		self.minMel = 1000*log(1+self.minHz/700.0)/log(1+1000.0/700.0)
-		print 'minHz:%s\nmaxHz:%s\nminMel:%s\nmaxMel:%s\n' \
-		%(self.minHz,self.maxHz,self.minMel,self.maxMel)
+		print('minHz:%s\nmaxHz:%s\nminMel:%s\nmaxMel:%s\n' \
+		%(self.minHz,self.maxHz,self.minMel,self.maxMel))
 		self.filterMatrix = self.getFilterMatrix(self.inputSize,self.numBands)
 		self.DCTMatrix = self.getDCTMatrix(self.numBands)
 		self.filterIter = self.filterMatrix.__iter__()
@@ -61,7 +61,7 @@
 		This function calculates two extra bands at the edges for
 		finding the starting and end point of the first and last 
 		actual filters.'''
-		centresMel = numpy.array(xrange(numBands+2)) * (self.maxMel-self.minMel)/(numBands+1) + self.minMel
+		centresMel = numpy.array(range(numBands+2)) * (self.maxMel-self.minMel)/(numBands+1) + self.minMel
 		centresBin = numpy.floor(0.5 + 700.0*inputSize*(exp(centresMel*log(1+1000.0/700.0)/1000.0)-1)/self.NqHz)
 		return numpy.array(centresBin,int)
 		
@@ -69,7 +69,7 @@
 		'''Compose the Mel scaling matrix.'''
 		filterMatrix = numpy.zeros((numBands,inputSize))
 		self.filterCentres = self.getFilterCentres(inputSize,numBands)
-		for i in xrange(numBands) :
+		for i in range(numBands) :
 			start,centre,end = self.filterCentres[i:i+3]
 			self.setFilter(filterMatrix[i],start,centre,end)
 		return filterMatrix.transpose()
@@ -78,8 +78,8 @@
 		'''Calculate a single Mel filter.'''
 		k1 = numpy.float32(filterCentre-filterStart)
 		k2 = numpy.float32(filterEnd-filterCentre)
-		up = (numpy.array(xrange(filterStart,filterCentre))-filterStart)/k1
-		dn = (filterEnd-numpy.array(xrange(filterCentre,filterEnd)))/k2
+		up = (numpy.array(range(filterStart,filterCentre))-filterStart)/k1
+		dn = (filterEnd-numpy.array(range(filterCentre,filterEnd)))/k2
 		filt[filterStart:filterCentre] = up
 		filt[filterCentre:filterEnd] = dn
 
@@ -90,7 +90,7 @@
 	def getDCTMatrix(self,size):
 		'''Calculate the square DCT transform matrix. Results are 
 		equivalent to Matlab dctmtx(n) with 64 bit precision.'''
-		DCTmx = numpy.array(xrange(size),numpy.float64).repeat(size).reshape(size,size)
+		DCTmx = numpy.array(range(size),numpy.float64).repeat(size).reshape(size,size)
 		DCTmxT = numpy.pi * (DCTmx.transpose()+0.5) / size
 		DCTmxT = (1.0/sqrt( size / 2.0)) * cos(DCTmx * DCTmxT)
 		DCTmxT[0] = DCTmxT[0] * (sqrt(2.0)/2.0)