| let tts = null; |
| self.Module = { |
| |
| locateFile: function (path, scriptDirectory = "") { |
| return scriptDirectory + path; |
| }, |
| |
| setStatus: function (status) { |
| self.postMessage({ type: "sherpa-onnx-tts-progress", status }); |
| }, |
| onRuntimeInitialized: function () { |
| console.log("Model files downloaded!"); |
| console.log("Initializing tts ......"); |
| try { |
| tts = createOfflineTts(self.Module); |
| self.postMessage({ |
| type: "sherpa-onnx-tts-ready", |
| modelType: getDefaultOfflineTtsModelType(), |
| numSpeakers: tts.numSpeakers, |
| }); |
| } catch (e) { |
| self.postMessage({ |
| type: "error", |
| message: "TTS Initialization failed: " + e.message, |
| }); |
| } |
| }, |
| }; |
| importScripts("sherpa-onnx-wasm-main-tts.js"); |
| importScripts("sherpa-onnx-tts.js"); |
| self.onmessage = async (e) => { |
| const { type, text, sid, speed, genConfig } = e.data; |
| if (type === "generate") { |
| if (!tts) { |
| return; |
| } |
| try { |
| const audio = tts.generate({ |
| text: text, |
| sid: sid || 0, |
| speed: speed || 1.0, |
| }); |
| const samples = audio.samples; |
| const sampleRate = tts.sampleRate; |
| self.postMessage( |
| { |
| type: "sherpa-onnx-tts-result", |
| samples: samples, |
| sampleRate: sampleRate, |
| }, |
| [samples.buffer], |
| ); |
| } catch (err) { |
| self.postMessage({ |
| type: "error", |
| message: "Generation failed: " + err.message, |
| }); |
| } |
| } else if (type === "generateWithConfig") { |
| if (!tts) { |
| return; |
| } |
| try { |
| const audio = tts.generateWithConfig(text, genConfig || {}); |
| const samples = audio.samples; |
| const sampleRate = audio.sampleRate; |
| self.postMessage( |
| { |
| type: "sherpa-onnx-tts-result", |
| samples: samples, |
| sampleRate: sampleRate, |
| }, |
| [samples.buffer], |
| ); |
| } catch (err) { |
| self.postMessage({ |
| type: "error", |
| message: "Generation failed: " + err.message, |
| }); |
| } |
| } |
| }; |
|
|