00001 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 #include <julius.h>
00025 
00050 char *
00051 filepath(char *filename, char *dirname)
00052 {
00053   char *p;
00054   if (dirname != NULL && filename[0] != '/'
00055 #if defined(_WIN32)
00056       && filename[0] != '\\' && !(strlen(filename) >= 3 && filename[1] == ':')
00057 #endif
00058       ) {
00059     p = (char *)mymalloc(strlen(filename) + strlen(dirname) + 1);
00060     strcpy(p, dirname);
00061     strcat(p, filename);
00062   } else {
00063     p = strcpy((char *)mymalloc(strlen(filename)+1), filename);
00064   }
00065   return p;
00066 }
00067 
00084 static char *
00085 args_needed_exit(char *opt)
00086 {
00087   j_printerr("%s: option requires argument -- %s\n", EXECNAME, opt);
00088   opt_terminate();
00089   return(NULL);
00090 }
00091 
00108 void
00109 opt_parse(int argc, char *argv[], char *cwd)
00110 {
00111   char *tmparg;
00112   int i;
00113 
00114 #define NEXTARG (++i >= argc) ? (char *)args_needed_exit(argv[i-1]) : argv[i] 
00115 
00116   if (argc == 1) {              
00117     usage();
00118   }
00119   
00120   for (i=1;i<argc;i++) {
00121     if (strmatch(argv[i],"-C")) { 
00122       config_file_parse(filepath(NEXTARG, cwd));
00123       continue;
00124     } else if (strmatch(argv[i],"-input")) { 
00125       tmparg = NEXTARG;
00126       if (strmatch(tmparg,"rawfile")) {
00127         speech_input = SP_RAWFILE;
00128         realtime_flag = FALSE;
00129       } else if (strmatch(tmparg,"mfcfile")) {
00130         speech_input = SP_MFCFILE;
00131         realtime_flag = FALSE;
00132       } else if (strmatch(tmparg,"stdin")) {
00133         speech_input = SP_STDIN;
00134         realtime_flag = FALSE;
00135       } else if (strmatch(tmparg,"adinnet")) {
00136         speech_input = SP_ADINNET;
00137         realtime_flag = TRUE;
00138 #ifdef USE_NETAUDIO
00139       } else if (strmatch(tmparg,"netaudio")) {
00140         speech_input = SP_NETAUDIO;
00141         realtime_flag = TRUE;
00142 #endif
00143 #ifdef USE_MIC
00144       } else if (strmatch(tmparg,"mic")) {
00145         speech_input = SP_MIC;
00146         realtime_flag = TRUE;
00147 #endif
00148       } else if (strmatch(tmparg,"file")) { 
00149         speech_input = SP_RAWFILE;
00150         realtime_flag = FALSE;
00151       } else if (strmatch(tmparg,"mfc")) { 
00152         speech_input = SP_MFCFILE;
00153         realtime_flag = FALSE;
00154       } else {
00155         j_printerr("%s: no such speech input source \"%s\" supported\n", argv[0], tmparg);
00156         opt_terminate();
00157       }
00158       continue;
00159     } else if (strmatch(argv[i],"-filelist")) { 
00160       inputlist_filename = NEXTARG;
00161       continue;
00162     } else if (strmatch(argv[i],"-record")) {   
00163       record_dirname = NEXTARG;
00164       continue;
00165     } else if (strmatch(argv[i],"-rejectshort")) { 
00166       rejectshortlen = atoi(NEXTARG);
00167       continue;
00168     } else if (strmatch(argv[i],"-module")) { 
00169       module_mode = TRUE;
00170       if (i+1 < argc) {
00171         if (argv[i+1][0] >= '0' && argv[i+1][0] <= '9') {
00172           module_port = atoi(NEXTARG);
00173         }
00174       }
00175       
00176       result_output = SP_RESULT_MSOCK;
00177       continue;
00178     } else if (strmatch(argv[i],"-result")) { 
00179       tmparg = NEXTARG;
00180       if (strmatch(tmparg,"tty")) {
00181         result_output = SP_RESULT_TTY;
00182       } else if (strmatch(tmparg,"msock")) {
00183         result_output = SP_RESULT_MSOCK;
00184       } else {
00185         j_printerr("%s: no such result output \"%s\"\n", argv[0], tmparg);
00186         opt_terminate();
00187       }
00188       continue;
00189     } else if (strmatch(argv[i],"-outcode")) {
00190       decode_output_selection(NEXTARG);
00191       continue;
00192     } else if (strmatch(argv[i],"-force_realtime")) { 
00193       tmparg = NEXTARG;
00194       if (strmatch(tmparg, "on")) {
00195         forced_realtime = TRUE;
00196       } else if (strmatch(tmparg, "off")) {
00197         forced_realtime = FALSE;
00198       } else {
00199         j_printerr("%s: \"-force_realtime\" allows \"on\" or \"off\" only\n", EXECNAME);
00200         opt_terminate();
00201       }
00202       force_realtime_flag = TRUE;
00203       continue;
00204     } else if (strmatch(argv[i],"-realtime")) { 
00205       forced_realtime = TRUE;
00206       force_realtime_flag = TRUE;
00207       continue;
00208     } else if (strmatch(argv[i], "-norealtime")) { 
00209       forced_realtime = FALSE;
00210       force_realtime_flag = TRUE;
00211       continue;
00212     } else if (strmatch(argv[i],"-forcedict")) { 
00213       forcedict_flag = TRUE;
00214       continue;
00215     } else if (strmatch(argv[i],"-check")) { 
00216       tmparg = NEXTARG;
00217       if (strmatch(tmparg, "wchmm")) {
00218         wchmm_check_flag = TRUE;
00219       } else if (strmatch(tmparg, "trellis")) {
00220         trellis_check_flag = TRUE;
00221       } else if (strmatch(tmparg, "triphone")) {
00222         triphone_check_flag = TRUE;
00223       } else {
00224         j_printerr("%s: invalid check style: %s\n", argv[0], tmparg);
00225         opt_terminate();
00226       }
00227       continue;
00228     } else if (strmatch(argv[i],"-notypecheck")) { 
00229       paramtype_check_flag = FALSE;
00230       continue;
00231     } else if (strmatch(argv[i],"-separatescore")) { 
00232 #ifdef USE_NGRAM
00233       separate_score_flag = TRUE;
00234 #else  
00235       j_printerr("Warning: option \"-separatescore\" ignored\n");
00236 #endif
00237       continue;
00238     } else if (strmatch(argv[i],"-nlimit")) { 
00239 #ifdef WPAIR_KEEP_NLIMIT
00240       wpair_keep_nlimit = atoi(NEXTARG);
00241 #else
00242       j_printerr("Warning: option \"-nlimit\" ignored\n");
00243 #endif
00244       continue;
00245     } else if (strmatch(argv[i],"-lookuprange")) { 
00246       lookup_range = atoi(NEXTARG);
00247       continue;
00248 #ifdef GRAPHOUT
00249     } else if (strmatch(argv[i],"-graphrange")) { 
00250       graph_merge_neighbor_range = atoi(NEXTARG);
00251       continue;
00252 #endif
00253 #ifdef USE_DFA
00254     } else if (strmatch(argv[i],"-looktrellis")) { 
00255       looktrellis_flag = TRUE;
00256       continue;
00257     } else if (strmatch(argv[i],"-multigramout")) { 
00258       multigramout_flag = TRUE;
00259       continue;
00260     } else if (strmatch(argv[i],"-nomultigramout")) { 
00261       multigramout_flag = FALSE;
00262       continue;
00263 #endif
00264 #ifdef CATEGORY_TREE
00265     } else if (strmatch(argv[i],"-oldtree")) { 
00266       old_tree_function_flag = TRUE;
00267       continue;
00268 #ifdef PASS1_IWCD
00269     } else if (strmatch(argv[i],"-oldiwcd")) { 
00270       old_iwcd_flag = TRUE;
00271       continue;
00272 #endif
00273 #endif
00274     } else if (strmatch(argv[i],"-sb")) { 
00275 #ifdef SCAN_BEAM
00276       scan_beam_thres = atof(NEXTARG);
00277 #else
00278       j_printerr("Warning: option \"-sb\" ignored\n");
00279 #endif
00280       continue;
00281     } else if (strmatch(argv[i],"-discount")) { 
00282       j_printerr("Warning: option \"-discount\" ignored\n");
00283       continue;
00284     } else if (strmatch(argv[i],"-cutsilence")) { 
00285       silence_cut = 1;
00286       continue;
00287     } else if (strmatch(argv[i],"-nocutsilence")) { 
00288       silence_cut = 0;
00289       continue;
00290     } else if (strmatch(argv[i],"-pausesegment")) { 
00291       silence_cut = 1;
00292       continue;
00293     } else if (strmatch(argv[i],"-nopausesegment")) { 
00294       silence_cut = 0;
00295       continue;
00296     } else if (strmatch(argv[i],"-lv")) { 
00297       level_thres = atoi(NEXTARG);
00298       continue;
00299     } else if (strmatch(argv[i],"-zc")) { 
00300       zero_cross_num = atoi(NEXTARG);
00301       continue;
00302     } else if (strmatch(argv[i],"-headmargin")) { 
00303       head_margin_msec = atoi(NEXTARG);
00304       continue;
00305     } else if (strmatch(argv[i],"-tailmargin")) { 
00306       tail_margin_msec = atoi(NEXTARG);
00307       continue;
00308     } else if (strmatch(argv[i],"-hipass")||strmatch(argv[i],"-hifreq")) { 
00309       hipass = atoi(NEXTARG);
00310       continue;
00311     } else if (strmatch(argv[i],"-lopass")||strmatch(argv[i],"-lofreq")) { 
00312       lopass = atoi(NEXTARG);
00313       continue;
00314     } else if (strmatch(argv[i],"-smpPeriod")) { 
00315       smpPeriod = atoi(NEXTARG);
00316       smpFreq = period2freq(smpPeriod);
00317       continue;
00318     } else if (strmatch(argv[i],"-smpFreq")) { 
00319       smpFreq = atoi(NEXTARG);
00320       smpPeriod = freq2period(smpFreq);
00321       continue;
00322     } else if (strmatch(argv[i],"-fsize")) { 
00323       fsize = atoi(NEXTARG);
00324       continue;
00325     } else if (strmatch(argv[i],"-fshift")) { 
00326       fshift = atoi(NEXTARG);
00327       continue;
00328     } else if (strmatch(argv[i],"-preemph")) {
00329       preemph = atof(NEXTARG);
00330       continue;
00331     } else if (strmatch(argv[i],"-fbank")) {
00332       fbank_num = atoi(NEXTARG);
00333       continue;
00334     } else if (strmatch(argv[i],"-ceplif")) {
00335       ceplifter = atoi(NEXTARG);
00336       continue;
00337     } else if (strmatch(argv[i],"-rawe")) {
00338       rawe_required = TRUE;
00339       continue;
00340     } else if (strmatch(argv[i],"-norawe")) {
00341       rawe_required = FALSE;
00342       continue;
00343     } else if (strmatch(argv[i],"-enormal")) {
00344       enormal_required = TRUE;
00345       continue;
00346     } else if (strmatch(argv[i],"-noenormal")) {
00347       enormal_required = FALSE;
00348       continue;
00349     } else if (strmatch(argv[i],"-escale")) {
00350       enormal_escale = atof(NEXTARG);
00351       continue;
00352     } else if (strmatch(argv[i],"-silfloor")) {
00353       enormal_silfloor = atof(NEXTARG);
00354       continue;
00355     } else if (strmatch(argv[i],"-delwin")) { 
00356       delwin = atoi(NEXTARG);
00357       continue;
00358     } else if (strmatch(argv[i],"-accwin")) { 
00359       accwin = atoi(NEXTARG);
00360       continue;
00361     } else if (strmatch(argv[i],"-ssalpha")) { 
00362       ssalpha = atof(NEXTARG);
00363       continue;
00364     } else if (strmatch(argv[i],"-ssfloor")) { 
00365       ssfloor = atof(NEXTARG);
00366       continue;
00367     } else if (strmatch(argv[i],"-version") || strmatch(argv[i], "--version") || strmatch(argv[i], "-setting") || strmatch(argv[i], "--setting")) { 
00368       put_header(stderr);
00369       put_compile_defs(stderr);
00370       j_exit();
00371     } else if (strmatch(argv[i],"-quiet")) { 
00372       debug2_flag = verbose_flag = FALSE;
00373       continue;
00374     } else if (strmatch(argv[i],"-debug")) { 
00375       debug2_flag = verbose_flag = TRUE;
00376       continue;
00377     } else if (strmatch(argv[i],"-progout")) { 
00378       progout_flag = TRUE;
00379       continue;
00380     } else if (strmatch(argv[i],"-proginterval")) { 
00381       progout_interval = atoi(NEXTARG);
00382       continue;
00383     } else if (strmatch(argv[i],"-nocharconv")) { 
00384 #ifdef CHARACTER_CONVERSION
00385       from_code = NULL;
00386       to_code = NULL;
00387 #else
00388       j_printerr("Warning: character set conversion disabled, option \"-nocharconv\" ignored\n");
00389 #endif
00390       continue;
00391     } else if (strmatch(argv[i],"-charconv")) { 
00392 #ifdef CHARACTER_CONVERSION
00393       from_code = NEXTARG;
00394       to_code = NEXTARG;
00395 #else
00396       j_printerr("Warning: character set conversion disabled, option \"-charconv\" ignored\n");
00397       i+=2;
00398 #endif
00399       continue;
00400     } else if (strmatch(argv[i],"-kanji")) {
00401 #ifdef CHARACTER_CONVERSION
00402       from_code = NULL;
00403       tmparg = NEXTARG;
00404       if (strmatch(tmparg, "noconv")) {
00405         to_code = NULL;
00406       } else {
00407         to_code = tmparg;
00408       }
00409 #else
00410       j_printerr("Warning: character set conversion disabled, option \"-kanji\" ignored\n");
00411       i++;
00412 #endif
00413       continue;
00414     } else if (strmatch(argv[i],"-demo")) { 
00415       debug2_flag = verbose_flag = FALSE;
00416       progout_flag = TRUE;
00417       continue;
00418     } else if (strmatch(argv[i],"-walign")) { 
00419       align_result_word_flag = TRUE;
00420       continue;
00421     } else if (strmatch(argv[i],"-palign")) { 
00422       align_result_phoneme_flag = TRUE;
00423       continue;
00424     } else if (strmatch(argv[i],"-salign")) { 
00425       align_result_state_flag = TRUE;
00426       continue;
00427     } else if (strmatch(argv[i],"-output")) { 
00428       output_hypo_maxnum = atoi(NEXTARG);
00429       continue;
00430     } else if (strmatch(argv[i],"-1pass")) { 
00431       compute_only_1pass = TRUE;
00432       continue;
00433     } else if (strmatch(argv[i],"-hlist")) { 
00434       mapfilename = filepath(NEXTARG, cwd);
00435       continue;
00436 #ifdef USE_NGRAM
00437     } else if (strmatch(argv[i],"-nlr")) { 
00438       ngram_filename_lr_arpa = filepath(NEXTARG, cwd);
00439       ngram_filename = NULL;
00440       continue;
00441     } else if (strmatch(argv[i],"-nrl")) { 
00442       ngram_filename_rl_arpa = filepath(NEXTARG, cwd);
00443       ngram_filename = NULL;
00444       continue;
00445     } else if (strmatch(argv[i],"-lmp")) { 
00446       lm_weight = (LOGPROB)atof(NEXTARG);
00447       lm_penalty = (LOGPROB)atof(NEXTARG);
00448       lmp_specified = TRUE;
00449       continue;
00450     } else if (strmatch(argv[i],"-lmp2")) { 
00451       lm_weight2 = (LOGPROB)atof(NEXTARG);
00452       lm_penalty2 = (LOGPROB)atof(NEXTARG);
00453       lmp2_specified = TRUE;
00454       continue;
00455     } else if (strmatch(argv[i],"-transp")) { 
00456       lm_penalty_trans = (LOGPROB)atof(NEXTARG);
00457       continue;
00458 #else  
00459     } else if (strmatch(argv[i],"-gram")) { 
00460       multigram_add_prefix_list(NEXTARG, cwd);
00461       continue;
00462     } else if (strmatch(argv[i],"-gramlist")) { 
00463       multigram_add_prefix_filelist(filepath(NEXTARG, cwd));
00464       continue;
00465     } else if (strmatch(argv[i],"-nogram")) { 
00466       multigram_remove_gramlist();
00467       if (dfa_filename != NULL) {
00468         free(dfa_filename);
00469         dfa_filename = NULL;
00470       }
00471       if (dictfilename != NULL) {
00472         free(dictfilename);
00473         dictfilename = NULL;
00474       }
00475       continue;
00476     } else if (strmatch(argv[i],"-dfa")) { 
00477       dfa_filename = filepath(NEXTARG, cwd);
00478       continue;
00479     } else if (strmatch(argv[i],"-penalty1")) { 
00480       penalty1 = (LOGPROB)atof(NEXTARG);
00481       continue;
00482     } else if (strmatch(argv[i],"-penalty2")) { 
00483       penalty2 = (LOGPROB)atof(NEXTARG);
00484       continue;
00485 #endif
00486     } else if (strmatch(argv[i],"-spmodel") || strmatch(argv[i], "-sp")) { 
00487       spmodel_name = NEXTARG;
00488       continue;
00489 #ifdef MULTIPATH_VERSION
00490     } else if (strmatch(argv[i],"-iwsp")) { 
00491       enable_iwsp = TRUE;
00492       continue;
00493     } else if (strmatch(argv[i],"-iwsppenalty")) { 
00494       iwsp_penalty = atof(NEXTARG);
00495       continue;
00496 #endif
00497 #ifdef USE_NGRAM
00498     } else if (strmatch(argv[i],"-silhead")) { 
00499       head_silname = NEXTARG;
00500       continue;
00501     } else if (strmatch(argv[i],"-siltail")) { 
00502       tail_silname = NEXTARG;
00503       continue;
00504     } else if (strmatch(argv[i],"-iwspword")) { 
00505       enable_iwspword = TRUE;
00506       continue;
00507     } else if (strmatch(argv[i],"-iwspentry")) { 
00508       iwspentry = NEXTARG;
00509       continue;
00510     } else if (strmatch(argv[i],"-iwcache")) { 
00511 #ifdef HASH_CACHE_IW
00512       iw_cache_rate = atof(NEXTARG);
00513       if (iw_cache_rate > 100) iw_cache_rate = 100;
00514       if (iw_cache_rate < 1) iw_cache_rate = 1;
00515 #else
00516       j_printerr("Warning: option \"-iwcache\" ignored\n");
00517 #endif
00518       continue;
00519     } else if (strmatch(argv[i],"-sepnum")) { 
00520 #ifdef SEPARATE_BY_UNIGRAM
00521       separate_wnum = atoi(NEXTARG);
00522 #else
00523       j_printerr("Warning: option \"-sepnum\" ignored\n");
00524       i++;
00525 #endif
00526       continue;
00527 #endif 
00528 #ifdef USE_NETAUDIO
00529     } else if (strmatch(argv[i],"-NA")) { 
00530       netaudio_devname = NEXTARG;
00531       continue;
00532 #endif
00533     } else if (strmatch(argv[i],"-adport")) { 
00534       adinnet_port = atoi(NEXTARG);
00535       continue;
00536     } else if (strmatch(argv[i],"-nostrip")) { 
00537       strip_zero_sample = FALSE;
00538       continue;
00539     } else if (strmatch(argv[i],"-zmean")) { 
00540       use_zmean = TRUE;
00541       continue;
00542     } else if (strmatch(argv[i],"-nozmean")) { 
00543       use_zmean = FALSE;
00544       continue;
00545     } else if (strmatch(argv[i],"-zmeanframe")) { 
00546       zmean_frame = TRUE;
00547       continue;
00548     } else if (strmatch(argv[i],"-nozmeanframe")) { 
00549       zmean_frame = FALSE;
00550       continue;
00551 #ifdef SP_BREAK_CURRENT_FRAME
00552     } else if (strmatch(argv[i],"-spdur")) { 
00553       sp_frame_duration = atoi(NEXTARG);
00554       continue;
00555 #endif
00556     } else if (strmatch(argv[i],"-gprune")) { 
00557       tmparg = NEXTARG;
00558       if (strmatch(tmparg,"safe")) { 
00559         gprune_method = GPRUNE_SEL_SAFE;
00560       } else if (strmatch(tmparg,"heuristic")) {
00561         gprune_method = GPRUNE_SEL_HEURISTIC;
00562       } else if (strmatch(tmparg,"beam")) { 
00563         gprune_method = GPRUNE_SEL_BEAM;
00564       } else if (strmatch(tmparg,"none")) { 
00565         gprune_method = GPRUNE_SEL_NONE;
00566       } else if (strmatch(tmparg,"default")) {
00567         gprune_method = GPRUNE_SEL_UNDEF;
00568       } else {
00569         j_printerr("%s: no such pruning method \"%s\"\n", argv[0], tmparg);
00570         opt_terminate();
00571       }
00572       continue;
00573 
00574 
00575 
00576 
00577 
00578     } else if (strmatch(argv[i],"-no_ccd")) { 
00579       ccd_flag = FALSE;
00580       ccd_flag_force = TRUE;
00581       continue;
00582     } else if (strmatch(argv[i],"-force_ccd")) { 
00583       ccd_flag = TRUE;
00584       ccd_flag_force = TRUE;
00585       continue;
00586     } else if (strmatch(argv[i],"-iwcd1")) { 
00587       tmparg = NEXTARG;
00588       if (strmatch(tmparg, "max")) { 
00589         iwcdmethod = IWCD_MAX;
00590       } else if (strmatch(tmparg, "avg")) { 
00591         iwcdmethod = IWCD_AVG;
00592       } else if (strmatch(tmparg, "best")) { 
00593         iwcdmethod = IWCD_NBEST;
00594         tmparg = NEXTARG;
00595         iwcdmaxn = atoi(tmparg);
00596       } else {
00597         j_printerr("%s: -iwcd1: wrong argument (max|avg|best N): %s\n", argv[0], tmparg);
00598         opt_terminate();
00599       }
00600       continue;
00601     } else if (strmatch(argv[i],"-tmix")) { 
00602       if (i + 1 < argc && isdigit(argv[i+1][0])) {
00603         mixnum_thres = atoi(argv[++i]);
00604       }
00605       continue;
00606     } else if (strmatch(argv[i],"-b2") || strmatch(argv[i],"-bw") || strmatch(argv[i],"-wb")) { 
00607       enveloped_bestfirst_width = atoi(NEXTARG);
00608       continue;
00609     } else if (strmatch(argv[i],"-hgs")) { 
00610       hmm_gs_filename = filepath(NEXTARG, cwd);
00611       continue;
00612     } else if (strmatch(argv[i],"-booknum")) { 
00613       gs_statenum = atoi(NEXTARG);
00614       continue;
00615     } else if (strmatch(argv[i],"-gshmm")) { 
00616       hmm_gs_filename = filepath(NEXTARG, cwd);
00617       continue;
00618     } else if (strmatch(argv[i],"-gsnum")) { 
00619       gs_statenum = atoi(NEXTARG);
00620       continue;
00621     } else if (strmatch(argv[i],"-cmnload")) { 
00622       cmnload_filename = filepath(NEXTARG, cwd);
00623       continue;
00624     } else if (strmatch(argv[i],"-cmnsave")) { 
00625       cmnsave_filename = filepath(NEXTARG, cwd);
00626       continue;
00627     } else if (strmatch(argv[i],"-cmnupdate")) { 
00628       cmn_update = TRUE;
00629       continue;
00630     } else if (strmatch(argv[i],"-cmnnoupdate")) { 
00631       cmn_update = FALSE;
00632       continue;
00633     } else if (strmatch(argv[i],"-cmnmapweight")) { 
00634       cmn_map_weight = (float)atof(NEXTARG);
00635       continue;
00636     } else if (strmatch(argv[i],"-sscalc")) { 
00637       sscalc = TRUE;
00638       ssload_filename = NULL;
00639       continue;
00640     } else if (strmatch(argv[i],"-sscalclen")) { 
00641       sscalc_len = atoi(NEXTARG);
00642       continue;
00643     } else if (strmatch(argv[i],"-ssload")) { 
00644       ssload_filename = filepath(NEXTARG, cwd);
00645       sscalc = FALSE;
00646       continue;
00647 #ifdef CONFIDENCE_MEASURE
00648     } else if (strmatch(argv[i],"-cmalpha")) { 
00649 #ifdef CM_MULTIPLE_ALPHA
00650       cm_alpha_bgn = (LOGPROB)atof(NEXTARG);
00651       cm_alpha_end = (LOGPROB)atof(NEXTARG);
00652       cm_alpha_step = (LOGPROB)atof(NEXTARG);
00653       cm_alpha_num = (int)((cm_alpha_end - cm_alpha_bgn) / cm_alpha_step) + 1;
00654       if (cm_alpha_num > 100) j_error("too small step or wide range! outputnum > 100\n");
00655 #else
00656       cm_alpha = (LOGPROB)atof(NEXTARG);
00657 #endif
00658       continue;
00659 #ifdef CM_SEARCH_LIMIT
00660     } else if (strmatch(argv[i],"-cmthres")) { 
00661       cm_cut_thres = (LOGPROB)atof(NEXTARG);
00662       continue;
00663 #endif
00664 #ifdef CM_SEARCH_LIMIT_POP
00665     } else if (strmatch(argv[i],"-cmthres2")) { 
00666       cm_cut_thres_pop = (LOGPROB)atof(NEXTARG);
00667       continue;
00668 #endif
00669 #endif 
00670     } else if (strmatch(argv[i],"-gmm")) { 
00671       gmm_filename = filepath(NEXTARG, cwd);
00672       continue;
00673     } else if (strmatch(argv[i],"-gmmnum")) { 
00674       gmm_gprune_num = atoi(NEXTARG);
00675       continue;
00676     } else if (strmatch(argv[i],"-gmmreject")) {
00677       tmparg = NEXTARG;
00678       gmm_reject_cmn_string = (char *)mymalloc(strlen(tmparg)+1);
00679       strcpy(gmm_reject_cmn_string, tmparg);
00680       continue;
00681     } else if (strmatch(argv[i],"-help")) { 
00682       detailed_help();
00683     } else if (strmatch(argv[i],"--help")) {
00684       detailed_help();
00685     }
00686     if (argv[i][0] == '-' && strlen(argv[i]) == 2) {
00687       
00688       switch(argv[i][1]) {
00689       case 'h':                 
00690         hmmfilename = filepath(NEXTARG, cwd);
00691         break;
00692       case 'v':                 
00693         dictfilename = filepath(NEXTARG, cwd);
00694         break;
00695 #ifdef USE_NGRAM
00696       case 'd':                 
00697         ngram_filename = filepath(NEXTARG, cwd);
00698         ngram_filename_lr_arpa = NULL;
00699         ngram_filename_rl_arpa = NULL;
00700         break;
00701 #endif
00702       case 'b':                 
00703         specified_trellis_beam_width = atoi(NEXTARG);
00704         break;
00705       case 's':                 
00706         stack_size = atoi(NEXTARG);
00707         break;
00708       case 'n':                 
00709         nbest = atoi(NEXTARG);
00710         break;
00711       case 'm':                 
00712         hypo_overflow = atoi(NEXTARG);
00713         break;
00714       default:
00715         j_printerr("%s: wrong argument: %s\n", argv[0], argv[i]);
00716         opt_terminate();
00717       }
00718     } else {                    
00719       j_printerr("%s: wrong argument: %s\n", argv[0], argv[i]);
00720       opt_terminate();
00721     }
00722   }
00723 }
00724