4 from aubio import source, sink, pvoc
5 from numpy import arange, exp, hstack, zeros, cos
9 return exp(- 1.0 / (size * size) * pow(2.0* arange(size) - 1. *size, 2.));
12 return 0.5 * (1. - cos(2.*pi*arange(size) / size))
14 if __name__ == '__main__':
16 print 'usage: %s <inputfile> <outputfile>' % sys.argv[0]
19 if len(sys.argv) > 3: samplerate = int(sys.argv[3])
20 f = source(sys.argv[1], samplerate, 256)
21 samplerate = f.samplerate
22 g = sink(sys.argv[2], samplerate)
24 win_s = 512 # fft size
25 hop_s = win_s / 2 # hop size
26 pv = pvoc(win_s, hop_s) # phase vocoder
28 # spectral weighting vector
29 spec_weight = hstack ( [
30 .8 * hanningz(80)[40:],
33 zeros (win_s / 2 + 1 - 40 - 50 - 100),
37 from pylab import plot, show
41 total_frames, read = 0, hop_s
46 spectrum = pv(samples)
47 # apply weight to spectral amplitudes
48 spectrum.norm *= spec_weight
49 # resynthesise modified samples
50 new_samples = pv.rdo(spectrum)
55 print "read", total_frames / float(samplerate), "seconds from", f.uri