| 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); |