-
feat(tts): add pocket-tts engine alongside kokoro-fastapi
Some checks failedRelease / Test backend (push) Successful in 36sRelease / Check ui (push) Successful in 50sRelease / Docker / caddy (push) Failing after 45sCI / Test backend (pull_request) Successful in 39sCI / Check ui (pull_request) Failing after 11sCI / Docker / ui (pull_request) Has been skippedCI / Docker / caddy (pull_request) Failing after 11sRelease / Docker / backend (push) Failing after 48sRelease / Docker / runner (push) Failing after 58sRelease / Upload source maps (push) Failing after 39sCI / Docker / backend (pull_request) Failing after 34sCI / Docker / runner (pull_request) Failing after 30sRelease / Docker / ui (push) Successful in 2m42sRelease / Gitea Release (push) Has been skippedreleased this
2026-03-27 16:17:13 +05:00 | -260 commits to main since this release- New backend/internal/pockettts package: POST /tts client for
kyutai-labs/pocket-tts; streams WAV response and transcodes to MP3
via ffmpeg so the rest of the pipeline stays format-agnostic - config.PocketTTS struct + POCKET_TTS_URL env var
- runner.Dependencies.PocketTTS field; runAudioTask routes by voice name:
pockettts.IsPocketTTSVoice (alba, marius, javert, …) → pocket-tts,
everything else → kokoro-fastapi - Dockerfile: runner stage switched from distroless/static to alpine:3.21
with ffmpeg + ca-certificates installed - homelab compose: runner gets POCKET_TTS_URL=http://pocket-tts:8000
- Doppler prd + prd_homelab: KOKORO_URL=https://tts.libnovel.cc,
POCKET_TTS_URL=https://pocket-tts.libnovel.cc
Downloads
- New backend/internal/pockettts package: POST /tts client for