You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gpt4free/projects/text_to_speech/index.js

38 lines
1.0 KiB
JavaScript

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