diff options
Diffstat (limited to 'projects/text_to_speech/index.js')
-rw-r--r-- | projects/text_to_speech/index.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/projects/text_to_speech/index.js b/projects/text_to_speech/index.js new file mode 100644 index 00000000..63059a8d --- /dev/null +++ b/projects/text_to_speech/index.js @@ -0,0 +1,38 @@ +const worker = {} +if (!worker.current) { + // Create the worker if it does not yet exist. + worker.current = new Worker(new URL('./worker.js', import.meta.url), { + type: 'module' + }); +} + +window.doSpeech = false; + +const onMessageReceived = (e) => { + switch (e.data.status) { + case 'error': + window.onSpeechResponse(null); + window.doSpeech = false; + break; + case 'complete': + const blobUrl = URL.createObjectURL(e.data.output); + window.onSpeechResponse(blobUrl); + window.doSpeech = false; + break; + } +}; +worker.current.addEventListener('message', onMessageReceived); + +import { DEFAULT_SPEAKER, SPEAKERS } from './constants'; + +const handleGenerateSpeech = (text, speaker_id=DEFAULT_SPEAKER) => { + window.doSpeech = true; + worker.current.postMessage({ + text, + speaker_id: speaker_id, + }); +}; + +window.SPEAKERS = SPEAKERS; +window.handleGenerateSpeech = handleGenerateSpeech; +window.onSpeechResponse = (url) => console.log(url);
\ No newline at end of file |