/** * 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 override float[] CalculateComponentScore(IData feature) { _mixtureComponentSet.UpdateScores(feature); var scores = new float[_mixtureComponentSet.Size()]; var scoreIdx = 0; for (var i = 0; i < MixtureWeights.StreamsNum; i++) { for (var j = 0; j < _mixtureComponentSet.GauNum; j++) { scores[scoreIdx++] = _mixtureComponentSet.GetGauScore(i, j) + MixtureWeights.Get(_Id, i, _mixtureComponentSet.GetGauId(i, j)); } } return(scores); }
public override float CalculateScore(IData feature) { _mixtureComponentSet.UpdateTopScores(feature); float ascore = 0; for (var i = 0; i < MixtureWeights.StreamsNum; i++) { var logTotal = LogMath.LogZero; for (var j = 0; j < _mixtureComponentSet.TopGauNum; j++) { var topGauScore = _mixtureComponentSet.GetTopGauScore(i, j); var topGauId = _mixtureComponentSet.GetTopGauId(i, j); var mixtureWeightx = MixtureWeights.Get(_Id, i, topGauId); logTotal = LogMath.AddAsLinear(logTotal, topGauScore + mixtureWeightx); } ascore += logTotal; } return(ascore); }