Menu

nBest support for FSG based decoding in PS

Help
creative64
2011-04-07
2012-09-22
  • creative64

    creative64 - 2011-04-07

    Hi,

    Is it possible to get n Best hypotheses in PocketSphinx for FSG based decoding
    setup ?

    Regards,

     
  • Nickolay V. Shmyrev

    I remember it's not supported.

     
  • creative64

    creative64 - 2011-04-08

    Any plans of this support in near future ?

     
  • Nickolay V. Shmyrev

    Hi

    Well, plans are always here but I'm afraid we will not have resources to do
    this in next 6 month. Sorry for that. If you want to jump in that would be
    just amazing.

     
  • creative64

    creative64 - 2011-04-11

    Hi Nickolay,

    I'll get back to you regarding contributing towards implementing nBest in an
    FSG
    decoding setup. Have couple of other basic questions regarding this.

    As per my(our) understanding of PocketSphinx batch mode, following are the
    major
    functional blocks of the decoder.

    ps_init --- Initializes the decoder data-structures once in the beginning.
    process_ctl_line --- Does the hmm scoring for entire utterance and generates viterbi history table.
    (Average of 85% of processing time goes in this).
    fsg_search_lattice --- DAG is created here with the help of viterbi history table
    generated above.
    fsg_search_bestpath --- Final link in the bestpath is found.
    *ps_lattice_hyp --- Final hypothesis is obtained.

    My questions are:

    1. For implementing nBest, logically which of the functional blocks will need changes ?
      Can I assume that process_ctl_line part will not be affected by the change ?

    2. Will the change be a hack from LM implementation or it will need some significant
      new development.

    Regards,

     
  • Nickolay V. Shmyrev

    *ps_lattice_hyp --- Final hypothesis is obtained.

    You need to add here another component. ps_astar_start is an implementation of
    the A* algorithm that is used to generate n-best from the lattice. To support
    n-best in fsg one needs to extend ps_astar_start to work with fsg structures.
    Currently in fsg state it only applies dumb weights and algorithm is mostly
    oriented to language models.

    All relevant functions are in ps_lattice and start with ps_astar.

    There is also a refactoring part here. If ps_astart will start to support fsg
    structures, it needs to be added to search structure as one of the methods and
    both fsg_search and ngram_search will need to implement this method.

    1. For implementing nBest, logically which of the functional blocks will
      need changes ?

    Only ps_astar one.

    Can I assume that process_ctl_line part will not be affected by the change?

    Yes

    1. Will the change be a hack from LM implementation or it will need some
      significant new development.

    You need to understand how A* algorithm on lattice work and how to apply FSG
    weights to make it work for lattices geenrated with fsg_search

     
  • creative64

    creative64 - 2011-04-11

    Hi Nickolay,

    Thanks for all the information. 'll see and revert back if one of gets some
    bandwidth in near future to take it up.

    Regards,

     
  • iListen

    iListen - 2011-07-05

    Hello creative64,

    Were you able to implement n-best with FSG. Even I am in need of it.

    Regards
    iListen

     

Log in to post a comment.