@@ -7,6 +7,11 @@ use crate::adapter::deepgram_compat::{
77
88const NOVA2_MULTI_LANGS : & [ & str ] = & [ "en" , "es" ] ;
99const NOVA3_MULTI_LANGS : & [ & str ] = & [ "en" , "es" , "fr" , "de" , "hi" , "ru" , "pt" , "ja" , "it" , "nl" ] ;
10+ const LANGUAGE_DETECTION_LANGS : & [ & str ] = & [
11+ "bg" , "ca" , "cs" , "da" , "de" , "el" , "en" , "es" , "et" , "fi" , "fr" , "hi" , "hu" , "id" , "it" , "ja" ,
12+ "ko" , "lt" , "lv" , "ms" , "nl" , "no" , "pl" , "pt" , "ro" , "ru" , "sk" , "sv" , "th" , "tr" , "uk" , "vi" ,
13+ "zh" ,
14+ ] ;
1015
1116pub fn can_use_multi ( model : & str , languages : & [ hypr_language:: Language ] ) -> bool {
1217 if languages. len ( ) < 2 {
@@ -55,7 +60,7 @@ impl LanguageQueryStrategy for DeepgramLanguageStrategy {
5560 if can_use_multi ( model, & params. languages ) {
5661 query_pairs. append_pair ( "language" , "multi" ) ;
5762 } else if mode == TranscriptionMode :: Batch {
58- query_pairs . append_pair ( "detect_language" , "true" ) ;
63+ append_detect_language_query ( query_pairs , & params . languages ) ;
5964 } else if let Some ( language) = params. languages . first ( ) {
6065 let code = single_language_query_code ( params, language) ;
6166 query_pairs. append_pair ( "language" , & code) ;
@@ -82,6 +87,23 @@ fn single_language_query_code(params: &ListenParams, language: &hypr_language::L
8287 }
8388}
8489
90+ fn append_detect_language_query < ' a > (
91+ query_pairs : & mut Serializer < ' a , UrlQuery > ,
92+ languages : & [ hypr_language:: Language ] ,
93+ ) {
94+ if languages. iter ( ) . all ( supports_language_detection) {
95+ for language in languages {
96+ query_pairs. append_pair ( "detect_language" , language. iso639 ( ) . code ( ) ) ;
97+ }
98+ } else {
99+ query_pairs. append_pair ( "detect_language" , "true" ) ;
100+ }
101+ }
102+
103+ pub ( super ) fn supports_language_detection ( language : & hypr_language:: Language ) -> bool {
104+ LANGUAGE_DETECTION_LANGS . contains ( & language. iso639 ( ) . code ( ) )
105+ }
106+
85107fn effective_model ( params : & ListenParams ) -> Option < DeepgramModel > {
86108 params
87109 . model
0 commit comments