web-ai-toolkit
Version:
AI powered features on the web made easy
38 lines (31 loc) • 863 B
text/typescript
import { KokoroTTS } from "kokoro-js";
import { webGPUCheck } from "../../utils";
let synthesizer: any = undefined;
export async function runSynthesizer(text: string) {
return new Promise(async (resolve, reject) => {
try {
if (!synthesizer) {
await loadSynthesizer();
};
const out = await synthesizer.generate(text, {
voice: "af_heart",
});
resolve(out);
}
catch (err) {
reject(err);
}
});
}
export async function loadSynthesizer() {
return new Promise(async (resolve) => {
const gpuCheck = await webGPUCheck();
const model_id = "onnx-community/Kokoro-82M-v1.0-ONNX";
const tts = await KokoroTTS.from_pretrained(model_id, {
dtype: gpuCheck ? "fp32" : "q8",
device: gpuCheck ? "webgpu" : "wasm",
});
synthesizer = tts;
resolve(synthesizer);
})
}