Skip to content

feat(backend): add magpie-tts-cpp text-to-speech backend - #11115

Merged
mudler merged 3 commits into
masterfrom
feat/magpie-tts-backend
Jul 25, 2026
Merged

feat(backend): add magpie-tts-cpp text-to-speech backend#11115
mudler merged 3 commits into
masterfrom
feat/magpie-tts-backend

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

What

Adds a new TTS backend wrapping magpie-tts.cpp, a C++17/ggml port of NVIDIA's Magpie TTS Multilingual 357M (with its NanoCodec vocoder embedded): 5 voices, 9+ languages, 22.05 kHz mono, one self-contained GGUF, no Python/PyTorch at inference.

  • backend/go/magpie-tts-cpp/: purego backend (dlopen, flat C ABI, base.SingleThread), TTS + one-shot TTSStream, voice map (Aria/Jason/John/Leo/Sofia or 0-4), language canonicalization, 16-bit WAV output
  • Native lib pinned to magpie-tts.cpp v0.1.1 (6f7696cf), ggml statically linked (ldd shows only libc-family deps), CPU variants fallback/avx/avx2/avx512
  • Registration: backend matrix, backend/index.yaml, root Makefile, backend-filter, bump_deps, test-extra smoke job, capabilities (TTS+TTSStream), compatibility table, gallery entries (q8_0 recommended + f16, HF: mudler/magpie-tts.cpp-gguf)

Verification

  • Live gRPC functional check: LoadModel + TTS on q8_0 returns a valid non-silent WAV (22050 Hz, RMS 0.073); output is ASR round-trip exact vs the input text
  • 20/20 Ginkgo specs (unit + e2e), make lint, make test-coverage-check green
  • Upstream engine is parity-gated against NeMo per component (teacher-forced replay max abs diff 3.6e-5; details in the magpie-tts.cpp README)

🤖 Generated with Claude Code

mudler and others added 3 commits July 24, 2026 21:28
Add a Go + purego backend wrapping the magpie-tts.cpp ggml port of NVIDIA's
Magpie TTS Multilingual 357M (encoder + autoregressive decoder over NanoCodec
tokens), producing 22.05 kHz mono audio in 5 baked voices (Aria, Jason, John,
Leo, Sofia; case-insensitive names or indices 0-4) across 9+ languages from a
single self-contained GGUF. Mirrors qwen3-tts-cpp / moss-tts-cpp: dlopen the
static-ggml shared library, bind the flat magpie_tts_capi_* C-API via purego
(no local C shim needed, the upstream .so exports it directly), and serve the
gRPC TTS + TTSStream methods behind base.SingleThread (the C context is not
reentrant across synthesize calls).

The backend CMakeLists translates the Makefile's -DGGML_{CUDA,METAL,VULKAN,HIP}
flags into upstream's MAGPIE_GGML_* toggles (upstream FORCE-overwrites the ggml
cache entries from those), pinned to magpie-tts.cpp v0.1.1
(e3f3dd1ebe22b64e7405f93b519f2d1930712568), which statically links ggml into
libmagpie-tts.so (ldd shows only system libs).

Wires the full registration: backend-matrix.yml (CPU amd64/arm64, CUDA 12/13,
Intel SYCL f16/f32, Vulkan amd64/arm64, ROCm, NVIDIA L4T + L4T CUDA 13, and
Darwin metal), backend/index.yaml metas and image entries, the root Makefile
build targets, the changed-backends backend-filter path mapping, the bump_deps
auto-bump matrix, a test-extra per-backend smoke job, the /backends/known
pref-only importer entry, the backend capabilities map (TTS + TTSStream, no
voice cloning), and the README / compatibility-table docs rows.

Verified locally: unit + e2e Ginkgo suites pass against the real q8_0 GGUF
(22.05 kHz mono WAV, RMS > 0.01), a live gRPC LoadModel + TTS round-trip
returns valid non-silent audio, and the pre-commit gates (make lint,
make test-coverage-check) pass, run manually with LOCALAI_TEST_HTTP_PORT
overriding the locally-occupied 9090.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add the Magpie TTS Multilingual 357M GGUFs from mudler/magpie-tts.cpp-gguf to
the model gallery: q8_0 (~624 MB, near-lossless, fastest decode, recommended)
with an f16 (~784 MB) variant, both served by the magpie-tts-cpp backend.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Upstream history was rewritten to purge accidentally committed build
artifacts; v0.1.1 now resolves to 6f7696cf.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mudler
mudler merged commit 2d889e6 into master Jul 25, 2026
76 checks passed
@mudler
mudler deleted the feat/magpie-tts-backend branch July 25, 2026 06:38
@localai-bot localai-bot added the enhancement New feature or request label Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants