-
feat(audio): WAV streaming, bulk audio generation admin endpoints, cancel/resume
Some checks failedCI / Backend (push) Successful in 48sCI / UI (push) Successful in 28sRelease / Check ui (push) Successful in 39sRelease / Test backend (push) Successful in 49sRelease / Docker / caddy (push) Successful in 59sCI / Backend (pull_request) Successful in 41sCI / UI (pull_request) Successful in 46sRelease / Docker / ui (push) Successful in 1m31sRelease / Docker / backend (push) Successful in 3m27sRelease / Docker / runner (push) Successful in 3m47sRelease / Gitea Release (push) Failing after 32sreleased this
2026-04-02 16:19:14 +05:00 - Add StreamAudioWAV() to pocket-tts and Kokoro clients; pocket-tts streams
raw WAV directly (no ffmpeg), Kokoro requests response_format:wav with stream:true - GET /api/audio-stream supports ?format=wav for lower-latency first-byte delivery;
WAV cached separately in MinIO as {slug}/{n}/{voice}.wav - Add GET /api/admin/audio/jobs with optional ?slug filter
- Add POST /api/admin/audio/bulk {slug, voice, from, to, skip_existing, force}
where skip_existing=true (default) resumes interrupted bulk jobs - Add POST /api/admin/audio/cancel-bulk {slug} to cancel all pending/running tasks
- Add CancelAudioTasksBySlug to taskqueue.Producer + asynqqueue implementation
- Add AudioObjectKeyExt to bookstore.AudioStore for format-aware MinIO keys
Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Downloads
- Add StreamAudioWAV() to pocket-tts and Kokoro clients; pocket-tts streams