Skip to content

feat(speech): Pocket default agent voices + warm Pocket sessions, fp32 Kokoro fallback, Whisper small (v0.3.39) - #313

Merged
ralyodio merged 3 commits into
masterfrom
fix/kokoro-fp32-whisper-small
Nov 11, 2026
Merged

ralyodio merged 3 commits into
masterfrom
fix/kokoro-fp32-whisper-small

Conversation

@ralyodio

Copy link
Copy Markdown
Collaborator

TTS sounded fuzzy and not crisp on TUI Weekly (c0mpute voices). Cause: we serve the int8 Kokoro export.

Side by side on vienna, same text, kokoro-onnx 0.6.1:

model rtf (lower=faster) HF >7 kHz vs voice, am_michael
int8 (current) 4.0-4.3 -27.0 dB
fp16 2.3-2.4 -19.3 dB
fp32 2.3-2.7 -19.9 dB

int8 is both duller and slower on ORT CPU. This PR:

  • provisions kokoro-v1.0.onnx (model-files-v1.1, sha256 beb0d184…), worker prefers it, int8 kept as fallback
  • ensure_kokoro upgrades int8-only nodes in place; failure keeps serving int8
  • STT: Whisper small provisioned (was base), beam_size 5 (was 1), both per-request overridable
  • v0.3.39

🤖 Generated with Claude Code

ralyodio and others added 3 commits November 11, 2026 08:37
TTS: the int8 Kokoro export sounds fuzzy and loses the top octave
(~7 dB less above 7 kHz on am_michael) and on ONNX Runtime CPU it was
also slower than fp32 (rtf 4.0-4.3 vs 2.3-2.6, measured on vienna).
Nodes now provision kokoro-v1.0.onnx (model-files-v1.1, sha256-pinned);
the worker prefers it and falls back to int8, and ensure_kokoro upgrades
an int8-only node in place without ever dropping it out of TTS.

STT: provision faster-whisper small instead of base, decode with beam 5
instead of greedy; both overridable per request (model, beam_size).

Anthony 2026-11-11: "it still has static ... not crisp and clean like it
should be ... can we get better quality out of these tts and stt models"

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…effort

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…et sessions

Anthony 2026-11-11: "its still computerish. we need to be more human ...
use that for default voices everywhere".

- speech_profiles: every agent's engine/voice is now Pocket (its existing
  pocket_voice); the old Kokoro/Piper voice moves to fallback_engine /
  fallback_voice, exposed on /v1/voices and in `c0mpute tts voices`.
- Warm sessions serve Pocket: the session voice picks the engine (voice
  ids are unique across engines); the worker's serve loop loads Pocket
  once and caches each voice's prompt state. Warm Pocket ran ~1x
  realtime on 8 threads on a busy vienna (fp32 Kokoro 2.3x there).
- One warm worker per engine, shared by every session on it: a five-voice
  show holds one model in RAM, not five (MAX_SESSIONS 4 -> 16; it used to
  refuse the fifth voice).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio ralyodio changed the title fix(speech): full-precision Kokoro + Whisper small/beam 5 (v0.3.39) feat(speech): Pocket default agent voices + warm Pocket sessions, fp32 Kokoro fallback, Whisper small (v0.3.39) Nov 11, 2026
@ralyodio
ralyodio merged commit b33dfa6 into master Nov 11, 2026
13 of 14 checks passed
@ralyodio
ralyodio deleted the fix/kokoro-fp32-whisper-small branch November 11, 2026 10:29
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

14 finding(s)

HIGH/CRITICAL: 1 | MEDIUM: 9 | LOW: 4

Severity Rule Location
HIGH js-ssrf-outbound-request apps/web/public/sw.js:24
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:53
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:109
MEDIUM sql-template-interpolation apps/web/src/lib/chat/push.ts:476
MEDIUM sh-remote-script-execution scripts/dev-setup.sh:25
MEDIUM sh-eval-expansion scripts/dev-setup.sh:35
MEDIUM sh-remote-script-execution scripts/install.sh:185
MEDIUM sh-remote-script-execution scripts/install.sh:210
MEDIUM sh-remote-script-execution scripts/install.sh:408
MEDIUM sh-remote-script-execution scripts/install.sh:450
LOW py-ssrf-outbound-request examples/business-strategist-agent/chat.py:37
LOW py-ssrf-outbound-request examples/business-strategist-agent/train.py:54
LOW secret-generic-credential node/crates/c0mpute-core/src/webhook.rs:1171
LOW py-path-traversal node/crates/c0mpute-core/tests/fixtures/fake-infernet-text:29

Snippets are redacted; ThreatCrush never prints matched credential material.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant