Skip to content

feat: add fish.audio TTS provider#353

Open
ytmknd wants to merge 1 commit into
calesthio:mainfrom
ytmknd:feat/fish-audio-tts-provider
Open

feat: add fish.audio TTS provider#353
ytmknd wants to merge 1 commit into
calesthio:mainfrom
ytmknd:feat/fish-audio-tts-provider

Conversation

@ytmknd

@ytmknd ytmknd commented Jul 10, 2026

Copy link
Copy Markdown

Summary

  • Add FishAudioTTS (capability=tts) so tts_selector auto-discovers a new high-quality, voice-clone-capable TTS provider
  • Backend model is required per call: s1 (previous flagship, kept for compatibility), s2-pro (first S2 generation), s2.1-pro (latest flagship — inline emotion tags, 80+ languages), s2.1-pro-free (free tier for drafts). s1-mini and the speech-1.x tier have been removed from the current fish.audio API and are no longer supported.
  • Voice cloning via reference_id, with voice_id accepted as a selector-compatible alias
  • Adds temperature / top_p / repetition_penalty sampling controls, optional sample_rate, opus output format, and a low latency tier
  • Cost is estimated per UTF-8 byte to match fish.audio billing
  • Adds a Layer 3 skill (.agents/skills/fish-audio-tts/SKILL.md), .env.example entry, and unit tests

Test plan

  • pytest tests/tools/test_fish_audio_tts.py -v — 14 passed
  • Manual smoke test with a real FISH_AUDIO_API_KEY via tts_selector — verified s2.1-pro + reference_id generating a 7-segment Japanese narration

@ytmknd ytmknd requested a review from calesthio as a code owner July 10, 2026 10:02
Add FishAudioTTS (capability=tts) so tts_selector auto-discovers a new
high-quality, voice-clone-capable provider. Backend model is required per
call: s1 (previous flagship, kept for compatibility), s2-pro (first S2
generation), s2.1-pro (latest flagship — inline emotion tags, 80+
languages), s2.1-pro-free (free tier for drafts). s1-mini and the
speech-1.x tier have been removed from the current fish.audio API and are
no longer supported. Voice cloning via reference_id with voice_id as a
selector-compatible alias. Adds temperature/top_p/repetition_penalty
sampling controls, optional sample_rate, opus output format, and a "low"
latency tier. Cost is estimated per UTF-8 byte to match fish.audio
billing. Includes a Layer 3 skill, .env.example entry, and unit tests.

Verified end-to-end with s2.1-pro + reference_id: generated a 7-segment
Japanese narration successfully.
@ytmknd ytmknd force-pushed the feat/fish-audio-tts-provider branch from 8fbfa99 to 58b9b98 Compare July 10, 2026 16:37
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