/** * Converts a given Data-object into a <code>FloatData</code> if possible. * @param data data to convert * @return converted data */ public static FloatData toFloatData(Data data) { FloatData convertData; if (data instanceof FloatData) convertData = (FloatData) data; else if (data instanceof DoubleData) { DoubleData dd = (DoubleData) data; convertData = new FloatData(MatrixUtils.double2float(dd.getValues()), dd.getSampleRate(), dd.getFirstSampleNumber()); } else throw new IllegalArgumentException("data type '" + data.getClass() + "' is not supported"); return convertData; } }
/** * Converts FloatData object to DoubleData. * @param data data to convert * @return converted data */ public static FloatData DoubleData2FloatData(DoubleData data) { int numSamples = data.getValues().length; float[] floatData = new float[numSamples]; double[] values = data.getValues(); for (int i = 0; i < values.length; i++) { floatData[i] = (float) values[i]; } return new FloatData(floatData, data.getSampleRate(), data.getFirstSampleNumber()); } }
/** * Computes the next feature. Advances the pointers as well. * * @return the feature Data computed */ @Override protected Data computeNextFeature() { DoubleData currentCepstrum = cepstraBuffer[currentPosition]; float[] feature = new float[(window * 2 + 1) * currentCepstrum.getValues().length]; int j = 0; for (int k = -window; k <= window; k++) { int position = (currentPosition + k + cepstraBufferSize) % cepstraBufferSize; double[] buffer = cepstraBuffer[position].getValues(); for (double val : buffer) { feature[j++] = (float)val; } } currentPosition = (currentPosition + 1) % cepstraBufferSize ; return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber())); } }
return new FloatData(result, floatData.getSampleRate(), floatData.getFirstSampleNumber());
/** * Compute the density values of a sampled interval with an univariate <code>MixtureComponent</code> and compare * values with the precomputed-computed ones. */ @Test public void testUnivariateDensity() { float minX = 10; float maxX = 30; float resolution = 0.1f; float mean = 20; float var = 3; MixtureComponent gaussian = new MixtureComponent(new float[]{mean}, new float[]{var}); for (float curX = minX; curX <= maxX; curX += resolution) { double gauLogScore = gaussian.getScore(new FloatData(new float[]{curX}, 16000, 0)); double manualScore = (1 / sqrt(var * 2 * PI)) * exp((-0.5 / var) * (curX - mean) * (curX - mean)); double gauScore = LogMath.getLogMath().logToLinear((float) gauLogScore); Assert.assertEquals(manualScore, gauScore, 1E-5); } }
@Override public Data getData() throws DataProcessingException { Data d = getPredecessor().getData(); if (d instanceof DoubleData && convMode.equals(CONVERT_D2F)) { DoubleData dd = (DoubleData) d; d = new FloatData(MatrixUtils.double2float(dd.getValues()), dd.getSampleRate(), dd.getFirstSampleNumber()); } else if (d instanceof FloatData && convMode.equals(CONVERT_F2D)) { FloatData fd = (FloatData) d; d = new DoubleData(MatrixUtils.float2double(fd.getValues()), fd.getSampleRate(), fd.getFirstSampleNumber()); } return d; } }
feature[j++] = (float) ((mfc3f[k] - mfc1p[k]) - (mfc1f[k] - mfc3p[k])); return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));
return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));
FloatData floatLastFeature = (FloatData) lastFeature; feature = new FloatData (floatLastFeature.getValues(), floatLastFeature.getSampleRate(),
(4 * mfc4p[k] + 4 * mfc3p[k] + mfc2p[k] - 4 * mfc1p[k])) / 100.0f; return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));
/** * Converts a given Data-object into a <code>FloatData</code> if possible. * @param data data to convert * @return converted data */ public static FloatData toFloatData(Data data) { FloatData convertData; if (data instanceof FloatData) convertData = (FloatData) data; else if (data instanceof DoubleData) { DoubleData dd = (DoubleData) data; convertData = new FloatData(MatrixUtils.double2float(dd.getValues()), dd.getSampleRate(), dd.getFirstSampleNumber()); } else throw new IllegalArgumentException("data type '" + data.getClass() + "' is not supported"); return convertData; } }
/** * Converts FloatData object to DoubleData. * @param data data to convert * @return converted data */ public static FloatData DoubleData2FloatData(DoubleData data) { int numSamples = data.getValues().length; float[] floatData = new float[numSamples]; double[] values = data.getValues(); for (int i = 0; i < values.length; i++) { floatData[i] = (float) values[i]; } return new FloatData(floatData, data.getSampleRate(), data.getFirstSampleNumber()); } }
/** * Computes the next feature. Advances the pointers as well. * * @return the feature Data computed */ @Override protected Data computeNextFeature() { DoubleData currentCepstrum = cepstraBuffer[currentPosition]; float[] feature = new float[(window * 2 + 1) * currentCepstrum.getValues().length]; int j = 0; for (int k = -window; k <= window; k++) { int position = (currentPosition + k + cepstraBufferSize) % cepstraBufferSize; double[] buffer = cepstraBuffer[position].getValues(); for (double val : buffer) { feature[j++] = (float)val; } } currentPosition = (currentPosition + 1) % cepstraBufferSize ; return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber())); } }
return new FloatData(result, floatData.getSampleRate(), floatData.getFirstSampleNumber());
@Override public Data getData() throws DataProcessingException { Data d = getPredecessor().getData(); if (d instanceof DoubleData && convMode.equals(CONVERT_D2F)) { DoubleData dd = (DoubleData) d; d = new FloatData(MatrixUtils.double2float(dd.getValues()), dd.getSampleRate(), dd.getFirstSampleNumber()); } else if (d instanceof FloatData && convMode.equals(CONVERT_F2D)) { FloatData fd = (FloatData) d; d = new DoubleData(MatrixUtils.float2double(fd.getValues()), fd.getSampleRate(), fd.getFirstSampleNumber()); } return d; } }
return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));
feature[j++] = (float) ((mfc3f[k] - mfc1p[k]) - (mfc1f[k] - mfc3p[k])); return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));
FloatData floatLastFeature = (FloatData) lastFeature; feature = new FloatData (floatLastFeature.getValues(), floatLastFeature.getSampleRate(),
(4 * mfc4p[k] + 4 * mfc3p[k] + mfc2p[k] - 4 * mfc1p[k])) / 100.0f; return (new FloatData(feature, currentCepstrum.getSampleRate(), currentCepstrum.getFirstSampleNumber()));