voice_audio_multi/CONTRIBUTING.md
Fabio c36510c21e
Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
Initial import: audio.cpp with Orange Pi documentation
2026-11-04 19:05:22 +01:00

220 lines
53 KiB
Markdown

# Contributing
Thanks for helping improve audio.cpp. The project is growing quickly, so the most useful contributions are the ones that make the existing model surface easier to use, serve, compose, test, and maintain.
## Preferred Contribution Areas
High-impact areas right now:
- UI and app-facing workflows
- API server behavior, especially OpenAI-compatible serving. **Prioritize improvements to the legacy server runtime.** Work on `parallel_runtime` is not a current contribution priority; it remains experimental, with its design and scope still undecided.
- Pipeline and workflow subsystem improvements
- Community model ports
- Extending existing model families with additional variants
- Model documentation, examples, and validation reports
- Cross-platform build and packaging polish
> [!TIP]
> **High-impact optimization work:** as the framework evolves, newer models often gain better performance and memory-management patterns that older integrations have not yet adopted. Backporting those patterns is very useful, but it must be done model by model with careful regression tests for output quality, performance, and memory use.
These areas either improve shared surfaces used by many model families or make existing model support more complete. For already-supported model families, please add new variants to the existing implementation instead of creating a duplicate port.
## Pull Request Requirements
Keep PRs focused. A model port, a server change, a pipeline change, and a broad refactor are easier to review and validate when they are separate.
If a model port needs framework or runtime changes, split them when possible:
- Additive framework/runtime support can be included if it is clearly scoped, opt-in, and genuinely reusable by other models. Do not promote model-specific logic into the framework just because it is convenient; prefer a model-local implementation unless the shared abstraction is clearly useful beyond one model.
- Non-additive framework/runtime behavior changes should be a separate PR before the model port depends on them.
- Backend or GGML changes should be separate PRs so regressions (if any) are easier to trace.
If a PR changes runtime behavior, model implementation, backend logic, performance paths, or shared framework code, include actual runtime validation. Code inspection, generated tests, or "this should work" are not enough by themselves.
For optimization PRs, include before/after measurements. For behavior changes, explain whether outputs, performance, memory, or only docs/build wiring are affected, and include regression checks for the affected route.
**Please keep no more than 3 PRs open at the same time, including draft PRs.**
## Before Adding a Model
Please check the supported model table in [README.md](README.md), the community model docs, and open PRs/issues before starting a new model port. Many requests are better handled by extending an existing family with a new variant, route, GGUF package, backend fix, or UI surface.
If the model family is already listed, build on the existing implementation instead of opening a duplicate port. Add the new variant to the same family/spec/package layout unless there is a real architecture or task boundary that requires a separate family.
For new or updated model packages, keep the loader, model spec, docs, and UI/model-manager package entries aligned. Add or update the family's row in [docs/model_licenses.md](docs/model_licenses.md) too. A package should not advertise a model that the CLI/server cannot actually load, and a spec should not claim options or routes the implementation does not support.
Good follow-up work for existing model families includes:
- Better CLI or server examples
- More complete path tests
- Clearer model-manager package entries
- Additional GGUF variants or model-size variants
- Backend coverage improvements
- Memory, latency, or portability improvements
- Documentation for real user workflows
## New Model PRs
New standalone model ports should normally start under `community_models/`. This keeps ownership clear and lets useful model ports land with a lighter review bar than core framework models. Models can graduate into the core model tree later after they are validated, polished, and maintained as part of the main release surface.
Please read [Welcoming Community Models & Using Model Spec v1 for New Models](https://github.com/0xShug0/audio.cpp/issues/54) before starting a new model PR.
New models should use model spec v1, follow existing model/package naming conventions, and reuse framework modules, runtimes, helpers, and ownership patterns when they fit.
Even for community models, PRs should include enough evidence for maintainers and users to understand exactly what was tested. Follow the validation style shown in [PR #19](https://github.com/0xShug0/audio.cpp/pull/19) and [PR #63](https://github.com/0xShug0/audio.cpp/pull/63).
Please include:
- Exact build commands
- Exact run commands
- Model paths or model-manager package ids
- Generated output artifacts or paths
- Path-test or parity-test results
- Backend tested, such as CPU, CUDA, Vulkan, or Metal
- Relevant timing, RTF, RSS, VRAM, or resident-memory notes
- Known limitations
For TTS-style community models, the most useful validation includes a long-lived session with multiple requests, a long-form request through the framework text chunker, cache/graph reuse logs when relevant, and peak VRAM under repeated requests. These measurements do not need to be perfect on the first PR, but they make review much faster and help avoid a large cleanup pass after merge.
For models with Python references, include parity evidence when practical. For models without a clean reference path, include reproducible generated outputs and enough setup detail for another contributor to repeat the run.
Please be prepared to help maintain new model contributions as framework APIs evolve. Keeping model code aligned with the shared framework surface is part of making the implementation useful long term.
## Framework Modules (High Risk)
Framework modules are a high-impact but higher-risk contribution area because the internal framework APIs are still evolving quickly. Changes here can affect many model families at once, so please prefer additive work over modifying behavior that existing models already depend on.
If your contribution is a variant of an existing module, add it as a separate experimental module, for example `xxxExp`, instead of branching inside or rewriting the existing module. The new module can replace the existing one later, after it has shown no regressions across all models that rely on the current implementation.
## Acknowledgments
audio.cpp is moving faster because people keep showing up with real fixes, careful testing, and useful pressure on the parts that matter. Thank you to:
- [@mirek190](https://github.com/mirek190) for pushing the GGUF work forward across the converter, standalone package-spec loading, ASR GGUF support, the platform-neutral `audiocpp_gguf` binary, Qwen decoder improvements, OuteTTS, GLM-TTS, BS-RoFormer, Kroko ASR, Windows GGUF loading performance, model-spec v1 migrations, and Q8 CUDA residual graph fusion in [#8](https://github.com/0xShug0/audio.cpp/pull/8), [#43](https://github.com/0xShug0/audio.cpp/pull/43), [#45](https://github.com/0xShug0/audio.cpp/pull/45), [#46](https://github.com/0xShug0/audio.cpp/pull/46), [#53](https://github.com/0xShug0/audio.cpp/pull/53), [#62](https://github.com/0xShug0/audio.cpp/pull/62), [#63](https://github.com/0xShug0/audio.cpp/pull/63), [#68](https://github.com/0xShug0/audio.cpp/pull/68), [#79](https://github.com/0xShug0/audio.cpp/pull/79), [#97](https://github.com/0xShug0/audio.cpp/pull/97), [#98](https://github.com/0xShug0/audio.cpp/pull/98), [#114](https://github.com/0xShug0/audio.cpp/pull/114), [#122](https://github.com/0xShug0/audio.cpp/pull/122), [#123](https://github.com/0xShug0/audio.cpp/pull/123), [#124](https://github.com/0xShug0/audio.cpp/pull/124), [#126](https://github.com/0xShug0/audio.cpp/pull/126), [#140](https://github.com/0xShug0/audio.cpp/pull/140), [#141](https://github.com/0xShug0/audio.cpp/pull/141), [#142](https://github.com/0xShug0/audio.cpp/pull/142), and [#154](https://github.com/0xShug0/audio.cpp/pull/154); ACE-Step memory and performance improvements in [#737](https://github.com/0xShug0/audio.cpp/pull/737); Higgs Audio TTS CUDA prefill and KV-cache optimizations in [#669](https://github.com/0xShug0/audio.cpp/pull/669), [#704](https://github.com/0xShug0/audio.cpp/pull/704); RoFormer CUDA projection batching, chunk pipelining, and operation optimizations in [#632](https://github.com/0xShug0/audio.cpp/pull/632), [#633](https://github.com/0xShug0/audio.cpp/pull/633), [#666](https://github.com/0xShug0/audio.cpp/pull/666); a standalone YuE2 NAR parity probe in [#598](https://github.com/0xShug0/audio.cpp/pull/598); separating the legacy server runtime from experimental parallel jobs in [#715](https://github.com/0xShug0/audio.cpp/pull/715).
- [@justinjohn0306](https://github.com/justinjohn0306) for VibeVoice 7B, LoRA/fine-tune adapter loading, and the initial MOSS-TTS-Local model family implementation in [#14](https://github.com/0xShug0/audio.cpp/pull/14) and [#19](https://github.com/0xShug0/audio.cpp/pull/19).
- [@patrickjchen](https://github.com/patrickjchen) for CUDA build polish, safer constant tensor allocation, the server busy guard that keeps later requests from hanging behind a stuck model, the WebUI integration, English WebUI docs, the release 0.4 WebUI pass, and model-download fixes in [#72](https://github.com/0xShug0/audio.cpp/pull/72), [#73](https://github.com/0xShug0/audio.cpp/pull/73), [#75](https://github.com/0xShug0/audio.cpp/pull/75), [#87](https://github.com/0xShug0/audio.cpp/pull/87), [#90](https://github.com/0xShug0/audio.cpp/pull/90), [#108](https://github.com/0xShug0/audio.cpp/pull/108), and [#130](https://github.com/0xShug0/audio.cpp/pull/130).
- [@lapy](https://github.com/lapy) for the machine-readable loader/package catalog exports, loader-catalog sync checks, and model-spec dependency option checks that keep package metadata honest in [#74](https://github.com/0xShug0/audio.cpp/pull/74), [#86](https://github.com/0xShug0/audio.cpp/pull/86), and [#161](https://github.com/0xShug0/audio.cpp/pull/161).
- [@fedeizzo](https://github.com/fedeizzo) for the cross-platform Nix flake, follow-up Nix documentation polish, Strix Halo ROCm inference optimization, and Qwen3-TTS prompt modes without ICL reference codes in [#82](https://github.com/0xShug0/audio.cpp/pull/82), [#83](https://github.com/0xShug0/audio.cpp/pull/83), [#201](https://github.com/0xShug0/audio.cpp/pull/201), and [#202](https://github.com/0xShug0/audio.cpp/pull/202).
- [@phuocnguyen90](https://github.com/phuocnguyen90) for bringing VieNeu-TTS v3 Turbo into the community model surface in [#80](https://github.com/0xShug0/audio.cpp/pull/80).
- [@mosujiba](https://github.com/mosujiba) for adding configurable CORS handling to the server path in [#85](https://github.com/0xShug0/audio.cpp/pull/85).
- [@adambenhassen](https://github.com/adambenhassen) for PocketTTS runtime fixes and upstream-aligned English defaults in [#76](https://github.com/0xShug0/audio.cpp/pull/76) and [#77](https://github.com/0xShug0/audio.cpp/pull/77).
- [@vicenteliu](https://github.com/vicenteliu) for hardening the server against client disconnects by ignoring `SIGPIPE` in [#78](https://github.com/0xShug0/audio.cpp/pull/78).
- [@Cr4xy](https://github.com/Cr4xy) for improving multipart upload handling and removing temporary-file writes from that path in [#61](https://github.com/0xShug0/audio.cpp/pull/61).
- [@kevin-ho](https://github.com/kevin-ho) for making single-model server voice discovery work cleanly when the model parameter is omitted in [#64](https://github.com/0xShug0/audio.cpp/pull/64).
- [@xashr](https://github.com/xashr) for Dockerfiles, Docker examples, Docker documentation, portable CPU Docker builds, published-image docs, GGUF/Qwen3-TTS examples, CI workflow polish, CUDA probe cleanup, and portable CUDA architecture selection in [#30](https://github.com/0xShug0/audio.cpp/pull/30), [#51](https://github.com/0xShug0/audio.cpp/pull/51), [#81](https://github.com/0xShug0/audio.cpp/pull/81), [#84](https://github.com/0xShug0/audio.cpp/pull/84), [#107](https://github.com/0xShug0/audio.cpp/pull/107), [#109](https://github.com/0xShug0/audio.cpp/pull/109), and [#280](https://github.com/0xShug0/audio.cpp/pull/280).
- [@5uck1ess](https://github.com/5uck1ess) for improving Citrinet CTC decoding through the SentencePiece model, hardening PocketTTS FlowLM step allocation, and adding live PCM transcription ingest to the server in [#49](https://github.com/0xShug0/audio.cpp/pull/49), [#59](https://github.com/0xShug0/audio.cpp/pull/59), and [#144](https://github.com/0xShug0/audio.cpp/pull/144). Additional work includes Echo-TTS and broader WAV format support in [#180](https://github.com/0xShug0/audio.cpp/pull/180) and [#319](https://github.com/0xShug0/audio.cpp/pull/319); tag-aware closing-quote handling and upstream-aligned Drama3 sampling defaults in [#977](https://github.com/0xShug0/audio.cpp/pull/977), [#978](https://github.com/0xShug0/audio.cpp/pull/978).
- [@dkruyt](https://github.com/dkruyt) for the first multipart transcription upload support in [#25](https://github.com/0xShug0/audio.cpp/pull/25).
- [@CaptainArni](https://github.com/CaptainArni) for fixing PocketTTS empty output when switching cached voices, keeping the Windows CUDA build path healthy, adding ACE-Step 1.5 XL DiT variants, allowing finished GGUFs to be re-converted, and fixing Windows CUDA setup when `PATH` contains stray quotes in [#22](https://github.com/0xShug0/audio.cpp/pull/22), [#93](https://github.com/0xShug0/audio.cpp/pull/93), [#235](https://github.com/0xShug0/audio.cpp/pull/235), [#464](https://github.com/0xShug0/audio.cpp/pull/464), and [#511](https://github.com/0xShug0/audio.cpp/pull/511).
- [@IIIIIllllIIIIIlllll](https://github.com/IIIIIllllIIIIIlllll) for the experimental ROCm/HIP backend, Linux HIP build path, Windows HIP/ROCm distribution preparation, HIP build documentation, VibeVoice HIP enablement, backend device listing, Vulkan AMD integer-dot guard, IndexTTS-2.5 support, base64 voice references in server requests, IndexTTS2 speech-rate controls, IndexTTS2 HIP/text-normalization fixes, BreezeTTS 2 performance and VRAM improvements, ModelScope downloads, HIP build guards, and the Fish Audio HIP Fast-AR CMake target in [#48](https://github.com/0xShug0/audio.cpp/pull/48), [#148](https://github.com/0xShug0/audio.cpp/pull/148), [#153](https://github.com/0xShug0/audio.cpp/pull/153), [#159](https://github.com/0xShug0/audio.cpp/pull/159), [#164](https://github.com/0xShug0/audio.cpp/pull/164), [#168](https://github.com/0xShug0/audio.cpp/pull/168), [#171](https://github.com/0xShug0/audio.cpp/pull/171), [#193](https://github.com/0xShug0/audio.cpp/pull/193), [#210](https://github.com/0xShug0/audio.cpp/pull/210), [#226](https://github.com/0xShug0/audio.cpp/pull/226), [#239](https://github.com/0xShug0/audio.cpp/pull/239), [#247](https://github.com/0xShug0/audio.cpp/pull/247), [#259](https://github.com/0xShug0/audio.cpp/pull/259), [#299](https://github.com/0xShug0/audio.cpp/pull/299), [#305](https://github.com/0xShug0/audio.cpp/pull/305), [#393](https://github.com/0xShug0/audio.cpp/pull/393), [#431](https://github.com/0xShug0/audio.cpp/pull/431), [#450](https://github.com/0xShug0/audio.cpp/pull/450), [#480](https://github.com/0xShug0/audio.cpp/pull/480), and [#490](https://github.com/0xShug0/audio.cpp/pull/490).
- [@francescobozzo](https://github.com/francescobozzo) for Nix ROCm/HIP backend support, selectable model targets, and Nix CI/package fixes in [#162](https://github.com/0xShug0/audio.cpp/pull/162), [#163](https://github.com/0xShug0/audio.cpp/pull/163), and [#172](https://github.com/0xShug0/audio.cpp/pull/172).
- [@patrickvonplaten](https://github.com/patrickvonplaten) for Metal backend fixes, Voxtral Realtime streaming speedups, live audio streaming from stdin, and incremental transcript deltas in [#102](https://github.com/0xShug0/audio.cpp/pull/102), [#116](https://github.com/0xShug0/audio.cpp/pull/116), [#118](https://github.com/0xShug0/audio.cpp/pull/118), and [#127](https://github.com/0xShug0/audio.cpp/pull/127).
- [@dleiferives](https://github.com/dleiferives) for Parakeet-TDT 0.6B v3 ASR support and follow-up standalone GGUF validation/docs in [#111](https://github.com/0xShug0/audio.cpp/pull/111) and [#139](https://github.com/0xShug0/audio.cpp/pull/139).
- [@JanWerder](https://github.com/JanWerder) for adding Inflect Micro v2 and Nano v2 TTS support in [#125](https://github.com/0xShug0/audio.cpp/pull/125).
- [@chikosan](https://github.com/chikosan) for hardening safetensors parsing and bounding allocations sized by attacker-controlled file and header fields in [#138](https://github.com/0xShug0/audio.cpp/pull/138) and [#143](https://github.com/0xShug0/audio.cpp/pull/143).
- [@LauraGPT](https://github.com/LauraGPT) for adding Fun-ASR-Nano offline ASR, fixing the Linux build script executable bit, and bringing SenseVoice-Small offline/streaming ASR into the community model surface with Jason Chen and FunASR Ops in [#155](https://github.com/0xShug0/audio.cpp/pull/155), [#156](https://github.com/0xShug0/audio.cpp/pull/156), and [#219](https://github.com/0xShug0/audio.cpp/pull/219).
- [@liuzl](https://github.com/liuzl) for speeding up Metal `conv_transpose_1d` dispatch in [#149](https://github.com/0xShug0/audio.cpp/pull/149).
- [@JayDataEngineer](https://github.com/JayDataEngineer) for fixing PocketTTS `clone_audio_path` option typing in [#147](https://github.com/0xShug0/audio.cpp/pull/147).
- [@jasonchen31](https://github.com/jasonchen31) for adding server-side voice library folder support for name-based voice cloning, helping land SenseVoice-Small, fixing crashes on binaries built for older GPUs, adding Audio8 TTS, and fixing VoxCPM1 WebUI download/Yue language handling in [#191](https://github.com/0xShug0/audio.cpp/pull/191), [#219](https://github.com/0xShug0/audio.cpp/pull/219), [#240](https://github.com/0xShug0/audio.cpp/pull/240), [#333](https://github.com/0xShug0/audio.cpp/pull/333), and [#424](https://github.com/0xShug0/audio.cpp/pull/424). Additional work includes the VoxCPM1 model port in [#256](https://github.com/0xShug0/audio.cpp/pull/256); ZipVoice streaming and WebUI clone-reference transcript handling in [#692](https://github.com/0xShug0/audio.cpp/pull/692), [#693](https://github.com/0xShug0/audio.cpp/pull/693).
- [@mirek190](https://github.com/mirek190) for the native WebUI follow-up work around model management, package handling, request controls, package labels, new GGUF package surfacing, CUDA BF16 cuBLAS output on Ampere, MiniMax-H3 WebUI polish, retiring the legacy Python WebUI, adding the reusable native model package manager, clearing stale WebUI service workers, clarifying ACE-Step GGUF package labels, documenting server host/port options, fixing Qwen compact-logits graph reuse, accelerating MiraTTS on CPU/Vulkan, adding Kokoro multilingual GGUF synthesis and CPU optimization, and sharing the eSpeak-ng phonemizer across model frontends in [#199](https://github.com/0xShug0/audio.cpp/pull/199), [#206](https://github.com/0xShug0/audio.cpp/pull/206), [#207](https://github.com/0xShug0/audio.cpp/pull/207), [#208](https://github.com/0xShug0/audio.cpp/pull/208), [#211](https://github.com/0xShug0/audio.cpp/pull/211), [#213](https://github.com/0xShug0/audio.cpp/pull/213), [#229](https://github.com/0xShug0/audio.cpp/pull/229), [#230](https://github.com/0xShug0/audio.cpp/pull/230), [#257](https://github.com/0xShug0/audio.cpp/pull/257), [#258](https://github.com/0xShug0/audio.cpp/pull/258), [#381](https://github.com/0xShug0/audio.cpp/pull/381), [#426](https://github.com/0xShug0/audio.cpp/pull/426), [#491](https://github.com/0xShug0/audio.cpp/pull/491), [#496](https://github.com/0xShug0/audio.cpp/pull/496), and [#502](https://github.com/0xShug0/audio.cpp/pull/502). Additional work includes the initial embedded Svelte WebUI and the MiraTTS model port in [#185](https://github.com/0xShug0/audio.cpp/pull/185) and [#395](https://github.com/0xShug0/audio.cpp/pull/395); optimizing CUDA transpose-convolution taps in [#801](https://github.com/0xShug0/audio.cpp/pull/801), add Phonon-2 hotwords, streaming, and timestamps in [#863](https://github.com/0xShug0/audio.cpp/pull/863), and reduce Parakeet Vulkan decoder transfers and encoder allocation peaks in [#869](https://github.com/0xShug0/audio.cpp/pull/869).
- [@nikich340](https://github.com/nikich340) for adding explicit server model unloading support in [#197](https://github.com/0xShug0/audio.cpp/pull/197).
- [@utsl42](https://github.com/utsl42) for fixing CUDA linking on NixOS in [#214](https://github.com/0xShug0/audio.cpp/pull/214).
- [@yegorius](https://github.com/yegorius) for fixing PocketTTS handling in the model manager in [#205](https://github.com/0xShug0/audio.cpp/pull/205).
- [@noctrex](https://github.com/noctrex) for fixing the Windows build under MSYS2 / MinGW GCC 16 in [#135](https://github.com/0xShug0/audio.cpp/pull/135).
- [@panw3i](https://github.com/panw3i) for fixing PowerShell parse errors in `build_windows.ps1` in [#110](https://github.com/0xShug0/audio.cpp/pull/110).
- [@robotokpro](https://github.com/robotokpro) for fixing WebUI model download handling after `list_hf_files` began returning 3-tuples in [#106](https://github.com/0xShug0/audio.cpp/pull/106).
- [@jamesweiym-ops](https://github.com/jamesweiym-ops) for supporting TheRock LLVM layout in the Windows HIP build script in [#160](https://github.com/0xShug0/audio.cpp/pull/160).
- [@Blakeolson21](https://github.com/Blakeolson21) for documenting macOS CPU-only builds and fixing HIP backend classification in tests in [#237](https://github.com/0xShug0/audio.cpp/pull/237) and [#238](https://github.com/0xShug0/audio.cpp/pull/238).
- [@odest](https://github.com/odest) for adding Vulkan backend support to Windows builds in [#242](https://github.com/0xShug0/audio.cpp/pull/242).
- [@JoeMattie](https://github.com/JoeMattie) for bringing up MiniMax Music3, fixing BF16 convolution issues, repairing conversion, wiring native WebUI support, and honoring required request options in Studio in [#243](https://github.com/0xShug0/audio.cpp/pull/243) and [#245](https://github.com/0xShug0/audio.cpp/pull/245).
- [@Orion-zhen](https://github.com/Orion-zhen) for adding `--voice-dir` parsing to the server CLI and fixing a HIP build error in [#246](https://github.com/0xShug0/audio.cpp/pull/246) and [#486](https://github.com/0xShug0/audio.cpp/pull/486).
- [@derekja](https://github.com/derekja) for multipart ASR recognition prompts, clearer large-request errors, ASR graph allocation fixes, and CUDA graph-cache cleanup for concurrent ASR pressure in [#262](https://github.com/0xShug0/audio.cpp/pull/262), [#264](https://github.com/0xShug0/audio.cpp/pull/264), [#276](https://github.com/0xShug0/audio.cpp/pull/276), and [#293](https://github.com/0xShug0/audio.cpp/pull/293).
- [@kawshikbuet17](https://github.com/kawshikbuet17) for adding OmniVoice weight-type benchmark coverage, validation reports, and Python-to-C++ tests in [#269](https://github.com/0xShug0/audio.cpp/pull/269).
- [@tareko](https://github.com/tareko) for adding F5-TTS community scaffolding with Habibi Arabic aliases in [#275](https://github.com/0xShug0/audio.cpp/pull/275).
- [@jrohde](https://github.com/jrohde) for adding the MOSS-VoiceGenerator community model in [#278](https://github.com/0xShug0/audio.cpp/pull/278); the model-weight license overview in [#648](https://github.com/0xShug0/audio.cpp/pull/648).
- [@LysanderdeJong](https://github.com/LysanderdeJong) for adding the MMS-300M-1130 forced aligner community model, Sortformer v2.1 streaming diarization, the Orukeet r3 Parakeet-TDT weight variant, and VibeVoice ASR Streaming 7B performance work in [#279](https://github.com/0xShug0/audio.cpp/pull/279), [#493](https://github.com/0xShug0/audio.cpp/pull/493), [#523](https://github.com/0xShug0/audio.cpp/pull/523), and [#526](https://github.com/0xShug0/audio.cpp/pull/526); Nemotron speaker-tagged ASR, spec migration, speaker-probability export, and diarization parity improvements in [#677](https://github.com/0xShug0/audio.cpp/pull/677), [#681](https://github.com/0xShug0/audio.cpp/pull/681), [#685](https://github.com/0xShug0/audio.cpp/pull/685), [#686](https://github.com/0xShug0/audio.cpp/pull/686).
- [@drzsdrtfg](https://github.com/drzsdrtfg) for the tag-driven prebuilt release pipeline, Supertonic voice-preset request-option fix, Soprano TTS community model, Soprano maintainer metadata correction, and Qwen cached-graph prefill input fix in [#286](https://github.com/0xShug0/audio.cpp/pull/286), [#302](https://github.com/0xShug0/audio.cpp/pull/302), [#323](https://github.com/0xShug0/audio.cpp/pull/323), [#331](https://github.com/0xShug0/audio.cpp/pull/331), and [#451](https://github.com/0xShug0/audio.cpp/pull/451). Additional work includes prebuilt binary documentation and Soprano text normalization in [#342](https://github.com/0xShug0/audio.cpp/pull/342) and [#355](https://github.com/0xShug0/audio.cpp/pull/355); adding opt-in model-load progress logging in [#840](https://github.com/0xShug0/audio.cpp/pull/840).
- [@Hi5808](https://github.com/Hi5808) for documenting Jetson Orin bring-up and correcting native architecture wording in [#288](https://github.com/0xShug0/audio.cpp/pull/288).
- [@SelfRef](https://github.com/SelfRef) for making embedded WebUI work behind a path-prefix reverse proxy and adding server model LRU controls in [#297](https://github.com/0xShug0/audio.cpp/pull/297) and [#298](https://github.com/0xShug0/audio.cpp/pull/298).
- [@bjhengen](https://github.com/bjhengen) for dropping out-of-span chunk speech metadata instead of aborting the whole run in [#301](https://github.com/0xShug0/audio.cpp/pull/301).
- [@gqf2008](https://github.com/gqf2008) for adding server idle unload and pre-load memory guard behavior, tightening indeterminate-footprint handling, adding Audio8 ASR, improving default CJK text chunking, and bringing the unit test suite into Linux/macOS/Windows CI in [#306](https://github.com/0xShug0/audio.cpp/pull/306), [#308](https://github.com/0xShug0/audio.cpp/pull/308), [#337](https://github.com/0xShug0/audio.cpp/pull/337), [#441](https://github.com/0xShug0/audio.cpp/pull/441), and [#442](https://github.com/0xShug0/audio.cpp/pull/442). Additional work includes the shared greedy Qwen decoder runtime and Qwen BPE bundle helpers in [#555](https://github.com/0xShug0/audio.cpp/pull/555); Audio8 TTS Falcon-H1/Mamba2 support and codec/AR optimizations in [#444](https://github.com/0xShug0/audio.cpp/pull/444); Breeze BF16 activation rounding on Metal and Bash 3.2 build-script fixes in [#554](https://github.com/0xShug0/audio.cpp/pull/554), [#602](https://github.com/0xShug0/audio.cpp/pull/602).
- [@ampersandru](https://github.com/ampersandru) for adding IBM Granite Speech 5.0 470M TurboCTC ASR as a community model in [#311](https://github.com/0xShug0/audio.cpp/pull/311).
- [@iamwavecut](https://github.com/iamwavecut) for MiniMax Music3 performance work around native RoPE/SwiGLU lowering, opt-in CFG reuse, chunk hop support, batched ensemble takes, and Q4_K depth decoder support in [#321](https://github.com/0xShug0/audio.cpp/pull/321). Additional work includes initializing CUDA MMQ stream-k staging memory in [#320](https://github.com/0xShug0/audio.cpp/pull/320).
- [@XythQ](https://github.com/XythQ) for resolving model contracts once per loaded model instead of per request in [#328](https://github.com/0xShug0/audio.cpp/pull/328).
- [@pannagaps](https://github.com/pannagaps) for adding Chatterbox Turbo TTS as a community model in [#394](https://github.com/0xShug0/audio.cpp/pull/394).
- [@gsaon](https://github.com/gsaon) for fixing Granite Speech ASR mel filterbank construction on the continuous frequency axis in [#384](https://github.com/0xShug0/audio.cpp/pull/384).
- [@reezex0-ux](https://github.com/reezex0-ux) for adding the HIP Fast-AR top-k sampler path for Fish Audio and keeping Fast-AR inputs on the HIP stream in [#386](https://github.com/0xShug0/audio.cpp/pull/386) and [#500](https://github.com/0xShug0/audio.cpp/pull/500).
- [@feng19](https://github.com/feng19) for adding `HF_ENDPOINT` mirror support to model downloads in [#397](https://github.com/0xShug0/audio.cpp/pull/397).
- [@CryptVenture](https://github.com/CryptVenture) for adding richer WAV output options, correcting the shared text chunk mode preset, accepting the MOSS VoiceGenerator instruction spelling used by the speech route, and forwarding `language` only when a model contract accepts it in [#358](https://github.com/0xShug0/audio.cpp/pull/358), [#370](https://github.com/0xShug0/audio.cpp/pull/370), [#371](https://github.com/0xShug0/audio.cpp/pull/371), and [#400](https://github.com/0xShug0/audio.cpp/pull/400). Additional work includes the detailed transcription endpoint in [#401](https://github.com/0xShug0/audio.cpp/pull/401).
- [@voidash](https://github.com/voidash) for adding the sanoTTS voice family and expanding it with eleven more language voices plus acoustic calibration adapter support in [#449](https://github.com/0xShug0/audio.cpp/pull/449) and [#495](https://github.com/0xShug0/audio.cpp/pull/495).
- [@XsquirrelC](https://github.com/XsquirrelC) for adding additive INT8/ternary GGML types, fused CPU ops, and the VibeASR INT8/ternary ASR pipeline in [#447](https://github.com/0xShug0/audio.cpp/pull/447) and [#448](https://github.com/0xShug0/audio.cpp/pull/448).
- [@niksedk](https://github.com/niksedk) for fixing Higgs Audio TTS codec decode seams by giving the codec decoder right-hand context at the end of the stream in [#454](https://github.com/0xShug0/audio.cpp/pull/454); CLI WAV sample-format selection in [#591](https://github.com/0xShug0/audio.cpp/pull/591).
- [@Th-Underscore](https://github.com/Th-Underscore) for adding the `Ctrl` variant to the BreezeTTS model entry in [#463](https://github.com/0xShug0/audio.cpp/pull/463). Additional work includes attention compatibility for GPUs without usable flash MMA kernels in [#423](https://github.com/0xShug0/audio.cpp/pull/423); IQ GGUF tensor storage types, Drama3-small architecture support, and opt-in chunked Fish DAC reference encoding in [#958](https://github.com/0xShug0/audio.cpp/pull/958), [#959](https://github.com/0xShug0/audio.cpp/pull/959), [#960](https://github.com/0xShug0/audio.cpp/pull/960).
- [@DrewThomasson](https://github.com/DrewThomasson) for adding the one-click Colab WebUI notebook and CUDA T4 release build path in [#501](https://github.com/0xShug0/audio.cpp/pull/501).
- [@Anai-Guo](https://github.com/Anai-Guo) for fixing the Voxtral Realtime warmbench path to use the warmup case streaming flag in [#506](https://github.com/0xShug0/audio.cpp/pull/506).
- [@dpmm99](https://github.com/dpmm99) for fixing the configured-model Yue2 UI parameter surface in [#509](https://github.com/0xShug0/audio.cpp/pull/509).
- [@weidu-tpvision](https://github.com/weidu-tpvision) for preventing 32-bit `size_t` overflow in HiFT vocoder and model configuration allocation paths in [#512](https://github.com/0xShug0/audio.cpp/pull/512) and [#513](https://github.com/0xShug0/audio.cpp/pull/513). Additional work includes smaller default model contexts on 32-bit targets in [#547](https://github.com/0xShug0/audio.cpp/pull/547); the CLAP mel-projection layout fix in [#593](https://github.com/0xShug0/audio.cpp/pull/593).
- [@SmilingWolf](https://github.com/SmilingWolf) for making PocketTTS reference audio fields visible again in [#528](https://github.com/0xShug0/audio.cpp/pull/528).
- [@christopherthompson81](https://github.com/christopherthompson81) for the opt-in C ABI, Parakeet encoder graph sizing, sentence-aware WebUI text splitting, shared task vocabulary, safetensors package requirements, and incremental partial-text publishing in [#530](https://github.com/0xShug0/audio.cpp/pull/530), [#536](https://github.com/0xShug0/audio.cpp/pull/536), [#539](https://github.com/0xShug0/audio.cpp/pull/539), [#544](https://github.com/0xShug0/audio.cpp/pull/544), [#550](https://github.com/0xShug0/audio.cpp/pull/550), [#552](https://github.com/0xShug0/audio.cpp/pull/552); MOSS-TTS v1.5 and MOSS-TTSD model support, shared runtimes, memory improvements, codec attention-window correction, and spec/timing updates in [#631](https://github.com/0xShug0/audio.cpp/pull/631), [#652](https://github.com/0xShug0/audio.cpp/pull/652), [#654](https://github.com/0xShug0/audio.cpp/pull/654), [#664](https://github.com/0xShug0/audio.cpp/pull/664), [#676](https://github.com/0xShug0/audio.cpp/pull/676), [#687](https://github.com/0xShug0/audio.cpp/pull/687), [#690](https://github.com/0xShug0/audio.cpp/pull/690); Kokoro phoneme handling, supplied phoneme input, and word timings in [#564](https://github.com/0xShug0/audio.cpp/pull/564), [#565](https://github.com/0xShug0/audio.cpp/pull/565), [#577](https://github.com/0xShug0/audio.cpp/pull/577), [#626](https://github.com/0xShug0/audio.cpp/pull/626); VibeVoice ASR Streaming 1.5B support, Voxtral UTF-8 streaming boundaries, and ASR encoder graph sizing in [#613](https://github.com/0xShug0/audio.cpp/pull/613), [#619](https://github.com/0xShug0/audio.cpp/pull/619), [#684](https://github.com/0xShug0/audio.cpp/pull/684); GGUF sidecar preservation, package verification, parallel quantization, and C API list-valued options in [#566](https://github.com/0xShug0/audio.cpp/pull/566), [#579](https://github.com/0xShug0/audio.cpp/pull/579), [#649](https://github.com/0xShug0/audio.cpp/pull/649); Vulkan shader compilation retries, opt-in ccache, reproducible WebUI bundles, and CI test tooling in [#540](https://github.com/0xShug0/audio.cpp/pull/540), [#546](https://github.com/0xShug0/audio.cpp/pull/546), [#576](https://github.com/0xShug0/audio.cpp/pull/576), [#627](https://github.com/0xShug0/audio.cpp/pull/627), [#634](https://github.com/0xShug0/audio.cpp/pull/634); YuE2 NAR LoRA controls and the AudioCpp-Bindings project listing in [#614](https://github.com/0xShug0/audio.cpp/pull/614), [#665](https://github.com/0xShug0/audio.cpp/pull/665).
- [@mwzkhalil](https://github.com/mwzkhalil) for improving Higgs Audio TTS token-limit error guidance in [#522](https://github.com/0xShug0/audio.cpp/pull/522).
- [@AdityaAWaghmare](https://github.com/AdityaAWaghmare) for fixing Vulkan COL2IM_1D dispatch for large tensors in [#542](https://github.com/0xShug0/audio.cpp/pull/542).
- [@Brioch](https://github.com/Brioch) for adding Sopro V2 Turbo with offline synthesis and streaming in [#353](https://github.com/0xShug0/audio.cpp/pull/353).
- [@FraserHum](https://github.com/FraserHum) for preallocating BreezeTTS depth-projection and generation staging buffers in [#348](https://github.com/0xShug0/audio.cpp/pull/348).
- [@huyndao](https://github.com/huyndao) for fixing missing CUDA-to-HIP stream-priority API mappings in [#346](https://github.com/0xShug0/audio.cpp/pull/346).
- [@avionicharshit-byte](https://github.com/avionicharshit-byte) for rejecting unknown CLI options instead of silently ignoring them in [#339](https://github.com/0xShug0/audio.cpp/pull/339).
- [@davidxifeng](https://github.com/davidxifeng) for adding ZipVoice TTS and Confucius4 R2T2 streaming ASR in [#599](https://github.com/0xShug0/audio.cpp/pull/599), [#604](https://github.com/0xShug0/audio.cpp/pull/604).
- [@SMGoro](https://github.com/SMGoro) for adding HTDemucs six-stem source separation in [#694](https://github.com/0xShug0/audio.cpp/pull/694).
- [@pnnbao97](https://github.com/pnnbao97) for improving VieNeu-TTS v3 Turbo reference-code conditioning, sampling parity, GGUF packages, Vietnamese text input, chunking, pauses, and reusable enrollment artifacts in [#647](https://github.com/0xShug0/audio.cpp/pull/647), [#658](https://github.com/0xShug0/audio.cpp/pull/658).
- [@lojack5](https://github.com/lojack5) for Echo-TTS memory optimizations and compatibility with older embedded model specs in [#731](https://github.com/0xShug0/audio.cpp/pull/731), [#736](https://github.com/0xShug0/audio.cpp/pull/736); opt-in joint CFG for Echo-TTS in [#773](https://github.com/0xShug0/audio.cpp/pull/773).
- [@engival](https://github.com/engival) for YuE2 eager and tiled NAR attention, decode-cache initialization, semantic-token export and continuation, staged generation, and process/context memory metrics in [#557](https://github.com/0xShug0/audio.cpp/pull/557), [#560](https://github.com/0xShug0/audio.cpp/pull/560), [#635](https://github.com/0xShug0/audio.cpp/pull/635), [#636](https://github.com/0xShug0/audio.cpp/pull/636), [#641](https://github.com/0xShug0/audio.cpp/pull/641), [#642](https://github.com/0xShug0/audio.cpp/pull/642), [#688](https://github.com/0xShug0/audio.cpp/pull/688).
- [@bvisible](https://github.com/bvisible) for PocketTTS flow-depth variant loading and reference-aligned, UTF-8-aware text chunking in [#670](https://github.com/0xShug0/audio.cpp/pull/670), [#671](https://github.com/0xShug0/audio.cpp/pull/671).
- [@mduka](https://github.com/mduka) for correcting VoxCPM2 streaming decoder context and enabling stateful VoxCPM1 streaming decode on Vulkan in [#622](https://github.com/0xShug0/audio.cpp/pull/622), [#623](https://github.com/0xShug0/audio.cpp/pull/623), [#624](https://github.com/0xShug0/audio.cpp/pull/624).
- [@scriptease](https://github.com/scriptease) for incremental Confucius4 R2T2 streaming and prompt support on the live transcription route in [#618](https://github.com/0xShug0/audio.cpp/pull/618), [#696](https://github.com/0xShug0/audio.cpp/pull/696); restoring executable permissions on release tarball binaries and document R2T2's trailing-silence requirement in [#754](https://github.com/0xShug0/audio.cpp/pull/754), [#770](https://github.com/0xShug0/audio.cpp/pull/770).
- [@lkarlslund](https://github.com/lkarlslund) for RoFormer HIP FP32 attention optimization with contiguous operands in [#573](https://github.com/0xShug0/audio.cpp/pull/573).
- [@chbgdn](https://github.com/chbgdn) for exporting generated YuE2 ABC plans as score artifacts in [#561](https://github.com/0xShug0/audio.cpp/pull/561).
- [@otto-seed28](https://github.com/otto-seed28) for native CUDA SASS release coverage for Turing GPUs in [#559](https://github.com/0xShug0/audio.cpp/pull/559).
- [@hdcola](https://github.com/hdcola) for fixing Confucius4 R2T2 final streaming flushes with no tokens in [#712](https://github.com/0xShug0/audio.cpp/pull/712).
- [@Faazil-jpg](https://github.com/Faazil-jpg) for making Moonshine reject input beyond its positional-embedding limit instead of crashing in [#662](https://github.com/0xShug0/audio.cpp/pull/662).
- [@DivyamTalwar](https://github.com/DivyamTalwar) for escaping control characters in workflow file-sink JSON in [#640](https://github.com/0xShug0/audio.cpp/pull/640).
- [@NairoDorian](https://github.com/NairoDorian) for adding a community Q4_K_M GGUF package for Confucius4 R2T2 in [#702](https://github.com/0xShug0/audio.cpp/pull/702).
- [@asfdrwe](https://github.com/asfdrwe) for the Japanese WebUI translation in [#719](https://github.com/0xShug0/audio.cpp/pull/719) and Irodori-TTS streaming in [#881](https://github.com/0xShug0/audio.cpp/pull/881).
- [@dasilva333](https://github.com/dasilva333) for the Fish Audio S2 Pro quantization recipe and ecosystem integration documentation in [#588](https://github.com/0xShug0/audio.cpp/pull/588).
- [@dongfangzhizhu](https://github.com/dongfangzhizhu) for adding AudioCpp.NET to the project listings in [#585](https://github.com/0xShug0/audio.cpp/pull/585).
- [@leemysw](https://github.com/leemysw) for adding yovoice to the project listings in [#587](https://github.com/0xShug0/audio.cpp/pull/587).
- [@inikolax](https://github.com/inikolax) for adding Remiqora to the project listings in [#695](https://github.com/0xShug0/audio.cpp/pull/695).
- [@ykhrustalev](https://github.com/ykhrustalev) for LFM2.5-Audio English and Japanese ASR, TTS, and speech-to-speech support in [#758](https://github.com/0xShug0/audio.cpp/pull/758), [#768](https://github.com/0xShug0/audio.cpp/pull/768), [#798](https://github.com/0xShug0/audio.cpp/pull/798); UTF-8 transcript boundaries, encoder graph reuse, task-specific decode-cache sizing, input/package diagnostics, and speech-to-speech sampling controls in [#765](https://github.com/0xShug0/audio.cpp/pull/765), [#766](https://github.com/0xShug0/audio.cpp/pull/766), [#813](https://github.com/0xShug0/audio.cpp/pull/813), [#820](https://github.com/0xShug0/audio.cpp/pull/820), [#827](https://github.com/0xShug0/audio.cpp/pull/827); optional text output and input handling on the live speech endpoint, and the LFM2-Audio WebUI input fix in [#805](https://github.com/0xShug0/audio.cpp/pull/805), [#822](https://github.com/0xShug0/audio.cpp/pull/822), [#828](https://github.com/0xShug0/audio.cpp/pull/828); adding repacked CPU kernels, cross-turn prefill/encoder reuse, and multiple conversation caches in [#834](https://github.com/0xShug0/audio.cpp/pull/834), [#845](https://github.com/0xShug0/audio.cpp/pull/845), [#853](https://github.com/0xShug0/audio.cpp/pull/853); client-carried S2S history and the WebUI conversation panel in [#838](https://github.com/0xShug0/audio.cpp/pull/838), [#857](https://github.com/0xShug0/audio.cpp/pull/857), [#864](https://github.com/0xShug0/audio.cpp/pull/864); request input artifacts and SSE task events in [#844](https://github.com/0xShug0/audio.cpp/pull/844), [#849](https://github.com/0xShug0/audio.cpp/pull/849); and a CUDA shared-memory reduction race fix in [#837](https://github.com/0xShug0/audio.cpp/pull/837).
- [@dignome](https://github.com/dignome) for KittenTTS2 support and timing/implementation cleanup in [#776](https://github.com/0xShug0/audio.cpp/pull/776), [#781](https://github.com/0xShug0/audio.cpp/pull/781); Chatterbox S3 relative-shift and LayerNorm corrections in [#778](https://github.com/0xShug0/audio.cpp/pull/778); repeated-request fixes for Voxtral Realtime in [#793](https://github.com/0xShug0/audio.cpp/pull/793); updated Kitten TTS 2 checkpoints and BF16, Q8, and Q4 GGUF support in [#947](https://github.com/0xShug0/audio.cpp/pull/947).
- [@Zhuoxi2000](https://github.com/Zhuoxi2000) for bounding safetensors metadata nesting and correcting PyTorch tensor storage-offset handling in [#753](https://github.com/0xShug0/audio.cpp/pull/753), [#757](https://github.com/0xShug0/audio.cpp/pull/757).
- [@MohammedAly22](https://github.com/MohammedAly22) for Egyptian Arabic VoiceTut-TTS and QwenCleo-ASR packages, documentation, and Qwen3-ASR tied-weight loading support in [#780](https://github.com/0xShug0/audio.cpp/pull/780).
- [@mister2d](https://github.com/mister2d) for fixing WebUI execution of bundled VAD models in [#782](https://github.com/0xShug0/audio.cpp/pull/782).
- [@Navier8](https://github.com/Navier8) for exposing spec-backed model parameters through `GET /v1/models?include_params=true` in [#787](https://github.com/0xShug0/audio.cpp/pull/787).
- [@zeropointnine](https://github.com/zeropointnine) for adding tts-audiobook-tool to the project listings in [#788](https://github.com/0xShug0/audio.cpp/pull/788).
- [@ha466](https://github.com/ha466) for improving CUDA 12 library handling in the Colab notebook in [#795](https://github.com/0xShug0/audio.cpp/pull/795).
- [@trappedinspacetime](https://github.com/trappedinspacetime) for enabling CLI output to FIFOs and character devices such as `/dev/stdout` in [#796](https://github.com/0xShug0/audio.cpp/pull/796).
- [@juntaosun](https://github.com/juntaosun) for adding ComeCut to the project listings in [#804](https://github.com/0xShug0/audio.cpp/pull/804).
- [@wangguanghua2099](https://github.com/wangguanghua2099) for documenting YuE2 long-form host-memory exhaustion with reproduction logs and reduced-arena guidance in [#816](https://github.com/0xShug0/audio.cpp/pull/816).
- [@samuel-vitorino](https://github.com/samuel-vitorino) for Sopro v2.2.0 parity improvements, chunked streaming, and opt-in voice caching in [#818](https://github.com/0xShug0/audio.cpp/pull/818).
- [@BumpyClock](https://github.com/BumpyClock) for the experimental Whistle ASR model and its GGML decoder step graph in [#824](https://github.com/0xShug0/audio.cpp/pull/824), [#843](https://github.com/0xShug0/audio.cpp/pull/843).
- [@KKTTSPJ](https://github.com/KKTTSPJ) for Irodori-TTS Speaker Inversion embeddings, duration-predictor-free checkpoints, opt-in chunked codec processing, and reference-audio length limits in [#829](https://github.com/0xShug0/audio.cpp/pull/829), [#832](https://github.com/0xShug0/audio.cpp/pull/832), [#835](https://github.com/0xShug0/audio.cpp/pull/835), [#854](https://github.com/0xShug0/audio.cpp/pull/854); server voice discovery and previews in the WebUI, voice-preset request options, shared session defaults, and consistent handling of server-configured models in [#941](https://github.com/0xShug0/audio.cpp/pull/941), [#942](https://github.com/0xShug0/audio.cpp/pull/942), [#943](https://github.com/0xShug0/audio.cpp/pull/943), [#944](https://github.com/0xShug0/audio.cpp/pull/944), [#971](https://github.com/0xShug0/audio.cpp/pull/971), [#972](https://github.com/0xShug0/audio.cpp/pull/972).
- [@tarelerulz](https://github.com/tarelerulz) for the opt-in ARM NEON CPU decoder for sanoTTS nano voices in [#860](https://github.com/0xShug0/audio.cpp/pull/860).
- [@estebanstifli](https://github.com/estebanstifli) for adding OpenDub to the project listings in [#868](https://github.com/0xShug0/audio.cpp/pull/868).
- [@K4viar](https://github.com/K4viar) for opt-in exact attention on Higgs Audio cached-reference suffixes in [#874](https://github.com/0xShug0/audio.cpp/pull/874).
- [@SkYContact](https://github.com/SkYContact) for MOSS-TTS-Nano incremental KV-cached decoding, encoded speaker-reference reuse, and quantized GPU prefill improvements in [#878](https://github.com/0xShug0/audio.cpp/pull/878), [#885](https://github.com/0xShug0/audio.cpp/pull/885).
- [@jianchang512](https://github.com/jianchang512) for adding pyVideoTrans to the project listings in [#889](https://github.com/0xShug0/audio.cpp/pull/889).
- [@wOvAN](https://github.com/wOvAN) for the shared RKNN engine and opt-in Rockchip NPU decoder/generator paths for Qwen3 TTS, Piper, and Kokoro in [#900](https://github.com/0xShug0/audio.cpp/pull/900), [#896](https://github.com/0xShug0/audio.cpp/pull/896), [#897](https://github.com/0xShug0/audio.cpp/pull/897), [#904](https://github.com/0xShug0/audio.cpp/pull/904); Piper graph-arena sizing for long unchunked latents in [#911](https://github.com/0xShug0/audio.cpp/pull/911); Qwen3-TTS single-pass chunk decoding, streaming RKNN decoding, Piper execution plans and duration-encoder ladders, and the Inflect v2 RKNN decoder in [#910](https://github.com/0xShug0/audio.cpp/pull/910), [#913](https://github.com/0xShug0/audio.cpp/pull/913), [#915](https://github.com/0xShug0/audio.cpp/pull/915), [#992](https://github.com/0xShug0/audio.cpp/pull/992), [#994](https://github.com/0xShug0/audio.cpp/pull/994); F5-TTS graph-pool limits, staged CUDA constant cleanup, unused weight-store removal, and request-sized VoxCPM2 step graphs in [#924](https://github.com/0xShug0/audio.cpp/pull/924), [#950](https://github.com/0xShug0/audio.cpp/pull/950), [#953](https://github.com/0xShug0/audio.cpp/pull/953), [#956](https://github.com/0xShug0/audio.cpp/pull/956); model-set-aware test builds, test source linkage, Inflect conversion, and Windows-safe embedded spec literals in [#925](https://github.com/0xShug0/audio.cpp/pull/925), [#932](https://github.com/0xShug0/audio.cpp/pull/932), [#933](https://github.com/0xShug0/audio.cpp/pull/933), [#934](https://github.com/0xShug0/audio.cpp/pull/934); RK3588 documentation and CosyVoice3 NPU flow inference in [#945](https://github.com/0xShug0/audio.cpp/pull/945), [#946](https://github.com/0xShug0/audio.cpp/pull/946), [#949](https://github.com/0xShug0/audio.cpp/pull/949), [#951](https://github.com/0xShug0/audio.cpp/pull/951); shared RKNN residency accounting, converter helpers, engine resolution, memory guards, sliced-graph loading, and sidecar diagnostics in [#957](https://github.com/0xShug0/audio.cpp/pull/957), [#961](https://github.com/0xShug0/audio.cpp/pull/961), [#963](https://github.com/0xShug0/audio.cpp/pull/963), [#964](https://github.com/0xShug0/audio.cpp/pull/964), [#970](https://github.com/0xShug0/audio.cpp/pull/970), [#975](https://github.com/0xShug0/audio.cpp/pull/975), [#983](https://github.com/0xShug0/audio.cpp/pull/983), [#989](https://github.com/0xShug0/audio.cpp/pull/989), [#990](https://github.com/0xShug0/audio.cpp/pull/990); prebuilt RKNN packages, sidecar loader tests, and the Rockchip NPU Docker image in [#991](https://github.com/0xShug0/audio.cpp/pull/991), [#995](https://github.com/0xShug0/audio.cpp/pull/995), [#1002](https://github.com/0xShug0/audio.cpp/pull/1002).
- [@bradmurray-dt](https://github.com/bradmurray-dt) for CTC word timestamps in Granite Speech 5.0 TurboCTC in [#903](https://github.com/0xShug0/audio.cpp/pull/903); multilingual Granite TurboCTC checkpoint support in [#1035](https://github.com/0xShug0/audio.cpp/pull/1035).
- [@zlatkoviz-png](https://github.com/zlatkoviz-png) for correcting MioTTS repetition penalties to apply once per distinct token in [#906](https://github.com/0xShug0/audio.cpp/pull/906).
- [@Etherll](https://github.com/Etherll) for the native C++ Earshot VAD port and support for built-in VAD families in ASR chunking in [#1095](https://github.com/0xShug0/audio.cpp/pull/1095), [#1096](https://github.com/0xShug0/audio.cpp/pull/1096).
- [@Fishballllllll](https://github.com/Fishballllllll) for opt-in BreezeTTS CUDA depth-graph fusion, BF16-rounding kernel fusions, and batched CFG decoding in [#1090](https://github.com/0xShug0/audio.cpp/pull/1090), [#1091](https://github.com/0xShug0/audio.cpp/pull/1091), [#1092](https://github.com/0xShug0/audio.cpp/pull/1092).
- [@HamSanders](https://github.com/HamSanders) for exposing the build version and Git commit through `/health` in [#1097](https://github.com/0xShug0/audio.cpp/pull/1097).
- [@JarodMica](https://github.com/JarodMica) for the initial Fish Audio Drama3 community model port in [#916](https://github.com/0xShug0/audio.cpp/pull/916).
- [@JoseConseco](https://github.com/JoseConseco) for accelerating GGUF numeric-array metadata loading with bulk reads in [#1072](https://github.com/0xShug0/audio.cpp/pull/1072).
- [@Ramon-Balaguer](https://github.com/Ramon-Balaguer) for bounded host staging for HIP device-weight uploads in [#1070](https://github.com/0xShug0/audio.cpp/pull/1070).
- [@ZeroDot1](https://github.com/ZeroDot1) for ACE-Step planner attention dimensions and order-preserving non-finite-logit filtering for Higgs Audio in [#1026](https://github.com/0xShug0/audio.cpp/pull/1026), [#1032](https://github.com/0xShug0/audio.cpp/pull/1032), [#1038](https://github.com/0xShug0/audio.cpp/pull/1038); MOSS-Nano supplementary-CJK chunking, the VocalRender-Pro VoxCPM2 package, Ming3 audio-tail preservation, and parallel disk reads in [#1036](https://github.com/0xShug0/audio.cpp/pull/1036), [#1037](https://github.com/0xShug0/audio.cpp/pull/1037), [#1041](https://github.com/0xShug0/audio.cpp/pull/1041), [#1042](https://github.com/0xShug0/audio.cpp/pull/1042); the Arch Linux AMD installer, HIP VMM access/default fixes, and direct uploads for weight-normalization tensor views in [#1058](https://github.com/0xShug0/audio.cpp/pull/1058), [#1059](https://github.com/0xShug0/audio.cpp/pull/1059), [#1080](https://github.com/0xShug0/audio.cpp/pull/1080), [#1081](https://github.com/0xShug0/audio.cpp/pull/1081).
- [@apt-install-coffee](https://github.com/apt-install-coffee) for preserving parenthesized tags during text chunking in [#1000](https://github.com/0xShug0/audio.cpp/pull/1000).
- [@davencyw](https://github.com/davencyw) for opt-in plain RMS normalization for timestep embeddings and Gradium Phonon TTS on the PocketTTS runtime in [#1061](https://github.com/0xShug0/audio.cpp/pull/1061), [#1062](https://github.com/0xShug0/audio.cpp/pull/1062).
- [@ersensari](https://github.com/ersensari) for VoxCPM2 AudioVAE graph sizing, one-pass CPU Snake, and optional CPU decode overlap in [#981](https://github.com/0xShug0/audio.cpp/pull/981).
- [@hiroki-abe-58](https://github.com/hiroki-abe-58) for Ming3 language handling and long-text splitting in [#1020](https://github.com/0xShug0/audio.cpp/pull/1020), [#1021](https://github.com/0xShug0/audio.cpp/pull/1021), [#1034](https://github.com/0xShug0/audio.cpp/pull/1034); language-aware chunk sizes for Kokoro, MOSS-TTS-Nano, Irodori-TTS, FireRedTTS3, MagpieTTS, and MioTTS in [#1022](https://github.com/0xShug0/audio.cpp/pull/1022), [#1025](https://github.com/0xShug0/audio.cpp/pull/1025), [#1027](https://github.com/0xShug0/audio.cpp/pull/1027), [#1039](https://github.com/0xShug0/audio.cpp/pull/1039), [#1043](https://github.com/0xShug0/audio.cpp/pull/1043), [#1044](https://github.com/0xShug0/audio.cpp/pull/1044), [#1046](https://github.com/0xShug0/audio.cpp/pull/1046); splitting unpunctuated CJK runs at the text budget in [#1045](https://github.com/0xShug0/audio.cpp/pull/1045).
- [@kinhatula](https://github.com/kinhatula) for Vietnamese WebUI translations in [#839](https://github.com/0xShug0/audio.cpp/pull/839).
- [@railep](https://github.com/railep) for per-model backend and device selection in the server in [#973](https://github.com/0xShug0/audio.cpp/pull/973).
- [@simcop2387](https://github.com/simcop2387) for submodule URLs that work with HTTPS, SSH, and repository forks in [#923](https://github.com/0xShug0/audio.cpp/pull/923).
- [@whoreson](https://github.com/whoreson) for XTTS v2 support in [#876](https://github.com/0xShug0/audio.cpp/pull/876).