cmdln_macro.h
Go to the documentation of this file.
1 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* ====================================================================
3  * Copyright (c) 1999-2004 Carnegie Mellon University. All rights
4  * reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * This work was supported in part by funding from the Defense Advanced
19  * Research Projects Agency and the National Science Foundation of the
20  * United States of America, and the CMU Sphinx Speech Consortium.
21  *
22  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
23  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
26  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34  * ====================================================================
35  *
36  */
37 /*
38  * cmdln_macro.h -- Corpus-file related misc functions.
39  *
40  * **********************************************
41  * CMU ARPA Speech Project
42  *
43  * Copyright (c) 1996 Carnegie Mellon University.
44  * ALL RIGHTS RESERVED.
45  * **********************************************
46  *
47  * HISTORY
48  * $Log$
49  * Revision 1.1 2006/04/05 20:27:30 dhdfu
50  * A Great Reorganzation of header files and executables
51  *
52  * Revision 1.3 2006/02/22 19:37:51 arthchan2003
53  * Removed command-line remove_zero_var_gau. See the comments in revision 1.20 of cont_mgau.c
54  *
55  * Revision 1.2 2006/02/22 18:46:43 arthchan2003
56  * Merged from SPHINX3_5_2_RCI_IRII_BRANCH: Add a macro files that
57  * unified the command line of all the executables in Sphinx 3.6.
58  * Affected executable includes decode, decode_anytopo, livepretend,
59  * align, allphone, dag, astar and conf. This will be commmented
60  * individually in each executable.
61  *
62  * Revision 1.1.2.14 2006/01/16 19:50:19 arthchan2003
63  * 1, Changed -ltsoov to -lts_mismatch, 2, Added an option to unscale the hypothesis segment scores. , 3, Added an option to dump the best senone scores.
64  *
65  * Revision 1.1.2.13 2005/11/17 06:11:15 arthchan2003
66  * 1, Added -hypsegfmt which allows output of hyp(match)seg to s3, s2 and ctm segment format. 2, Added -outlatfmt, which allows conversion of sphinx 3 lattice to IBM lattice. 3, -latcompress, create an uncompressed(in terms of no. of links) version of dag.
67  *
68  * Revision 1.1.2.12 2005/10/07 18:55:10 arthchan2003
69  * Fixed the display problem.
70  *
71  * Revision 1.1.2.11 2005/09/26 02:32:34 arthchan2003
72  * (Change for comments) Also set agc default to none instead of max. The reason is that all 8 tests we have in the performance do not use -agc max. Also in practice, AGC usually hurt the performance.
73  *
74  * Revision 1.1.2.10 2005/09/26 02:21:57 arthchan2003
75  * Changed the option -s3hmmdir to -hmm. This seems to be more generic and cause fewer restraints in future.
76  *
77  * Revision 1.1.2.9 2005/09/25 19:04:23 arthchan2003
78  * Added macros for 1, tie routines which used vq_gen, 2, add support for using LTS rules to generate OOV. 3, enable and disable composite triphone support.
79  *
80  * Revision 1.1.2.8 2005/09/18 01:14:58 arthchan2003
81  * Tie Viterbi history, DAG, debugging command line together. Inspect all possible commands and specify whether they are mode-specific.
82  *
83  * Revision 1.1.2.7 2005/09/07 23:27:21 arthchan2003
84  * Added an option in gmm_command_line_macro() to allow multiple behavior of Gaussian flooring.
85  *
86  * Revision 1.1.2.6 2005/08/03 19:58:11 arthchan2003
87  * Change -topn from fast_GMM macro to acoustic model command line
88  *
89  * Revision 1.1.2.5 2005/08/03 18:53:59 dhdfu
90  * Add -topn for SCHMM models
91  *
92  * Revision 1.1.2.4 2005/08/02 21:08:32 arthchan2003
93  * 1, Changed -mean, -var, -tmat, -mixw -mdef to make them not required arguments. 2, Added -s3hmmdir so that user can just specified a directory name, in which all components of a set of HMM could be found.
94  *
95  * Revision 1.1.2.3 2005/07/24 01:43:59 arthchan2003
96  * Temporarily not support -fsgctlfn
97  *
98  * Revision 1.1.2.2 2005/07/20 19:43:44 arthchan2003
99  * Add command line arguments for fsg routines.
100  *
101  * Revision 1.1.2.1 2005/07/18 18:56:20 arthchan2003
102  * A centralized macro definition file that contains command-line information that shared by different applications.
103  *
104  *
105  *
106  */
107 
108 #ifndef _CMDLN_MACRO_H_
109 #define _CMDLN_MACRO_H_
110 
111 /* Note by ARCHAN at 20050717
112 
113 The following are macros that used by individual modules and
114 routines. Since we want in one application, there is only one
115 command-line arguments. (The concept of singleton in Pattern). If
116 we used variables, then every application that call this file and
117 its implementation will need got every command-line from every
118 application. That is not very nice.
119 
120 Using macro will temporarily solve this problem and I hope this
121 will only last for less than one minor version time. A better way,
122 as what we have already done in Sphinx 4, is to ask the libraries
123 to register its command-line argument as well as configuration
124 arguments. This will give user a better time of configuration and
125 us a better architecture.
126 
127 */
128 
129 #define vq_cluster_command_line_macro() \
130  { "-stdev", \
131  ARG_BOOLEAN, \
132  "no", \
133  "Use std.dev. (rather than var) in computing vector distances during clustering" }, \
134  { "-eps", \
135  ARG_FLOAT64, \
136  "0.0001", \
137  "Stopping criterion: stop iterations if relative decrease in sq(error) < eps" }, \
138  { "-iter", \
139  ARG_INT32, \
140  "100", \
141  "Max no. of k-means iterations for clustering" }
142 
143 #define gmm_command_line_macro() \
144  { "-mean",\
145  ARG_STRING,\
146  NULL,\
147  "Mixture gaussian means input file" },\
148  { "-var",\
149  ARG_STRING,\
150  NULL,\
151  "Mixture gaussian variances input file" },\
152  { "-varfloor",\
153  ARG_FLOAT32,\
154  "0.0001",\
155  "Mixture gaussian variance floor (applied to data from -var file)" },\
156  { "-mixw",\
157  ARG_STRING,\
158  NULL,\
159  "Senone mixture weights input file" },\
160  { "-mixwfloor",\
161  ARG_FLOAT32,\
162  "0.0000001",\
163  "Senone mixture weights floor (applied to data from -mixw file)" }
164 
165 #define acoustic_model_command_line_macro() \
166  gmm_command_line_macro(), \
167  { "-hmm", \
168  ARG_STRING, \
169  NULL, \
170  "Directory for specifying Sphinx 3's hmm, the following files are assummed to be present, mdef, mean, var, mixw, tmat. If -mdef, -mean, -var, -mixw or -tmat are specified, they will override this command. "}, \
171  { "-featparams", \
172  ARG_STRING, \
173  NULL, \
174  "File containing feature extraction parameters."}, \
175  { "-mdef", \
176  ARG_STRING,\
177  NULL,\
178  "Model definition input file" },\
179  { "-tmat",\
180  ARG_STRING,\
181  NULL,\
182  "HMM state transition matrix input file" },\
183  { "-tmatfloor",\
184  ARG_FLOAT32,\
185  "0.0001",\
186  "HMM state transition probability floor (applied to -tmat file)" },\
187  { "-senmgau",\
188  ARG_STRING,\
189  ".cont.",\
190  "Senone to mixture-gaussian mapping file (or .semi. or .cont.)" }, \
191  { "-topn", \
192  ARG_INT32, \
193  "4", \
194  "(S3.0 GMM Computation only) No. of top scoring densities computed in each mixture gaussian codebook (semi-continuous models only)" }
195 
196 #define language_model_command_line_macro() \
197  { "-lm", \
198  ARG_STRING, \
199  NULL, \
200  "Word trigram language model input file" }, \
201  { "-lmctlfn", \
202  ARG_STRING, \
203  NULL, \
204  "Specify a set of language model\n"}, \
205  { "-lmdumpdir", \
206  ARG_STRING, \
207  NULL, \
208  "The directory for dumping the DMP file. "}, \
209  { "-lmname", \
210  ARG_STRING, \
211  NULL, \
212  "Name of language model in -lmctlfn to use for all utterances" }
213 
214 #if 0
215  /* Comment out because I don't know what is the meaning of Sphinx 2 fsg control file means. */
216  { "-fsgctlfn",
217  ARG_STRING,
218  NULL,
219  "A finite state grammar control file" },
220 #endif
221 
222 #define finite_state_grammar_command_line_macro() \
223  { "-fsg", \
224  ARG_STRING, \
225  NULL, \
226  "(FSG Mode (Mode 2) only) Finite state grammar"}, \
227  { "-fsgusealtpron", \
228  ARG_BOOLEAN, \
229  "yes", \
230  "(FSG Mode (Mode 2) only) Use alternative pronunciations for FSG"}, \
231  { "-fsgusefiller", \
232  ARG_BOOLEAN, \
233  "yes", \
234  "(FSG Mode (Mode 2) only) Insert filler words at each state."}
235 
236 
237 #define log_table_command_line_macro() \
238  { "-logbase", \
239  ARG_FLOAT32, \
240  "1.0003", \
241  "Base in which all log-likelihoods calculated" }, \
242  { "-log3table", \
243  ARG_BOOLEAN, \
244  "yes", \
245  "Determines whether to use the logs3 table or to compute the values at run time."}
246 
247 #define phoneme_lookahead_command_line_macro() \
248  { "-pheurtype", \
249  ARG_INT32, \
250  "0", \
251  "0 = bypass, 1= sum of max, 2 = sum of avg, 3 = sum of 1st senones only" }, \
252  { "-pl_window", \
253  ARG_INT32, \
254  "1", \
255  "Window size (actually window size-1) of phoneme look-ahead." }, \
256  { "-pl_beam", \
257  ARG_FLOAT64, \
258  "1.0e-80", \
259  "Beam for phoneme look-ahead. [1 (narrowest)..10000000(very wide)]" }
260 
261 #define histogram_pruning_command_line_macro() \
262  { "-maxwpf", \
263  ARG_INT32, \
264  "20", \
265  "(Only used in Mode 4 and 5) Max no. of distinct word exits to maintain at each frame" }, \
266  { "-maxhistpf", \
267  ARG_INT32, \
268  "100", \
269  "(Only used in Mode 4 and 5) Max no. of histories to maintain at each frame" }, \
270  { "-hmmhistbinsize", \
271  ARG_INT32, \
272  "5000", \
273  "(Only used in Mode 4 and 5) Performance histogram: #frames vs #HMMs active; #HMMs/bin in this histogram" }, \
274  { "-maxhmmpf", \
275  ARG_INT32, \
276  "20000", \
277  "(Only used in Mode 4 and 5) Max no. of active HMMs to maintain at each frame; approx." }
278 
279 #define dictionary_command_line_macro() \
280  { "-dict", \
281  ARG_STRING, \
282  NULL, \
283  "Main pronunciation dictionary (lexicon) input file" }, \
284  { "-fdict", \
285  ARG_STRING, \
286  NULL, \
287  "Silence and filler (noise) word pronunciation dictionary input file" }, \
288  { "-lts_mismatch", \
289  ARG_BOOLEAN, \
290  "no", \
291  "Use CMUDict letter-to-sound rules to generate pronunciations for LM words doesn't appear in the dictionary . Use it with care. It assumes that the phone set in the mdef and dict are the same as the LTS rule. "}
292 
293 #define gaussian_selection_command_line_macro() \
294  { "-gs", \
295  ARG_STRING, \
296  NULL, \
297  "Gaussian Selection Mapping." }
298 
299 #define fast_GMM_computation_command_line_macro() \
300  { "-subvq", \
301  ARG_STRING, \
302  NULL, \
303  "Sub-vector quantized form of acoustic model" }, \
304  { "-subvqbeam", \
305  ARG_FLOAT64, \
306  "3.0e-3", \
307  "Beam selecting best components within each mixture Gaussian [0(widest)..1(narrowest)]" }, \
308  gaussian_selection_command_line_macro(), \
309  { "-ds", \
310  ARG_INT32, \
311  "1", \
312  "Ratio of Down-sampling the frame computation." }, \
313  { "-cond_ds", \
314  ARG_BOOLEAN, \
315  "no", \
316  "Conditional Down-sampling, override normal down sampling. require specify a gaussian selection map" }, \
317  { "-dist_ds", \
318  ARG_BOOLEAN, \
319  "no", \
320  "Distance-based Down-sampling, override normal down sampling." }, \
321  { "-gs4gs", \
322  ARG_BOOLEAN, \
323  "yes", \
324  "A flag that specified whether the input GS map will be used for Gaussian Selection. If it is disabled, the map will only provide information to other modules." }, \
325  { "-svq4svq", \
326  ARG_BOOLEAN, \
327  "no", \
328  "A flag that specified whether the input SVQ will be used as approximate scores of the Gaussians" }, \
329  { "-ci_pbeam", \
330  ARG_FLOAT64, \
331  "1e-80", /*default is huge , so nearly every cd phone will be computed */ \
332  "CI phone beam for CI-based GMM Selection. [0(widest) .. 1(narrowest)]"}, \
333  { "-tighten_factor", /* Use in "Down-sampling", this will tightened the beam \
334  */ \
335  ARG_FLOAT64, \
336  "0.5", \
337  "From 0 to 1, it tightens the beam width when the frame is dropped"}, \
338  { "-maxcdsenpf", \
339  ARG_INT32, \
340  "100000", \
341  "Max no. of distinct CD senone will be computed. " }, \
342  { "-vqeval", \
343  ARG_INT32, \
344  "3", \
345  "Number of subvectors to use for SubVQ-based frame evaluation (3 for all)"}, \
346  { "-kdtree",\
347  ARG_STRING,\
348  NULL,\
349  "kd-Tree file for Gaussian selection (for .s2semi models only)" }, \
350  { "-kdmaxdepth",\
351  ARG_INT32,\
352  "0",\
353  "Maximum depth of kd-Trees to use" }, \
354  { "-kdmaxbbi",\
355  ARG_INT32,\
356  "-1",\
357  "Maximum number of Gaussians per leaf node in kd-Trees" }
358 
359 #if 0
360  { "-feat",
361  ARG_STRING,
362  "s2_4x",
363  "Feature stream:\n\t\t\t\ts2_4x: Sphinx-II type 4 streams, 12cep, 24dcep, 3pow, 12ddcep\n\t\t\t\ts3_1x39: Single stream, 12cep+12dcep+3pow+12ddcep\n\t\t\t\t1s_12c_12d_3p_12dd: Single stream, 12cep+12dcep+3pow+12ddcep\n\t\t\t\t1s_c: Single stream, given input vector only\n\t\t\t\t1s_c_d: Feature + Deltas only\n\t\t\t\t1s_c_dd: Feature + Double deltas only\n\t\t\t\t1s_c_d_dd: Feature + Deltas + Double deltas\n\t\t\t\t1s_c_wd_dd: Feature cep+windowed delcep+deldel \n\t\t\t1s_c_d_ld_dd: Feature + delta + longter delta + doubledelta" },
364 
365  { "-feat", /* Captures the computation for converting input to feature vector */
366  ARG_STRING,
367  "1s_c_d_dd",
368  "Feature stream: s2_4x / s3_1x39 / cep_dcep[,%d] / cep[,%d] / %d,%d,...,%d" },
369 #endif
370 
372 #define speaker_adaptation_command_line_macro() \
373  { "-mllr", \
374  ARG_STRING, \
375  NULL, \
376  "MLLR transfomation matrix to be applied to mixture gaussian means"}, \
377  { "-cb2mllr", \
378  ARG_STRING, \
379  ".1cls.", \
380  "Senone to MLLR transformation matrix mapping file (or .1cls.)" }
381 
383 #define common_filler_properties_command_line_macro() \
384  { "-fillpen", \
385  ARG_STRING, \
386  NULL, \
387  "Filler word probabilities input file (used in place of -silpen and -noisepen)" }, \
388  { "-silprob", \
389  ARG_FLOAT32, \
390  "0.1", \
391  "Default silence word probability" }, \
392  { "-fillprob", \
393  ARG_FLOAT32, \
394  "0.1", \
395  "Default non-silence filler word probability" }, \
396  { "-lw", \
397  ARG_FLOAT32, \
398  "9.5", \
399  "Language weight" }, \
400  { "-wip", \
401  ARG_FLOAT32, \
402  "0.7", \
403  "Word insertion penalty" }, \
404  { "-uw", \
405  ARG_FLOAT32, \
406  "0.7", \
407  "Unigram weight" }
408 
409  /* Follow sphinx 3.0, this should be implemented in nearly
410  every tool */
411 #define phone_insertion_penalty_command_line_macro() \
412  { "-phonepen", \
413  ARG_FLOAT32, \
414  "1.0", \
415  "(Mode 2 and 3 only) Word insertion penalty" }
416 
418 #define common_s3x_beam_properties_command_line_macro() \
419  { "-beam", \
420  ARG_FLOAT64, \
421  "1.0e-55", \
422  "Beam selecting active HMMs (relative to best) in each frame [0(widest)..1(narrowest)]" }, \
423  { "-pbeam", \
424  ARG_FLOAT64, \
425  "1.0e-50", \
426  "Beam selecting HMMs transitioning to successors in each frame [0(widest)..1(narrowest)]" }, \
427  { "-wbeam", \
428  ARG_FLOAT64, \
429  "1.0e-35", \
430  "Beam selecting word-final HMMs exiting in each frame [0(widest)..1(narrowest)]" }, \
431  { "-wend_beam", \
432  ARG_FLOAT64, \
433  "1.0e-80", \
434  "Beam selecting word-final HMMs exiting in each frame [0(widest) .. 1(narrowest)]" }, \
435  { "-ptranskip", \
436  ARG_INT32, \
437  "0", \
438  "(Not used in Mode 3) Use wbeam for phone transitions every so many frames (if >= 1)" }
440 #define common_application_properties_command_line_macro() \
441  { "-logfn", \
442  ARG_STRING, \
443  NULL, \
444  "Log file (default stdout/stderr)" }
446 #define control_file_handling_command_line_macro() \
447  { "-ctl", \
448  ARG_STRING, \
449  NULL, \
450  "Control file listing utterances to be processed" }, \
451  { "-ctloffset", \
452  ARG_INT32, \
453  "0", \
454  "No. of utterances at the beginning of -ctl file to be skipped" }, \
455  { "-ctlcount", \
456  ARG_INT32, \
457  "1000000000", /* A big number to approximate the default: "until EOF" */ \
458  "No. of utterances to be processed (after skipping -ctloffset entries)" }
460 #define hypothesis_file_handling_command_line_macro() \
461  { "-hyp", \
462  ARG_STRING, \
463  NULL, \
464  "Recognition result file, with only words" }, \
465  { "-hypseg", \
466  ARG_STRING, \
467  NULL, \
468  "Recognition result file, with word segmentations and scores" }
470 #define score_handling_command_line_macro() \
471  { "-hypsegscore_unscale", \
472  ARG_BOOLEAN, \
473  "yes", \
474  "When displaying the results, whether to unscale back the acoustic score with the best score in a frame"}
476 #define cepstral_input_handling_command_line_macro() \
477  { "-cepdir", \
478  ARG_STRING, \
479  NULL, \
480  "Input cepstrum files directory (prefixed to filespecs in control file)" }, \
481  { "-cepext", \
482  ARG_STRING, \
483  ".mfc", \
484  "Input cepstrum files extension (prefixed to filespecs in control file)" }, \
485  { "-adcin", \
486  ARG_BOOLEAN, \
487  "no", \
488  "Input is waveform data rather than cepstra (-cepdir and -cepext are still used)" }, \
489  { "-adchdr", \
490  ARG_INT32, \
491  "0", \
492  "Number of bytes to skip at the beginning of a waveform file (44 for WAV, 1024 for Sphere)" }
494 #define output_lattice_handling_command_line_macro() \
495  { "-outlatdir", \
496  ARG_STRING, \
497  NULL, \
498  "Directory in which to dump word lattices" }, \
499  { "-outlatfmt", \
500  ARG_STRING, \
501  "s3", \
502  "Format in which to dump word lattices (either 's3' or 'htk')" }, \
503  { "-latext", \
504  ARG_STRING, \
505  "lat.gz", \
506  "Filename extension for lattice files (gzip compressed, by default - remove .gz for uncompressed)" }
507 
508 
510 #define history_table_command_line_macro() \
511  { "-bptbldir", \
512  ARG_STRING, \
513  NULL, \
514  "Directory in which to dump word Viterbi back pointer table (for debugging)" }, \
515  { "-bptblsize", \
516  ARG_INT32, \
517  "32768", \
518  "Number of BPtable entries to allocate initially (grown as necessary)" }
519 
520 /* decode-specific, that includes mode 4 and mode 5'
521  share between decode/livepretend/livedecode
522 */
523 #define decode_specific_command_line_macro() \
524  { "-mode", \
525  ARG_STRING, \
526  "fwdtree",\
527  "Decoding mode, one of allphone, fsg, fwdflat, fwdtree."}, \
528  { "-op_mode", \
529  ARG_INT32, \
530  "-1", \
531  "Operation mode, for internal use only."}, \
532  { "-hmmdump", \
533  ARG_BOOLEAN, \
534  "no", \
535  "Whether to dump active HMM details to stderr (for debugging)" }, \
536  { "-lextreedump", \
537  ARG_INT32, \
538  "0", \
539  "Whether to dump the lextree structure to stderr (for debugging), 1 for Ravi's format, 2 for Dot format, Larger than 2 will be treated as Ravi's format" }, \
540  { "-bghist", \
541  ARG_BOOLEAN, \
542  "no", \
543  "Bigram-mode: If TRUE only one BP entry/frame; else one per LM state" }, \
544  { "-treeugprob", \
545  ARG_BOOLEAN, \
546  "yes", \
547  "If true, Use unigram probs in lextree" }
549 #define dag_handling_command_line_macro() \
550  { "-min_endfr", \
551  ARG_INT32, \
552  "3", \
553  "Nodes ignored during search if they persist for fewer than so many end frames" }, \
554  { "-dagfudge", \
555  ARG_INT32, \
556  "2", \
557  "(0..2); 1 or 2: add edge if endframe == startframe; 2: if start == end-1" }, \
558  { "-maxedge", \
559  ARG_INT32, \
560  "2000000", \
561  "Max DAG edges allowed in utterance; aborted if exceeded; controls memory usage" }, \
562  { "-maxlmop", \
563  ARG_INT32, \
564  "100000000", \
565  "Max LMops in utterance after which it is aborted; controls CPU use (see maxlpf)" }, \
566  { "-maxlpf", \
567  ARG_INT32, \
568  "40000", \
569  "Max LMops/frame after which utterance aborted; controls CPU use (see maxlmop)" }, \
570  {"-latcompress", \
571  ARG_BOOLEAN, \
572  "yes", \
573  "Whether lattice is compressed."}
574 
576 #define second_stage_dag_handling_command_line_macro() \
577  { "-bestpath", \
578  ARG_BOOLEAN, \
579  "no", \
580  "Whether to run bestpath DAG search after forward Viterbi pass" }, \
581  { "-bestpathlw", \
582  ARG_FLOAT32, \
583  NULL, \
584  "Language weight for bestpath DAG search (default: same as -lw)" }, \
585  {"-nbestdir", \
586  ARG_STRING, \
587  NULL, \
588  "Input word-lattice directory with per-utt files for restricting words searched"}, \
589  {"-nbestext", \
590  ARG_STRING, \
591  "nbest.gz", \
592  "N-best filename extension (.gz or .Z extension for compression)"}, \
593  {"-nbest", \
594  ARG_INT32, \
595  "200", \
596  "Max. n-best hypotheses to generate per utterance"}, \
597  {"-maxppath", \
598  ARG_INT32, \
599  "1000000", \
600  "Max partial paths created after which utterance aborted; controls CPU/memory use"}, \
601  {"-ppathdebug", \
602  ARG_BOOLEAN, \
603  "no", \
604  "Generate debugging information for N-best search. "}
606 #define input_lattice_handling_command_line_macro() \
607  { "-inlatdir", \
608  ARG_STRING, \
609  NULL, \
610  "Input word-lattice directory with per-utt files for restricting words searched" }, \
611  { "-inlatwin", \
612  ARG_INT32, \
613  "50", \
614  "Input word-lattice words starting within +/- <this argument> of current frame considered during search" }
616 #define flat_fwd_debugging_command_line_macro() \
617  { "-tracewhmm", \
618  ARG_STRING, \
619  NULL, \
620  "(Mode 3 only) Word whose active HMMs are to be traced (for debugging/diagnosis/analysis)" }, \
621  { "-hmmdumpef", \
622  ARG_INT32, \
623  "200000000", \
624  "(Mode 3 only) Ending frame for dumping all active HMMs (for debugging/diagnosis/analysis)" }, \
625  { "-hmmdumpsf", \
626  ARG_INT32, \
627  "200000000", \
628  "(Mode 3 only) Starting frame for dumping all active HMMs (for debugging/diagnosis/analysis)" }, \
629  { "-worddumpef", \
630  ARG_INT32, \
631  "200000000", \
632  "(Mode 3 only) Ending frame for dumping all active words (for debugging/diagnosis/analysis)" }, \
633  { "-worddumpsf", \
634  ARG_INT32, \
635  "200000000", \
636  "(Mode 3 only) Starting frame for dumping all active words (for debugging/diagnosis/analysis)" }
637 
639 #define search_specific_command_line_macro() \
640  {"-backtrace", \
641  ARG_BOOLEAN, \
642  "yes", \
643  "Whether detailed backtrace information (word segmentation/scores) shown in log" }, \
644  { "-bestsenscrdir", \
645  ARG_STRING, \
646  NULL, \
647  "When Best senone score directory." }
648 
649 
650 /* mode TST or mode 4*/
651 #define search_modeTST_specific_command_line_macro() \
652  { "-Nlextree", \
653  ARG_INT32, \
654  "3", \
655  "(Mode 4 only) No. of lextrees to be instantiated; entries into them staggered in time" }, \
656  { "-epl", \
657  ARG_INT32, \
658  "3", \
659  "(Mode 4 only) Entries Per Lextree; #successive entries into one lextree before lextree-entries shifted to the next" }
660 
661 /* mode WST or mode 5*/
662 #define search_modeWST_specific_command_line_macro() \
663  { "-Nstalextree", \
664  ARG_INT32, \
665  "25", \
666  "(Mode 5 only) No. of lextrees to be instantiated statically; " }
668 #define partial_hypothesis_command_line_macro() \
669  { "-maxhyplen", \
670  ARG_INT32, \
671  "1000", \
672  "(Live-decoder only) Maximum number of words in a partial hypothesis (for block decoding)" }, \
673  { "-phypdump", \
674  ARG_BOOLEAN, \
675  "yes", \
676  "(Live-decoder only) dump parital hypothesis on the screen"}
678 #define control_lm_file_command_line_macro() \
679  { "-ctl_lm", \
680  ARG_STRING, \
681  NULL, \
682  "(Not used in mode 2 and 3) Control file that list the corresponding LMs" }
684 #define control_mllr_file_command_line_macro() \
685  { "-ctl_mllr", \
686  ARG_STRING, \
687  NULL, \
688  "Control file that list the corresponding MLLR matrix for an utterance"}
690 #define control_lm_mllr_file_command_line_macro() \
691  control_lm_file_command_line_macro(), \
692  control_mllr_file_command_line_macro()
693 
694 #endif /* _CMDLN_MACRO_H_ */