summaryrefslogtreecommitdiffstats
path: root/projects/text_to_speech/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'projects/text_to_speech/index.js')
-rw-r--r--projects/text_to_speech/index.js38
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