@@ -106,6 +106,11 @@ static char * whisper_param_turn_lowercase(char * in){
106
106
return in;
107
107
}
108
108
109
+ static char * requires_value_error (const std::string & arg) {
110
+ fprintf (stderr, " error: argument %s requires value\n " , arg.c_str ());
111
+ exit (0 );
112
+ }
113
+
109
114
static bool whisper_params_parse (int argc, char ** argv, whisper_params & params) {
110
115
for (int i = 1 ; i < argc; i++) {
111
116
std::string arg = argv[i];
@@ -124,22 +129,23 @@ static bool whisper_params_parse(int argc, char ** argv, whisper_params & params
124
129
whisper_print_usage (argc, argv, params);
125
130
exit (0 );
126
131
}
127
- else if (arg == " -t" || arg == " --threads" ) { params.n_threads = std::stoi (argv[++i]); }
128
- else if (arg == " -p" || arg == " --processors" ) { params.n_processors = std::stoi (argv[++i]); }
129
- else if (arg == " -ot" || arg == " --offset-t" ) { params.offset_t_ms = std::stoi (argv[++i]); }
130
- else if (arg == " -on" || arg == " --offset-n" ) { params.offset_n = std::stoi (argv[++i]); }
131
- else if (arg == " -d" || arg == " --duration" ) { params.duration_ms = std::stoi (argv[++i]); }
132
- else if (arg == " -mc" || arg == " --max-context" ) { params.max_context = std::stoi (argv[++i]); }
133
- else if (arg == " -ml" || arg == " --max-len" ) { params.max_len = std::stoi (argv[++i]); }
134
- else if (arg == " -bo" || arg == " --best-of" ) { params.best_of = std::stoi (argv[++i]); }
135
- else if (arg == " -bs" || arg == " --beam-size" ) { params.beam_size = std::stoi (argv[++i]); }
136
- else if (arg == " -ac" || arg == " --audio-ctx" ) { params.audio_ctx = std::stoi (argv[++i]); }
137
- else if (arg == " -wt" || arg == " --word-thold" ) { params.word_thold = std::stof (argv[++i]); }
138
- else if (arg == " -et" || arg == " --entropy-thold" ) { params.entropy_thold = std::stof (argv[++i]); }
139
- else if (arg == " -lpt" || arg == " --logprob-thold" ) { params.logprob_thold = std::stof (argv[++i]); }
140
- else if (arg == " -nth" || arg == " --no-speech-thold" ) { params.no_speech_thold = std::stof (argv[++i]); }
141
- else if (arg == " -tp" || arg == " --temperature" ) { params.temperature = std::stof (argv[++i]); }
142
- else if (arg == " -tpi" || arg == " --temperature-inc" ) { params.temperature_inc = std::stof (argv[++i]); }
132
+ #define ARGV_NEXT (((i + 1 ) < argc) ? argv[++i] : requires_value_error(arg))
133
+ else if (arg == " -t" || arg == " --threads" ) { params.n_threads = std::stoi (ARGV_NEXT); }
134
+ else if (arg == " -p" || arg == " --processors" ) { params.n_processors = std::stoi (ARGV_NEXT); }
135
+ else if (arg == " -ot" || arg == " --offset-t" ) { params.offset_t_ms = std::stoi (ARGV_NEXT); }
136
+ else if (arg == " -on" || arg == " --offset-n" ) { params.offset_n = std::stoi (ARGV_NEXT); }
137
+ else if (arg == " -d" || arg == " --duration" ) { params.duration_ms = std::stoi (ARGV_NEXT); }
138
+ else if (arg == " -mc" || arg == " --max-context" ) { params.max_context = std::stoi (ARGV_NEXT); }
139
+ else if (arg == " -ml" || arg == " --max-len" ) { params.max_len = std::stoi (ARGV_NEXT); }
140
+ else if (arg == " -bo" || arg == " --best-of" ) { params.best_of = std::stoi (ARGV_NEXT); }
141
+ else if (arg == " -bs" || arg == " --beam-size" ) { params.beam_size = std::stoi (ARGV_NEXT); }
142
+ else if (arg == " -ac" || arg == " --audio-ctx" ) { params.audio_ctx = std::stoi (ARGV_NEXT); }
143
+ else if (arg == " -wt" || arg == " --word-thold" ) { params.word_thold = std::stof (ARGV_NEXT); }
144
+ else if (arg == " -et" || arg == " --entropy-thold" ) { params.entropy_thold = std::stof (ARGV_NEXT); }
145
+ else if (arg == " -lpt" || arg == " --logprob-thold" ) { params.logprob_thold = std::stof (ARGV_NEXT); }
146
+ else if (arg == " -nth" || arg == " --no-speech-thold" ) { params.no_speech_thold = std::stof (ARGV_NEXT); }
147
+ else if (arg == " -tp" || arg == " --temperature" ) { params.temperature = std::stof (ARGV_NEXT); }
148
+ else if (arg == " -tpi" || arg == " --temperature-inc" ) { params.temperature_inc = std::stof (ARGV_NEXT); }
143
149
else if (arg == " -debug" || arg == " --debug-mode" ) { params.debug_mode = true ; }
144
150
else if (arg == " -tr" || arg == " --translate" ) { params.translate = true ; }
145
151
else if (arg == " -di" || arg == " --diarize" ) { params.diarize = true ; }
@@ -151,31 +157,31 @@ static bool whisper_params_parse(int argc, char ** argv, whisper_params & params
151
157
else if (arg == " -osrt" || arg == " --output-srt" ) { params.output_srt = true ; }
152
158
else if (arg == " -owts" || arg == " --output-words" ) { params.output_wts = true ; }
153
159
else if (arg == " -olrc" || arg == " --output-lrc" ) { params.output_lrc = true ; }
154
- else if (arg == " -fp" || arg == " --font-path" ) { params.font_path = argv[++i] ; }
160
+ else if (arg == " -fp" || arg == " --font-path" ) { params.font_path = ARGV_NEXT ; }
155
161
else if (arg == " -ocsv" || arg == " --output-csv" ) { params.output_csv = true ; }
156
162
else if (arg == " -oj" || arg == " --output-json" ) { params.output_jsn = true ; }
157
163
else if (arg == " -ojf" || arg == " --output-json-full" ){ params.output_jsn_full = params.output_jsn = true ; }
158
- else if (arg == " -of" || arg == " --output-file" ) { params.fname_out .emplace_back (argv[++i] ); }
164
+ else if (arg == " -of" || arg == " --output-file" ) { params.fname_out .emplace_back (ARGV_NEXT ); }
159
165
else if (arg == " -np" || arg == " --no-prints" ) { params.no_prints = true ; }
160
166
else if (arg == " -ps" || arg == " --print-special" ) { params.print_special = true ; }
161
167
else if (arg == " -pc" || arg == " --print-colors" ) { params.print_colors = true ; }
162
168
else if (arg == " -pp" || arg == " --print-progress" ) { params.print_progress = true ; }
163
169
else if (arg == " -nt" || arg == " --no-timestamps" ) { params.no_timestamps = true ; }
164
- else if (arg == " -l" || arg == " --language" ) { params.language = whisper_param_turn_lowercase (argv[++i] ); }
170
+ else if (arg == " -l" || arg == " --language" ) { params.language = whisper_param_turn_lowercase (ARGV_NEXT ); }
165
171
else if (arg == " -dl" || arg == " --detect-language" ) { params.detect_language = true ; }
166
- else if ( arg == " --prompt" ) { params.prompt = argv[++i] ; }
167
- else if (arg == " -m" || arg == " --model" ) { params.model = argv[++i] ; }
168
- else if (arg == " -f" || arg == " --file" ) { params.fname_inp .emplace_back (argv[++i] ); }
169
- else if (arg == " -oved" || arg == " --ov-e-device" ) { params.openvino_encode_device = argv[++i] ; }
170
- else if (arg == " -dtw" || arg == " --dtw" ) { params.dtw = argv[++i] ; }
172
+ else if ( arg == " --prompt" ) { params.prompt = ARGV_NEXT ; }
173
+ else if (arg == " -m" || arg == " --model" ) { params.model = ARGV_NEXT ; }
174
+ else if (arg == " -f" || arg == " --file" ) { params.fname_inp .emplace_back (ARGV_NEXT ); }
175
+ else if (arg == " -oved" || arg == " --ov-e-device" ) { params.openvino_encode_device = ARGV_NEXT ; }
176
+ else if (arg == " -dtw" || arg == " --dtw" ) { params.dtw = ARGV_NEXT ; }
171
177
else if (arg == " -ls" || arg == " --log-score" ) { params.log_score = true ; }
172
178
else if (arg == " -ng" || arg == " --no-gpu" ) { params.use_gpu = false ; }
173
179
else if (arg == " -fa" || arg == " --flash-attn" ) { params.flash_attn = true ; }
174
180
else if (arg == " -sns" || arg == " --suppress-nst" ) { params.suppress_nst = true ; }
175
- else if ( arg == " --suppress-regex" ) { params.suppress_regex = argv[++i] ; }
176
- else if ( arg == " --grammar" ) { params.grammar = argv[++i] ; }
177
- else if ( arg == " --grammar-rule" ) { params.grammar_rule = argv[++i] ; }
178
- else if ( arg == " --grammar-penalty" ) { params.grammar_penalty = std::stof (argv[++i] ); }
181
+ else if ( arg == " --suppress-regex" ) { params.suppress_regex = ARGV_NEXT ; }
182
+ else if ( arg == " --grammar" ) { params.grammar = ARGV_NEXT ; }
183
+ else if ( arg == " --grammar-rule" ) { params.grammar_rule = ARGV_NEXT ; }
184
+ else if ( arg == " --grammar-penalty" ) { params.grammar_penalty = std::stof (ARGV_NEXT ); }
179
185
else {
180
186
fprintf (stderr, " error: unknown argument: %s\n " , arg.c_str ());
181
187
whisper_print_usage (argc, argv, params);
0 commit comments