/** * vozz — TTS ultrarrealista em português do Brasil, 100% offline no navegador. */ export type NomeVoz = "dora" | "alex" | "santa" | (string & {}); export type Dispositivo = "auto" | "webgpu" | "wasm" | "cpu"; export type Precisao = "q8" | "fp32" | "fp16" | "q4"; export interface Voz { /** Identificador interno (nome do arquivo de embedding). */ id: string; /** Nome amigável. */ nome: string; genero: "feminina" | "masculina"; idioma: string; descricao: string; } export interface ProgressoCarregamento { status: string; progresso?: number; arquivo?: string; } export interface OpcoesCarregar { /** Backend de inferência. `auto` usa WebGPU se houver, senão WASM. */ dispositivo?: Dispositivo; /** Quantização dos pesos. Padrão: `q8` (~86 MB) ou `fp32` no WebGPU. */ precisao?: Precisao; /** Callback de progresso do download dos pesos. */ aoProgredir?: (p: ProgressoCarregamento) => void; /** Repositório alternativo dos pesos no Hugging Face. */ repo?: string; } export interface OpcoesFalar { /** Voz a usar. Padrão: `"dora"`. */ voz?: NomeVoz; /** Velocidade da fala, de 0.5 a 2. Padrão: 1. */ velocidade?: number; /** Pronúncias customizadas: `{ "kubernetes": "kubeɾnˈetʃis" }`. */ lexico?: Record; /** Expandir números, datas, moedas e siglas. Padrão: true. */ normalizar?: boolean; } export interface TrechoFalado { texto: string; fonemas: string; audio: Audio; } /** Áudio sintetizado (PCM mono 24 kHz). */ export declare class Audio { constructor(amostras: Float32Array, taxa?: number); readonly amostras: Float32Array; readonly taxa: number; /** Duração em segundos. */ readonly duracao: number; /** Serializa como WAV PCM 16-bit. */ paraWav(): ArrayBuffer; /** Blob `audio/wav` (navegador). */ paraBlob(): Blob; /** Object URL pronta para `