jarvis-voice-pipeline

Builds and tunes a local JARVIS voice assistant pipeline on Windows.

Updated Aug 21, 2026
One-click install
npx skills add https://github.com/TylerSimons1127/vibe --skill jarvis-voice-pipeline-tylersimons1127
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: jarvis-voice-pipeline
Source: https://github.com/TylerSimons1127/vibe/tree/main/skills/software-development/jarvis-voice-pipeline
Command: npx skills add https://github.com/TylerSimons1127/vibe --skill jarvis-voice-pipeline-tylersimons1127

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires openwakeword, faster-whisper, piper-tts, sounddevice, fastapi, uvicorn, psutil, playwright, huggingface_hub, and includes references (resource) components.

What problem does it solve? Building a local wake-word voice assistant on Windows involves many fragile pieces — openWakeWord detection, faster-whisper STT, LLM routing, Piper TTS, and PortAudio quirks — and this Skill captures the verified working configuration plus every pitfall that cost real debugging time. ## Core Features & Use Cases - Verified voice pipeline: Documents the exact working wake→STT→LLM→TTS flow using openWakeWord, faster-whisper tiny, Hermes Agent routing, and Piper jarvis-high voice. - Windows-specific fixes: Covers .bat launch gotchas (PYTHONPATH, escaping, timeout hijacking), persistent OutputStream for TTS latency, mic device fallback loops, and log-file IPC instead of subprocess.PIPE. - Web control panel: Details the FastAPI + WebSocket server with a Canvas2D arc-reactor orb, safe config PATCH/GET editing, and Playwright visual verification. - Use Case: When asked to add a feature or fix latency in the JARVIS assistant, apply the documented patterns — e.g., sentence-by-sentence TTS streaming and echo-prevention mic draining — instead of rediscovering them. ## Quick Start Use the jarvis-voice-pipeline skill to diagnose why the JARVIS assistant's wake acknowledgment feels slow and reduce its TTS onset latency.

Frequently Asked Questions about jarvis-voice-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I reduce TTS latency for a voice assistant on Windows?▼

Use one persistent sounddevice OutputStream opened at startup instead of sd.play() per call, which stalls about 1.4 seconds opening and closing a PortAudio stream. Serialize writes with a threading.Lock and play the wake acknowledgment in a background thread so listening starts immediately.

How to set up Piper TTS with a custom voice in Python?▼

Install piper-tts, download the voice .onnx and .onnx.json files from HuggingFace, then load with PiperVoice.load(model, config). The synthesize() method yields AudioChunk objects with audio_float_array and sample_rate, and speed is controlled via SynthesisConfig(length_scale=...).

Piper TTS vs Kokoro for a local voice assistant?▼

Piper is faster and more characterful for this use case, outputting at 22050 Hz versus Kokoro's 24000 Hz. Piper's API differs: synthesize returns an iterator of AudioChunk objects rather than a single audio tuple, and the code falls back to Kokoro bm_george if Piper is unavailable.

Why does my Python subprocess with microphone input stall on Windows?▼

subprocess.PIPE stalls because sd.InputStream mic initialization blocks in a headless subprocess context without a real console. Launch via start "" /min cmd /c with output redirected to a log file, then tail that log file for state updates instead of reading pipes.

Why does faster-whisper transcription feel slow and how to speed it up?▼

Use the tiny model with cpu_threads set to os.cpu_count() for maximum decode speed. Enable vad_filter=True with aggressive vad_parameters and pre-trim silence from the audio before calling transcribe to cut the amount of audio processed.

Why does the wake word detector keep retriggering after the assistant speaks?▼

The assistant's own TTS output feeds back into the microphone and re-triggers the wake detector, causing repeated acknowledgment loops. Drain the mic queue after the assistant finishes speaking so its own voice cannot re-feed the wake detection.