ref: ac65a2fc00d7ebf27d53aa88d419b6dd299e4176
parent: 1d0370a45ed42a29684f4076730bdf8f298dfe5b
author: Paul Brossier <piem@piem.org>
date: Wed Apr 27 16:47:31 EDT 2016
python/tests/test_phasevoc.py: check perfect reconstruction for overlap > 75%
--- a/python/tests/test_phasevoc.py
+++ b/python/tests/test_phasevoc.py
@@ -1,11 +1,12 @@
#! /usr/bin/env python
from numpy.testing import TestCase, assert_equal, assert_almost_equal
-from aubio import fvec, cvec, pvoc
+from aubio import fvec, cvec, pvoc, float_type
from numpy import array, shape
from numpy.random import random
+import numpy as np
-precision = 6
+precision = 4
class aubio_pvoc_test_case(TestCase):
""" pvoc object test case """
@@ -38,38 +39,32 @@
assert_equal ( s.phas, 0)
assert_equal ( r, 0)
- def test_resynth_two_steps(self):
- """ check the resynthesis of steps is correct with 50% overlap """
- hop_s = 512
- buf_s = hop_s * 2
+ def test_resynth_8_steps(self):
+ """ check the resynthesis of is correct with 87.5% overlap """
+ hop_s = 256
+ ratio = 8
+ sigin = np.random.rand(hop_s).astype(float_type) * 2. - 1.
+ buf_s = hop_s * ratio
f = pvoc(buf_s, hop_s)
- sigin = fvec(hop_s)
zeros = fvec(hop_s)
- # negative step
- sigin[20:50] = -.1
- # positive step
- sigin[100:200] = .1
- s1 = f(sigin)
- r1 = f.rdo(s1)
- s2 = f(zeros)
- r2 = f.rdo(s2)
- #self.plot_this ( s2.norm.T )
- assert_almost_equal ( r2, sigin, decimal = precision )
-
- def test_resynth_three_steps(self):
- """ check the resynthesis of steps is correct with 25% overlap """
- hop_s = 16
- buf_s = hop_s * 4
- sigin = fvec(hop_s)
- zeros = fvec(hop_s)
+ r2 = f.rdo( f(sigin) )
+ for i in range(1, ratio):
+ r2 = f.rdo( f(zeros) )
+ r2 *= .5
+ assert_almost_equal ( r2 - sigin, 0., decimal = precision )
+
+ def test_resynth_4_steps(self):
+ """ check the resynthesis of is correct with 75% overlap """
+ hop_s = 256
+ ratio = 4
+ sigin = np.random.rand(hop_s).astype(float_type) * 2. - 1.
+ buf_s = hop_s * ratio
f = pvoc(buf_s, hop_s)
- for i in range(hop_s):
- sigin[i] = random() * 2. - 1.
- t2 = f.rdo( f(sigin) )
- t2 = f.rdo( f(zeros) )
- t2 = f.rdo( f(zeros) )
- t2 = f.rdo( f(zeros) )
- assert_almost_equal( sigin, t2, decimal = precision )
+ zeros = fvec(hop_s)
+ r2 = f.rdo( f(sigin) )
+ for i in range(1, ratio):
+ r2 = f.rdo( f(zeros) )
+ assert_almost_equal ( r2 - sigin, 0., decimal = precision )
def plot_this( self, this ):
from pylab import semilogy, show