需先装好对应后端工具链(CUDA Toolkit、Vulkan SDK 或 ROCm),否则无法编译;模型需另行从 Hugging Face 或 ModelScope 的 audio.cpp-gguf 仓库下载;CUDA 默认用可移植架构列表,构建慢,可加 --cuda-arch native 加速。
audio.cpp
0xShug0活跃维护纯 C++ 音频推理引擎,基于 ggml 实现,一套代码覆盖语音合成、识别、VAD、变声和音乐生成,不依赖 Python,适合边缘部署。
An all-in-one, pure C++ inference engine for audio models, powered by ggml. Supports TTS, STT, VAD, voice conversion, music generation, and more, with highly optimized performance. No Python dependency.
scripts/build_linux.sh --backend cuda --target audiocpp_cli --target audiocpp_server支持 NVIDIA、AMD、Apple Silicon 及纯 CPU 机器,覆盖 Windows、Linux、macOS;README 未给出具体显存数值要求。
纯 C++ 音频推理引擎,基于 ggml,统一跑 TTS、ASR、语音转换等模型,无需 Python 环境
纯 C++ 音频推理引擎,基于 ggml 实现,一套代码覆盖语音合成、识别、VAD、变声和音乐生成,不依赖 Python,适合边缘部署。
核心能力
- 基于 ggml 构建统一原生运行时,覆盖 TTS、ASR、VAD、变声、音乐生成
- 支持 143 个音频模型家族、250+ 变体,共用同一套 CLI 和 server API
- 内置 WebUI,可做声音克隆、模型对比、模型与音色库管理
- 复用会话、缓存计算图与批量离线推理,部分 TTS 路径比 Python 快 1.8–8 倍
- 支持 CUDA、HIP/ROCm、Vulkan、Metal、WebGPU 与纯 CPU 多后端
容易踩的坑
- v0.9.4最新正式版2026-11-05 · 2026-11-05 06:09 UTC
What's Changed
- UI: add recipe-based cross-language dubbing and fix Studio/Arena state by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1106
- Echo-TTS: Sway time scheduling by @lojack5 in https://github.com/0xShug0/audio.cpp/pull/1105
- Add opt-in VoxCPM2 ultimate cloning by @ersensari in https://github.com/0xShug0/audio.cpp/pull/982
- Add Music Flamingo and SpotSound LoRA support by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1107
- feat(webui): allow multiple model package downloads, Fix #1075 by @ZeroDot1 in https://github.com/0xShug0/audio.cpp/pull/1082
- omnivoice: size automatic long-form chunks in code points, not bytes by @linyqh in https://github.com/0xShug0/audio.cpp/pull/1108
- OmniVoice: match Python duration weights for Bengali marks, danda and digits by @kawshikbuet17 in https://github.com/0xShug0/audio.cpp/pull/1110
- Speed up Earshot VAD with per-ISA SIMD kernels by @Etherll in https://github.com/0xShug0/audio.cpp/pull/1102
- OmniVoice: apply the tokenizer's NFC normalizer to input text by @kawshikbuet17 in https://github.com/0xShug0/audio.cpp/pull/1116
- Fix Parakeet offline chunking for stereo and non-16-kHz audio by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1117
- Add
--list-devices --jsonwith PCI ids and device memory by @Etherll in https://github.com/0xShug0/audio.cpp/pull/1118 - Fix Vulkan RMSNorm dispatch overflow for long voice references by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1120
- Add Magenta RealTime 2 Small and Base with streaming generation by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1121
- feat: add lfm3_audio for LFM3-Audio-2B ASR, TTS and S2S by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1119
- fix: return 400 for malformed option values by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1123
- build(nix): use stdenv.hostPlatform for platform checks by @luizribeiro in https://github.com/0xShug0/audio.cpp/pull/1125
- Restore ordered model loader selection by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1126
- Move package loading rules into model-owned resolvers by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1127
- Fix Arena package selection with restored Studio settings by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1128
- new asr model: parakeet_tdt: add Underdog Bark 3.0 Pro English ASR by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/1130
- Add GGML implementation selection and gfx1151_v1 HIP kernels by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1134
- fix: bound the resample kernel cache by memory with LRU eviction by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1124
- new asr model: parakeet_tdt: add Underdog Bark 3.0 Plus English ASR by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/1131
- fix: keep lfm2_audio and lfm3_audio fixed ASR chunks within the cap by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1135
- OmniVoice: make the audio tokenizer codebook weight type configurable by @kawshikbuet17 in https://github.com/0xShug0/audio.cpp/pull/1129
- perf: reuse lfm3_audio backbone head and prefill block graphs by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1136
- echo-tts: minor docs cleanup (#1105 followup) by @lojack5 in https://github.com/0xShug0/audio.cpp/pull/1140
- Expose backend implementation selection (rollout is deferred) by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1138
- new asr model: parakeet_tdt: add standard Underdog Bark 3.0 English ASR by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/1132
- Preserve backend implementation selection in Qwen3-TTS by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1141
- Allow gfx1151_v1 kernel selection on other RDNA GPUs by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/1142
- fix: fetch BoringSSL with CMake older than 3.24 by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/1144
- Load an installed package by
- v0.9.32026-10-26 · 2026-10-26 20:46 UTC
查看更新说明
What's Changed
- Run the Piper TTS duration path on the host for Vulkan as well by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/913
- Add an opt-in RKNN decoder sidecar for inflect_v2 by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/915
- Modify .gitmodules to work with https and ssh checkouts while maintaining compatibility with repo forks by @simcop2387 in https://github.com/0xShug0/audio.cpp/pull/923
- New Community Model: Fish Audio Drama 3 by @JarodMica in https://github.com/0xShug0/audio.cpp/pull/916
- Reduce Drama 3 VRAM with opt-in disk-backed expert offload by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/927
- Add Drama 3 voice cloning and multi-speaker WebUI by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/928
- Fix Drama 3 Vulkan voice conditioning with opt-in F32 encoder accumulation by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/929
- Fix Drama 3 offload prefill noise and repeat consistency by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/930
- Optimize Drama 3 output head for speech token candidates by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/931
- Gate family unit tests on the model set whose symbols they link by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/925
- Keep CPU f5_tts passes inside the graph pool ceiling, and free the evicted graphs by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/924
- Strip the ONNX module prefix in the Inflect v2 converter by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/933
- Fix CPU Fish DAC reference encoding for voice cloning by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/936
- Align CUDA reference-encoder precision for Fish Audio and Drama 3 by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/937
- Fix C++17 lambda capture breaking HIP server builds by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/939
- fix(build): compile model unit tests' own family sources into the test by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/932
- fix(build): split compiled-in model specs into 16 KB literals by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/934
- webui: list the server's voices with UI management enabled by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/941
- docs(piper_tts): the non-finite duration abort is the plain Vulkan path, not the sidecar by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/946
- Split the RKNN quality numbers by what varies, in docs/build/rockchip-npu.md by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/945
- webui: preview server voices in config mode and label the list by content by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/943
- Document the RK3588 IOVA ceiling for engine size by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/949
- perf(qwen3_tts): opt in to voicing chunked text in one decoder pass by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/910
- server: add default_session_options for configured and UI-loaded models by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/944
- Support updated Kitten TTS 2 weights with BF16, Q8 and Q4 GGUFs by @dignome in https://github.com/0xShug0/audio.cpp/pull/947
- perf(voxcpm2): size the step graphs by the request, not by max_length by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/950
- fix(f5_tts): free the evicted graphs' staged CUDA constants by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/953
- feat(cosyvoice3): run the flow DiT estimator on the Rockchip NPU by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/951
- refactor(f5_tts): drop the unused raw DiT weight store by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/956
- Reduce shared WavLM memory usage for MioCodec, MioTTS, and MeanVC2 by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/954
- server: let voice presets carry request options by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/942
- refactor(rknn): build every engine through one converter helper by @wOvA
- v0.9.2-drama3-base-small2026-10-19 · 2026-10-19 00:17 UTC
查看更新说明
What's Changed
- Run the Piper TTS duration path on the host for Vulkan as well by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/913
- Add an opt-in RKNN decoder sidecar for inflect_v2 by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/915
- Modify .gitmodules to work with https and ssh checkouts while maintaining compatibility with repo forks by @simcop2387 in https://github.com/0xShug0/audio.cpp/pull/923
- New Community Model: Fish Audio Drama 3 by @JarodMica in https://github.com/0xShug0/audio.cpp/pull/916
- Reduce Drama 3 VRAM with opt-in disk-backed expert offload by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/927
- Add Drama 3 voice cloning and multi-speaker WebUI by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/928
- Fix Drama 3 Vulkan voice conditioning with opt-in F32 encoder accumulation by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/929
- Fix Drama 3 offload prefill noise and repeat consistency by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/930
- Optimize Drama 3 output head for speech token candidates by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/931
- Gate family unit tests on the model set whose symbols they link by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/925
- Keep CPU f5_tts passes inside the graph pool ceiling, and free the evicted graphs by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/924
- Strip the ONNX module prefix in the Inflect v2 converter by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/933
- Fix CPU Fish DAC reference encoding for voice cloning by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/936
- Align CUDA reference-encoder precision for Fish Audio and Drama 3 by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/937
- Fix C++17 lambda capture breaking HIP server builds by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/939
- fix(build): compile model unit tests' own family sources into the test by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/932
- fix(build): split compiled-in model specs into 16 KB literals by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/934
- webui: list the server's voices with UI management enabled by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/941
- docs(piper_tts): the non-finite duration abort is the plain Vulkan path, not the sidecar by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/946
- Split the RKNN quality numbers by what varies, in docs/build/rockchip-npu.md by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/945
- webui: preview server voices in config mode and label the list by content by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/943
- Document the RK3588 IOVA ceiling for engine size by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/949
- perf(qwen3_tts): opt in to voicing chunked text in one decoder pass by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/910
- server: add default_session_options for configured and UI-loaded models by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/944
- Support updated Kitten TTS 2 weights with BF16, Q8 and Q4 GGUFs by @dignome in https://github.com/0xShug0/audio.cpp/pull/947
- perf(voxcpm2): size the step graphs by the request, not by max_length by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/950
- fix(f5_tts): free the evicted graphs' staged CUDA constants by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/953
- feat(cosyvoice3): run the flow DiT estimator on the Rockchip NPU by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/951
- refactor(f5_tts): drop the unused raw DiT weight store by @wOvAN in https://github.com/0xShug0/audio.cpp/pull/956
- Reduce shared WavLM memory usage for MioCodec, MioTTS, and MeanVC2 by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/954
- server: let voice presets carry request options by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/942
- refactor(rknn): build every engine through one converter helper by @wOvA
- v0.9.22026-10-15 · 2026-10-15 18:54 UTC
查看更新说明
What's Changed
- feat(asr): add experimental Whistle community model by @BumpyClock in https://github.com/0xShug0/audio.cpp/pull/824
- irodori_tts: accept Speaker Inversion embeddings as the speaker condition by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/829
- irodori_tts: load checkpoints without a duration predictor by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/832
- Add Hviske v6 Danish ASR support by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/833
- Add TF-GridNet and MossFormer2 speech separation by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/830
- irodori_tts: opt-in chunked codec decode and reference encode to bound peak memory by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/835
- cuda: skip noncontributing transpose-convolution taps by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/801
- perf(lfm2_audio): use ggml's repacked CPU kernels for quantized weights by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/834
- feat(lfm2_audio): multi-turn speech-to-speech with client-carried history by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/838
- feat(whistle_asr): run the decoder as a GGML step graph by @BumpyClock in https://github.com/0xShug0/audio.cpp/pull/843
- feat: input artifacts in server and CLI task requests by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/844
- perf(lfm2_audio): reuse the turn before's prefill and encoder output by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/845
- Add FireRed VAD and streaming support by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/846
- 🚨 fix(ggml-cuda): backport the block_reduce shared-memory race fix (llama.cpp #26385) by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/837
- 🚨fix(metal): bound padded rows in scalar copy kernel by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/831
- server: stream /v1/tasks/stream events as SSE on request by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/849
- Add native wake word and audio classification models by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/851
- perf(lfm2_audio): keep several conversations in an S2S session by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/853
- feat(irodori_tts): cap reference audio length like Python (max_ref_sec) by @KKTTSPJ in https://github.com/0xShug0/audio.cpp/pull/854
- Promote Qwen3 audio encoder, S3Gen, PReLU, ESPnet subsampling, and probability segmentation to the framework by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/855
- Publish C API libraries and add Windows Vulkan portable releases by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/823
- feat(webui): LFM2.5-Audio conversation panel for speech-to-speech by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/857
- Improve Qwen3 and Breeze TTS streaming and Breeze longform voice consistency by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/858
- Add Higgs Audio TTS streaming with reusable graphs (WIP) by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/859
- fix(webui): LFM2.5-Audio conversation panel follow-ups by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/864
- feat(runtime): continuous model-load progress in the trace log (llama.cpp-style) by @drzsdrtfg in https://github.com/0xShug0/audio.cpp/pull/840
- docs: add OpenDub to Projects by @estebanstifli in https://github.com/0xShug0/audio.cpp/pull/868
- Improve Kokoro, NeuTTS, and VoxCPM2 streaming by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/865
- feat(sanotts): opt-in ARM NEON CPU decoder for nano voices (sanotts.cpu_decoder=neon) by @tarelerulz in https://github.com/0xShug0/audio.cpp/pull/860
- parakeet_tdt: support Phonon-2 hotwords, streaming and timestamps by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/863
- Add streaming for MOSS-TTS-Nano, VibeVoice and Fish Audio by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/870
- Centralize ASR streamin
- v0.9.12026-10-07 · 2026-10-07 21:58 UTC
查看更新说明
Recent release builds tend to target AVX-512 due to automatic CPU detection on GitHub runners. If you run into crashes, please use the portable version for broader CPU compatibility.
What's Changed
- Add opt-in SSM and projection support for CUDA and Vulkan by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/713
- Add RE-USE audio restoration and native task batching by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/714
- fix(reuse): disable HIP and Metal backends by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/741
- Add Sidon speech restoration model by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/742
- Add Smart Turn v3.2 offline turn detection by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/743
- Add KugelAudio native TTS with batched CFG and streaming by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/744
- fix(server): support inline Base64 audio in task requests by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/750
- Restore executable bit on release tarball binaries by @scriptease in https://github.com/0xShug0/audio.cpp/pull/754
- fix(model-manager): reduce inventory DNS lookups by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/752
- Add Index-Echo S2TT translation models by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/755
- fix(safetensors): bound nesting depth when skipping metadata by @Zhuoxi2000 in https://github.com/0xShug0/audio.cpp/pull/753
- fix(torch_bin): honour _rebuild_tensor_v2 storage_offset and reject non-contiguous tensors by @Zhuoxi2000 in https://github.com/0xShug0/audio.cpp/pull/757
- feat: add lfm2_audio ASR for LFM2.5-Audio EN and JP by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/758
- Add CrisperWhisper 2.0 with long-form transcription and alignment by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/759
- Add Audio Flamingo 3 and Next support by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/763
- Lower YuE2 context defaults by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/767
- fix(lfm2_audio): end a transcript cut at max_tokens at the last whole character by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/765
- perf(lfm2_audio): keep the encoder graph and its compute buffer between chunks by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/766
- docs(r2t2): note that the final word needs trailing silence by @scriptease in https://github.com/0xShug0/audio.cpp/pull/770
- Use UTF-8 process code pages for Windows executables by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/772
- Add OWSM v4 and OWSM-CTC v4 by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/774
- server: separate legacy and experimental parallel jobs runtimes by @mirek190 in https://github.com/0xShug0/audio.cpp/pull/715
- Fix Chatterbox S3 encoder relative shift and LayerNorm epsilon by @dignome in https://github.com/0xShug0/audio.cpp/pull/778
- Add Kittentts2 community model by @dignome in https://github.com/0xShug0/audio.cpp/pull/776
- Fix WebUI Run for bundled VAD models by @mister2d in https://github.com/0xShug0/audio.cpp/pull/782
- Fix Kitten TTS 2 reported wall_ms and clean up model implementation by @dignome in https://github.com/0xShug0/audio.cpp/pull/781
- Egyptian arabic voicetut qwencleo by @MohammedAly22 in https://github.com/0xShug0/audio.cpp/pull/780
- feat: add lfm2_audio TTS for LFM2.5-Audio EN and JP by @ykhrustalev in https://github.com/0xShug0/audio.cpp/pull/768
- Align UI catalog model paths with spec packages by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/783
- Add tts-audiobook-tool to projects listing in README.md by @zeropointnine in https://github.com/0xShug0/audio.cpp/pull/788
- Reduce HTDemucs inference overhead across backends by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/790
- Document OmniVoice and Qwen3 options with compatible normalized names by @0xShug0 in https://github.com/0xShug0/audio.cpp/pull/786
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
audio.cpp
audio.cpp is a high-performance C++ audio inference framework built on top of ggml, designed to make modern local audio models practical, portable, and fast.
Tired of juggling a dozen Conda environments, hundreds of Python packages, and dependency conflicts just to try a few audio models? audio.cpp gives those paths a shared native runtime instead. Runs on Windows, Linux, and macOS, with support for NVIDIA, AMD, Apple Silicon, and CPU-only machines.
Lost in a sea of audio model names, papers, and codebases? Explore 100+ audio models in the Audio Model Architecture Atlas to see how they're built, what they share, and where they differ, whether you're learning or building your own.
[!TIP]
v0.9.4 highlights
Experimental HIP kernels: Select
--backend hip --backend-impl gfx1151_v1to try alternative AMD kernels. On the tested Strix Halo GPU, Q8 generation time fell by 76.7% for Irodori-TTS Small MF, 30.9% for Qwen3-TTS 1.7B VoiceDesign, and 14.0% for BreezeTTS2 versus default HIP. Despite its name,gfx1151_v1can also run on RDNA1/2, as well as RDNA3/4; available fast paths vary by architecture. Gains vary by model and hardware; the implementation is opt-in. See the HIP guide. Contributions are welcome: test other AMD GPUs, report model performance and correctness, or help improve the kernels. Thanks to AMD DevLab for providing hardware access!Metal optimizations: New SSM scan, convolution, and dataflow optimizations reduce RE-USE processing time by 56.5% on M4 Pro. Parakeet’s channel-contiguous subsampling and matrix projections reduce end-to-end processing time by 12.1–13.9%, with unchanged transcripts.
Browser inference with WASM + WebGPU: Run supported models locally in the browser. On RTX 5090 in Chrome, measured throughput reaches 23.3× real time for Supertonic 3, 13.9× for Kokoro, 94.3× for SenseVoice ASR, and 25.0× for warmed LFM3-Audio ASR. See the tested models, settings, and performance table.
Experimental streaming avatar voice chat: Talk to LFM3-Audio through the WebUI while SoulX-FlashHead animates your chosen portrait. Responses stream as text, speech, and synchronized head animation, with voice selection, adjustable speaking speed, and a customizable personality.
audio.cpp is built for real end-to-end execution rather than one-off model demos. Its optimized, reusable building blocks support speech generation and recognition, separation, alignment, and multi-model workflows. Shared components make new models easier to integrate and let improvements benefit multiple model families while keeping inference efficient, maintainable, and portable.
Features
⭐ 143 audio model families and 250+ variants. Run TTS, ASR, music generation, voice cloning, conversion, separation, and more locally through a shared CLI and server API.
⭐ Built-in WebUI. Generate and clone voices in Studio, compare models in Arena, manage models and voice libraries, and assemble narration with reusable speakers and passage editing in the TTS app.
⭐ Performance. Reusable sessions, cached graphs, and batched offline inference. Selected TTS paths run 1.8–8× faster than Python; tested Q8 packages deliver up to 1.53× speedup and 37% lower peak VRAM versus 16-bit weights (report). Supertonic 3 generates 10 hours of audio in 3 minutes on RTX 5090 (demo), while Nemotron 3.5 ASR matches WER at roughly ¼ the wall time in the TranscrIA benchmark. audio.cpp is among the fastest inference engines for streaming TTS latency on the Open TTS Leaderboard.
⭐ Portability. A native ggml runtime supporting CUDA, HIP/ROCm, Vulkan, Metal, WebGPU, and CPU through common CLI and server interfaces.
⭐ Hardware-specific optimizations. ARM NEON acceleration, Rockchip RKNN component execution, experimental HIP kernels, and CUDA, Metal, and Vulkan optimizations. Model-specific perf_mode presets expose optional fast paths for supported hardware.
⭐ Parity. Validation tooling for comparing model outputs against Python reference implementations.
⭐ Integrations and deployment. Powers speech, music, and transcription in Unsloth Studio. Fun-ASR-Nano and SenseVoice can also be deployed through the FunASR platform.
Contributing
audio.cpp would not be moving this quickly without generous contributors bringing in real fixes, new capabilities, and careful polish. See CONTRIBUTING.md for how to contribute and for a shout-out to the people already helping shape the project. Before starting a new model port, check the supported model table because several families are already implemented or under testing, and read the New Model PRs section in CONTRIBUTING.md. New ports should start under the community model source tree, where review is lighter than core models but still needs reproducible validation.
News
[!IMPORTANT] 2026-11-04 — Release v0.9.4: WebGPU support brings audio inference to the browser with WASM, and the WebUI gains streaming voice chat with animated SoulX avatars, cross-language dubbing, and voice-library export, import, and sorting. New models include Nemotron 3.5 Transcribe with CPU offload below 7 GB VRAM, LFM3-Audio, LFM D1-Omni, PocketTTS Small, SoulX-FlashHead, Real-time RE-USE, Magenta RealTime 2, Music Flamingo, Haas, and Underdog Bark 3, plus Irodori-TTS v4 Large. Experimental AMD kernel selection, new performance controls, and backend fixes improve speed, memory use, and compatibility. This release brings together community model ports, backend optimizations, and fixes shaped by real deployment reports.
2026-10-26 — Release v0.9.3: New speech models including Drama3, Ming 3.0 TTS/Audio Tiny, XTTS v2, Plapre 3, Gradium Phonon, and Earshot VAD, plus experimental LatentSync lip sync. Highlights include LoRA across 11 models, a TTS workspace, voice-cloning and dubbing recipes, perf_mode presets, lower memory use, and expanded HIP, ARM NEON, and Rockchip NPU support. Thanks to our contributors!
2026-10-15 — Release v0.9.2: New models include Voxtral TTS, TF-GridNet, MossFormer2, Hviske v6, FireRed VAD, AST, CED, and wake-word detection models. This release expands TTS streaming, adds multi-turn LFM2.5-Audio conversations, and improves model performance and compatibility. The WebUI gains a shared Voice Library and layout improvements. Downloadable C API libraries, Windows Vulkan portable builds, and packaged server configuration examples make integration easier. Thanks to everyone contributing code, testing, and feedback!
2026-09-30 - Release v0.9.0: 100+ audio models, an enhancement and denoising WebUI tab, speaker-tagged ASR, and performance and memory improvements. Explore the Architecture Atlas. Thanks to our community!
2026-06-25 to 2026-09-23 (releases 0.1 to 0.8): audio.cpp grew to 80+ model families and 120+ variants across TTS, ASR, music generation, voice conversion, separation, and speech analysis. Major additions included the native WebUI and Arena, GGUF packaging, LoRA adapters, streaming, and CUDA/Metal performance improvements, alongside Vulkan and experimental HIP support. The C ABI, Colab integration, MP3/HTTPS frontends, and models such as YuE2 and SheetSage2 expanded integration and audio-to-score workflows.
Supported Models
Task tags: TTS text to speech, Clone voice cloning, VC voice conversion, S2S speech-to-speech, ASR speech recognition, Classify audio classification, Wake wake-word detection, Align forced alignment, VAD voice activity detection, Diar speaker diarization, Codec audio codec, Sep source separation, MIDI audio-to-symbolic MIDI/events, Music music/song generation, SFX sound effects, Video video generation, Edit audio/music editing, Design voice design, Dialogue multi-speaker dialogue TTS, Ctrl TTS/clone voice control such as emotion, style, instruction, caption, or non-verbal tag control.
Runtime tags summarize the supported loading paths. GGUF package precision varies by model and release; check the audio.cpp GGUF repo or docs/gguf.md for the exact package list. Bundled means the tiny runtime asset ships under assets/framework/models and needs no separate model download. Stream means the family exposes a streaming server/session path. LoRA means adapter loading is supported in audio.cpp; see the LoRA guide for supported formats and usage.
Model weights keep the license of their original release, which is separate from audio.cpp's own license. docs/model_licenses.md lists that license per family, and whether it allows commercial use.
Speech Generation And Conversation
| Family | Task | Lang | Variants | Runtime |
|---|---|---|---|---|
| breeze_tts | TTS, Clone, Design, Ctrl | zh, en | BreezeTTS 2 instruction-conditioned TTS and prompt-audio voice cloning | GGUF BF16/Q8/Q4_0, Stream |
| chatterbox | TTS, Clone, VC | ar, da, de, el, en, es, fi, fr, hi, it, ko, ms, nl, no, pl, pt, sv, sw, tr | Chatterbox with 0.5B backbone | GGUF 16/Q8 |
| confucius4_tts | TTS, Clone | zh, en, ja, ko, de, fr, es, id, it, th, pt, ru, ms, vi | Confucius4-TTS multilingual voice cloning | GGUF F32, Stream |
| cosyvoice3 | TTS, Clone | zh, en, ja, ko, de, es, fr, it, ru, yue | Fun-CosyVoice3 zero-shot, cross-lingual, and instruction-conditioned TTS | GGUF F32/Q8, LoRA |
| dots_tts | TTS, Clone, Edit, Ctrl | multilingual | DotTTS SOARDotTTS MeanFlowDotTTS Edit | GGUF 16/Q8, Stream |
| dramabox | TTS, Clone | en | DramaBox expressive TTS and voice cloning | GGUF Q8 |
| fish_audio | TTS, Clone, Ctrl | auto, en, zh | Fish Audio S2 Pro | GGUF 16/Q8, Stream, LoRA |
| firered_audio | ASR, TTS, Clone, Design, Ctrl | zh, en | FireRedAudio multimodal speech/audio model with ASR, understanding, cloning, design, and edit paths | GGUF original/Q8 |
| fireredtts3 | TTS, Clone, Design, Ctrl | 24 langs + 21 zh dialects | FireRedTTS3 BaseFireRedTTS3 Instruct/Voicedesign | GGUF original/Q8 |
| gradium_phonon | TTS | en | Gradium Phonon 31m English | GGUF Q8, Safetensors, Stream |
| higgs_audio_tts | TTS, Clone, Ctrl | auto | Higgs Audio v3 TTS 4B | GGUF 16/Q8, Stream |
| index_tts2 | TTS, Clone, Ctrl | zh, en, ja, es, ar | IndexTTS-2IndexTTS-2.5 | GGUF 16/Q8 |
| kokoro_tts | TTS | en-us, en-gb, es, fr, hi, it, ja, pt-br, zh | Kokoro 82M, 54 preset voices | Safetensors, local GGUF BF16/Q8, Stream |
| kugelaudio | TTS | European multilingual | KugelAudio-0-Open, four preset voices | GGUF BF16 / Q8_0 / Q4_K, Stream |
| irodori_tts | TTS, Clone, Design, Ctrl | ja | Irodori-TTS-v4.1-Small (RF and MF)Irodori-TTS-v4.1-AnimeIrodori-TTS-500M-v3Irodori-TTS-600M-v3-VoiceDesign | GGUF 16/Q8 |
| magpie_tts | TTS | ar-AE, ar-MSA, ar-SA, de, en, es, fr, hi, it, ko, pt-BR, vi, zh | NVIDIA MagpieTTS Multilingual 357M (v2607) with baked speaker prompts and NanoCodec decode | GGUF original/Q8 |
| maya1 | TTS, Design, Ctrl | en | Maya1 expressive TTS with natural-language voice design, inline emotion tags, and SNAC decoding | GGUF original/Q8 |
| ming3_tts | TTS, Clone, Design, Ctrl | zh, en, ja, ko, de, fr, es | Ming 3.0 TTS 0.5B | GGUF BF16/Q8, Stream |
| miotts | TTS, Clone | en, ja | MioTTS-1.7B | GGUF 16/Q8 |
| moss_tts_local | TTS, Clone, Ctrl | auto, optional language hint | MOSS-TTS-Local-Transformer-v1.5 | GGUF 16/Q8 |
| moss_tts_nano | TTS, Clone | auto | MOSS-TTS-Nano-100M | GGUF 16/Q8, Stream |
| neutts | TTS, Ctrl | en | NeuTTS 2E with built-in speaker prompts and emotion control | GGUF original precision, Stream |
| omnivoice | TTS, Clone, Design, Ctrl | 646+ langs | OmniVoice, Qwen3-0.6B basedVoiceTut-TTS (Egyptian Arabic fine-tune) | GGUF 16/Q8, Stream |
| personaplex | Dialogue, S2S | en | PersonaPlex 7B v1 speech-to-speech conversational model with packaged voice/persona prompts | GGUF Q4/Q8, Stream |
| plapre | TTS, Clone, Ctrl, Edit | da | Plapre 3, five preset voices | GGUF F32/BF16, Stream |
| pocket_tts | TTS, Clone | en, fr, de, it, pt, es | PocketTTS-100M English/French/German/Italian/Portuguese/Spanish | GGUF 16/Q8, Stream |
| pocket_tts_small | TTS, Clone | en | PocketTTS Small 18M/7M/2M, base and ReFL | GGUF F32, Stream |
| qwen3_tts | TTS, Clone, Design, Ctrl | zh, en, fr, de, it, ja, ko, pt, ru, es | Qwen3-TTS-12Hz-0.6B-BaseQwen3-TTS-12Hz-1.7B-BaseQwen3-TTS-12Hz-1.7B-CustomVoiceQwen3-TTS-12Hz-1.7B-VoiceDesign | GGUF 16/Q8, Stream, LoRA |
| supertonic | TTS | en, ko, ja, ar, bg, cs, da, de, el, es, et, fi, fr, hi, hr, hu, id, it, lt, lv, nl, pl, pt, ro, ru, sk, sl, sv, tr, uk, vi, na | Supertonic 3 | GGUF F32, Stream |
| vibevoice | TTS, Dialogue | en, zh | VibeVoice-1.5BVibeVoice-7B | GGUF 16/Q8, Stream, LoRA |
| voxcpm2 | TTS, Clone, Design, Ctrl | ar, da, de, el, en, es, fi, fr, he, hi, id, it, ja, km, ko, lo, ms, my, nl, no, pl, pt, ru, sv, sw, th, tl, tr, vi, zh | VoxCPM2-2B, 48 kHzVocalRender-Pro (score-conditioned singing) | GGUF 16/Q8, Stream, LoRA |
| voxtral_tts | TTS | en, fr, es, de, it, pt, nl, ar, hi | Voxtral-4B-TTS-2603, 20 embedded preset voices | GGUF BF16/Q8, Stream |
Speech Recognition And Analysis
| Family | Task | Lang | Variants | Runtime |
|---|---|---|---|---|
| ast_audioset | Classify | language agnostic | MIT AST AudioSet, 527 classes | GGUF F32 |
| ced | Classify | language agnostic | CED TinyCED MiniCED SmallCED Base527 AudioSet classes | GGUF F32 |
| audio_flamingo | ASR, Audio understanding | en | Audio Flamingo 3Audio Flamingo NextMusic Flamingo 2601SpotSound (LoRA temporal grounding) | GGUF BF16/Q8/Q4, LoRA |
| canary_asr | ASR, Translate | en, de, es, fr | Canary 180M Flash | GGUF F32/Q8 |
| citrinet_asr | ASR | en | Citrinet-256 | GGUF Q8 |
| cohere_asr | ASR | en, fr, de, es, it, pt, nl, pl, el, ar, ja, zh, vi, ko | Cohere Transcribe 03-2026 | GGUF BF16/Q8/Q4_0 |
| crisperwhisper | ASR, Align | 99 language codes | CrisperWhisper 2.0 Large | GGUF BF16/Q8, Stream |
| gigaam_asr | ASR | ru, kk, ky, uz, en | GigaAM v3 CTCGigaAM v3 RNN-TGigaAM v3 E2E CTCGigaAM v3 E2E RNN-TGigaAM Multilingual CTCGigaAM Multilingual Large CTC | GGUF F16/F32 |
| fun_asr_nano | ASR | auto, zh, en, ja | Fun-ASR-Nano-2512 | GGUF 16/Q8 |
| higgs_audio_stt | ASR | en | Higgs Audio v3 STT | GGUF 16/Q8, Stream |
| hviske_asr | ASR | da | Hviske v5.3 | GGUF Q8 |
| hviske_asr_v6 | ASR | da | Hviske v6 | GGUF BF16 / Q8 |
| index_echo | ASR, Translate | zh → en, es, ja | Index-Echo-S2TT 2BIndex-Echo-S2TT 9B | GGUF original/Q8_0/Q4_K |
| lfm_d1_omni | Classify | multilingual | d1-Omni-2B calibrated audio decisions with named yes/no, choice, score, and numeric-estimate questions | GGUF Q8_0/F16/BF16 |
| marblenet_vad | VAD | lang agnostic | MarbleNet VAD | Bundled |
| micro_wake_word | Wake | model dependent | microWakeWord MixedNet TFLite models converted to GGUF | GGUF F32, Stream |
| ming3_audio | ASR, Understanding, TTS, Clone, S2S | zh, en | Ming 3.0 Audio Tiny | GGUF BF16/Q8_0/Q4_K |
| open_wake_word | Wake | en | OpenWakeWord Alexa | GGUF F32, Stream |
| firered_vad | VAD | lang agnostic | FireRed VAD / Stream-VAD | GGUF F32/F16/Q8, Stream |
| pulsevad | VAD | lang agnostic | PulseVAD 2.1K Student / 81K Teacher | GGUF F32 |
| moonshine_asr | ASR | en | Moonshine Streaming Tiny/Small/Medium | GGUF Q8, Stream |
| moss_transcribe_diarize | ASR | auto, 50+ languages | MOSS-Transcribe-Diarize with speaker labels and timestamps | GGUF BF16/Q8/Q4_K, Stream |
| nemotron_3_diar | Diar | multilingual | NVIDIA Nemotron 3 Diarization with eight-speaker arrival-order diarization | GGUF BF16, Batch, Stream |
| nemotron_asr | ASR | 100+ ASR prompt codes incl. auto | Nemotron 3.5 ASR Streaming 0.6B | GGUF 16/Q8, Stream |
| niagara_asr | ASR | en | Niagara 19M Batch EnglishNiagara 38M Batch English | GGUF F32 |
| owsm | ASR, Translate | 151 language codes | OWSM v4 Base 102MOWSM v4 Small 370MOWSM v4 Medium 1B | GGUF F32 / Q8_0 / Q4_K (Small, Medium) |
| owsm_ctc | ASR, Translate | 151 language codes | OWSM-CTC v4 1B | GGUF F32 / Q8_0 |
| qwen3_asr | ASR | zh, en, yue, ar, de, fr, es, pt, id, it, ko, ru, th, vi, ja, tr, hi, ms, nl, sv, da, fi, pl, cs, fil, fa, el, ro, hu, mk | Qwen3-ASR-0.6BQwen3-ASR-1.7B-hfQwenCleo-ASR (Egyptian Arabic fine-tune) | GGUF 16/Q8, Stream, LoRA |
| qwen3_forced_aligner | Align | zh, yue, en, de, es, fr, it, pt, ru, ko, ja | Qwen3-ForcedAligner-0.6B | GGUF 16/Q8 |
| samsone | Audio understanding | en | SAMSONE 99MSAMSONE 134MSAMSONE 356M | GGUF BF16/Q8 |
| silero_vad | VAD | lang agnostic | Silero VAD | Bundled, Stream |
| sherpa_kws | Wake | model dependent | sherpa-onnx streaming Zipformer keyword spotting | GGUF F32, Stream |
| smart_turn | Turn detection | auto | Smart Turn v3.2 | GGUF F32 |
| sortformer_diar | Diar | en | Sortformer-4spk-v1 | - |
| vibevoice_asr | ASR | auto | VibeVoice ASR | GGUF 16/Q8 |
| vibevoice_asr_streaming | ASR | en, zh, es, pt, de, ja, ko, fr, ru, it | VibeVoice ASR Streaming 7B/1.5B with persistent decoder state and speaker turns | GGUF BF16/Q8/Q4, Stream |
| voxtral_realtime | ASR | auto | Voxtral-Mini-4B-Realtime-2602 | GGUF 16/Q8/Q4, Stream |
Audio Conversion And Processing
| Family | Task | Lang | Variants | Runtime |
|---|---|---|---|---|
| apollo | S2S | lang agnostic | Apollo music restoration | GGUF F32 |
| audiosr | S2S | lang agnostic | AudioSR Basic audio super-resolution package | GGUF F32 |
| bs_roformer | Sep | lang agnostic | BS-RoFormer vocal separation checkpoints | GGUF Q8 |
| builtin_audio_utils | S2S | lang agnostic | RNNoiseDeepFilterNet2ZipEnhancerGTCRN StreamingGTCRN DNS3GTCRN VCTKFlashSR | Safetensors |
| controlfoley | SFX | auto | ControlFoley 44 kHz multimodal Foley generation from text, video, and reference audio conditioning | GGUF F32/Q8 |
| htdemucs | Sep | lang agnostic | HTDemucsHTDemucs_ftHTDemucs_6stems | GGUF 16/Q8 |
| meanvc2 | VC | lang agnostic | MeanVC2 120 ms/40 ms zero-shot voice conversion | GGUF F32/Q4, Stream |
| mel_band_roformer | Sep | lang agnostic | Mel-Band RoFormer MLX vocal separation variants | GGUF 16/Q8 |
| miocodec | Codec, VC | lang agnostic | MioCodec v2, 25 Hz, 44.1 kHz | GGUF 16/Q8 |
| mossformer2 | Sep | lang agnostic | MossFormer2 SS 16K two-speaker separation | GGUF F32 |
| muscriptor | MIDI | music | MuScriptor Small/Medium/Large audio-to-symbolic transcription | GGUF F32, Stream |
| rvc | VC | lang agnostic | RVC F16 GGUF with packaged v1/v2 voices and optional retrieval blending | GGUF 16 |
| sam_audio | S2S | lang agnostic | SAM Audio SmallSAM Audio BaseSAM Audio Large | GGUF F32/BF16/Q8 |
| seed_vc | VC | lang agnostic | SeedVC XLS-R + HiFTSeedVC Whisper-small + BigVGAN | GGUF 16/Q8 |
| sheetsage2 | MIDI | music | SheetSage2 audio-to-ABC score transcription | GGUF orig |
| sidon | S2S | lang agnostic | Sidon v0.1 single-speaker speech restoration | GGUF F32 |
| tf_gridnet | Sep | lang agnostic | TF-GridNet WSJ0-2mix two-speaker separation | GGUF F32 |
| tone_color_vc | VC | lang agnostic | Tone Color VC | GGUF F32/F16 |
| universr | S2S | lang agnostic | UniverSR Audio and Speech super-resolution | GGUF F32 |
Music, Media, And Editing
| Family | Task | Lang | Variants | Runtime |
|---|---|---|---|---|
| ace_step | Music, Edit | 50+ langs | ACE-Step 1.5 TurboACE-Step 1.5 BaseACE-Step 1.5 XL TurboACE-Step 1.5 XL SFT | GGUF 16, LoRA |
| heartmula | Music | zh, en, ja, ko, es | HeartMuLa-oss-3B with HeartCodec-oss | GGUF 16/Q8 |
| magenta_realtime_2 | Music | music | Magenta RealTime 2 Small (230M)Magenta RealTime 2 Base (2.4B) | GGUF F16/Q8_0, Stream |
| midashenglm_gen | Music, SFX | auto | MiDashengLM-Gen structured-prompt generation for speech, music, sound effects, and ambience | GGUF F32/Q8 |
| minimax_h3 | Video, Music, TTS/Dialogue | auto | MiniMax-H3 Q4_K with optional INT8 ConvRot DiT | GGUF Q4/INT8 |
| minimax_music3 | Music | auto | MiniMax Music 3 text-to-music generation with lyrics conditioning | GGUF Q4/Q8 |
| moss_soundeffect | SFX | en, zh | MOSS-SoundEffect v2 text-conditioned sound effects | GGUF BF16/Q8 |
| mulacover | Music | multilingual | MuLaCover cover-song generation from reference audio or melody/chord MIDI, with new lyrics and style | GGUF 16/Q8 |
| soulx_flashhead | Audio-to-video | lang agnostic | SoulX-FlashHead Lite audio-driven portrait video generation | GGUF Q8/BF16, Stream |
| stable_audio | Music, SFX, Edit | en | Stable Audio 3 Small MusicStable Audio 3 Small SFXStable Audio 3 Medium | GGUF 16/Q8 |
| vevo2 | TTS, Music, VC, Edit | en, zh | Vevo2 with Qwen2.5-0.5B AR model | GGUF 16 |
| yue2 | Music | en | YuE2-3B lyrics-conditioned song generation with optional ABC score planning and conditioning | GGUF BF16/Q8/Q4, LoRA |
Some model families in the supported table started as outside contributions before being promoted into the core release surface. Thanks to Mirek @mirek190 for BS-RoFormer, @justinjohn0306 for MOSS-TTS-Local, and @LauraGPT from the official FunASR team for Fun-ASR-Nano.
Community Models
Community model ports live under community_models to make the ownership boundary clear while keeping them available through the normal audio.cpp CLI and server paths. Some community-contributed models graduate into the core model tree when they become part of the main release surface. Huge thanks to the contributors who bring these models in, test them, and keep pushing the framework into new territory. See CONTRIBUTING.md for community-model expectations.
| Family | Task | Lang | Runtime | Contributor | What They Added |
|---|---|---|---|---|---|
| audio8_asr | ASR | en, zh, yue, ja, ko, fr, de | GGUF Q8, Safetensors | @gqf2008 | Audio8-ASR-0.1B compact multilingual autoregressive ASR reusing the Qwen3-ASR encoder with an MLP-tower adapter and an 8-layer Qwen2-style decoder (CC-BY-NC, local conversion only) |
| audio8_tts | TTS, Clone | auto, yue, zh, nl, en, fr, de, it, ja, ko, pl, es | GGUF Q8, Stream | @jasonchen31 | Audio8 TTS Preview 0.6B DualAR multilingual TTS and zero-shot voice cloning with a Qwen backbone and neural codec |
| auk | TTS, audio editing | auto | GGUF F32/F16/Q8 | @0xShug0 | AuK Base and AuK-Flash instruction-guided speech generation and editing with separate generator, Qwen conditioner, and VAE components |
| chatterbox_turbo | TTS (testing) | en | GGUF 16/Q8 | @pannagaps | Chatterbox Turbo distilled 350M GPT2 T3 backbone + 2-step meanflow S3Gen decoder; built-in voice |
| confucius4_r2t2 | ASR | 30 languages | Safetensors, GGUF F16/Q8/Q4, Stream | @davidxifeng | Confucius4-R2T2 streaming ASR with context and hotword prompts |
| earshot_vad | VAD | lang agnostic | Bundled, Stream | @Etherll | Earshot VAD native C++ port with offline and streaming speech detection |
| echo_tts | TTS, Clone | en | GGUF 16/Q8 | @5uck1ess | Echo-TTS 44.1 kHz zero-shot voice cloning with EchoDiT latents and Fish S1-DAC decoding |
| f5_tts | TTS, Clone | en, ar (Habibi) | GGUF, LoRA | @tareko | F5-TTS flow-matching DiT synthesis and voice cloning, with Habibi Arabic aliases habibi/habibi_tts |
| fish_drama3 | TTS, Clone, Ctrl, Edit | auto | Mixed Q2_K/Q3_K/Q4_K GGUF, IQ3_XXS (small), Stream | @JarodMica (base), @Th-Underscore (small) | Experimental Fish Audio Drama 3 port and Drama3-small variant support |
| glm_tts | TTS, Clone | zh, en | GGUF | Mirek @mirek190 | GLM-TTS zero-shot synthesis and voice cloning support |
| granite5asr | ASR | en, fr, de, es, pt, it, ja | GGUF Q8 | @ampersandru | IBM Granite Speech 5.0 470M TurboCTC ultra-fast Conformer-CTC ASR with Shaw relative positional embeddings and ByteLevel BPE |
| haas_asr | ASR | ja | GGUF F16/Q8, Stream | Third Intelligence | Haas-ja-v1.0, sharing Parakeet’s encoder and TDT decoder with a KDA predictor |
| inflect_v2 | TTS | en | GGUF FP32 | Jan @JanWerder | Inflect Micro v2 and Nano v2 native offline synthesis |
| kitten_tts | TTS | en | GGUF FP32 | Community | KittenTTS Mini 0.8 native 80M-parameter synthesis with eight built-in voices and the shared eSpeak-ng frontend |
| kitten_tts2 | TTS, Clone | en, ar, zh, fr, de, hi, it, pt, ru, es, nl, id, ja, ko, pl, tr | GGUF Q8/Q4 | @dignome | Kitten TTS 2 native Qwen3/S3 synthesis, multilingual presets, and reference-audio cloning; ready-to-run GGUF |
| kroko_asr | ASR | de, en, es, fr, it, he, nl, pt, sv, tr | Safetensors, GGUF Q8 | Mirek @mirek190 | Kroko Community ASR native offline/streaming Zipformer2/RNN-T transcription with word timestamps |
| latentsync | Video lip sync | lang agnostic | GGUF F32/F16/Q8, experimental | @0xShug0 | LatentSync 1.6 audio-conditioned lip synchronization with optional DeepCache and reduced-memory execution modes |
| lfm2_audio | ASR, TTS, S2S | en, ja | GGUF F32/16/Q8/Q4, Stream | @ykhrustalev / Liquid AI | LFM2.5-Audio English and Japanese transcription, speech and spoken chat from Liquid AI's published GGUFs: LFM2 hybrid short-conv/attention backbone with a FastConformer encoder for audio input, and a depthformer and LFM2 detokenizer for 24 kHz speech in four built-in English voices; spoken questions get replies of interleaved text and speech; offline or streamed frame by frame |
| lfm3_audio | ASR, TTS, S2S | en, ar, da, de, el, es, fi, fr, he, it, ja, ko, nl, pl, pt, sv, tr, zh | GGUF BF16/16/Q8/Q4, Safetensors, Stream, experimental | Community | LFM3-Audio transcription, spoken-question chat (with optional thinking), speech in 38 built-in voices across 19 languages and spoken chat from Liquid AI's published LFM3-Audio-2B GGUFs: LFM2 encoder for audio input, LFM3 hybrid short-conv/attention backbone, a bidirectional MaskGIT depth decoder (12 codebooks, 12.5 Hz) and the LiquidCodec decoder for 24 kHz speech; spoken questions get replies of interleaved text and speech, with client-held multi-turn history; TTS and S2S offline or streamed frame by frame |
| liveavatar | Audio-to-video | auto | GGUF NVFP4 | @0xShug0 | LiveAvatar audio-to-video avatar generation with Wan2.2 S2V and an optional low-VRAM denoiser path |
| minimax_h3 | Video, Music, TTS/Dialogue | auto | GGUF Q4/INT8 | @0xShug0 | MiniMax-H3 text-to-audio/video generation with Q4_K and optional INT8 ConvRot DiT |
| minimax_music3 | Music | auto | GGUF Q4/Q8 | @0xShug0, @JoeMattie | MiniMax Music 3 text-to-music generation with lyrics conditioning |
| mira_tts | TTS, Clone | en | Local conversion | Mirek @mirek190 | MiraTTS experimental native Qwen2 + ECAPA/Perceiver zero-shot voice cloning with progressive segment streaming (CC-BY-NC-SA-4.0 weights) |
| mms_forced_aligner | Align | nl (nld), en (eng); pre-romanized Latin | Safetensors, GGUF 16/Q8 | @LysanderdeJong | MMS-300M-1130 Forced Aligner word-timestamp alignment from a wav2vec2 CTC checkpoint (safetensors or local GGUF) |
| nemotron_transcribe | ASR, translation, audio Q&A | auto | IQ4_NL / Q4_K / Q3_K / Q2_K experts | @JarodMica | NVIDIA Nemotron 3.5 Transcribe 30B-A4B experimental offline speech language model with CTC word timestamps and speaker labels |
| moss_tts_v15 | TTS, Clone | en, zh | GGUF | Chris @christopherthompson81 | MOSS-TTS-v1.5 8B delay-pattern zero-shot voice cloning; voice-attribute instructions are followed only loosely, see the limitation note |
| moss_ttsd | TTS, Clone, Dialogue | en, zh | GGUF BF16/Q8/Q4 | Chris @christopherthompson81 | MOSS-TTSD 8B dialogue TTS with speaker-tagged conversations and per-speaker voice cloning |
| moss_voicegen | Voice Design | en, zh | GGUF | Joost @jrohde | MOSS-VoiceGenerator speech in a voice designed from a written instruction |
| outetts | TTS, Clone | en, ar, zh, nl, fr, de, it, ja, ko, lt, ru, es, pt, be, bn, ka, hu, lv, fa, pl, sw, ta, uk | GGUF, LoRA | Mirek @mirek190 | Llama-OuteTTS-1.0-1B TTS and voice cloning support |
| parakeet_tdt | ASR | auto, bg, cs, da, de, el, en, es, et, fi, fr, hr, hu, it, lt, lv, mt, nl, pl, pt, ro, ru, sk, sl, sv, uk | GGUF F32/16/Q8, Stream | @dleiferives | Parakeet-TDT 0.6B v3 offline, long-form, and buffered-streaming ASR support, plus Orukeet r3 weights |
| phonon2_asr | ASR | en | GGUF F32/16/BF16/Q8, Stream | Mirek @mirek190 | Phonon-2, native hotwords and phrase-based streaming on the shared Parakeet implementation |
| piper_tts | TTS | en | GGUF FP32 | Community | Piper TTS native VITS synthesis for the Lessac medium voice with the shared eSpeak-ng frontend |
| realtime_reuse | S2S | lang agnostic | GGUF F32, Stream | @0xShug0 | Real-time RE-USE causal speech restoration with 30 exit-layer/lookahead configurations |
| reuse | S2S | lang agnostic | GGUF F32/F16/Q8_0 | @0xShug0 | RE-USE speech restoration |
| sanotts | TTS | en, vi, id, cs, de, es, fr, it, pt, ro, ru, tr, ne, hi | GGUF FP32 | Ashish @voidash | sanoTTS voice family eighteen voices from 294k to 2.27M parameters, native offline synthesis |
| sense_asr | ASR | auto, zh, en, yue, ja, ko, pt, ru, es, it, fr, de, nl, pl, tr, ar, hi, vi, th, id, ms, fa, nospeech | GGUF Q8, Stream | Jason Chen @jasonchen31, @LauraGPT / FunASR | SenseVoice-Small offline/streaming SAN-M + CTC transcription with event/emotion/language tags, ITN and word timestamps |
| soprano_tts | TTS | en | GGUF Q8, Stream | @drzsdrtfg | Soprano-1.1-80M ultra-lightweight TTS with Qwen3 LM + Vocos decoder |
| sopro_tts | TTS, Clone | en, pt, fr, de | Safetensors, GGUF F16, Stream | @Brioch, @samuel-vitorino (model author) | Sopro V2 Turbo updated for Sopro 2.2.0: 120M zero-shot voice cloning, chunked streaming, and optional voice caching |
| sortformer_diar_v2 | Diar | multilingual | GGUF F32/mixed F16, Stream | @LysanderdeJong | NVIDIA Sortformer v2.1 four-speaker streaming diarization; local conversion only pending redistribution approval |
| underdog_bark3 | ASR | en | GGUF F32/16/BF16/Q8, Stream | Mirek @mirek190 | Underdog Bark 3 Standard/Plus/Pro, sharing the Parakeet implementation |
| vibeasr | ASR | en | GGUF I8_S + I2_S | @XsquirrelC / VibeASR | VibeASR fully quantized port of VibeASR.cpp: VibeVoice acoustic/semantic tokenizers on INT8 weights and INT8 activations, feeding a ternary BitNet Qwen2 decoder. Offline, CPU only |
| vieneu_v3_turbo | TTS, Clone | vi, en | GGUF | Bảo @pnnbao97 (model author); first port by Phuoc @phuocnguyen90 | VieNeu-TTS v3 Turbo 48 kHz Vietnamese/English TTS and voice cloning (formerly vietneu_tts) |
| voxcpm1 | TTS, Clone | zh, en, ja, ko | GGUF Q8, Stream, LoRA | @jasonchen31 | VoxCPM1 tokenizer-free 0.5B TTS with 16 kHz output, streaming, and continuation-mode voice cloning |
| whistle_asr | ASR | en, de, fr, es, it, nl, pl | GGUF F32, Safetensors F32 | @bumpyclock | Whistle ASR experimental offline transcription with a GGML encoder on CPU, Metal, CUDA, or Vulkan and a host decoder; 16 kHz mono, at most 30 seconds |
| xtts_v2 | TTS, Clone | en, es, fr, de, it, pt, pl, tr, ru, nl, cs, ar, zh-cn, hu, ko, ja, hi | GGUF original/Q8_0/Q4_K_M | @whoreson | Coqui XTTS v2 multilingual speech generation with a reference voice and cached speaker conditioning |
| zipvoice | TTS, Clone | zh, en | GGUF F32, Stream | Community | ZipVoice k2-fsa TTSZipformer flow-matching zero-shot voice cloning with Vocos vocoder; jieba + pypinyin Chinese frontend; chunk streaming |
Prebuilt Binaries
Official packages for every release are attached to the Releases page:
| Platform | Backends |
|---|---|
| Windows x64 | CPU, Vulkan, CUDA (12.4 / 13.3), HIP/ROCm (test) |
| Ubuntu x64 | CPU, Vulkan, HIP/ROCm (test) |
| macOS (arm64 / x64) | Metal |
The Windows CUDA packages ship the CUDA runtime in a separate cudart archive. Extract it next to the binaries so the CUDA backend can load ggml-cuda.dll and the CUDA runtime DLLs (cudart, cuBLAS, cuFFT).
- HIP/ROCm (AMD GPUs): Official Windows and Ubuntu test builds are available on the Releases page. GPU compatibility and model coverage are still being validated; please report issues with your GPU, driver version, and reproduction command.
- Older community Windows HIP packages: @IIIIIllllIIIIIlllll's fork Releases provides v0.9.0 packages with the ROCm runtime bundled, in ROCm 6.4 and 7.1 tracks. See docs/build/windows-hip-distribution.md for packaging details.
Homebrew Install
On macOS, audio.cpp can be installed from the Homebrew tap:
brew tap 0xShug0/audio-cpp
brew trust 0xShug0/audio-cpp
brew install audio-cpp
WebUI
audiocpp_server includes an embedded SvelteKit/TypeScript WebUI for running local TTS, cloning, ASR,
generation, conversion, separation, VAD, diarization, and alignment workflows. The production UI is compiled
into the server binary, so using it requires neither Python nor separate frontend files:
audiocpp_server --ui --ui-management --backend cuda
Open http://127.0.0.1:8080. --ui-management enables catalog browsing, downloads, temporary
uploads, and dynamic model switching, so this is the easiest way to try audio.cpp without writing a
server config first. For a locked-down config-driven instance, start with --ui and a server config
instead; in that mode the UI only offers models declared by the config unless management is enabled.
For Docker UI downloads, mount a writable models directory at /app/models and
use --ui-management. See docker.md.
The native UI also exposes background model download/preparation, long-text split-and-merge synthesis, a browser-local saved voice library, microphone recording, and near-live ASR input. Some model preparation jobs invoke the repository's Python model manager because those packages require Hugging Face download or checkpoint conversion; model inference and the embedded UI remain Python-free. See webui/README.md for launch commands, model notes, and frontend development instructions.
Docker
Docker CUDA and CPU images are available for both CLI and server use. See docker.md for available images, build commands and working Docker examples.
Model Manager and GGUF Downloads
Use tools/model_manager_v2.py for normal model downloads. It reads
model_specs/*.json and installs the default package for each family, preferring
ready-to-use GGUF packages when they are available.
Native builds configured with -DAUDIOCPP_BUILD_NATIVE_MODEL_MANAGER=ON also
provide audiocpp_model_manager, a standalone headless
frontend over the same reusable C++ package-management library used by the
server and embedded WebUI. It supports list, info, install, clean, and remove
without starting audiocpp_server; this is the preferred native path for CLI,
Docker, remote provisioning, and other scripted environments. The Python v2
manager remains available as an alternative during migration. The native path
uses bundled TLS by default and does not require libcurl.
audiocpp_model_manager list
audiocpp_model_manager install qwen3_asr_0_6b_q8_0 --models-dir models
The old safetensors/converter catalog has been renamed to
tools/model_manager_deprecated.py. Use it only for legacy model layouts that
have not moved to spec-backed GGUF packages yet.
GGUF downloads:
- Official model packages: audio-cpp on Hugging Face
- Community-hosted model packages: see the individual model guides linked in the supported model tables for repositories and download instructions.
See the Model Manager guide for model-manager usage and package notes.
Build yourself
| OS | Requirements |
|---|---|
| Linux | GCC 13 or newer, CMake, plus the backend toolchain for the build you want: NVIDIA CUDA Toolkit for CUDA, Vulkan SDK for Vulkan, ROCm for HIP |
| Windows | Visual Studio Build Tools 2022 or newer with C++ desktop workload, MSVC x64 compiler, Windows SDK, CMake, Ninja, MSVC OpenMP components; official NVIDIA CUDA Toolkit for CUDA builds, Vulkan SDK for Vulkan builds, AMD HIP SDK for HIP builds |
| macOS | Xcode or Xcode Command Line Tools, plus CMake. Metal builds also require the Metal compiler available through xcrun |
Composite builds let you compile only the model families you need. full is the default and is what release/Docker builds should use. custom registers only the requested loaders while still linking required internal dependencies; core builds the runtime without the optional model-family set.
The helper scripts expose this as --model-set and --models on Linux/macOS, and -ModelSet and -Models on Windows:
scripts/build_linux.sh --backend cuda --model-set custom --models qwen3_tts,pocket_tts,qwen3_asr --target audiocpp_cli
Direct CMake builds use the same underlying variables:
cmake -S . -B build/debug -DCMAKE_BUILD_TYPE=Debug -DAUDIOCPP_MODEL_SET=custom -DAUDIOCPP_MODELS=qwen3_tts,pocket_tts,qwen3_asr
cmake --build build/debug --target audiocpp_cli -j 8
Use the Linux helper script for CPU, CUDA, Vulkan, or HIP builds:
scripts/build_linux.sh --backend cuda --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend vulkan --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend hip --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend cpu --target audiocpp_cli --target audiocpp_server
The script writes to aligned build directories such as build/linux-cuda-release, build/linux-vulkan-release, build/linux-hip-release, and build/linux-cpu-release.
Without --cuda-arch, CUDA builds use the portable arch list (works on many
GPUs, slower to build). For a faster build targeting only the local GPU, pass
--cuda-arch native (CMake >= 3.24; on older CMake this falls back to the
portable list) or an explicit arch list:
scripts/build_linux.sh --backend cuda --cuda-arch native --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend cuda --cuda-arch "86;89" --target audiocpp_cli --target audiocpp_server
Nothing caches compiler output by default. --ccache wires ccache up as the
compiler launcher, which leaves a cold build about as slow as it already is and
makes a rebuild roughly 14x faster. A CMAKE_<LANG>_COMPILER_LAUNCHER already
set in the environment is left alone.
scripts/build_linux.sh --backend cuda --cuda-arch native --ccache --target audiocpp_cli
Composite examples:
scripts/build_linux.sh --backend cuda --model-set full --target audiocpp_cli
scripts/build_linux.sh --backend cuda --model-set custom --models qwen3_tts,pocket_tts,qwen3_asr --target audiocpp_cli
scripts/build_linux.sh --backend cpu --model-set core --target audiocpp_cli
For portable CPU kernels on machines where native ISA flags are not suitable:
scripts/build_linux.sh --backend cuda --native-cpu OFF --target audiocpp_cli --target audiocpp_server
For deployment builds with compiled package specs:
scripts/build_linux.sh --backend cuda --deployment-build --target audiocpp_cli --target audiocpp_server
For native WebUI model downloads, enable the native model manager:
scripts/build_linux.sh --backend cuda --native-model-manager --target audiocpp_server
For direct CMake commands, see docs/build/linux.md. For the opt-in Rockchip NPU (RKNN) decoder path, see docs/build/rockchip-npu.md.
Use the Windows PowerShell build script:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\build_windows.ps1
Common presets:
.\scripts\build_windows.ps1 -Preset windows-cuda-release -Target audiocpp_cli
.\scripts\build_windows.ps1 -Preset windows-vulkan-release -Target audiocpp_cli
.\scripts\build_windows.ps1 -Preset windows-cpu-release -Target audiocpp_cli
.\scripts\build_windows.ps1 -Target audiocpp_server -Jobs 16
.\scripts\build_windows.ps1 -Preset windows-cuda-release -ModelSet custom -Models "qwen3_tts,pocket_tts,qwen3_asr" -Target audiocpp_cli
From cmd.exe, use the wrapper:
scripts\build_windows.cmd
For deployment builds with compiled package specs:
.\scripts\build_windows.ps1 -DeploymentBuild -Target audiocpp_cli
For native WebUI model downloads, enable the native model manager:
.\scripts\build_windows.ps1 -NativeModelManager -Target audiocpp_server
For requirements, CPU profiles, CUDA packaging, and release zips, see docs/build/windows.md.
CPU-only Build
Apple builds enable Metal by default. To build a CPU-only binary, disable Metal explicitly:
cmake -S . -B build/macos-cpu-release \
-DCMAKE_BUILD_TYPE=Release \
-DENGINE_ENABLE_CUDA=OFF \
-DENGINE_ENABLE_VULKAN=OFF \
-DENGINE_ENABLE_METAL=OFF \
-DENGINE_ENABLE_OPENMP=OFF \
-DGGML_OPENMP=OFF
cmake --build build/macos-cpu-release \
--parallel "$(sysctl -n hw.logicalcpu)" \
--target audiocpp_cli audiocpp_server audiocpp_gguf
Confirm that the resulting CLI sees the host CPU backend:
build/macos-cpu-release/bin/audiocpp_cli --list-devices
Metal Build
On macOS, use the Metal helper script to build against ggml's Metal backend:
scripts/build_metal.sh --target audiocpp_cli
The script configures build/macos-metal-release by default, enables ENGINE_ENABLE_METAL=ON, disables CUDA and Vulkan, embeds the Metal shader library, and builds static libraries plus the requested target.
Useful variants:
scripts/build_metal.sh --target audiocpp_server
scripts/build_metal.sh --build-type Release --archs arm64 --target audiocpp_cli
scripts/build_metal.sh --model-set custom --models qwen3_tts,pocket_tts --target audiocpp_cli
scripts/build_metal.sh --with-tests --target audio_dsp_test
scripts/build_metal.sh --openmp auto --target audiocpp_cli
scripts/build_metal.sh --native-cpu OFF --target audiocpp_cli
scripts/build_metal.sh --deployment-build --target audiocpp_cli
The built CLI is written to:
build/macos-metal-release/bin/audiocpp_cli
On Linux and Windows, HIP builds compile ggml's CUDA backend sources as HIP code for AMD GPUs. ENGINE_ENABLE_HIP and ENGINE_ENABLE_CUDA are mutually exclusive — configure with exactly one of them.
Linux (the helper script auto-detects ROCm via ROCM_PATH/HIP_PATH/hipconfig and local GPU targets via amdgpu-arch, falling back to rocminfo; pass --gpu-targets to build for other architectures, or when no AMD GPU is visible, e.g. in a VM or container):
scripts/build_linux.sh --backend hip --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend hip --gpu-targets "gfx1100;gfx1103" --target audiocpp_cli
Direct CMake:
cmake -S . -B build_hip \
-DENGINE_ENABLE_HIP=ON \
-DGPU_TARGETS=gfx1151 \
-DCMAKE_C_COMPILER="$(hipconfig -l)/clang" \
-DCMAKE_CXX_COMPILER="$(hipconfig -l)/clang++" \
-DCMAKE_BUILD_TYPE=Release
cmake --build build_hip -j$(nproc)
Windows (the helper script auto-detects ROCm, GPU targets, cmake, and ninja):
powershell -ExecutionPolicy Bypass -File scripts\build_windows_hip.ps1
Run with --backend hip (rocm is accepted as an alias). For GPU target selection, hipBLASLt GEMM notes, iGPU tuning, and known limitations, see docs/build/HIP.md.
Native WebGPU builds use Dawn. Enable the backend explicitly and point CMake to the directory containing DawnConfig.cmake:
cmake -S . -B build/debug \
-DCMAKE_BUILD_TYPE=Debug \
-DENGINE_ENABLE_WEBGPU=ON \
-DDawn_DIR=/path/to/dawn/lib/cmake/Dawn
cmake --build build/debug --target audiocpp_cli -j 8
Run with --backend webgpu. Browser builds use Emscripten to run the C++ CLI and load GGUF models inside a Web Worker, with playable/downloadable outputs. They require a browser with WebGPU, shader-f16, and JSPI support.
For native and browser build commands, WASM32/WASM64 memory limits, and Kokoro/eSpeak setup, see docs/build/webgpu.md.
For Nix and NixOS builds, see the build guide.
Optional server adapters are built from the external/audio.cpp-server-frontends
submodule. They are separate from the embedded WebUI. From the repository root,
fetch the package (using HTTPS here so no GitHub SSH key is required):
git -c 'url.https://github.com/[email protected]:' submodule update --init external/audio.cpp-server-frontends
For example, build a server with audio decoding and MP3 encoding adapters:
cmake -S . -B build/debug \
-DCMAKE_BUILD_TYPE=Debug \
-DAUDIOCPP_BUILD_SERVER_FRONTENDS=ON \
-DAUDIOCPP_SERVER_FRONTENDS_DIR=external/audio.cpp-server-frontends \
-DAUDIOCPP_SERVER_FRONTEND_MODULES="audio_decode;mp3_encode"
cmake --build build/debug --target audiocpp_server --parallel 8
The example uses the default backend settings of a fresh build directory; add the backend flags from the platform build instructions when needed. Module-specific dependencies and available adapters are documented in the frontend package. See the server guide for configuration and usage.
| Option | Meaning | Default |
|---|---|---|
ENGINE_ENABLE_CUDA | Enable the ggml CUDA backend. Required for --backend cuda. | OFF |
ENGINE_ENABLE_HIP | Enable the ggml HIP backend (AMD GPUs). Required for --backend hip; mutually exclusive with ENGINE_ENABLE_CUDA. | OFF |
ENGINE_ENABLE_VULKAN | Enable the ggml Vulkan backend. Required for --backend vulkan. | OFF |
ENGINE_ENABLE_METAL | Enable the ggml Metal backend. Required for --backend metal. | OFF on most platforms, ON on Apple |
ENGINE_ENABLE_LLAMAFILE | Enable llamafile SGEMM support in ggml CPU builds. | ON |
ENGINE_ENABLE_CUDA_GRAPHS | Enable ggml CUDA graphs support when CUDA is enabled. | ON |
ENGINE_ENABLE_NATIVE_CPU | Build ggml CPU kernels with native host ISA flags such as -march=native. Disable this for portable CPU kernels or toolchains that reject generated CPU instructions. | ON |
ENGINE_ENABLE_OPENMP | Enable OpenMP for host-side parallel work. | ON |
ENGINE_BUILD_EXAMPLES | Build example binaries. | OFF |
AUDIOCPP_BUILD_SERVER_FRONTENDS | Enable optional in-process server frontend adapters, separate from the embedded WebUI. | OFF |
AUDIOCPP_SERVER_FRONTEND_MODULES | Semicolon-separated adapter modules to build. Requires AUDIOCPP_BUILD_SERVER_FRONTENDS=ON and an external frontend package. | empty |
AUDIOCPP_SERVER_FRONTENDS_DIR | External frontend package directory containing server_frontends.cmake, which registers the requested modules. | empty |
ENGINE_BUILD_TESTS | Build framework unit tests. | OFF |
ENGINE_BUILD_EXTENDED_TESTS | Build extended non-model tests and probes, such as server/app/package-manager checks and backend graph tests. | OFF |
ENGINE_BUILD_MODEL_TESTS | Build model-specific tests and probes. | OFF |
ENGINE_BUILD_WARMBENCH | Build warmbench helper binaries. | OFF |
AUDIOCPP_BUILD_NATIVE_MODEL_MANAGER | Build the standalone native model manager and enable server-side WebUI downloads/install management. This opt-in feature builds the HTTP/TLS dependency. | OFF |
AUDIOCPP_USE_SYSTEM_OPENSSL | Use system OpenSSL instead of bundled BoringSSL when native model management is enabled. | OFF |
AUDIOCPP_DEPLOYMENT_BUILD | Compile package specs into CLI/server binaries for standalone GGUF and package-spec fallback loading. Script builds expose this as --deployment-build on Linux/macOS and -DeploymentBuild on Windows. | OFF |
| Native model manager script flag | Build scripts expose AUDIOCPP_BUILD_NATIVE_MODEL_MANAGER as --native-model-manager on Linux/macOS and -NativeModelManager on Windows. --system-openssl / -SystemOpenSsl and --boringssl-archive / -BoringSslArchive configure its TLS backend. | disabled |
AUDIOCPP_MODEL_SET | Model composite to build: full, core, or custom. Script builds expose this as --model-set on Linux/macOS and -ModelSet on Windows. | full |
AUDIOCPP_MODELS | Comma or semicolon separated model target names when AUDIOCPP_MODEL_SET=custom, such as qwen3_tts,pocket_tts,qwen3_asr. Script builds expose this as --models on Linux/macOS and -Models on Windows. | empty |
Usage
[!IMPORTANT] Please read your model's documentation: open the model-docs index, choose your task category, then find your model. Also read the dedicated CLI usage guide and server guide. The examples below are quick starts; model requirements, supported options, and setup details vary.
CLI
The main CLI binary is:
build/bin/audiocpp_cli
High-level command shape:
audiocpp_cli --task <task> --model <path> --family <family> [--backend <backend>] [--mode <mode>] [options]
Always specify
--familyfor model commands, including model-specific help. Treat it as required; omission is supported only for backward compatibility. Automatic loader discovery without it can substantially slow startup and--model ... --help.
Core selectors:
--task vad|asr|diar|sep|gen|tts|clon|vc|s2s|align|vdes|spk|svc|midi|wake|cls--model <path>--family <name>explicitly selects the model family--backend cpu|cuda|vulkan|metal|best--mode offline|streaming; streaming is available for models whose docs list streaming support
Common interface options:
--load-option key=valuepasses model-load options, such as PocketTTS language selection--session-option key=valuepasses session/runtime options, such as backend-specific weight controls--request-option key=valuepasses per-request model options--config <id>selects a discovered config asset--weight <id>selects a discovered weight asset--device <n>selects the backend device--threads <n>sets backend and OpenMP worker threads
Examples:
Text-to-speech:
build/bin/audiocpp_cli \
--task tts \
--family pocket_tts \
--model /path/to/model \
--backend cuda \
--text "audio.cpp is running PocketTTS locally." \
--voice-ref assets/resources/sample.wav \
--out build/out/pocket_tts.wav
PocketTTS with another language and a built-in voice:
build/bin/audiocpp_cli \
--task tts \
--family pocket_tts \
--model /path/to/models/pocket-tts \
--backend cuda \
--load-option language=spanish \
--text "Hola, esta es una prueba corta de Pocket TTS." \
--voice-id alba \
--out build/out/pocket_tts_spanish.wav
ASR:
build/bin/audiocpp_cli \
--task asr \
--family qwen3_asr \
--model /path/to/model \
--backend cuda \
--audio assets/resources/sample_16k.wav
Voice conversion:
build/bin/audiocpp_cli \
--task vc \
--family seed_vc \
--model /path/to/model \
--backend cuda \
--audio assets/resources/a.wav \
--voice-ref assets/resources/b.wav \
--out build/out/seed_vc.wav
Useful CLI features:
--helpwith--taskshows task-oriented help--helpwith--model <path>and--family <family>shows model-owned request, session, and load options--inspectprints discovered configs, weights, and capabilities--list-loadersprints registered model families (--jsonfor the machine-readable contract)--list-devicesprints backend devices and the--backend/--devicevalues that select them (--jsonadds PCI ids and free/total memory)python tools/model_manager_v2.py list --jsonprints installable packages frommodel_specs/*.json--batch-text-file <txt>runs one offline request per non-empty line--batch-text-dir <dir>runs one offline request per.txt,.md, or.jsonfile, normalizing each file as one paragraph--batch-audio-dir <dir>runs one