๐Ÿฆ Story SFX Moonshine on audio.cpp โ†’ Jev โ†’ sound effects, live

ws: โ€” mic: โ€” asr: โ€” jev: โ€”

Live transcript

Presenter script โ€” read this aloud

Jev decision (latest call)

beatโ€“
asr latencyโ€“
jev latencyโ€“
jev calls / costโ€“

Cue log

How it works

  1. Your mic is downsampled in an AudioWorklet to 16 kHz PCM and streamed over a WebSocket.
  2. A Python bridge runs energy VAD and, every ~0.7 s while you speak, sends the current utterance to audiocpp_server (Moonshine Streaming ASR, Q8 GGUF, CPU) โ†’ partial transcript. On a pause the utterance is committed.
  3. Each new transcript becomes a JSON state (story beats, cue list, what already played, narration so far, current sentence) sent to Jev 1.13 (TypeSafe System One via OpenRouter, POST /api/v1/systemone) with typed questions: a Choice for the current beat and one Noul (yes/no probability) per unplayed cue near that beat.
  4. Deterministic rules decide: fire when p โ‰ฅ 0.70, beat only moves forward, one cue per call, later cues are delayed instead of stacked. The browser plays the effect with Web Audio.