Grow Skip Interval

An expensive part of the decoder is collecting up the set of successor tokens to be scored for the next frame. The idea here with this optimization is to periodically skip the growing code. Instead rescore the current set of active tokens with the next frame. Depending on how often the 'grow' portion is skipped, will determine the improvement in speed.

The code change

   
  protected boolean recognize() {
     boolean more = scoreTokens(); // score emitting tokens
     if (more) {
         pruneBranches();    // eliminate poor branches
         currentFrameNumber++;
         if (growSkipInterval == 0 ||
              (currentFrameNumber % growSkipInterval != 0) {
             growBranches();   // extend remaining branches
         }
     }
     return !more;
   }

This code change was made to both the Simple and the WordPruning breadth first search manager.

Configuration

The property in configuration file 'growSkipInterval' controls this behavior, default value is 0. Possible values to try are 6-10.

Accuracy Results

Results are shown here as WER / RT.

Test base2346
rm1 bigram 4.3/0.7619.0/0.317.0/0.445.4/0.494.8/.58
rm1 trigram 1.6/1.1 23.5/0.51 6.1/.69 5.863/0.78 1.6/.95
hub4 trigram 8.33/29.5 10.6/22.6

Note that these runs are subsets of the full tests so the baseline WER may not exactly match those in the regression tests

 
sphinx4/growskipping.txt · Last modified: 2010/07/31 19:20 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki