VibeFuse · Voice & speech

Piper TTS — local spoken replies

Piper is VibeFuse’s local-first text-to-speech path. Jarvis replies, mid-task play_tts lines, and the finished JSON speech field are spoken on your PC by piper.exe. Voice, speed, and volume live in Settings → Voice. The endpoint and health probe live in Settings → Local Servers (Assistants group).

Local-first Spawn per speak Test Piper :4123 fallback

What it is

Piper turns short spoken lines into audio without sending reply text to a cloud TTS vendor. The primary path is a one-shot spawn of piper.exe for each speak request. That is not a long-running Piper process: there is no Start / Stop button, and VibeFuse does not keep a Piper server running in the background.

If local piper.exe (or the selected ONNX voice) is unavailable, VibeFuse falls back to an OpenAI-compatible HTTP API: POST /v1/audio/speech on port 4123. The factory-stored Piper endpoint (ttsBase) is http://zrowton.ddns.net:4123. The field placeholder in Settings is http://127.0.0.1:4123.

Primary
Spawn piper.exe per speak
Fallback
POST /v1/audio/speech on :4123
Stored default
http://zrowton.ddns.net:4123
UI placeholder
http://127.0.0.1:4123

How a reply is spoken

  1. Jarvis (widget id com.vibefuse.custom-agent) or the voice dock finishes a turn with on-screen text and a short spoken speech line.
  2. If Use local Piper is on, VibeFuse runs piper.exe against the ONNX file for the selected Voice and plays the WAV through the output device in Settings → Voice.
  3. If local spawn cannot run, the same line is posted to the Piper endpoint as /v1/audio/speech.
  4. If Use local Piper is off, VibeFuse never spawns piper.exe and never calls a local Piper API — speech uses the remote endpoint only.
Wake acknowledgement Yes, sir?, tool acknowledgement Right away, sir, and the launch greeting are bundled WAVs. They do not go through live Piper. Hearing those clips does not prove piper.exe is healthy.

Settings → Local Servers · Piper TTS

Open Settings (Assistants group) → Local Servers. The first section is Piper TTS, with this copy:

Local text-to-speech server for Jarvis replies. Voice, speed, and volume are in Settings → Voice.

ControlWhat it does
Use local Piper Toggle, default on. Off copy: “Off: never spawn piper.exe or call the local Piper API. Speech falls back to the remote endpoint below.”
Piper endpoint OpenAI-compatible /v1/audio/speech server. Hint in the UI: “OpenAI-compatible /v1/audio/speech server.” Stored default http://zrowton.ddns.net:4123. Placeholder http://127.0.0.1:4123.
Test Piper Probes speech-to-text and Piper together. Result line: Speech ready/down · Piper ready/down. There is no Test Piper (and no Test voice) on the Voice tab.

Voice, speed, and volume are not on this tab. They are under Settings → Voice → Spoken output. MCP connections are on Settings → Extensions, not Local Servers.

Settings → Voice · Spoken output

Section title Spoken output, description: “Piper voice, speaking rate, and loudness for Jarvis replies.”

ControlValues
Voice Dropdown: Jarvis, Lewis, Michael, Adam, Heart, Bella, Emma. Default Jarvis.
Speed Range 0.5–2. Factory default 1.1.
Volume Range 0–150%. Factory default 100%. Also used for wake-word audio, video widgets, and browser webviews when session mute is off.

Output device hint: “Piper voice replies, wake-word audio, video widgets, and browser webviews.” Test Piper is not on this tab — only on Local Servers. There is no Test voice button here. Whisper URLs: “Piper and Whisper server URLs live in Settings → Local Servers.”

Launch greeting

Section Launch greeting: “A short bundled Jarvis greeting played once when VibeFuse finishes starting up.”

  • Toggle Greet me on launch (default on).
  • Plays Good morning (5:00–11:59), Good afternoon (12:00–16:59), or Good evening by local time.
  • Uses the output device and volume from Spoken output.
  • These are bundled WAVs, not a live Piper synthesize. If the browser blocks autoplay, the clip plays on your first click or key press instead.

Status bar chips

The workspace status bar shows a Voice chip (selected TTS voice name) and a Piper chip (Ready / Down). Both open Settings → Local Servers. The Speech chip next to Piper is Whisper health — Test Piper reports that same pair as Speech … · Piper ….

The Mode chip opens Settings → Voice. That is the voice dock, not Piper.

Bundled acknowledgements (not Piper)

Two short Jarvis clips are shipped as WAV files and played instantly — no piper.exe spawn and no /v1/audio/speech round-trip:

ClipWhen it plays
Yes, sir?Wake-word acknowledgement after the dock hears the wake name in Normal Mode.
Right away, sirTool acknowledgement, once, when the first real (non-TTS) tool call starts.

If those play and later replies are silent, the problem is live Piper (binary, voice file, toggle, or endpoint) — not the acknowledgement path.

Mid-task speech and the finished JSON

While Jarvis is working, it can call the play_tts tool (aliases speak_tts, say, speak) for a short first-person update. That is live Piper. The finished on-screen answer and the final spoken line arrive as JSON:

{ "text": "Your full useful answer.", "speech": "I have finished the layout." }
  • text is what you read on the canvas. speech is what Piper speaks for the completed result.
  • play_tts is for mid-task status only — not to announce that a tool is about to run.
  • Spoken lines are short, first person, and start with I am / I have / I will / I did.

Mute Piper on the Jarvis widget

The canvas chat widget is Jarvis (id com.vibefuse.custom-agent). The speaker button in its top bar is Mute Piper voice replies / Unmute Piper voice replies. Mute stops live Piper for that chat; it does not turn off Use local Piper for the rest of the app, and it does not remove the bundled wake / tool WAVs from the voice dock.

Paths and the installer

FileLocation
piper.exe%LOCALAPPDATA%\VibeFuse\bin\piper.exe
Jarvis ONNX%LOCALAPPDATA%\VibeFuse\models\jarvis.onnx

The Windows installer has a step named Piper voice. It checks for the Jarvis voice and local speech engines. If the download is skipped, VibeFuse can still fetch jarvis.onnx on the next speak attempt (Jarvis only).

Which voices download

Only Jarvis auto-downloads. Lewis, Michael, Adam, Heart, Bella, and Emma need their ONNX files already on disk under %LOCALAPPDATA%\VibeFuse\models (for example bm_lewis.onnx, am_michael.onnx, am_adam.onnx, af_heart.onnx, af_bella.onnx, bf_emma.onnx). Selecting a voice that is not installed will not fetch it.

If Test Piper reports Piper down with “Jarvis Piper voice missing (jarvis.onnx). It will download on next speak attempt.”, speak a reply once with Voice set to Jarvis, or re-run the installer Piper voice step.

HTTP fallback

Used when local spawn cannot produce audio and Use local Piper is still on (local API on :4123), or when the toggle is off and the stored Piper endpoint is called instead.

MethodPathRole
GET/healthHealth probe used by Test Piper and the status-bar Piper chip when local spawn is not ready.
POST/v1/audio/speechOpenAI-compatible synthesize. Body includes input, voice, and speed.

Port 4123 is the local/API fallback port. The factory URL points at http://zrowton.ddns.net:4123; a machine that hosts its own API typically uses the placeholder http://127.0.0.1:4123.

Troubleshooting

SymptomFix
Piper chip Down, or Test Piper shows Piper down Turn Use local Piper on. Confirm %LOCALAPPDATA%\VibeFuse\bin\piper.exe exists. Re-run the installer step Piper voice. If the detail is “piper.exe is not installed yet”, the binary is missing — the HTTP fallback only helps if something is listening on the Piper endpoint.
“Jarvis Piper voice missing (jarvis.onnx)” Leave Voice on Jarvis and speak once so the file can download, or re-run Piper voice. File path: %LOCALAPPDATA%\VibeFuse\models\jarvis.onnx.
Lewis / Michael / Adam / Heart / Bella / Emma are silent Those ONNX files are not auto-downloaded. Place the matching .onnx in %LOCALAPPDATA%\VibeFuse\models, or switch Voice back to Jarvis.
Hear “Yes, sir?” or “Right away, sir” but no reply Those are bundled WAVs. Live replies need piper.exe (or the :4123 API) and a voice file. Click Test Piper.
Launch greeting plays; later replies do not Greet me on launch uses Good morning / afternoon / evening bundled WAVs, not live Piper.
Use local Piper is off Expected: VibeFuse never spawns piper.exe or calls a local Piper API. Speech uses the remote Piper endpoint only. If that host is down, Test Piper reports Piper down.
GET /health or POST /v1/audio/speech fails Check the URL in Piper endpoint. Factory default is http://zrowton.ddns.net:4123. A local API should match the placeholder http://127.0.0.1:4123.
Jarvis chat is silent but the dock still speaks The Jarvis widget speaker control is Mute Piper voice replies. Unmute it. This is not the Voice tab.
Speed or volume feels wrong Adjust them on Settings → Voice → Spoken output (0.5–2, default 1.1; 0–150%, default 100%). They are not on Local Servers.
Test Piper shows Speech down while Piper is ready Speech is Whisper, not Piper. See Whisper STT — there is no separate Test Whisper button.

FAQ

Do I start or stop a Piper server?

No. Local speech is a spawn of piper.exe per speak. HyperFrames Studio on the same Local Servers tab has Start / Stop; Piper does not.

Where is Test Piper?

Only on Settings → Local Servers in the Piper TTS section. It is not on Settings → Voice.

What is the default speaking rate?

Speed default is 1.1 (range 0.5–2) on Settings → Voice → Spoken output.

Does mute stop the wake-word clip?

Mute Piper voice replies on Jarvis silences that widget’s live Piper, not the bundled dock WAVs.