demo_simple_robot_voice.py: added simple phase zeroing demo
authorPaul Brossier <piem@piem.org>
Fri, 27 Jul 2012 17:32:09 +0000 (11:32 -0600)
committerPaul Brossier <piem@piem.org>
Fri, 27 Jul 2012 17:32:09 +0000 (11:32 -0600)
interfaces/python/demo_simple_robot_voice.py [new file with mode: 0755]

diff --git a/interfaces/python/demo_simple_robot_voice.py b/interfaces/python/demo_simple_robot_voice.py
new file mode 100755 (executable)
index 0000000..7967010
--- /dev/null
@@ -0,0 +1,29 @@
+#! /usr/bin/python
+
+import sys
+from aubio import source, sink, pvoc
+
+if __name__ == '__main__':
+  if len(sys.argv) < 2:
+    print 'usage: %s <inputfile> <outputfile>' % sys.argv[0]
+    sys.exit(1)
+  samplerate = 44100
+  f = source(sys.argv[1], samplerate, 256)
+  g = sink(sys.argv[2], samplerate)
+  total_frames, read = 0, 256
+
+  win_s = 512                 # fft size
+  hop_s = win_s / 2           # hop size
+  pv = pvoc(win_s, hop_s)                            # phase vocoder
+
+  while read:
+    samples, read = f()
+    spectrum = pv(samples)            # compute spectrum
+    spectrum.phas[:] = 0.             # zero phase
+    new_samples = pv.rdo(spectrum)    # compute modified samples
+    g(new_samples, read)              # write to output
+    total_frames += read
+
+  print "wrote", total_frames, "from", f.uri, "to", g.uri
+
+