Esempio n. 1
0
 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));
 }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
        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("   ");
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        /// <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));
        }
Esempio n. 13
0
 /// <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));
 }
Esempio n. 14
0
 public float[] GetLogMixtureWeights()
 {
     return(Senone.GetLogMixtureWeights());
 }