public virtual void setState(int idx, HMMState st) { if (this.states[idx] == null && st != null) { this.nbEmittingStates++; } this.states[idx] = st; }
public virtual int getStateIdx(HMMState st) { return(st.gmmidx); }
protected internal virtual void loadHMMPool(bool useCDUnits, HTKLoader.HTKStruct htkModels, string path) { if (!this.tie1ph) { Iterator iterator = htkModels.hmmsHTK.get1phIt(); while (iterator.hasNext()) { SingleHMM singleHMM = (SingleHMM)iterator.next(); if (singleHMM == null) { break; } string baseName = singleHMM.getName(); string text; if (String.instancehelper_equals(baseName, "sil") || String.instancehelper_equals(baseName, "sp") || String.instancehelper_equals(baseName, "bb") || String.instancehelper_equals(baseName, "xx") || String.instancehelper_equals(baseName, "hh")) { text = "filler"; } else { text = "nofiller"; } int trIdx = singleHMM.trIdx; int nstates = singleHMM.getNstates(); int[] array = new int[singleHMM.getNbEmittingStates()]; int num = 0; for (int i = 0; i < nstates; i++) { if (singleHMM.isEmitting(i)) { HTK.HMMState state = singleHMM.getState(i); array[num] = htkModels.hmmsHTK.getStateIdx(state); num++; } } Unit unit = this.unitManager.getUnit(baseName, String.instancehelper_equals(text, "filler")); this.contextIndependentUnits.put(unit.getName(), unit); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("Loaded ").append(unit).toString()); } if (unit.isFiller() && String.instancehelper_equals(unit.getName(), "SIL")) { unit = UnitManager.__SILENCE; } float[][] transitionMatrix = (float[][])this.matrixPool.get(trIdx); SenoneSequence senoneSequence = this.getSenoneSequence(array); SenoneHMM hmm = new SenoneHMM(unit, senoneSequence, transitionMatrix, HMMPosition.lookup("-")); this.hmmManager.put(hmm); } } else { for (int j = 0; j < htkModels.hmmsHTK.getNhmms(); j++) { SingleHMM singleHMM = htkModels.hmmsHTK.getHMM(j); if (singleHMM == null) { break; } string baseName = singleHMM.getBaseName(); if (!this.contextIndependentUnits.containsKey(baseName)) { string text; if (String.instancehelper_equals(baseName, "SIL") || String.instancehelper_equals(baseName, "SP") || String.instancehelper_equals(baseName, "BB") || String.instancehelper_equals(baseName, "XX") || String.instancehelper_equals(baseName, "HH")) { text = "filler"; } else { text = "nofiller"; } int trIdx = singleHMM.trIdx; int nstates = singleHMM.getNstates(); int[] array = new int[singleHMM.getNbEmittingStates()]; int num = 0; for (int i = 0; i < nstates; i++) { if (singleHMM.isEmitting(i)) { HTK.HMMState state = singleHMM.getState(i); array[num] = htkModels.hmmsHTK.getStateIdx(state); num++; } } Unit unit = this.unitManager.getUnit(baseName, String.instancehelper_equals(text, "filler")); this.contextIndependentUnits.put(unit.getName(), unit); if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("Loaded ").append(unit).toString()); } if (unit.isFiller() && String.instancehelper_equals(unit.getName(), "SIL")) { unit = UnitManager.__SILENCE; } float[][] transitionMatrix = (float[][])this.matrixPool.get(trIdx); SenoneSequence senoneSequence = this.getSenoneSequence(array); SenoneHMM hmm = new SenoneHMM(unit, senoneSequence, transitionMatrix, HMMPosition.lookup("-")); this.hmmManager.put(hmm); } } } string text2 = ""; Unit unit2 = null; int[] ssid = null; SenoneSequence senoneSequence2 = null; ArrayList arrayList = new ArrayList(); Iterator iterator2 = htkModels.hmmsHTK.get3phIt(); while (iterator2.hasNext()) { SingleHMM singleHMM2 = (SingleHMM)iterator2.next(); if (singleHMM2 == null) { break; } string baseName2 = singleHMM2.getBaseName(); string text3 = singleHMM2.getLeft(); string text4 = singleHMM2.getRight(); if (String.instancehelper_equals(text3, "-")) { text3 = "SIL"; } if (String.instancehelper_equals(text4, "-")) { text4 = "SIL"; } string text5 = new StringBuilder().append(text3).append(' ').append(baseName2).append(' ').append(text4).toString(); if (!arrayList.contains(text5)) { arrayList.add(text5); text5 = "i"; int trIdx2 = singleHMM2.trIdx; int nstates = singleHMM2.getNstates(); int[] array2 = new int[singleHMM2.getNbEmittingStates()]; int num2 = 0; for (int k = 0; k < nstates; k++) { if (singleHMM2.isEmitting(k)) { HTK.HMMState state2 = singleHMM2.getState(k); array2[num2] = htkModels.hmmsHTK.getStateIdx(state2); num2++; } } if (useCDUnits) { string text6 = new StringBuilder().append(baseName2).append(' ').append(text3).append(' ').append(text4).toString(); Unit unit3; if (String.instancehelper_equals(text6, text2)) { unit3 = unit2; } else { LeftRightContext context = LeftRightContext.get(new Unit[] { (Unit)this.contextIndependentUnits.get(text3) }, new Unit[] { (Unit)this.contextIndependentUnits.get(text4) }); unit3 = this.unitManager.getUnit(baseName2, false, context); } text2 = text6; unit2 = unit3; if (this.logger.isLoggable(Level.FINE)) { this.logger.fine(new StringBuilder().append("Loaded ").append(unit3).toString()); } float[][] transitionMatrix2 = (float[][])this.matrixPool.get(trIdx2); SenoneSequence senoneSequence3 = senoneSequence2; if (senoneSequence3 == null || !this.sameSenoneSequence(array2, ssid)) { senoneSequence3 = this.getSenoneSequence(array2); } senoneSequence2 = senoneSequence3; ssid = array2; SenoneHMM hmm2 = new SenoneHMM(unit3, senoneSequence3, transitionMatrix2, HMMPosition.lookup(text5)); this.hmmManager.put(hmm2); } } } }
private SingleHMM loadHMM(BufferedReader bufferedReader, string text, List list) { GMMDiag gmmdiag = null; string text2 = ""; while (!String.instancehelper_startsWith(text2, "<NUMSTATES>")) { text2 = bufferedReader.readLine(); } int num = Integer.parseInt(String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 32) + 1)); num--; SingleHMM singleHMM = new SingleHMM(num); singleHMM.setName(text); singleHMM.hmmset = this; while (!String.instancehelper_startsWith(text2, "<STATE>")) { text2 = bufferedReader.readLine(); } while (String.instancehelper_startsWith(text2, "<STATE>")) { int num2 = Integer.parseInt(String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 32) + 1)); num2--; text2 = bufferedReader.readLine(); int gmmidx; if (String.instancehelper_startsWith(text2, "~s")) { string text3 = String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 34) + 1, String.instancehelper_lastIndexOf(text2, 34)); int i; for (i = 0; i < list.size(); i++) { gmmdiag = (GMMDiag)list.get(i); if (String.instancehelper_equals(gmmdiag.nom, text3)) { break; } } gmmidx = i; if (i == list.size()) { java.lang.System.err.println(new StringBuilder().append("Error creatiing HMM : state ").append(text).append(" not found").toString()); java.lang.System.exit(1); } } else { this.loadState(bufferedReader, "", text2); gmmidx = this.__gmms.size() - 1; gmmdiag = (GMMDiag)this.__gmms.get(this.__gmms.size() - 1); } HMMState hmmstate = new HMMState(gmmdiag, new Lab(text, num2)); hmmstate.gmmidx = gmmidx; this.__states.add(hmmstate); singleHMM.setState(num2 - 1, hmmstate); text2 = bufferedReader.readLine(); if (String.instancehelper_startsWith(text2, "<GCONST>")) { text2 = bufferedReader.readLine(); } } if (String.instancehelper_startsWith(text2, "~t")) { string text4 = String.instancehelper_substring(text2, String.instancehelper_indexOf(text2, 34) + 1, String.instancehelper_lastIndexOf(text2, 34)); int num3 = this.getTrans(text4); singleHMM.setTrans(num3); } else { if (!String.instancehelper_startsWith(text2, "<TRANSP>")) { java.lang.System.err.println(new StringBuilder().append("Error reading model: missing transitions.").append(text2).toString()); java.lang.System.exit(1); } this.loadTrans(bufferedReader, null, text2); singleHMM.setTrans(this.trans); } text2 = bufferedReader.readLine(); if (!String.instancehelper_startsWith(text2, "<ENDHMM>")) { java.lang.System.err.println(new StringBuilder().append("Error reading model: missing ENDHMM.").append(text2).toString()); java.lang.System.exit(1); } return(singleHMM); }