UNPKG

web-ai-toolkit

Version:

AI powered features on the web made easy

33 lines (30 loc) 944 B
/* eslint-disable no-async-promise-executor */ import { pipeline, env } from '@huggingface/transformers'; let synthesizer: any = undefined; export async function runSynthesizer(text: string, model: string = "Xenova/mms-tts-eng") { return new Promise(async (resolve, reject) => { try { if (!synthesizer) { await loadSynthesizer(model); }; const out = await synthesizer(text); resolve(out); } catch (err) { reject(err); } }); } async function loadSynthesizer(model: string): Promise<void> { return new Promise(async (resolve) => { if (!synthesizer) { env.allowLocalModels = false; env.useBrowserCache = false; synthesizer = await pipeline('text-to-speech', model || 'Xenova/mms-tts-eng'); resolve(); } else { resolve(); } }); }