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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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:
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 ?
Will the change be a hack from LM implementation or it will need some significant
new development.
Regards,
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
Is it possible to get n Best hypotheses in PocketSphinx for FSG based decoding
setup ?
Regards,
I remember it's not supported.
Any plans of this support in near future ?
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.
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:
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 ?
Will the change be a hack from LM implementation or it will need some significant
new development.
Regards,
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.
Only ps_astar one.
Yes
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
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,
Hello creative64,
Were you able to implement n-best with FSG. Even I am in need of it.
Regards
iListen
Hi iListen,
No I haven't but apparently there are users who might have done this.
Check this out:
https://sourceforge.net/projects/cmusphinx/forums/forum/5471/topic/4537178