In the past I have trained Hidden Markov Models (HMMs) for sequence recognition with the Baum-Welch algorithm such that if there were $n$ classes, I would use training data $D_i$ for a class $i$ to generate a single HMM to recognize class $i$.
I was reading around and saw that there was a way to create one large HMM and train it using $D = \cup_{i=1}^n D_i$ such that I could recognize the class through observing the optimal state sequence (obtained through the Viterbi algorithm) to determine the class.
I believe this is called training through Viterbi realignment, but I am not sure. Any help on the matter would be appreciated.