66 wait ,
77} from "./utils.js" ;
88import { tts } from "./tts.js" ;
9+
910document . querySelector ( "#lang" ) . disabled = false ;
1011
1112function prepareTranscribe ( ) {
@@ -318,27 +319,51 @@ const languages = {
318319 styles : [ "Classical" , "Ecc" ] ,
319320 forms : [ "Phonetic" , "Phonemic" ] ,
320321 langCode : "la" ,
322+ ttsCode : "it-IT" ,
321323 } ,
322324 German : {
323325 styles : [ "Default" ] ,
324326 forms : [ "Phonetic" , "Phonemic" ] ,
325327 langCode : "de" ,
328+ ttsCode : "de-DE" ,
326329 } ,
327330 Portuguese : {
328331 styles : [ "Brazil" , "Portugal" ] ,
329332 forms : [ "Phonetic" , "Phonemic" ] ,
330333 langCode : "pt" ,
334+ ttsCode : "pt-BR" ,
331335 } ,
332336 Spanish : {
333337 styles : [ "Castilian" , "Latin_American " ] ,
334338 forms : [ "Phonetic" , "Phonemic" ] ,
335339 langCode : "es" ,
340+ ttsCode : "es-ES" ,
341+ } ,
342+ French : {
343+ styles : [ "Default" ] ,
344+ forms : [ "Phonemic" ] ,
345+ langCode : "fr" ,
346+ ttsCode : "fr-FR" ,
347+ } ,
348+ Russian : {
349+ styles : [ "Default" ] ,
350+ forms : [ "Phonetic" ] ,
351+ langCode : "ru" ,
352+ ttsCode : "ru-RU" ,
353+ } ,
354+ Polish : {
355+ styles : [ "Default" ] ,
356+ forms : [ "Phonemic" ] ,
357+ langCode : "pl" ,
358+ ttsCode : "pl-PL" ,
336359 } ,
337- French : { styles : [ "Default" ] , forms : [ "Phonemic" ] , langCode : "fr" } ,
338- Russian : { styles : [ "Default" ] , forms : [ "Phonetic" ] , langCode : "ru" } ,
339- Polish : { styles : [ "Default" ] , forms : [ "Phonemic" ] , langCode : "pl" } ,
340360
341- Ukrainian : { styles : [ "Default" ] , forms : [ "Phonetic" ] , langCode : "uk" } ,
361+ Ukrainian : {
362+ styles : [ "Default" ] ,
363+ forms : [ "Phonetic" ] ,
364+ langCode : "uk" ,
365+ ttsCode : "uk-UA" ,
366+ } ,
342367 Greek : {
343368 styles : [
344369 "5th BCE Attic" ,
@@ -349,6 +374,7 @@ const languages = {
349374 ] ,
350375 forms : [ "Phonetic" ] ,
351376 langCode : "grc" ,
377+ ttsCode : "el-GR" ,
352378 } ,
353379} ;
354380
@@ -382,14 +408,16 @@ const loadedLanguages = {};
382408
383409async function giveSelection ( selValue ) {
384410 selValue = this . value ;
411+ const langCode = languages [ selValue ] . langCode ;
412+ const ttsCode = languages [ selValue ] . ttsCode ;
413+
385414 if ( ! ( selValue in loadedLanguages ) ) {
386- const langCode = languages [ selValue ] . langCode ;
387415 disableAll ( ) ;
388416 await loadLanguage ( langCode ) ;
389417 enableAll ( ) ;
390418 loadedLanguages [ selValue ] = true ;
391419 }
392-
420+ selectTTS ( ttsCode ) ;
393421 sel2 . innerHTML = "" ;
394422 for ( const option of options2 ) {
395423 if ( option . dataset . option === selValue ) {
@@ -407,4 +435,14 @@ async function giveSelection(selValue) {
407435 sel3 . disabled = false ;
408436}
409437
438+ function selectTTS ( language ) {
439+ const relevantVoices = Array . from (
440+ document . querySelector ( "#tts" ) . options ,
441+ ) . filter ( ( x ) => ( x . getAttribute ( "data-lang" ) || "" ) . includes ( language ) ) ;
442+
443+ if ( relevantVoices . length > 0 ) {
444+ document . querySelector ( "#tts" ) . value = relevantVoices [ 0 ] . value ;
445+ }
446+ }
447+
410448document . getElementById ( "lang" ) . addEventListener ( "change" , giveSelection ) ;
0 commit comments