-
Notifications
You must be signed in to change notification settings - Fork 0
/
scripts.js
80 lines (52 loc) · 1.76 KB
/
scripts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const selecaoVoz = document.querySelector("#selecao-voz");
const entradaTexto = document.querySelector("#entrada-de-texto");
const botaoOuvir = document.querySelector("#ouvir-btn");
const botaoBaixarTexto = document.querySelector("#baixar-texto-btn");
const uploadArquivo = document.querySelector("#upload-arquivo");
// Iniciar a PI de voz
const fala = new SpeechSynthesisUtterance();
let vozesDisp = [];
// Preencher o select de vozes (idiomas)
const atualizarValores = () => {
vozesDisp = window.speechSynthesis.getVoices();
fala.voice = vozesDisp[0];
// console.log(vozesDisp);
vozesDisp.forEach((voz, index) => {
const opcao = document.createElement("option");
opcao.value = index;
opcao.textContent = voz.name;
selecaoVoz.appendChild(opcao);
})
}
window.speechSynthesis.onvoiceschanged = atualizarValores;
// Mudar a voz (idioma)
selecaoVoz.addEventListener("change", () => {
fala.voice = vozesDisp[selecaoVoz.value];
})
// Converter o texto para voz
botaoOuvir.addEventListener("click", () => {
fala.text = entradaTexto.value;
window.speechSynthesis.speak(fala);
})
// Baixar o arquivo.txt com o texto digitado
botaoBaixarTexto.addEventListener("click", () => {
const texto = entradaTexto.value;
const blob = new Blob([texto], { type: "text/plain" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "texto.txt";
a.click();
URL.revokeObjectURL(url);
})
// Importando o texto de um arquivo.txt
uploadArquivo.addEventListener("change", (event) => {
const arquivo = event.target.files[0];
if (arquivo) {
const leitor = new FileReader();
leitor.onload = (e) => {
entradaTexto.value = e.target.result;
}
leitor.readAsText(arquivo);
}
})