annotate experiments/scripts/cnbh-syllables/run_training_and_testing/gen_hmmproto.py @ 260:0a8fac5bbfeb

corrected a bug in the swig example and added a new more complex example
author hamel.phil
date Wed, 05 Jan 2011 18:48:02 +0000
parents bee31e7ebf4b
children
rev   line source
tomwalters@84 1 #!/usr/bin/env python
tomwalters@84 2 # encoding: utf-8
tomwalters@84 3 """
tomwalters@84 4 gen_hmmproto.py
tomwalters@84 5
tomwalters@84 6 Created by Thomas Walters on 2010-07-08.
tomwalters@84 7 """
tomwalters@84 8
tomwalters@84 9 import sys
tomwalters@84 10 import getopt
tomwalters@84 11
tomwalters@84 12
tomwalters@84 13 help_message = '''
tomwalters@84 14 Generate an HTK HMM prototype with an input_size dimensional input and
tomwalters@84 15 total_hmm_states total HMM states (including start and end state)
tomwalters@84 16 The feature type string can be specified in feature_type
tomwalters@84 17 '''
tomwalters@84 18
tomwalters@84 19
tomwalters@84 20 class Usage(Exception):
tomwalters@84 21 def __init__(self, msg):
tomwalters@84 22 self.msg = msg
tomwalters@84 23
tomwalters@84 24
tomwalters@84 25 def main(argv=None):
tomwalters@84 26 if argv is None:
tomwalters@84 27 argv = sys.argv
tomwalters@84 28 try:
tomwalters@84 29 try:
tomwalters@84 30 opts, args = getopt.getopt(argv[1:], "hi:s:t:v", ["help", "input_size=", "total_hmm_states=", "feature_type="])
tomwalters@84 31 except getopt.error, msg:
tomwalters@84 32 raise Usage(msg)
tomwalters@84 33
tomwalters@84 34 # defaults
tomwalters@84 35 input_size = 39
tomwalters@84 36 total_hmm_states = 6
tomwalters@84 37 feature_type = "MFCC_0_D_A"
tomwalters@84 38
tomwalters@84 39 # option processing
tomwalters@84 40 for option, value in opts:
tomwalters@84 41 if option == "-v":
tomwalters@84 42 verbose = True
tomwalters@84 43 if option in ("-h", "--help"):
tomwalters@84 44 raise Usage(help_message)
tomwalters@84 45 if option in ("-i", "--input_size"):
tomwalters@84 46 input_size = int(value)
tomwalters@84 47 if option in ("-s", "--total_hmm_states"):
tomwalters@84 48 total_hmm_states = int(value)
tomwalters@84 49 if option in ("-t", "--feature_type"):
tomwalters@84 50 feature_type = value
tomwalters@84 51
tomwalters@84 52 except Usage, err:
tomwalters@84 53 print >> sys.stderr, sys.argv[0].split("/")[-1] + ": " + str(err.msg)
tomwalters@84 54 print >> sys.stderr, "\t for help use --help"
tomwalters@84 55 return 2
tomwalters@84 56
tomwalters@84 57 print "~o<VECSIZE> " + str(input_size) + "<NULLD>" + "<" + feature_type + ">"
tomwalters@84 58 print "~h \"proto\""
tomwalters@84 59 print "<BEGINHMM>"
tomwalters@84 60 print "<NUMSTATES> " + str(total_hmm_states)
tomwalters@84 61 for state in xrange(2, total_hmm_states):
tomwalters@84 62 print "<State> " + str(state)
tomwalters@84 63 print "<Mean>" + str(input_size)
tomwalters@84 64 print "0 " * input_size
tomwalters@84 65 print "<Variance> " + str(input_size)
tomwalters@84 66 print "1.0 " * input_size
tomwalters@84 67 print
tomwalters@84 68 print "<TransP> " + str(total_hmm_states)
tomwalters@84 69 print "0.0 1.0 " + "0.0 " * (total_hmm_states - 2)
tomwalters@84 70 for state in xrange(1, total_hmm_states - 1):
tomwalters@84 71 print ("0.0 " * state) + "0.6 0.4 " + "0.0 " * (total_hmm_states -2 - state)
tomwalters@84 72 print "0.0 " * total_hmm_states
tomwalters@84 73 print "<EndHMM>"
tomwalters@84 74
tomwalters@84 75 if __name__ == "__main__":
tomwalters@84 76 sys.exit(main())