UNPKG

kokoro-js

Version:

High-quality text-to-speech for the web

295 lines 9.26 kB
/** * @typedef {Object} GenerateOptions * @property {keyof typeof VOICES} [voice="af_heart"] The voice * @property {number} [speed=1] The speaking speed */ /** * @typedef {Object} StreamProperties * @property {RegExp} [split_pattern] The pattern to split the input text. If unset, the default sentence splitter will be used. * @typedef {GenerateOptions & StreamProperties} StreamGenerateOptions */ export class KokoroTTS { /** * Load a KokoroTTS model from the Hugging Face Hub. * @param {string} model_id The model id * @param {Object} options Additional options * @param {"fp32"|"fp16"|"q8"|"q4"|"q4f16"} [options.dtype="fp32"] The data type to use. * @param {"wasm"|"webgpu"|"cpu"|null} [options.device=null] The device to run the model on. * @param {import("@huggingface/transformers").ProgressCallback} [options.progress_callback=null] A callback function that is called with progress information. * @returns {Promise<KokoroTTS>} The loaded model */ static from_pretrained(model_id: string, { dtype, device, progress_callback }?: { dtype?: "fp32" | "fp16" | "q8" | "q4" | "q4f16"; device?: "wasm" | "webgpu" | "cpu" | null; progress_callback?: import("@huggingface/transformers").ProgressCallback; }): Promise<KokoroTTS>; /** * Create a new KokoroTTS instance. * @param {import('@huggingface/transformers').StyleTextToSpeech2Model} model The model * @param {import('@huggingface/transformers').PreTrainedTokenizer} tokenizer The tokenizer */ constructor(model: import("@huggingface/transformers").StyleTextToSpeech2Model, tokenizer: import("@huggingface/transformers").PreTrainedTokenizer); model: StyleTextToSpeech2Model; tokenizer: import("@huggingface/transformers").PreTrainedTokenizer; get voices(): Readonly<{ af_heart: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; af_alloy: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_aoede: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_bella: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; af_jessica: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_kore: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_nicole: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; af_nova: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_river: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_sarah: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; af_sky: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_adam: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_echo: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_eric: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_fenrir: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_liam: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_michael: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_onyx: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_puck: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; am_santa: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; bf_emma: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; bf_isabella: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; bm_george: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; bm_lewis: { name: string; language: string; gender: string; targetQuality: string; overallGrade: string; }; bf_alice: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; bf_lily: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; bm_daniel: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; bm_fable: { name: string; language: string; gender: string; traits: string; targetQuality: string; overallGrade: string; }; }>; list_voices(): void; _validate_voice(voice: any): "b" | "a"; /** * Generate audio from text. * * @param {string} text The input text * @param {GenerateOptions} options Additional options * @returns {Promise<RawAudio>} The generated audio */ generate(text: string, { voice, speed }?: GenerateOptions): Promise<RawAudio>; /** * Generate audio from input ids. * @param {Tensor} input_ids The input ids * @param {GenerateOptions} options Additional options * @returns {Promise<RawAudio>} The generated audio */ generate_from_ids(input_ids: Tensor, { voice, speed }?: GenerateOptions): Promise<RawAudio>; /** * Generate audio from text in a streaming fashion. * @param {string|TextSplitterStream} text The input text * @param {StreamGenerateOptions} options Additional options * @returns {AsyncGenerator<{text: string, phonemes: string, audio: RawAudio}, void, void>} */ stream(text: string | TextSplitterStream, { voice, speed, split_pattern }?: StreamGenerateOptions): AsyncGenerator<{ text: string; phonemes: string; audio: RawAudio; }, void, void>; } export namespace env { let wasmPaths: import("onnxruntime-common").Env.WasmPrefixOrFilePaths; } export { TextSplitterStream }; export type GenerateOptions = { /** * The voice */ voice?: keyof typeof VOICES; /** * The speaking speed */ speed?: number; }; export type StreamProperties = { /** * The pattern to split the input text. If unset, the default sentence splitter will be used. */ split_pattern?: RegExp; }; export type StreamGenerateOptions = GenerateOptions & StreamProperties; import { StyleTextToSpeech2Model } from "@huggingface/transformers"; import { RawAudio } from "@huggingface/transformers"; import { Tensor } from "@huggingface/transformers"; import { TextSplitterStream } from "./splitter.js"; import { VOICES } from "./voices.js"; //# sourceMappingURL=kokoro.d.ts.map