Começar¶
Requisitos¶
- Node.js 20 ou superior
- Para um setup offline real: whisper.cpp, Ollama e Piper — ver setup.md. Podes desenvolver e testar com os motores mock sem instalar nada.
Instalação¶
O loop¶
O VoicePipeline corre áudio → texto → LLM → texto → áudio e mantém o histórico
da conversa, por isso um turno falado inteiro é uma única chamada:
import { VoicePipeline, WhisperCppStt, OllamaLlm, PiperTts } from 'whispa';
const pipeline = new VoicePipeline({
stt: new WhisperCppStt({ model: 'models/ggml-base.en.bin' }),
llm: new OllamaLlm({ model: 'llama3.2' }),
tts: new PiperTts({ model: 'voices/en_US-amy-medium.onnx' }),
systemPrompt: 'És um assistente de voz conciso.',
maxHistory: 20,
});
const { transcript, reply, audio } = await pipeline.turn('gravacao.wav');
Passos individuais¶
const texto = await pipeline.listen('gravacao.wav'); // STT
const resposta = await pipeline.respond(texto); // LLM (atualiza histórico)
const wav = await pipeline.speak(resposta); // TTS
Desenvolver sem ferramentas nativas¶
import { VoicePipeline, MockStt, EchoLlm, MockTts } from 'whispa';
const p = new VoicePipeline({ stt: new MockStt('olá'), llm: new EchoLlm(), tts: new MockTts() });