/** * @typedef {Object} GenerateOptions * @property {keyof typeof VOICES} [voice="zf_001"] 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. * @property {number} [maxChunkLength=200] Maximum character length per chunk. Longer chunks are split at punctuation boundaries. * @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 {string|null} [options.model_file_name=null] Override the ONNX model file name, excluding the .onnx suffix. * @param {string} [options.voicePath="/kokoro/voices"] Base path/directory for voice data files. * @param {import("@huggingface/transformers").ProgressCallback} [options.progress_callback=null] A callback function that is called with progress information. * @returns {Promise} The loaded model */ static from_pretrained(model_id: string, { dtype, device, model_file_name, voicePath, progress_callback }?: { dtype?: "fp32" | "fp16" | "q8" | "q4" | "q4f16"; device?: "wasm" | "webgpu" | "cpu" | null; model_file_name?: string | null; voicePath?: string; progress_callback?: import("@huggingface/transformers").ProgressCallback; }): Promise; /** * 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_maple: { name: string; language: string; gender: string; }; af_sol: { name: string; language: string; gender: string; }; bf_vale: { name: string; language: string; gender: string; }; zf_001: { name: string; language: string; gender: string; }; zf_002: { name: string; language: string; gender: string; }; zf_003: { name: string; language: string; gender: string; }; zf_004: { name: string; language: string; gender: string; }; zf_005: { name: string; language: string; gender: string; }; zf_006: { name: string; language: string; gender: string; }; zf_007: { name: string; language: string; gender: string; }; zf_008: { name: string; language: string; gender: string; }; zf_017: { name: string; language: string; gender: string; }; zf_018: { name: string; language: string; gender: string; }; zf_019: { name: string; language: string; gender: string; }; zf_021: { name: string; language: string; gender: string; }; zf_022: { name: string; language: string; gender: string; }; zf_023: { name: string; language: string; gender: string; }; zf_024: { name: string; language: string; gender: string; }; zf_026: { name: string; language: string; gender: string; }; zf_027: { name: string; language: string; gender: string; }; zf_028: { name: string; language: string; gender: string; }; zf_032: { name: string; language: string; gender: string; }; zf_036: { name: string; language: string; gender: string; }; zf_038: { name: string; language: string; gender: string; }; zf_039: { name: string; language: string; gender: string; }; zf_040: { name: string; language: string; gender: string; }; zf_042: { name: string; language: string; gender: string; }; zf_043: { name: string; language: string; gender: string; }; zf_044: { name: string; language: string; gender: string; }; zf_046: { name: string; language: string; gender: string; }; zf_047: { name: string; language: string; gender: string; }; zf_048: { name: string; language: string; gender: string; }; zf_049: { name: string; language: string; gender: string; }; zf_051: { name: string; language: string; gender: string; }; zf_059: { name: string; language: string; gender: string; }; zf_060: { name: string; language: string; gender: string; }; zf_067: { name: string; language: string; gender: string; }; zf_070: { name: string; language: string; gender: string; }; zf_071: { name: string; language: string; gender: string; }; zf_072: { name: string; language: string; gender: string; }; zf_073: { name: string; language: string; gender: string; }; zf_074: { name: string; language: string; gender: string; }; zf_075: { name: string; language: string; gender: string; }; zf_076: { name: string; language: string; gender: string; }; zf_077: { name: string; language: string; gender: string; }; zf_078: { name: string; language: string; gender: string; }; zf_079: { name: string; language: string; gender: string; }; zf_083: { name: string; language: string; gender: string; }; zf_084: { name: string; language: string; gender: string; }; zf_085: { name: string; language: string; gender: string; }; zf_086: { name: string; language: string; gender: string; }; zf_087: { name: string; language: string; gender: string; }; zf_088: { name: string; language: string; gender: string; }; zf_090: { name: string; language: string; gender: string; }; zf_092: { name: string; language: string; gender: string; }; zf_093: { name: string; language: string; gender: string; }; zf_094: { name: string; language: string; gender: string; }; zf_099: { name: string; language: string; gender: string; }; zm_009: { name: string; language: string; gender: string; }; zm_010: { name: string; language: string; gender: string; }; zm_011: { name: string; language: string; gender: string; }; zm_012: { name: string; language: string; gender: string; }; zm_013: { name: string; language: string; gender: string; }; zm_014: { name: string; language: string; gender: string; }; zm_015: { name: string; language: string; gender: string; }; zm_016: { name: string; language: string; gender: string; }; zm_020: { name: string; language: string; gender: string; }; zm_025: { name: string; language: string; gender: string; }; zm_029: { name: string; language: string; gender: string; }; zm_030: { name: string; language: string; gender: string; }; zm_031: { name: string; language: string; gender: string; }; zm_033: { name: string; language: string; gender: string; }; zm_034: { name: string; language: string; gender: string; }; zm_035: { name: string; language: string; gender: string; }; zm_037: { name: string; language: string; gender: string; }; zm_041: { name: string; language: string; gender: string; }; zm_045: { name: string; language: string; gender: string; }; zm_050: { name: string; language: string; gender: string; }; zm_052: { name: string; language: string; gender: string; }; zm_053: { name: string; language: string; gender: string; }; zm_054: { name: string; language: string; gender: string; }; zm_055: { name: string; language: string; gender: string; }; zm_056: { name: string; language: string; gender: string; }; zm_057: { name: string; language: string; gender: string; }; zm_058: { name: string; language: string; gender: string; }; zm_061: { name: string; language: string; gender: string; }; zm_062: { name: string; language: string; gender: string; }; zm_063: { name: string; language: string; gender: string; }; zm_064: { name: string; language: string; gender: string; }; zm_065: { name: string; language: string; gender: string; }; zm_066: { name: string; language: string; gender: string; }; zm_068: { name: string; language: string; gender: string; }; zm_069: { name: string; language: string; gender: string; }; zm_080: { name: string; language: string; gender: string; }; zm_081: { name: string; language: string; gender: string; }; zm_082: { name: string; language: string; gender: string; }; zm_089: { name: string; language: string; gender: string; }; zm_091: { name: string; language: string; gender: string; }; zm_095: { name: string; language: string; gender: string; }; zm_096: { name: string; language: string; gender: string; }; zm_097: { name: string; language: string; gender: string; }; zm_098: { name: string; language: string; gender: string; }; zm_100: { name: string; language: string; gender: string; }; }>; list_voices(): void; _validate_voice(voice: any): "b" | "z" | "a"; /** * Generate audio from text. * * @param {string} text The input text * @param {GenerateOptions} options Additional options * @returns {Promise} The generated audio */ generate(text: string, { voice, speed }?: GenerateOptions): Promise; /** * Generate audio from input ids. * @param {Tensor} input_ids The input ids * @param {GenerateOptions} options Additional options * @returns {Promise} The generated audio */ generate_from_ids(input_ids: Tensor, { voice, speed }?: GenerateOptions): Promise; /** * Split a long text into smaller chunks at punctuation boundaries. * Falls back to hard split at maxLength if no suitable boundary is found. * @param {string} text The text to split * @param {number} maxLength Maximum length of each chunk * @returns {string[]} Array of text chunks * @private */ private _splitLongText; /** * 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, maxChunkLength }?: StreamGenerateOptions): AsyncGenerator<{ text: string; phonemes: string; audio: RawAudio; }, void, void>; } export namespace env { let cacheDir: string; let allowLocalModels: boolean; 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; /** * Maximum character length per chunk. Longer chunks are split at punctuation boundaries. */ maxChunkLength?: number; }; 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