public void updateScores(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); long firstSampleNumber = FloatData.toFloatData(feature).getFirstSampleNumber(); if (gauCalcSampleNumber != firstSampleNumber) { float[] featureVector = FloatData.toFloatData(feature).getValues(); updateScores(featureVector); gauCalcSampleNumber = firstSampleNumber; } }
public float[] calculateComponentScore(Data data) { float[] features = FloatData.toFloatData(data).getValues(); int dim = meansInvVars.length / gconsts.length; if (features.length != dim) { String fmt = "feature vector must be of length %d, got %d"; String msg = String.format(fmt, dim, features.length); throw new IllegalArgumentException(msg); } float[] likelihoods = Arrays.copyOf(gconsts, gconsts.length); for (int i = 0; i < likelihoods.length; ++i) { for (int j = 0; j < features.length; ++j) { int k = i * features.length + j; likelihoods[i] += meansInvVars[k] * features[j]; likelihoods[i] -= .5f * invVars[k] * features[j] * features[j]; } likelihoods[i] = LogMath.getLogMath().lnToLog(likelihoods[i]); } return likelihoods; }
/** * Calculates the scores for each component in the senone. * * @param feature the feature to score * @return the LogMath log scores for the feature, one for each component */ public float[] calculateComponentScore(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); float[] featureVector = FloatData.toFloatData(feature).getValues(); float[] logComponentScore = new float[mixtureComponents.length]; for (int i = 0; i < mixtureComponents.length; i++) { // In linear form, this would be: // // Total += Mixture[i].score * MixtureWeight[i] logComponentScore[i] = mixtureComponents[i].getScore(featureVector) + mixtureWeights.get(id, 0, i); } return logComponentScore; }
@Override public float calculateScore(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); float[] featureVector = FloatData.toFloatData(feature).getValues(); float logTotal = LogMath.LOG_ZERO; for (int i = 0; i < mixtureComponents.length; i++) { // In linear form, this would be: // // Total += Mixture[i].score * MixtureWeight[i] logTotal = logMath.addAsLinear(logTotal, mixtureComponents[i].getScore(featureVector) + mixtureWeights.get(id, 0, i)); } return logTotal; }
public void updateTopScores(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); long firstSampleNumber = FloatData.toFloatData(feature).getFirstSampleNumber(); if (toStoreScore) { curScores = getStoredScores(firstSampleNumber); } else { if (curScores != null && curScores.getFrameStartSample() != firstSampleNumber) curScores = null; } if (curScores != null) //component scores for this frame was already calculated return; float[] featureVector = FloatData.toFloatData(feature).getValues(); updateTopScores(featureVector); //store just calculated score in list curScores = createFromTopGau(firstSampleNumber); if (toStoreScore) storeScores(curScores); }
featureVector = FloatData.toFloatData(feature).getValues(); mId = (int) ((HMMSearchState) token.getSearchState()).getHMMState().getMixtureId(); if (loader instanceof Sphinx3Loader && ((Sphinx3Loader) loader).hasTiedMixtures())
public void updateScores(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); long firstSampleNumber = FloatData.toFloatData(feature).getFirstSampleNumber(); if (gauCalcSampleNumber != firstSampleNumber) { float[] featureVector = FloatData.toFloatData(feature).getValues(); updateScores(featureVector); gauCalcSampleNumber = firstSampleNumber; } }
public float[] calculateComponentScore(Data data) { float[] features = FloatData.toFloatData(data).getValues(); int dim = meansInvVars.length / gconsts.length; if (features.length != dim) { String fmt = "feature vector must be of length %d, got %d"; String msg = String.format(fmt, dim, features.length); throw new IllegalArgumentException(msg); } float[] likelihoods = Arrays.copyOf(gconsts, gconsts.length); for (int i = 0; i < likelihoods.length; ++i) { for (int j = 0; j < features.length; ++j) { int k = i * features.length + j; likelihoods[i] += meansInvVars[k] * features[j]; likelihoods[i] -= .5f * invVars[k] * features[j] * features[j]; } likelihoods[i] = LogMath.getLogMath().lnToLog(likelihoods[i]); } return likelihoods; }
/** * Calculates the scores for each component in the senone. * * @param feature the feature to score * @return the LogMath log scores for the feature, one for each component */ public float[] calculateComponentScore(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); float[] featureVector = FloatData.toFloatData(feature).getValues(); float[] logComponentScore = new float[mixtureComponents.length]; for (int i = 0; i < mixtureComponents.length; i++) { // In linear form, this would be: // // Total += Mixture[i].score * MixtureWeight[i] logComponentScore[i] = mixtureComponents[i].getScore(featureVector) + mixtureWeights.get(id, 0, i); } return logComponentScore; }
@Override public float calculateScore(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); float[] featureVector = FloatData.toFloatData(feature).getValues(); float logTotal = LogMath.LOG_ZERO; for (int i = 0; i < mixtureComponents.length; i++) { // In linear form, this would be: // // Total += Mixture[i].score * MixtureWeight[i] logTotal = logMath.addAsLinear(logTotal, mixtureComponents[i].getScore(featureVector) + mixtureWeights.get(id, 0, i)); } return logTotal; }
public void updateTopScores(Data feature) { if (feature instanceof DoubleData) System.err.println("DoubleData conversion required on mixture level!"); long firstSampleNumber = FloatData.toFloatData(feature).getFirstSampleNumber(); if (toStoreScore) { curScores = getStoredScores(firstSampleNumber); } else { if (curScores != null && curScores.getFrameStartSample() != firstSampleNumber) curScores = null; } if (curScores != null) //component scores for this frame was already calculated return; float[] featureVector = FloatData.toFloatData(feature).getValues(); updateTopScores(featureVector); //store just calculated score in list curScores = createFromTopGau(firstSampleNumber); if (toStoreScore) storeScores(curScores); }
featureVector = FloatData.toFloatData(feature).getValues(); mId = (int) ((HMMSearchState) token.getSearchState()).getHMMState().getMixtureId(); if (loader instanceof Sphinx3Loader && ((Sphinx3Loader) loader).hasTiedMixtures())