protected internal virtual SenoneSequence getSenoneSequence(int[] stateid) { Senone[] array = new Senone[stateid.Length]; for (int i = 0; i < stateid.Length; i++) { array[i] = (Senone)this.senonePool.get(stateid[i]); } return(new SenoneSequence(array)); }
private SenoneSequence getSenoneSequence(int[] array) { Senone[] array2 = new Senone[array.Length]; for (int i = 0; i < array.Length; i++) { array2[i] = (Senone)this.senonePool.get(array[i]); } return(new SenoneSequence(array2)); }
public override bool equals(object o) { if (!(o is Senone)) { return(false); } Senone senone = (Senone)o; return(this.getID() == senone.getID()); }
public override void dump(string msg) { [email protected](new StringBuilder().append(" CompositeSenone ").append(msg).append(": ").toString()); Senone[] array = this.senones; int num = array.Length; for (int i = 0; i < num; i++) { Senone senone = array[i]; senone.dump(" "); } }
public virtual void dump(string msg) { [email protected](new StringBuilder().append(" SenoneSequence ").append(msg).append(':').toString()); Senone[] array = this.senones; int num = array.Length; for (int i = 0; i < num; i++) { Senone senone = array[i]; senone.dump(" seq:"); } }
protected internal override float calculateScore(Data feature) { float num = float.MinValue; Senone[] array = this.senones; int num2 = array.Length; for (int i = 0; i < num2; i++) { Senone senone = array[i]; num = Math.max(num, senone.getScore(feature)); } return(num + this.weight); }
public override int hashCode() { int num = 31; Senone[] array = this.senones; int num2 = array.Length; for (int i = 0; i < num2; i++) { Senone senone = array[i]; num = num * 91 + Object.instancehelper_hashCode(senone); } return(num); }
public override long getID() { long num = 1L; long num2 = 0L; Senone[] array = this.senones; int num3 = array.Length; for (int i = 0; i < num3; i++) { Senone senone = array[i]; num2 += senone.getID() * num; num *= (long)((ulong)20000); } return(num2); }
public virtual bool isComposite() { Senone[] senones = this.getSenoneSequence().getSenones(); Senone[] array = senones; int num = array.Length; for (int i = 0; i < num; i++) { Senone senone = array[i]; if (senone is CompositeSenone) { return(true); } } return(false); }
private void saveHMMPool(bool flag, OutputStream outputStream, string text) { this.logger.info("Saving HMM file to: "); this.logger.info(text); if (outputStream == null) { string text2 = new StringBuilder().append("Error trying to write file ").append(this.location).append(text).toString(); throw new IOException(text2); } PrintWriter printWriter = new PrintWriter(outputStream, true); int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; Iterator iterator = this.hmmManager.iterator(); while (iterator.hasNext()) { HMM hmm = (HMM)iterator.next(); num4 += hmm.getOrder() + 1; if (((SenoneHMM)hmm).isContextDependent()) { num2++; } else { num++; num3 += hmm.getOrder(); } } printWriter.println("0.3"); printWriter.println(new StringBuilder().append(num).append(" n_base").toString()); printWriter.println(new StringBuilder().append(num2).append(" n_tri").toString()); printWriter.println(new StringBuilder().append(num4).append(" n_state_map").toString()); int statesNum = this.mixtureWeights.getStatesNum(); printWriter.println(new StringBuilder().append(statesNum).append(" n_tied_state").toString()); printWriter.println(new StringBuilder().append(num3).append(" n_tied_ci_state").toString()); int num5 = num; if (!Sphinx3Saver.assertionsDisabled && num5 != this.matrixPool.size()) { throw new AssertionError(); } printWriter.println(new StringBuilder().append(num5).append(" n_tied_tmat").toString()); printWriter.println("#"); printWriter.println("# Columns definitions"); printWriter.println("#base lft rt p attrib tmat ... state id's ..."); Iterator iterator2 = this.hmmManager.iterator(); while (iterator2.hasNext()) { HMM hmm2 = (HMM)iterator2.next(); SenoneHMM senoneHMM = (SenoneHMM)hmm2; if (!senoneHMM.isContextDependent()) { Unit unit = senoneHMM.getUnit(); string name = unit.getName(); printWriter.print(new StringBuilder().append(name).append('\t').toString()); string text3 = "-"; printWriter.print(new StringBuilder().append(text3).append(" ").toString()); string text4 = "-"; printWriter.print(new StringBuilder().append(text4).append(' ').toString()); string text5 = senoneHMM.getPosition().toString(); printWriter.print(new StringBuilder().append(text5).append('\t').toString()); string text6 = (!unit.isFiller()) ? "n/a" : "filler"; printWriter.print(new StringBuilder().append(text6).append('\t').toString()); int num6 = this.matrixPool.indexOf(senoneHMM.getTransitionMatrix()); if (!Sphinx3Saver.assertionsDisabled && num6 >= num5) { throw new AssertionError(); } printWriter.print(new StringBuilder().append(num6).append("\t").toString()); SenoneSequence senoneSequence = senoneHMM.getSenoneSequence(); Senone[] senones = senoneSequence.getSenones(); Senone[] array = senones; int num7 = array.Length; for (int i = 0; i < num7; i++) { Senone @object = array[i]; int num8 = this.senonePool.indexOf(@object); if (!Sphinx3Saver.assertionsDisabled && (num8 < 0 || num8 >= num3)) { throw new AssertionError(); } printWriter.print(new StringBuilder().append(num8).append("\t").toString()); } printWriter.println("N"); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("Saved ").append(unit).toString()); } } } iterator2 = this.hmmManager.iterator(); while (iterator2.hasNext()) { HMM hmm2 = (HMM)iterator2.next(); SenoneHMM senoneHMM = (SenoneHMM)hmm2; if (senoneHMM.isContextDependent()) { Unit unit = senoneHMM.getUnit(); LeftRightContext leftRightContext = (LeftRightContext)unit.getContext(); Unit[] leftContext = leftRightContext.getLeftContext(); Unit[] rightContext = leftRightContext.getRightContext(); if (!Sphinx3Saver.assertionsDisabled && (leftContext.Length != 1 || rightContext.Length != 1)) { throw new AssertionError(); } string text5 = unit.getName(); printWriter.print(new StringBuilder().append(text5).append('\t').toString()); string text6 = leftContext[0].getName(); printWriter.print(new StringBuilder().append(text6).append(" ").toString()); string name2 = rightContext[0].getName(); printWriter.print(new StringBuilder().append(name2).append(' ').toString()); string text7 = senoneHMM.getPosition().toString(); printWriter.print(new StringBuilder().append(text7).append('\t').toString()); string text8 = (!unit.isFiller()) ? "n/a" : "filler"; if (!Sphinx3Saver.assertionsDisabled && !String.instancehelper_equals(text8, "n/a")) { throw new AssertionError(); } printWriter.print(new StringBuilder().append(text8).append('\t').toString()); int num9 = this.matrixPool.indexOf(senoneHMM.getTransitionMatrix()); if (!Sphinx3Saver.assertionsDisabled && num9 >= num5) { throw new AssertionError(); } printWriter.print(new StringBuilder().append(num9).append("\t").toString()); SenoneSequence senoneSequence2 = senoneHMM.getSenoneSequence(); Senone[] senones2 = senoneSequence2.getSenones(); Senone[] array2 = senones2; int num8 = array2.Length; for (int j = 0; j < num8; j++) { Senone object2 = array2[j]; int num10 = this.senonePool.indexOf(object2); if (!Sphinx3Saver.assertionsDisabled && (num10 < 0 || num10 >= statesNum)) { throw new AssertionError(); } printWriter.print(new StringBuilder().append(num10).append("\t").toString()); } printWriter.println("N"); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("Saved ").append(unit).toString()); } } } outputStream.close(); }
public virtual SenoneSequence getCompositeSenoneSequence(Unit unit, HMMPosition position) { string text = unit.toString(); SenoneSequence senoneSequence = (SenoneSequence)this.compositeSenoneSequenceCache.get(text); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine((new StringBuilder().append("getCompositeSenoneSequence: ").append(unit).append(senoneSequence).toString() != null) ? "Cached" : ""); } if (senoneSequence != null) { return(senoneSequence); } Context context = unit.getContext(); ArrayList arrayList = new ArrayList(); Iterator hmmiterator = this.getHMMIterator(); while (hmmiterator.hasNext()) { SenoneHMM senoneHMM = (SenoneHMM)hmmiterator.next(); if (senoneHMM.getPosition() == position) { Unit unit2 = senoneHMM.getUnit(); if (unit2.isPartialMatch(unit.getName(), context)) { if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("collected: ").append(senoneHMM.getUnit()).toString()); } arrayList.add(senoneHMM.getSenoneSequence()); } } } if (arrayList.isEmpty()) { Unit unit3 = this.unitManager.getUnit(unit.getName(), unit.isFiller()); SenoneHMM senoneHMM = this.lookupHMM(unit3, HMMPosition.__UNDEFINED); arrayList.add(senoneHMM.getSenoneSequence()); } int num = 0; Iterator iterator = arrayList.iterator(); while (iterator.hasNext()) { SenoneSequence senoneSequence2 = (SenoneSequence)iterator.next(); if (senoneSequence2.getSenones().Length > num) { num = senoneSequence2.getSenones().Length; } } ArrayList arrayList2 = new ArrayList(); float weight = 0f; for (int i = 0; i < num; i++) { HashSet hashSet = new HashSet(); Iterator iterator2 = arrayList.iterator(); while (iterator2.hasNext()) { SenoneSequence senoneSequence3 = (SenoneSequence)iterator2.next(); if (i < senoneSequence3.getSenones().Length) { Senone senone = senoneSequence3.getSenones()[i]; hashSet.add(senone); } } arrayList2.add(CompositeSenone.create(hashSet, weight)); } senoneSequence = SenoneSequence.create(arrayList2); this.compositeSenoneSequenceCache.put(unit.toString(), senoneSequence); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append(unit).append(" consists of ").append(arrayList2.size()).append(" composite senones").toString()); if (this.logger.isLoggable(Level.FINEST)) { senoneSequence.dump("am"); } } return(senoneSequence); }
/// <summary> /// Gets the scores for each mixture component in this HMM state /// </summary> /// <param name="feature">The feature to be scored.</param> /// <returns>The acoustic scores for the components of this state.</returns> public float[] CalculateComponentScore(IData feature) { var unknownCall = _hmm.SenoneSequence; return(Senone.CalculateComponentScore(feature)); }
/// <summary> /// Gets the score for this HMM state /// </summary> /// <param name="feature">The feature to be scored.</param> /// <returns>The acoustic score for this state.</returns> public float GetScore(IData feature) { return(Senone.GetScore(feature)); }
public float[] GetLogMixtureWeights() { return(Senone.GetLogMixtureWeights()); }