<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Dear Paul,<br>
<br>
thank you for your reply and for your helpful suggestion - this looks very promising.
<br>
Unfortunately, I haven't been able to get this to work. Please see my attempt below. It returns this error:<br>
<br>
<font face="Courier New" size="2">spectrum.norm *= spec_weight<br>
ValueError: operands could not be broadcast together with shapes (257,) (2048,) (257,)</font>
<div><br>
</div>
<div>What am I doing wrong?</div>
<div><br>
</div>
<div>Thanks a lot and best regards,<br>
Tom<br>
<div><br>
</div>
<div>>>></div>
<div><br>
</div>
<div>
<div><font face="Courier New" size="2">#! /usr/bin/env python</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2">import sys</font></div>
<div><font face="Courier New" size="2">from aubio import source, sink, pvoc</font></div>
<div><font face="Courier New" size="2">from numpy import arange, exp, zeros, ones, concatenate</font></div>
<div><br>
</div>
<div><font face="Courier New" size="2">if len(sys.argv) < 2:</font></div>
<div><font face="Courier New" size="2">    print('usage: %s <inputfile> <outputfile>' % sys.argv[0])</font></div>
<div><font face="Courier New" size="2">    sys.exit(1)</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2">samplerate = 0 </font></div>
<div><font face="Courier New" size="2">if len(sys.argv) > 3: samplerate = int(sys.argv[3])</font></div>
<div><font face="Courier New" size="2">f = source(sys.argv[1], samplerate, 256)</font></div>
<div><font face="Courier New" size="2">samplerate = f.samplerate</font></div>
<div><font face="Courier New" size="2">g = sink(sys.argv[2], samplerate)</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2">win_s = 512 # fft size</font></div>
<div><font face="Courier New" size="2">hop_s = win_s // 2 # hop size</font></div>
<div><font face="Courier New" size="2">pv = pvoc(win_s, hop_s) # phase vocoder</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2"># spectral weighting vector</font></div>
<div><font face="Courier New" size="2">spec_weight = concatenate ( [</font></div>
<div><font face="Courier New" size="2">    zeros(88),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(165),</font></div>
<div><font face="Courier New" size="2">    ones(25),</font></div>
<div><font face="Courier New" size="2">    zeros(35)</font></div>
<div><font face="Courier New" size="2">     ])</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2">total_frames, read = 0, hop_s</font></div>
<div><font face="Courier New" size="2">while read:</font></div>
<div><font face="Courier New" size="2">    # get new samples</font></div>
<div><font face="Courier New" size="2">    samples, read = f()</font></div>
<div><font face="Courier New" size="2">    # compute spectrum</font></div>
<div><font face="Courier New" size="2">    spectrum = pv(samples)</font></div>
<div><font face="Courier New" size="2">    # apply weight to spectral amplitudes</font></div>
<div><font face="Courier New" size="2">    spectrum.norm *= spec_weight</font></div>
<div><font face="Courier New" size="2">    # resynthesise modified samples</font></div>
<div><font face="Courier New" size="2">    new_samples = pv.rdo(spectrum)</font></div>
<div><font face="Courier New" size="2">    # write to output</font></div>
<div><font face="Courier New" size="2">    g(new_samples, read)</font></div>
<div><font face="Courier New" size="2">    total_frames += read</font></div>
<div><font face="Courier New" size="2"><br>
</font></div>
<div><font face="Courier New" size="2">    </font></div>
</div>
<div><br>
</div>
</div>
</div>
</body>
</html>