History

python/demos/demo_simple_spectral_weighting.py: added simple spectral weighting

Paul Brossier committed 12 years ago

Commit 2d88f411 parent c911b121 file · +55 −0Browse files

Showing the changes to python (1 of 1 file). Show all

Unified · Split

python/demos/demo_simple_spectral_weighting.py+55−0
@@ -0,0 +1,55 @@
1#! /usr/bin/env python
2
3import sys
4from aubio import source, sink, pvoc
5from numpy import arange, exp, hstack, zeros, cos
6from math import pi
7
8def gauss(size):
9 return exp(- 1.0 / (size * size) * pow(2.0* arange(size) - 1. *size, 2.));
10
11def hanningz(size):
12 return 0.5 * (1. - cos(2.*pi*arange(size) / size))
13
14if __name__ == '__main__':
15 if len(sys.argv) < 2:
16 print 'usage: %s <inputfile> <outputfile>' % sys.argv[0]
17 sys.exit(1)
18 samplerate = 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)
23
24 win_s = 512 # fft size
25 hop_s = win_s / 2 # hop size
26 pv = pvoc(win_s, hop_s) # phase vocoder
27
28 # spectral weighting vector
29 spec_weight = hstack ( [
30 .8 * hanningz(80)[40:],
31 zeros( 50 ),
32 1.3 * hanningz(100),
33 zeros (win_s / 2 + 1 - 40 - 50 - 100),
34 ] )
35
36 if 0:
37 from pylab import plot, show
38 plot(spec_weight)
39 show()
40
41 total_frames, read = 0, hop_s
42 while read:
43 # get new samples
44 samples, read = f()
45 # compute spectrum
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)
51 # write to output
52 g(new_samples, read)
53 total_frames += read
54
55 print "read", total_frames / float(samplerate), "seconds from", f.uri

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t