示例#1
0
        static HMMPosition()
        {
            int num = 0;

            HMMPosition[] array = HMMPosition.values();
            int           num2  = array.Length;

            for (int i = 0; i < num2; i++)
            {
                HMMPosition hmmposition = array[i];
                if ((int)String.instancehelper_charAt(hmmposition.rep, 0) > num)
                {
                    num = (int)String.instancehelper_charAt(hmmposition.rep, 0);
                }
            }
            HMMPosition.posByRep = new HMMPosition[num + 1];
            array = HMMPosition.values();
            num2  = array.Length;
            for (int i = 0; i < num2; i++)
            {
                HMMPosition hmmposition = array[i];
                HMMPosition.posByRep[(int)String.instancehelper_charAt(hmmposition.rep, 0)] = hmmposition;
            }
        }
示例#2
0
        public HMMPool(AcousticModel model, Logger logger, UnitManager unitManager)
        {
            this.logger = logger;
            int num = 0;

            this.model       = model;
            this.unitManager = unitManager;
            if (model.getLeftContextSize() != 1)
            {
                string text = "LexTreeLinguist: Unsupported left context size";

                throw new Error(text);
            }
            if (model.getRightContextSize() != 1)
            {
                string text2 = "LexTreeLinguist: Unsupported right context size";

                throw new Error(text2);
            }
            Iterator iterator = model.getContextIndependentUnitIterator();

            while (iterator.hasNext())
            {
                Unit unit = (Unit)iterator.next();
                logger.fine(new StringBuilder().append("CI unit ").append(unit).toString());
                if (unit.getBaseID() > num)
                {
                    num = unit.getBaseID();
                }
            }
            this.numCIUnits = num + 1;
            this.unitTable  = new Unit[this.numCIUnits * this.numCIUnits * this.numCIUnits];
            iterator        = model.getHMMIterator();
            while (iterator.hasNext())
            {
                HMM  hmm   = (HMM)iterator.next();
                Unit unit2 = hmm.getUnit();
                int  id    = this.getID(unit2);
                this.unitTable[id] = unit2;
                if (logger.isLoggable(Level.FINER))
                {
                    logger.finer(new StringBuilder().append("Unit ").append(unit2).append(" id ").append(id).toString());
                }
            }
            this.hmmTable = new EnumMap(ClassLiteral <HMMPosition> .Value);
            HMMPosition[] array = HMMPosition.values();
            int           num2  = array.Length;

            for (int i = 0; i < num2; i++)
            {
                HMMPosition hmmposition = array[i];
                HMM[]       array2      = new HMM[this.unitTable.Length];
                this.hmmTable.put(hmmposition, array2);
                for (int j = 1; j < this.unitTable.Length; j++)
                {
                    Unit unit3 = this.unitTable[j];
                    if (unit3 == null)
                    {
                        unit3 = this.synthesizeUnit(j);
                    }
                    if (unit3 != null)
                    {
                        array2[j] = model.lookupNearestHMM(unit3, hmmposition, false);
                        if (!HMMPool.assertionsDisabled && array2[j] == null)
                        {
                            throw new AssertionError();
                        }
                    }
                }
            }
        }