- Timestamp:
- Apr 29, 2016, 8:06:36 PM (9 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- c2a39af
- Parents:
- 83a768e
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/tests/test_phasevoc.py
r83a768e r215b33c 1 1 #! /usr/bin/env python 2 2 3 from numpy.testing import TestCase, assert_equal, assert_a lmost_equal3 from numpy.testing import TestCase, assert_equal, assert_array_less 4 4 from aubio import fvec, cvec, pvoc, float_type 5 5 from numpy import array, shape … … 7 7 import numpy as np 8 8 9 precision = 4 9 max_sq_error = 1.e-12 10 11 def create_sine(hop_s, freq, samplerate): 12 t = np.arange(hop_s).astype(float_type) 13 return np.sin( 2. * np.pi * t * freq / samplerate) 14 15 def create_noise(hop_s): 16 return np.random.rand(hop_s).astype(float_type) * 2. - 1. 10 17 11 18 class aubio_pvoc_test_case(TestCase): … … 45 52 ratio = 8 46 53 freq = 445; samplerate = 22050 47 sigin = np.sin( 2. * np.pi * np.arange(hop_s).astype(float_type) * freq / samplerate) 48 r2 = self.reconstruction( sigin, hop_s, ratio) 49 error = ((r2 - sigin)**2).mean() 50 self.assertLessEqual(error , 1.e-3) 54 sigin = create_sine(hop_s, freq, samplerate) 55 self.reconstruction( sigin, hop_s, ratio) 51 56 52 57 def test_resynth_8_steps(self): … … 54 59 hop_s = 1024 55 60 ratio = 8 56 sigin = np.random.rand(hop_s).astype(float_type) * 2. - 1. 57 r2 = self.reconstruction( sigin, hop_s, ratio) 58 error = ((r2 - sigin)**2).mean() 59 self.assertLessEqual(error , 1.e-2) 61 sigin = create_noise(hop_s) 62 self.reconstruction(sigin, hop_s, ratio) 63 64 def test_resynth_4_steps_sine(self): 65 """ check the resynthesis of is correct with 87.5% overlap """ 66 hop_s = 1024 67 ratio = 4 68 freq = 445; samplerate = 22050 69 sigin = create_sine(hop_s, freq, samplerate) 70 self.reconstruction(sigin, hop_s, ratio) 60 71 61 72 def test_resynth_4_steps(self): … … 63 74 hop_s = 1024 64 75 ratio = 4 65 sigin = np.random.rand(hop_s).astype(float_type) * 2. - 1. 66 r2 = self.reconstruction( sigin, hop_s, ratio) 67 error = ((r2 - sigin)**2).mean() 68 self.assertLessEqual(error , 1.e-2) 76 sigin = create_noise(hop_s) 77 self.reconstruction(sigin, hop_s, ratio) 78 79 def test_resynth_2_steps_sine(self): 80 """ check the resynthesis of is correct with 50% overlap """ 81 hop_s = 1024 82 ratio = 2 83 freq = 445; samplerate = 22050 84 sigin = create_sine(hop_s, freq, samplerate) 85 self.reconstruction(sigin, hop_s, ratio) 86 87 def test_resynth_2_steps(self): 88 """ check the resynthesis of is correct with 50% overlap """ 89 hop_s = 1024 90 ratio = 2 91 sigin = create_noise(hop_s) 92 self.reconstruction(sigin, hop_s, ratio) 69 93 70 94 def reconstruction(self, sigin, hop_s, ratio): … … 75 99 for i in range(1, ratio): 76 100 r2 = f.rdo( f(zeros) ) 77 78 # FIXME: if we don't return a copy here, test_phasevoc.py will crash 79 # once in a while 80 return np.copy(r2) 81 82 def plot_this( self, this ): 83 from pylab import semilogy, show 84 semilogy ( this ) 85 show () 101 # compute square errors 102 sq_error = (r2 - sigin)**2 103 # make sure all square errors are less than desired precision 104 assert_array_less(sq_error, max_sq_error) 86 105 87 106 if __name__ == '__main__':
Note: See TracChangeset
for help on using the changeset viewer.