Add TTS volume, a browser preview, and the split-audio plan

This commit is contained in:
Fisto
2026-09-22 09:27:14 +02:00
parent d99d614c60
commit 420fdca3cf
11 changed files with 287 additions and 73 deletions
+14
View File
@@ -40,6 +40,20 @@ mobile draft at 390px.
- [x] C11 preview caching: Discord-hosted image/GIF previews (WebP 320px, hash-addressed, 5 MiB
cap, one attempt) run after every walk in both modes. Live run `...-20260916090722`:
`previewed: 2`; thumbs served over `/api/media/<scrape>/<item>/thumb` (200).
- [x] C77 Split user audio investigation. [docs/voice-audio-split.md](docs/voice-audio-split.md)
records that the daemon sees only the mixed client output (`VeskslopCapture.monitor` → VAD →
STT) and that per-user tracks exist only in the renderer as WebRTC `MediaStreamTrack`s. The
core bridge has no WebRTC hooks today. The plan: hook `RTCPeerConnection` for tracks, hook
`AudioContext` for track-to-user mapping, stream 16 kHz PCM frames to the daemon, add
`preferences.audio.splitUserAudio` (default off), and keep the mixed path as the fallback. Not
implemented.
- [x] C76 TTS volume and browser preview. `preferences.tts.volume` (0-200, null = natural)
rides the speak options; the daemon applies it at play time with an ffmpeg `volume` filter
(ffplay's own `-volume` stops at 100). The TTS panel gained a volume slider and a **Preview**
button that synthesizes through `POST /api/audio/preview` and plays the returned
`/api/audio/tts/<name>` WAV in the browser. Preview never queues, ducks, or touches the
virtual mic. Verified live: a 1.6 s WAV served as `audio/wav`, and the volume preference
round-trips.
- [x] C75 Wakeword routing and the reply-only agent path. Commands now need the wakeword plus a
space at the start of the message: default `!s`, so `!s whitelist list`. `!space`,
`hey!s cmd`, and bare commands no longer trigger. Settings → Commands picks a preset (`!s !x