public void testStretch1() { double[] signal = FFTTest.getSampleSignal(2048 + 128); int samplingRate = 8000; double rateFactor = 0.5; NaiveVocoder nv = new NaiveVocoder(new BufferedDoubleDataSource(signal), samplingRate, rateFactor); double[] result = nv.getAllData(); int expectedLength = nv.computeOutputLength(signal.length); assertTrue( "Expected result length: " + expectedLength + ", found: " + result.length, result.length == expectedLength); }
public void testStretch2() { double[] signal = FFTTest.getSampleSignal(16000); int samplingRate = 8000; double rateFactor = 0.5; NaiveVocoder nv = new NaiveVocoder(new BufferedDoubleDataSource(signal), samplingRate, rateFactor); double[] result = nv.getAllData(); double meanSignalEnergy = MathUtils.mean(MathUtils.multiply(signal, signal)); double meanResultEnergy = MathUtils.mean(MathUtils.multiply(result, result)); double percentDifference = Math.abs(meanSignalEnergy - meanResultEnergy) / meanSignalEnergy * 100; assertTrue( "Stretching changed signal energy by " + percentDifference + "%", percentDifference < 6); }