-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtextspeechconverter_js.html
52 lines (42 loc) · 1.74 KB
/
textspeechconverter_js.html
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
<script>
const player = document.getElementById('player');
const textToSpeechBtn = document.getElementById('textToSpeechBtn');
const speechToTextBtn = document.getElementById('speechToTextBtn');
const preloader1 = document.getElementById('preloader1');
const preloader2 = document.getElementById('preloader2');
speechToTextBtn.addEventListener('click', _ => {
preloader2.style.display = 'inherit';
speechToTextBtn.style.display = 'none';
const file = document.querySelector('input[type=file]').files[0];
const reader = new FileReader();
reader.addEventListener('load', e => {
bytes = [...new Uint8Array(e.target.result)]
google.script.run.withSuccessHandler(displayText).withFailureHandler(onFailure).speechToText(bytes);
});
reader.readAsArrayBuffer(file);
});
function displayText(text) {
preloader2.style.display = 'none';
speechToTextBtn.style.display = 'initial';
document.getElementById('speechToTextTextArea').value = text;
}
textToSpeechBtn.addEventListener('click', _ => {
preloader1.style.display = 'inherit';
textToSpeechBtn.style.display = 'none';
let text = document.getElementById('textToSpeechTextArea').value;
google.script.run.withSuccessHandler(loadAudio).withFailureHandler(onFailure).textToSpeech(text);
});
function loadAudio(bytes) {
var myBlob = new Blob([new Uint8Array(bytes)]);
var url = (window.URL || window.webkitURL).createObjectURL(myBlob);
const audio = document.getElementById('audio');
const source = document.getElementById('source');
source.src = url;
audio.load();
preloader1.style.display = 'none';
textToSpeechBtn.style.display = 'initial';
}
function onFailure(err) {
console.error(err);
}
</script>