Skip to content

Commit b831394

Browse files
committed
Adding automatic TTS selection
1 parent 9bff02c commit b831394

2 files changed

Lines changed: 48 additions & 6 deletions

File tree

wiktionary_pron/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,10 @@
256256
padding: 0px;
257257
}
258258

259+
#tts{
260+
max-width: 350px;
261+
}
262+
259263
</style>
260264

261265

wiktionary_pron/scripts/main.js

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
wait,
77
} from "./utils.js";
88
import { tts } from "./tts.js";
9+
910
document.querySelector("#lang").disabled = false;
1011

1112
function 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

383409
async 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+
410448
document.getElementById("lang").addEventListener("change", giveSelection);

0 commit comments

Comments
 (0)