@@ -13,7 +13,11 @@ EMSCRIPTEN_BINDINGS(whisper) {
1313 for (size_t i = 0 ; i < g_contexts.size (); ++i) {
1414 if (g_contexts[i] == nullptr ) {
1515 g_contexts[i] = whisper_init (path_model.c_str ());
16- return i + 1 ;
16+ if (g_contexts[i] != nullptr ) {
17+ return i + 1 ;
18+ } else {
19+ return (size_t ) 0 ;
20+ }
1721 }
1822 }
1923
@@ -29,7 +33,7 @@ EMSCRIPTEN_BINDINGS(whisper) {
2933 }
3034 }));
3135
32- emscripten::function (" full_default" , emscripten::optional_override ([](size_t index, const emscripten::val & audio) {
36+ emscripten::function (" full_default" , emscripten::optional_override ([](size_t index, const emscripten::val & audio, const std::string & lang, bool translate ) {
3337 --index;
3438
3539 if (index >= g_contexts.size ()) {
@@ -42,15 +46,20 @@ EMSCRIPTEN_BINDINGS(whisper) {
4246
4347 struct whisper_full_params params = whisper_full_default_params (whisper_sampling_strategy::WHISPER_SAMPLING_GREEDY);
4448
49+ printf (" full_default: available threads %d\n " , std::thread::hardware_concurrency ());
50+
4551 params.print_realtime = true ;
4652 params.print_progress = false ;
4753 params.print_timestamps = true ;
4854 params.print_special_tokens = false ;
49- params.translate = false ;
50- params.language = " en" ;
55+ params.translate = translate ;
56+ params.language = whisper_is_multilingual (g_contexts[index]) ? lang. c_str () : " en" ;
5157 params.n_threads = std::min (8 , (int ) std::thread::hardware_concurrency ());
5258 params.offset_ms = 0 ;
5359
60+ printf (" full_default: using %d threads\n " , params.n_threads );
61+ printf (" full_default: language '%s'\n " , params.language );
62+
5463 std::vector<float > pcmf32;
5564 const int n = audio[" length" ].as <int >();
5665
0 commit comments