@@ -65,13 +65,14 @@ EMSCRIPTEN_BINDINGS(whisper) {
6565        }
6666
6767        struct  whisper_full_params  params = whisper_full_default_params (whisper_sampling_strategy::WHISPER_SAMPLING_GREEDY);
68+         bool  is_multilingual = whisper_is_multilingual (g_contexts[index]);
6869
6970        params.print_realtime    = true ;
7071        params.print_progress    = false ;
7172        params.print_timestamps  = true ;
7273        params.print_special     = false ;
7374        params.translate         = translate;
74-         params.language          = whisper_is_multilingual (g_contexts[index])  ? strdup (lang.c_str ()) : " en"  ;
75+         params.language          = is_multilingual  ? strdup (lang.c_str ()) : " en"  ;
7576        params.n_threads         = std::min (nthreads, std::min (16 , mpow2 (std::thread::hardware_concurrency ())));
7677        params.offset_ms         = 0 ;
7778
@@ -102,11 +103,11 @@ EMSCRIPTEN_BINDINGS(whisper) {
102103
103104        //  run the worker
104105        {
105-             g_worker = std::thread ([index, params, pcmf32 = std::move (pcmf32)]() {
106+             g_worker = std::thread ([index, params, pcmf32 = std::move (pcmf32), is_multilingual ]() {
106107                whisper_reset_timings (g_contexts[index]);
107108                whisper_full (g_contexts[index], params, pcmf32.data (), pcmf32.size ());
108109                whisper_print_timings (g_contexts[index]);
109-                 if  (params. language  !=  nullptr  &&  strcmp (params. language ,  " en " ) !=  0 ) {
110+                 if  (is_multilingual ) {
110111                    free ((void *)params.language );
111112                }
112113            });
0 commit comments