title: A problem with forced alignment in speech recognition - HTK
body: <p>I have a system where a user is asked to repeat a sentence after a prompt. It uses <code>HTK</code> to <code>force-align</code> the user-spoken-sentence to the pre-defined word level label file (of the sentence) to get a time-aligned phone level file. The HMMs have been trained on a large amount of data and give very accurate time-aligned files with <code>HVite</code>. My problem arises when the user <strong><em>does not</em></strong> speak the exact sentence that is required to be spoken. Let me illustrate with an example:  </p>
  
  <ol>
  <li><p>Word level label file of the target sentence that needs to be spoken (known to the user):<br>
  THIS IS A VERY GOOD DAY.  </p></li>
  <li><p>User says (Case 1): THIS IS A VERY GOOD DAY.<br>
  In this case, the user has repeated the exact same sentence. The time aligned file is very accurate and all is well.  </p></li>
  <li><p>User says (Case 2): THIS IS A GOOD DAY.<br>
  In this case, the forced alignment is carried out with the word level label file as given above. The resulting time-aligned file shows time instants for words that were never spoken by the user (such as VERY which exists in the original sentence but not here).  </p></li>
  </ol>
  
  <p>Is there a way within <code>HTK</code> to detect and possibly avoid this?  </p>
  
  <p>One solution would be some sort of a front-end pre-processor that would do speech-recognition (itself a very hard problem because it would have to have infinite vocab) and let the user know that what they have spoken is incorrect. </p>
  
  <p>Are there any tools/command line options within <code>HTK</code> that allow me to do this? </p>
  
  <p>P.S: Please let me know in case more details are needed. </p>
  
  <p>Thanks,<br>
  Sriram </p>