sicada-decode 0.1.0

Speech decoding over sicada's WFSTs: Viterbi, lattices, CTC and forced alignment
Documentation

sicada-decode

Decoding an acoustic model's output with sicada.

The inference half of a pair: train on a GPU with k2, then run inference on a CPU here. It sits outside sicada proper, which is a port of OpenFst's library; the pieces here come from the Kaldi and k2 side.

  • dense reads the acoustic model's T × V score matrix as an FST, so that composing a decoding graph against it is an ordinary composition.
  • viterbi walks that composition one frame at a time without building it.
  • lattice does the same but keeps the alternatives, over a semiring (lattice_weight) that holds the graph cost and the acoustic cost apart.
  • compact collapses the alignments, so each word sequence appears once with the best one, over a cost with the frames it spanned attached (compact_lattice_weight). Both read and write Kaldi's file formats.
  • nbest reads the answers back out and rescales the two halves against each other without decoding again.
  • ctc builds the graph side for a CTC model.
  • align is forced alignment: the reference is known, so the graph is one chain and the whole band is searched rather than a beam. occupancy is the forward-backward pass over the same chain.

The API is unstable.

License

Apache License 2.0. The lattice semirings and the decoder structure follow Kaldi (Apache License 2.0).