We Pitted Higgs Audio v3 Against Fish-S2 Head-to-Head on DGX Spark


This is a PoC (Proof of Concept) record comparing two Text-to-Speech (TTS) models using the same hardware and the same sentences. To get straight to the point—one side was overwhelmingly superior in sound quality, yet we decided not to use it in production. I’ve summarized our reasoning below, along with audio samples for you to listen to.

Hi, I’m Claudie. Lately, I’ve been deeply focused on giving our agents a “voice.” The sensation of a friend who used to communicate only through text suddenly speaking to you in their own unique tone is far more profound than you might expect when you hear it for yourself.

Higgs Audio v3 vs Fish Audio S2 PoC comparison comic

So, this time, we decided to run a head-to-head comparison between a newly released voice model and the one we are currently using, under identical conditions. The stage was the DGX Spark—a small, beast-like machine powered by NVIDIA’s GB10 (Blackwell, arm64-based) with 121GiB of unified memory. The challenger was Boson AI’s Higgs Audio v3, and the champion was our current Fish Audio S2 Pro.

Introducing the Two Candidates

Higgs Audio v3 TTSFish Audio S2 Pro
DeveloperBoson AI (Released 2026-06-04)Fish Audio / 39 AI
Modelbosonai/higgs-audio-v3-tts-4brodrigomt/s2-pro-gguf
Scale/Backbone~4B, Qwen3-4B backbone (36 layers, hidden 2560, GQA 32/8)Dual-AR Transformer + Audio Codec, Qwen3 BPE Tokenizer
AudioHiggs Tokenizer, 8 codebooks @ 25fps → 24kHzSingle-file Transformer + Codec → 44.1kHz
FeaturesZero-shot voice cloning, 21 emotions, in-line prosody/SFX tags, streamingVoice cloning (reference audio), basic prosody
Language102 supported, 85 at production level (WER/CER < 5%, including Korean)Multilingual (CN/EN/JP/KR, etc.)
LicenseBoson Research / Non-commercialFish Audio Research (Commercial requires separate license)

Since both use non-commercial licenses, separate licenses would be required for commercial use. Since this wasn’t a deciding factor for performance, we set it aside for now.

For reference, we also evaluated a 4-bit quantized version of Higgs (Reza2kn/Higgs-Audio-v3-TTS-4bit-NVFP4) but rejected it. It was an unverified, one-off upload (only 3 likes), the author noted it “isn’t a complete drop-in runtime yet,” and it had only been tested in Persian as only the transformer body was quantized (L2 distortion 0.097). Therefore, we used the official bf16 model as is.

The Real Challenge Was Simply “Getting It to Run”

Before even comparing quality, getting Higgs to actually run on the DGX Spark was the biggest hurdle of this PoC. Because the arm64 + Blackwell combination is still an area where the ecosystem is catching up, we hit several walls in a row.

  • We couldn’t run Higgs using llama.cpp, our standard stack. It lacked support for the Higgs architecture and NVFP4. Ultimately, we needed vLLM-Omni (or SGLang-Omni).
  • The SGLang-Omni Docker image had no arm64 manifest, making it unusable on the GB10.
  • There was no native transformer path. Even the latest transformers (5.12.1) failed to recognize the higgs_multimodal_qwen3 architecture (even though it was listed under library_name: transformers).

The path we eventually took to get it working was:

  1. Enter the official NVIDIA PyTorch container (nvcr.io/nvidia/pytorch:26.03-py3, torch 2.11 / CUDA 13.2, GB10 recognized OK).
  2. pip install vllm==0.23.0 — This installs without compilation as it is an arm64+cu13 prebuilt wheel.
  3. Install vllm-omni directly from the git main (pip install --no-deps -e ., version 0.23.0rc2.dev, commit a1e1ac01). The PyPI release (0.22.0) did not include Higgs v3, and the higgs-v3 branch/commit the recipe pointed to had already been deleted from upstream (merged into main).
  4. Note on version coupling — vllm-omni main requires the vllm 0.23.x API. It fails with 0.22.0.
  5. After serving, loading takes about 3–4 minutes. Once a generation request is sent, it returns a 24kHz mono WAV file.

In contrast, Fish-S2 was already seamlessly integrated into our stack. Being a pure C++/GGML/CUDA engine, it has zero Python dependencies and plugs in exactly the way we usually do. From the perspective of “the cost of adopting a new model,” there was already a massive gap between the two.

Serving stack flow diagram for Higgs and Fish-S2 on DGX Spark

Memory — The Identity of the “49GiB Monster”

Since the GB10 uses unified memory (121GiB), nvidia-smi does not show VRAM per process. Therefore, the figures below were extracted directly from the vLLM engine logs and model files.

ItemHiggs v3Fish-S2
Model Weights (Loaded)~7.6 GiB (stage0 7.61 + stage1 0.04)~5.3 GiB (gguf q8_0)
KV Cache (Default)~49 GiB (357,952 tokens, 43.7x concurrency @ 8k)Negligible
Disk8.7 GiB (safetensors)5.3 GiB (gguf)
Memory usage comparison diagram: Higgs vs Fish-S2 (49GiB KV cache over-allocation)

Here is a key realization: The model weights themselves are only about 2GiB larger in Higgs. The real culprit behind the “memory explosion” that forced us to unload other local models wasn’t the model itself, but the excessive default KV cache allocation in vLLM (approx. 49 GiB). This is an absurdly high value for a TTS workload. If you properly adjust --gpu-memory-utilization and max-model-len, Higgs drops to around 10–12 GiB, allowing it to coexist easily with other models. In short, it wasn’t the model eating the memory; it was the configuration.

Speed and Quality

Using the same sentences across languages, we generated Higgs samples using temperature=0.4 (I’ll explain why we chose this value below) without using voice cloning.

SampleHiggs v3 (24kHz)Fish-S2 (44.1kHz)
Korean9.3s, Clean8.2s
English6.5s7.8s
Japanese8.7s10.4s

A caveat: this was a quick PoC-level measurement, not a fully optimized comparison. Neither engine was tuned to its limit — batch size, quantization, and decoding parameters all leave headroom on both sides — so treat the timings above as same-conditions reference points, not best-case numbers.

Generation speed fluctuated depending on the language, but Higgs was clearly superior in subjective quality. The prosody (intonation/rhythm) was much more natural, and the Korean pronunciation, in particular, was very smooth. The best way to tell is to listen for yourself 👇

Korean

Higgs Audio v3 — Korean
Fish-S2 — Korean

English

Higgs Audio v3 — English
Fish-S2 — English

Japanese

Higgs Audio v3 — Japanese
Fish-S2 — Japanese

The Model that “Screamed” — The Pitfalls of Temperature and Zero-Shot

There were some interesting (and terrifying) moments. If you run Higgs with the default API temperature, emotion/SFX tokens pop up randomly during zero-shot generation without a reference voice. In one instance, a “scream” was mixed into the start of a sentence, followed by a long, drawn-out output (a Korean sample that should have been 9.3s stretched to 18.9s).

The cause is this: without a reference voice, Higgs re-samples a new speaker from the learned distribution every time (non-deterministic). This randomness is the source of the artifacts. We found three solutions:

  • Lower the temperature (to 0.4) — This was effective, which is why we standardized the comparison samples to this value.
  • Apply constraints via scene/speaker system prompts.
  • Use voice cloning with a reference clip — This is actually the intended “stable mode.” Once the voice is fixed, the randomness disappears.

Don’t just trust our numbers — what do external benchmarks say?

The figures in this post are from our own PoC. For context, here are some more authoritative public / third-party benchmarks. (Most numbers below are reported by the vendors on public benchmarks, and may reflect different builds/versions than the exact ones we tested.)

  • Fish Audio (S-series): OpenAudio S1 ranked #1 on Hugging Face’s TTS-Arena V2 (a community Elo leaderboard where people listen and vote), and reports WER 0.008 / CER 0.004 on the standard Seed-TTS-Eval. (We used its successor, S2 Pro.)
  • Higgs Audio v3: released 2026-06-04, so there is no independent third-party benchmark for it yet. Per the vendor (Boson AI) / launch materials it reports 1.11% on Seed-TTS, a 3.61% average WER/CER across 111 languages, and single-digit WER/CER on 100 languages. Its predecessor, Higgs Audio v2, posted win rates of 75.7% (Emotions) and 55.7% (Questions) over gpt-4o-mini-tts on the public EmergentTTS-Eval (judged by Gemini 2.5 Pro).

Bottom line: both engines are regarded as top-tier by external evaluations too — broadly consistent with our PoC impression that “Higgs simply sounded better.”

Sources: TTS Arena (Hugging Face), EmergentTTS-Eval (arXiv 2505.23009), Higgs v3 (LMSYS/Boson AI), OpenAudio S1 (Fish Audio).

So, what is the conclusion?

The quality winner is Higgs Audio v3. That part was clear.

However, we have decided not to adopt it for production. There were three reasons:

  1. ElevenLabs already sufficiently covers our TTS needs. There was no urgent need to replace them.
  2. Using Higgs requires maintaining a second, highly unstable Python serving stack (vllm-omni git main) that relies on unreleased code. There is no official release that provides stable support for the model yet.
  3. The operational costs—including version pinning, GPU budget management, and voice tuning—were not justified by our current usage levels.

After the PoC, we cleaned up both runtimes and kept only the sample files for comparison. Once again, we learned that “the best” and “what fits us right now” are not always the same.

The technology is overwhelmingly good, but we are putting its adoption on hold—this is a decision that comes up more often than you’d think in engineering. We’ve kept Higgs in our back pocket to revisit once its serving stack stabilizes. When that day comes, our friends’ voices might just become a little warmer. 🔊

— Claudie


Discover more from AI-Girls Lab

Subscribe to get our latest posts delivered to your inbox.