Menu

LDA/MLLT problem

Help
mchammer
2009-09-04
2012-09-22
  • mchammer

    mchammer - 2009-09-04

    Hi,

    training acoustic models with parameter $CFG_LDA_MLLT = 'yes' gives varying results using the script RunAll.pl (the same for RunAll_CDMLLT.pl) on every clean run (generated model and inter-model files are deleted after each run) I perform. I'm using always the same feature files I created once and am not changing any parameters.
    Training without LDA/MLLT switch on, gives always get the same results.
    I tried this on an4 and rm1 corpora as described in the tutorial http://www.speech.cs.cmu.edu/sphinx/tutorial.html.
    I'm using sphinxbase-0.4.1, SphinxTrain-1.0 and sphinx3-0.8.

    Some results for the an4 corpus, each line corresponds to a different run:
    SENTENCE ERROR: 53.1% (69/130) WORD ERROR RATE: 16.4% (126/773)
    SENTENCE ERROR: 50.8% (66/130) WORD ERROR RATE: 16.3% (125/773)
    SENTENCE ERROR: 47.7% (62/130) WORD ERROR RATE: 14.6% (112/773)
    SENTENCE ERROR: 55.4% (72/130) WORD ERROR RATE: 17.5% (135/773)
    SENTENCE ERROR: 51.5% (66/130) WORD ERROR RATE: 16.6% (128/773)
    SENTENCE ERROR: 50.0% (65/130) WORD ERROR RATE: 15.5% (119/773)
    SENTENCE ERROR: 56.2% (73/130) WORD ERROR RATE: 16.9% (130/773)
    SENTENCE ERROR: 62.3% (80/130) WORD ERROR RATE: 22.3% (172/773)
    SENTENCE ERROR: 56.2% (73/130) WORD ERROR RATE: 17.3% (133/773)
    SENTENCE ERROR: 54.6% (70/130) WORD ERROR RATE: 16.2% (125/773)
    SENTENCE ERROR: 53.1% (69/130) WORD ERROR RATE: 17.3% (133/773)
    SENTENCE ERROR: 60.8% (79/130) WORD ERROR RATE: 21.9% (169/773)

    Is this a bug, or is there an explanation for this behavior.

    Regards,

    Chris

     
    • Nickolay V. Shmyrev

      Ah wait, mllt.py uses random:

      def train(self, A=None):
          """ 
          Train an MLLT transform from an optional starting point.
      
          @param A: Initial MLLT matrix to start training. 
          @type A: numpy.ndarray 
          @return: Optimized MLLT transformation matrix 
          @rtype: numpy.ndarray 
          """
          if A == None:
              # Initialize it with a random positive-definite matrix of 
              # the same shape as the covariances 
              s = self.cov[0].shape
              d = -1
              while d < 0:
                  A = eye(s[0]) + 0.1 * random(s)
                  d = det(A)
      

      so it could be explained. But I'm not happy with such a huge accuracy jumps anyhow.

       
    • Nickolay V. Shmyrev

      Hm, indeed so. It seems that mllt computation is unstable. The first thing that is different during training attempts is a mllt matrix and the log of mllt computation in 02.mllt_train. Looks like the serious issue.

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.