Skip to content

Add FireRedTTS3-Base as an audio.cpp TTS engine - #14599

Merged
niksedk merged 2 commits into
mainfrom
claude/fireredtts3-audiocpp
Sep 6, 2026
Merged

Add FireRedTTS3-Base as an audio.cpp TTS engine#14599
niksedk merged 2 commits into
mainfrom
claude/fireredtts3-audiocpp

Conversation

@niksedk

@niksedk niksedk commented Sep 6, 2026

Copy link
Copy Markdown
Member

Summary

Adds FireRedTTS3-Base (FireRed Team, Apache-2.0, arXiv 2608.17492) as a fourth engine on the shared audio.cpp runtime, next to IndexTTS 2.5, Higgs Audio v3 and Fish Audio S2 Pro. Zero-shot voice cloning across 24 languages; the model reports the best speaker similarity of the open cloning models on Seed-TTS-eval (avg 78.8) and MiniMax MLS-Test (avg 84.8).

What is different from the Higgs engine it is modelled on

  • No licence gate. Runtime and weights are both Apache-2.0. AudioCppTtsSettingsAdapter and EnsureAudioCppEngineWithLicense now accept a null ModelLicenseDefinition.
  • Mandatory language combo (FireRedTts3Languages). The model has no language detection and audio.cpp's default for an unset tag is Chinese, so every request carries an explicit tag and English is pre-selected. The 21 Chinese dialect tags are left out.
  • Clone task. The Base package declares only the clone task, so the server config uses "task": "clon" like IndexTTS 2.5.

Everything else follows the Higgs shape: per-request voice_ref (so "Clone from video" per-line works and a voice change never restarts the server), optional .txt transcript passed as reference_text, shared settings dialog, seeded reference voices at 24 kHz.

Weights and runtime

  • Weights from audio-cpp/audio.cpp-gguf/FireRedTTS3-Base-GGUF: q8_0 (~3.9 GB, default) and orig (~11.5 GB). SHA-256 pinned from the HF LFS oids; the q8_0 download was verified locally.
  • Runtime: the audio.cpp archives now come from support-files release audiocpp-indextts25-2026-09-06 (upstream main b0757573, families index_tts2,higgs_audio_tts,fish_audio,fireredtts3). Hashes of all seven archives are pinned at index 0, so existing installs get the amber update prompt; FireRedTTS3 needs this build.

Testing

  • dotnet build src/ui/UI.csproj green; TTS UI tests green (414 incl. the new engine in AudioCppPerLineCloneTests and VoiceCloningConsentTests).
  • Smoke test on M4 Metal against the new macOS archive, using SE's exact server config and request payload: English clone round-trips word-perfect through whisper.cpp tiny.en. Cold 25 s incl. model load, warm 8.6 s for 4.2 s of audio (24 kHz mono). German synthesised at a plausible length but could not be transcription-checked with the English-only whisper model on hand.

Caveats worth knowing

  • Text normalization upstream covers Chinese, English and Cantonese only; other languages read digits literally.
  • The audio.cpp port marks the family experimental; streaming/batching is an open upstream issue.

🤖 Generated with Claude Code

niksedk and others added 2 commits September 6, 2026 09:46
FireRedTTS3-Base (FireRed Team, Apache-2.0, arXiv 2608.17492) is a zero-shot
voice-cloning model covering 24 languages with the best published speaker
similarity of the open cloning models (Seed-TTS-eval avg 78.8, MiniMax MLS-Test
avg 84.8). audio.cpp registers it as the `fireredtts3` family; this wires it up
as a fourth engine on the shared audio.cpp runtime next to IndexTTS 2.5, Higgs
Audio v3 and Fish Audio S2 Pro.

Same shape as the Higgs engine (per-request voice_ref, so per-line "Clone from
video" works and a voice change never restarts the server; optional .txt
transcript sidecar passed as reference_text; shared settings dialog through the
adapter record), with three differences:
- No licence gate: both the runtime and the weights are Apache-2.0, so the
  adapter and installer helper now accept a null ModelLicenseDefinition.
- A mandatory language combo (FireRedTts3Languages): the model has no language
  detection and audio.cpp's default for an unset tag is Chinese, so every
  request carries an explicit tag and English is the pre-selected pick. The 21
  Chinese dialect tags are left out on purpose.
- The Base package declares the clone task only, so the server config uses
  task "clon" like IndexTTS 2.5.

Weights come from audio-cpp/audio.cpp-gguf/FireRedTTS3-Base-GGUF: q8_0
(4,180,334,848 B, default) and orig (12,301,253,120 B); LFS oids pinned in
DownloadHashManager. Smoke-tested on M4 Metal against a support-files build of
upstream main b0757573 with the family compiled in: English clone round-trips
word-perfect through whisper.cpp tiny.en; cold 25 s incl. model load, warm
8.6 s for 4.2 s of audio.

The runtime archives still need the family compiled in; that release pin is
bumped separately.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Rebuilt in support-files from upstream main b0757573 with
index_tts2,higgs_audio_tts,fish_audio,fireredtts3. The FireRedTTS3 engine
only works against this build; older archives reject it with "unsupported
model family hint: fireredtts3".

New archive hashes go in at index 0, so existing installs show the amber
'update available' status and the Update button in the audio.cpp settings,
and the running server is stopped before the new archive is extracted.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@niksedk
niksedk marked this pull request as ready for review September 6, 2026 09:32
@niksedk
niksedk merged commit 5f379a2 into main Sep 6, 2026
1 check passed
@niksedk
niksedk deleted the claude/fireredtts3-audiocpp branch September 6, 2026 09:45
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