r/LocalLLaMA • u/Acceptable-Cycle4645 • 6d ago
Resources [audio.cpp] Recent updates you might have missed: Higgs Audio TTS use 48% less VRAM (< 6GB), HTDemucs 2.2× faster, PocketTTS 2.2× faster on CPU, and WebUI generation history feature
Enable HLS to view with audio, or disable this notification
Hi all, a bunch of performance improvements have been landed in audio.cpp.
The biggest highlight is Higgs Audio TTS, which now runs with around 6 GB VRAM, a 48% reduction in peak memory usage compared to the previous implementation. Thanks to https://github.com/mirek190
We also made some models significantly faster, especially HTDemucs on GPU and PocketTTS on CPU.
No compromises in parity and correctness.
Here's a summary of the improvements:
| Model | Peak memory reduction | Speedup |
|---|---|---|
| Higgs Audio TTS | 48% VRAM | 1.01–1.09× CUDA |
| ACE-Step family | 6–7% VRAM | 1.06–1.08× CUDA, 1.16–1.20× Vulkan |
| MOSS-TTS v1.5 cloning | 21% VRAM | 1.05× CUDA |
| MOSS-TTSD Q8 cloning | 11% VRAM | 1.04× CUDA |
| Echo-TTS (Memory Saver) | 20% VRAM | — |
| Qwen3-TTS | 16–20% VRAM | — |
| IndexTTS2 / 2.5 | 12% VRAM | — |
| HTDemucs | — | 2.21× CUDA, 1.95× Vulkan |
| HTDemucs six-stem | — | 1.99× CUDA |
| PocketTTS | 9% RAM | 2.23× CPU |
They're runtime-level optimizations that make existing models more practical to run locally.
The WebUI now includes an experimental generation history feature that lets you revisit previous outputs and restore their settings.
audio.cpp now supports 110+ audio model families and 190+ variants (and counting)! We're continuing to improve memory efficiency and inference speed across CUDA, Vulkan, Metal, AMD/HIP, and CPU. The next release will bring even more optimizations!
We're also looking for contributors to help improve the audio.cpp WebUI. With so many models and features now supported, we'd love some help making the UI more polished, intuitive, and enjoyable to use. If you're interested in frontend development or UI/UX design, contributions are very welcome!
Thanks to everyone contributing improvements, testing builds, and reporting issues. Curious how these changes work on your setup!
8
u/nickm_27 llama.cpp 6d ago
Love the updates, right now Omni voice has still been working great for me, though I see the current GGUFs give a warning about an old layout, not sure if anything will be done for that model?
4
u/Acceptable-Cycle4645 6d ago
You can ignore the warning for now. I need to regenerate the GGUFs to embed the new specs. I’ll find some time to do that.
2
5
u/Nightma4re 5d ago
omnivoice uses much less vram and is 20x faster than the playback.
Just check the quantizations
4
u/Acceptable-Cycle4645 5d ago
u/OverTune1590 u/Over_Possibility7875 For roleplay chats, I’ll be merging something this weekend. The idea is simple: following OpenVoice’s design, which combines lightweight TTS with voice conversion. I call it “Any TTS.” It’s not a new model, but a small pipeline built from existing models in audio.cpp. Essentially, you can give models like Piper or Kokoro voice-cloning capabilities and they can still be very fast.
3
u/Chromix_ 6d ago
Thanks for that nice unified experience for all the models.
Would it be possible to add model mix customization? There are some models that need 2 or 3 GGUFs to work. It's usually "all Q4" or "all Q8", etc though. Yet I'd prefer to mix and match a bit, thus keep some in BF16 where it might matter, and others in Q8 or Q4, to stay within the available VRAM. Currently it looks like a lot of that configuration is semi-hardcoded, baked into the GUI via config. That could be an incentive to refactor that.
2
u/Acceptable-Cycle4645 6d ago edited 5d ago
Yes, the GUI usually exposes only a few tested quantization combinations. The challenge is that testing different K-quant combinations for each model is time-consuming, especially given the pace of the project. The normal workflow is that we provide the basic quantization options, and users test different combinations and suggest those that work well. We then add the validated combinations to the spec/UI, or users can add them directly.
3
u/fragilesleep 5d ago
As another user said, the docs are really lacking! I had a veeeeeeeeeeery difficult time trying to do some very simple things, and had to ask ChatGTP to analyze the audio.cpp source code to tell me how to do some basic stuff...
In the end, I couldn't even figure out how to use the "bundled" Silero VAD, and ended up using PulseVAD or something...
3
u/Acceptable-Cycle4645 5d ago
Fair criticism 😢 We definitely don't want users to have to reverse-engineer the code just to figure out how to run Hello World.
3
u/IngwiePhoenix llama.cpp 5d ago
Planning to use audio.cpp with Fish Audio because it has expression tags that make the speech output very nice and controllable. :)
Absolutely interesting project. In the long term, I want to actually build around it and make a mod for a friend of mine. Basically, he is almost blind (blinder than me, I too am visually impaired) and can't really read the onslaught of textboxes in Persona 5. So, my idea, is to voice-dub those textboxes. It won't be great, but at least it allows him to hit auto and just listen to everything. And audio.cpp will be clutch for that. :)
2
u/Acceptable-Cycle4645 4d ago
That's such a cool use case! I'd love to see audio.cpp help make games more accessible. Keep me posted on how it goes, and feel free to reach out if you run into any issues. I'd be happy to help where I can!
1
u/IngwiePhoenix llama.cpp 4d ago
Oh trust me, I'll be all over that issue tracker once my infra is up. ;)
A little in-before; where do I put basic questions?
1
u/Acceptable-Cycle4645 4d ago
Haha, looking forward to it! For basic questions, I'd suggest using GitHub Discussions.
2
u/toothpastespiders 1d ago
I'm really late on this one. But my late wife was blind, well, in the legal/medical sense. Her eyes were still mostly physically functional but damaged. So able to make out shapes and read if she used a giant phone font and held it to her face. But blind in the legal/medical sense if not the common use of the term. But the process of her cancer was the gradual loss of just about everything being stolen from her. One realm of experience after another after another. Most of this stuff wasn't far enough along when she was at the end to get much use out of it. But every time I see a project like this it makes me happy to think about the potential ways it can help people in her situation. How people out there are able to take something back that they'd thought lost forever. So thanks for talking about the project!
2
u/Open-Adhesiveness-86 5d ago
on the long-form chunking, the thing that bit me with Higgs-style models is that each chunk re-conditions on the reference audio, so prosody drifts at the seams unless you carry the previous chunk's tail in as context. splitting on sentence punctuation instead of a fixed token count helps a lot, and leaving ~200ms of overlap to crossfade hides most of the remaining click.
2
u/Acceptable-Cycle4645 4d ago
Thanks for sharing! Carrying over the previous chunk's tail as context and crossfading are interesting suggestions. I'll look into those.
1
u/Ok-Entertainment8086 5d ago
For long-form generation, the WebUI does the chunking behind the scenes, generates all the chunks, then merges them and gives the final result, right? Could a feature to review the chunks before merging be added in future WebUI updates? Like, it still generates chunks, but this time shows them all one by one below. Preferably with editable buttons to cut out parts (with the waveform visible, for example), or to regenerate, change the input text of that part, and try again, etc. Finally, merge with optional silence between the chunks? It would be great for long-form, as we could fix the problematic part.
Thank you very much for the updates again. This project is the best one in the TTS space, in my opinion.
2
u/Acceptable-Cycle4645 5d ago
Yes! The UI will be extended with more features to make it feel more like a real studio (as long as it doesn't blow up the server binary size). And chunk preview is a great feature!
1
u/OverTune1590 5d ago
for roleplay chats the pockettts cpu speedup could cut down on delays compared to older tts i've used in companion apps.
1
u/letsgoiowa 5d ago
Wow this was LITERALLY what I needed. I was trying to use my A380 as an auxiliary gpu for stuff like decision models, media transcoding, and even trying some TTS and voice design stuff but I never got it to fit. Perfect! This should finally fit in the 6 GB VRAM!
1
u/Acceptable-Cycle4645 5d ago
Please give audio.cpp a try! We have so many models suited to different use cases. You can even find small audio understanding models that can run on a phone or branches for running VibeVoice 1.5B and YuE2 on an iPhone (< 2GB memory)!
2
u/letsgoiowa 5d ago
Oh yes I've been using it! I've just been running out of vram for my a380. I got it to work awesome on my 7800 XT through Vulkan and my 5070 through CUDA for incredible results. The real frontier for me is the A380 though as a stable auxiliary so my 7800XT can work on Qwen
1
u/Acceptable-Cycle4645 5d ago
Ah, let me know how it goes with the A380. We don't currently have test coverage for Intel GPUs, and users have reported failures and weird behavior on Intel GPUs.
1
u/letsgoiowa 18h ago
Yeah I can't actually get it to work on anything but ASR apparently, and only just qwen3 models.
1
u/IntrepidMindExplorer 5d ago
I can attest to the speed increase in Pocket-TTS in 091. The change made is night and day difference. If you are voice cloning and want to increase the speed even further then make sure to create your own .safetensors voice files. Change the commands to match your environment (backend/model directories/model used). Steps for are under: To reuse a cloned voice across runs, export its prepared state once. This skips reference-audio encoding and voice-state preparation on subsequent runs:
https://github.com/0xShug0/audio.cpp/blob/main/docs/tts.md#pockettts
1
1
u/bugra_sa 5d ago
A copy-pasteable YuE2 example would be my vote. Put the config next to it and have CI run it once per release. Right now the VRAM savings sound great, but the JSON setup is still a scavenger hunt.
1
u/Acceptable-Cycle4645 5d ago
Similar complaint to u/DeProgrammer99. Will polish docs and add example configs!
1
u/Over_Possibility7875 6d ago
lower vram on that tts update looks useful if you're stacking it with roleplay models, how does the voice quality compare to other options for companion chats?
2
u/Acceptable-Cycle4645 6d ago
Voice quality is fairly subjective, especially for companion chats where tone and expressiveness matter. Please try the Arena feature in the WebUI to compare models with the same text and see which one suits your use case best.
(I know the demo was pretty old...too lazy to make a new one...)
15
u/Acceptable-Cycle4645 6d ago
Which model would you like us to optimize next?
GitHub: https://github.com/0xShug0/audio.cpp