Skip to content

feat(tts): add kugelaudio as a TTS vendor - #163

Merged
davehorton merged 1 commit into
mainfrom
feat/kugelaudio-tts
Sep 29, 2026
Merged

davehorton merged 1 commit into
mainfrom
feat/kugelaudio-tts

Conversation

@davehorton

Copy link
Copy Markdown
Collaborator

Adds KugelAudio (kugel-3) to synthAudio.

  • Streaming (default): returns a say:{...} url for the mediajam kugelaudio dialect, carrying voice, model_id, language, api_uri and the vendor knobs (speed, cfg_scale, temperature, normalize, project_id, dictionary_ids). dictionary_ids is passed as a JSON array so [] (no dictionaries) stays distinct from unset; the say-url parser is bracket-aware.
  • Cache render: POST /v1/tts/generate at sample_rate: 8000, which returns bare pcm_s16le, i.e. the r8 container.
  • Language: KugelAudio takes only the primary subtag (de, not de-DE) and rejects codes outside its 39-language list, so an unsupported or unset language is omitted and the voice's own language applies.
  • options.api_uri pins a region, e.g. api.eu.kugelaudio.com.

Test: env-gated German synth test in test/synth.js. Full suite 53/53 locally with KUGELAUDIO_API_KEY set; also verified live: bad key -> 401, unsupported language falls back cleanly.

🤖 Generated with Claude Code

Streaming returns a say: url for the mediajam dialect; the cache render POSTs
/v1/tts/generate for raw 8 kHz PCM (r8). Language is reduced to its primary
subtag and dropped when KugelAudio does not support it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@davehorton
davehorton merged commit fa70569 into main Sep 29, 2026
5 checks passed
@davehorton
davehorton deleted the feat/kugelaudio-tts branch September 29, 2026 18:21
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