TTS Models

August 14, 2026 · View on GitHub

ModelFamilyTask(s)Quick Start
Qwen3 TTSqwen3_ttstts, vdesQwen3 TTS
Chatterboxchatterboxclon, vcChatterbox
Confucius4-TTSconfucius4_ttsclonConfucius4-TTS
DramaBoxdramaboxtts, clonDramaBox
DotTTSdots_ttstts, clonDotTTS
MioTTSmiottsttsMioTTS
MOSS-TTS-Localmoss_tts_localtts, clonMOSS-TTS-Local
MOSS-TTS-Nanomoss_tts_nanotts, clonMOSS-TTS-Nano
MiniMax-H3minimax_h3gen dialogue audioMiniMax-H3
NeuTTSneuttsttsNeuTTS
OmniVoiceomnivoicettsOmniVoice, full guide
PocketTTSpocket_ttsttsPocketTTS
VoxCPM2voxcpm2tts, vdesVoxCPM2
Higgs Audio v3 TTShiggs_audio_ttsttsHiggs Audio v3 TTS
Fish Audio S2 Profish_audiottsFish Audio S2 Pro
IndexTTS2index_tts2ttsIndexTTS2
IndexTTS2.5index_tts2 (variant 2.5)ttsIndexTTS2.5
Irodori-TTSirodori_ttstts, vdesIrodori-TTS
GLM-TTSglm_ttstts, clonGLM-TTS
Inflect Micro v2inflect_v2ttsInflect v2
OuteTTSoutettstts, clonOuteTTS
SupertonicsupertonicttsSupertonic
VibeVoicevibevoicettsVibeVoice

This page covers speech TTS-style families. MiniMax-H3 appears here for prompt-driven dialogue audio, but it uses the generation route (--task gen) rather than the normal speech route (--task tts). Detailed route manuals live under docs/models/ or docs/community_models/ when a model needs more space.

Common CLI shape:

audiocpp_cli --task <task> --family <family> --model <model-dir> --backend cuda ...

Common options:

OptionMeaning
--textText, prompt, lyrics, or multi-speaker script, depending on the model.
--voice-refReference voice WAV for models that support cloning.
--reference-textTranscript or prompt text for models that use explicit reference transcripts.
--voice-idBuilt-in voice id for models with packaged voices.
--languageModel language code when the model requires one.
--text-chunk-sizeLong-form chunk budget in characters. Each model has its own default.
--seedOptional fixed seed. If omitted, models that sample use a random seed unless their upstream default is fixed.

TTS streaming behavior

The current streaming TTS families do not all emit audio at the same granularity. VoxCPM2 and DotTTS can push audio from inside one generation request. Confucius4-TTS, NeuTTS, OmniVoice, and Supertonic 3 use pull events and emit a completed text segment/chunk at a time. The latter still reduces long-form time to first playback, but the first event waits for the first segment to finish.

FamilyDelivery granularityPCM output rate
voxcpm2Intra-generation decoder chunks48 kHz
dots_ttsIntra-generation streaming vocoder chunks48 kHz
confucius4_ttsCompleted text segments22.05 kHz
neuttsCompleted text segments24 kHz
omnivoiceCompleted model-planned text chunks24 kHz
supertonicCompleted text chunks44.1 kHz

The HTTP server exposes these as speech.audio.delta SSE events when the configured model uses mode: "streaming"; see the server API.

Qwen3 TTS

Qwen3 TTS supports reference voice cloning, voice design, and packaged custom voices. See Qwen3 models for the full Base, VoiceDesign, CustomVoice, ASR, and forced-alignment manual.

audiocpp_cli --task tts --family qwen3_tts --model models/Qwen3-TTS-12Hz-1.7B-Base --backend cuda --text "Hello from Qwen3 TTS." --voice-ref assets/resources/b.wav --out out.wav

Chatterbox

Chatterbox is a voice-clone TTS model with an audio-to-audio voice-conversion path. The upstream Chatterbox family also documents paralinguistic tag tokens in newer variants, but the current audio.cpp integration exposes voice cloning and voice conversion rather than a separate tag-control interface.

FieldValue
Familychatterbox
Model directorymodels/chatterbox
Tasksclon, vc
Modesoffline
Languagesar, da, de, el, en, es, fi, fr, hi, it, ko, ms, nl, no, pl, pt, sv, sw, tr
Voice inputRequired reference WAV through --voice-ref; VC also requires source audio through --audio
Built-in voicesNot exposed by this integration

Voice clone:

audiocpp_cli --task clon --family chatterbox --model models/chatterbox --backend cuda --text "Hello from Chatterbox." --voice-ref assets/resources/b.wav --out out.wav

Voice conversion:

audiocpp_cli --task vc --family chatterbox --model models/chatterbox --backend cuda --audio assets/resources/a.wav --voice-ref assets/resources/b.wav --out converted.wav
OptionValuesDefaultMeaning
--audioWAV pathrequired for vcSource speech for voice conversion.
--voice-refWAV pathrequiredReference speaker audio for cloning, or target speaker audio for voice conversion.
--languagelanguage codeenText language.
--text-chunk-sizeinteger chars128Long-form chunk size.
--guidance-scalefloat0.5CFG strength.
--temperaturefloat0.8T3 sampling temperature.
--top-pfloat0.8T3 nucleus sampling limit.
--repetition-penaltyfloat2.0T3 repetition penalty.
--max-tokensinteger1000Maximum generated T3 tokens per chunk.
--do-sampletrue, falsetrueEnable stochastic T3 sampling.

Confucius4-TTS

Confucius4-TTS is an experimental multilingual voice-cloning TTS model packaged as a standalone GGUF bundle. It supports offline generation and segment-level streaming audio output from a complete text request, using reference speech, language-aware text normalization, T2S semantic generation, S2A flow matching, style encoding, semantic audio features, and BigVGAN vocoding.

FieldValue
Familyconfucius4_tts
GGUF modelmodels/Confucius4-TTS-GGUF/confucius4-tts-orig.gguf
Taskclon
Modesoffline, streaming
Languageszh, en, ja, ko, de, fr, es, id, it, th, pt, ru, ms, vi
Voice inputRequired reference WAV through --voice-ref
Built-in voicesNot exposed
StatusExperimental

Language support note: English (en) and Chinese (zh) are the currently validated and normalized paths. Other advertised language codes are experimental best-effort cross-language cloning paths; text frontend normalization is incomplete for them, so pronunciation and reading quality may vary.

Voice clone:

audiocpp_cli --task clon --family confucius4_tts --model models/Confucius4-TTS-GGUF/confucius4-tts-orig.gguf --backend cuda --language en --text "Hello from Confucius four TTS." --voice-ref assets/resources/b.wav --out out.wav

Streaming session:

audiocpp_cli --task clon --family confucius4_tts --model models/Confucius4-TTS-GGUF/confucius4-tts-orig.gguf --backend cuda --mode streaming --language en --text "Hello from the streaming path." --voice-ref assets/resources/b.wav --out out.wav
OptionValuesDefaultMeaning
--voice-refWAV pathrequiredReference speaker audio for cloning.
--languagelanguage codezhTarget synthesis language code.
--temperaturefloat0.8T2S sampling temperature.
--top-pfloat0.8T2S nucleus sampling probability.
--top-kinteger30T2S top-k sampling limit.
--num-beamsinteger3T2S beam count; use 1 for single-beam sampling.
--repetition-penaltyfloat10.0T2S repetition penalty.
--max-tokensinteger1520Maximum T2S semantic sequence length including prompt tokens.
--num-inference-stepsinteger25S2A flow-matching step count.
--guidance-scalefloat0.7S2A classifier-free guidance scale.
--text-chunk-sizeinteger tokens80Maximum text tokens per generated segment.
--text-chunk-modedefault, tag_aware, japanese, endlinedefaultFramework text chunking mode.
--request-option cross_fade_duration_sec=<seconds>seconds0.3Cross-fade duration between generated segments.
--request-option edge_fade_duration_sec=<seconds>seconds0.1Fade duration applied at segment edges.
--request-option edge_pad_duration_sec=<seconds>seconds0.1Silence padding applied at segment edges.
--seedinteger1234Seed for T2S sampling and S2A noise initialization.
--session-option confucius4_tts.mem_saver=true|falseboolfalseRelease staged graphs after request phases; default keeps them cached for reuse.

DramaBox

DramaBox is an experimental English expressive TTS and voice-cloning model packaged as a standalone GGUF bundle. It combines Gemma text conditioning, diffusion sampling, reference-audio conditioning, long-form chunking, and 48 kHz stereo output.

FieldValue
Familydramabox
GGUF modelmodels/DramaBox-GGUF/dramabox-q8_0.gguf
Taskstts, clon
Modesoffline
Languagesen
Voice inputOptional reference WAV through --voice-ref
Built-in voicesNot exposed
StatusExperimental

Text-only speech:

audiocpp_cli --task tts --family dramabox --model models/DramaBox-GGUF/dramabox-q8_0.gguf --backend cuda --text "Hello from DramaBox." --out out.wav

Voice clone:

audiocpp_cli --task clon --family dramabox --model models/DramaBox-GGUF/dramabox-q8_0.gguf --backend cuda --text "Hello from DramaBox." --voice-ref assets/resources/b.wav --out out.wav

Older prebuilts that reject --task clon can use --task tts --voice-ref ...; the same reference-conditioning path is used.

OptionValuesDefaultMeaning
--voice-ref / --target-voiceWAV pathnot setReference voice for cloning; omitted requests text-only speech.
--request-option negative_prompt=<text>stringbuilt-in quality promptNegative text conditioning when classifier-free guidance is enabled.
--request-option duration_sec=<seconds>seconds0Explicit target duration; 0 uses prompt-duration estimation.
--num-inference-stepsinteger30Diffusion sampling steps.
--guidance-scalefloat2.5Classifier-free guidance scale. Values greater than 1 enable CFG.
--request-option spatio_temporal_guidance_scale=<float>float1.5Spatio-temporal guidance scale. Values greater than 0 enable STG.
--request-option duration_scale=<float>float1.1Multiplier applied to the estimated prompt duration when duration_sec is 0.
--request-option reference_duration_sec=<seconds>seconds10.0Reference voice crop/repeat duration.
--request-option guidance_rescale=auto|<number>stringautoGuidance rescale mode or explicit numeric value.
--request-option audio_chunk_threshold_sec=<seconds>seconds45.0Estimated duration threshold that switches to long-form chunking.
--request-option audio_chunk_duration_sec=<seconds>seconds37.0Target estimated duration for each long-form chunk.
--request-option cross_fade_duration_sec=<seconds>seconds0.05Equal-power cross-fade between long-form chunks.
--seedinteger42Torch-compatible CUDA noise seed for diffusion sampling.
--session-option dramabox.perf_mode=off|flash_attentionenumoffAttention implementation mode. off keeps the exact reference-query attention path; flash_attention enables the optimized path.
--session-option dramabox.mem_saver=true|falseboolfalseRelease staged runtime graphs and weights immediately after each request phase to reduce peak and resident VRAM; default keeps components cached for reuse.

DotTTS

DotTTS is an experimental multilingual TTS and voice-cloning family with SOAR and MeanFlow GGUF packages. SOAR is the default download. See DotTTS for template, streaming, chunking, and full option details.

python3 tools/model_manager_v2.py install dots_tts_soar_q8_0

audiocpp_cli --task tts --family dots_tts \
  --model models/DotTTS-SOAR-GGUF/dots-tts-soar-q8_0.gguf \
  --backend cuda \
  --text "Our field team finished the morning inspection and prepared a concise update." \
  --voice-ref assets/resources/a.wav \
  --reference-text "This little work was finished in the year eighteen o three, and intended for immediate publication." \
  --request-option reference_duration_sec=5 \
  --out out.wav

For MeanFlow, install dots_tts_mf_q8_0 and use models/DotTTS-MF-GGUF/dots-tts-mf-q8_0.gguf with the same runtime options.

MioTTS

MioTTS is a 1.7B voice-clone TTS path that uses MioCodec for acoustic decoding. It requires a reference voice and a MioCodec model. Best-of-N candidate scoring can optionally use Qwen3-ASR.

FieldValue
Familymiotts
GGUF modelmodels/MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf
Required dependencyMioCodec through --session-option miotts.codec_model_path=<dir>
Tasktts
Modesoffline
LanguagesModel auto-handles supported text languages; no explicit language selector is exposed
Voice inputRequired reference WAV through --voice-ref
Built-in voicesNot exposed
audiocpp_cli --task tts --family miotts --model models/MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf --backend cuda --session-option miotts.codec_model_path=models/MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-q8_0.gguf --text "Hello from MioTTS." --voice-ref assets/resources/b.wav --out out.wav

With best-of-N scoring, also provide a Qwen3-ASR model:

audiocpp_cli --task tts --family miotts --model models/MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf --backend cuda --session-option miotts.codec_model_path=models/MioCodec-25Hz-44.1kHz-v2-GGUF/miocodec-25hz-44khz-v2-q8_0.gguf --session-option miotts.best_of_n_asr_model_path=models/Qwen3-ASR-0.6B-GGUF/qwen3-asr-0.6b-q8_0.gguf --request-option miotts.best_of_n_enabled=true --request-option miotts.best_of_n=2 --text "Hello from MioTTS." --voice-ref assets/resources/b.wav --out out.wav
OptionValuesDefaultMeaning
--voice-refWAV pathrequiredReference speaker audio.
--text-chunk-sizeinteger chars180Long-form chunk size.
--max-tokensinteger700Maximum generated LM tokens per chunk.
--temperaturefloat0.8LM sampling temperature.
--top-kinteger50LM top-k sampling limit.
--top-pfloat1.0LM nucleus sampling limit.
--repetition-penaltyfloat1.0LM repetition penalty.
--do-sampletrue, falsetrueEnable stochastic LM sampling.
--session-option miotts.codec_model_path=<dir>directorysibling MioCodec directoryMioCodec model used for acoustic decoding.
--request-option miotts.best_of_n_enabled=true|falseboolfalseRun best-of-N candidate selection.
--request-option miotts.best_of_n=<n>integersession defaultGenerate n candidates and select by ASR scoring.
--session-option miotts.best_of_n_default=<n>integer1Default best-of-N candidate count.
--session-option miotts.best_of_n_max=<n>integer8Maximum best-of-N candidate count.
--session-option miotts.best_of_n_language=auto|en|jaenumautoDefault language used when scoring candidates.
--session-option miotts.best_of_n_asr_model_path=<dir>directorysibling Qwen3-ASR directoryQwen3-ASR model used for best-of-N scoring.

MOSS-TTS-Local

MOSS-TTS-Local is the larger local-transformer MOSS TTS path. It supports text-only speech and optional zero-shot voice cloning through the framework speaker-reference interface. See MOSS-TTS for tokenizer layout, sampling options, cache options, and Nano details.

FieldValue
Familymoss_tts_local
Model directorymodels/MOSS-TTS-Local-Transformer-v1.5
Required codec layoutaudio_tokenizer/ directory inside the model root
Tasktts, clon
Modesoffline
LanguagesModel auto-handles supported languages; --language can pass a language hint
Voice inputOptional reference WAV through --voice-ref; transcript through --reference-text when known
Built-in voicesNot exposed

Text-only speech:

audiocpp_cli --task tts --family moss_tts_local --model /path/to/MOSS-TTS-Local-Transformer-v1.5 --backend cuda --text "Hello from MOSS-TTS-Local." --out out.wav

Voice clone:

audiocpp_cli --task clon --family moss_tts_local --model /path/to/MOSS-TTS-Local-Transformer-v1.5 --backend cuda --text "Hello from MOSS-TTS-Local." --voice-ref /path/to/reference.wav --reference-text "Reference transcript when available." --out out.wav

MOSS-TTS-Nano

MOSS-TTS-Nano is the smaller MOSS TTS path. It supports text-only continuation generation and voice cloning through the framework speaker-reference interface. See MOSS-TTS for tokenizer layout, sampling options, cache options, and Local details.

FieldValue
Familymoss_tts_nano
Model directorymodels/MOSS-TTS-Nano-100M
Required codec layoutaudio_tokenizer/ directory inside the model root
Tasktts, clon
Modesoffline
LanguagesModel auto-handles supported languages
Voice inputOptional reference WAV through --voice-ref
Built-in voicesNot exposed

Text-only continuation:

audiocpp_cli --task tts --family moss_tts_nano --model /path/to/MOSS-TTS-Nano-100M --backend cuda --text "Hello from MOSS-TTS-Nano." --out out.wav

Voice clone:

audiocpp_cli --task clon --family moss_tts_nano --model /path/to/MOSS-TTS-Nano-100M --backend cuda --text "Hello from MOSS-TTS-Nano." --voice-ref /path/to/reference.wav --reference-text "Reference transcript when available." --out out.wav

NeuTTS

NeuTTS is an experimental English TTS family with built-in speaker prompts and emotion-token control. The default package is the standalone 2E GGUF. See NeuTTS for built-in voice ids, emotion options, streaming, and full option details.

python3 tools/model_manager_v2.py install neutts

audiocpp_cli --task tts --family neutts \
  --model models/NeuTTS-2E-GGUF/neutts-2e-orig.gguf \
  --backend cuda \
  --text "The release checklist is almost complete, and the baseline run looks healthy." \
  --request-option voice_id=emily \
  --request-option emotion=neutral \
  --out out.wav

OmniVoice

OmniVoice supports multilingual TTS, voice cloning, voice design, non-verbal tag tokens, long-form chunking, and chunked pseudo-streaming. See OmniVoice for the full guide.

FieldValue
Familyomnivoice
Model directorymodels/OmniVoice
Tasktts
Modesoffline, streaming
Languages600+ languages handled by the model
Voice input--voice-ref plus optional --reference-text, or instruction text through --instruct
Built-in voicesAuto voice is supported by the model; CLI examples use clone or design for repeatability

Voice clone:

audiocpp_cli --task tts --family omnivoice --model models/OmniVoice --backend cuda --text "Hello from OmniVoice." --voice-ref assets/resources/b.wav --reference-text "Some call me nature. Others call me Mother Nature. I've been here for over 4.5 billion years. 22,500 times longer than you." --out out.wav

Voice design:

audiocpp_cli --task tts --family omnivoice --model models/OmniVoice --backend cuda --text "Hello from OmniVoice." --instruct "female, young adult, moderate pitch" --out out.wav

Streaming voice clone:

audiocpp_cli --task tts --mode streaming --family omnivoice --model models/OmniVoice --backend cuda --text "Hello from OmniVoice." --voice-ref assets/resources/b.wav --reference-text "Some call me nature. Others call me Mother Nature. I've been here for over 4.5 billion years. 22,500 times longer than you." --text-chunk-size 160 --out stream.wav --out-dir stream_chunks

OmniVoice streaming is pseudo streaming: audio.cpp emits audio chunk events from text chunks and returns a merged final WAV. Upstream Python does not expose model-native streaming. For server SSE examples, options, and tag controls, see OmniVoice.

PocketTTS

PocketTTS supports built-in voices and voice cloning. The upstream project also supports exported voice states for fast reuse; the CLI surface here exposes built-in voice ids and reference WAVs.

PocketTTS language selection is a model-load option. When the model path points at the PocketTTS root, the loader uses english unless you pass --load-option language=<name>. Kyutai's normal non-English PocketTTS releases are smaller distilled language models intended for the fast PocketTTS path. The _24l variants are larger 24-layer, undistilled preview models that can sound better but are slower. Kyutai currently publishes French only as french_24l, not as a normal distilled french language directory, so French is not listed as a normal PocketTTS language here.

FieldValue
Familypocket_tts
Model directorymodels/pocket-tts
Tasktts
Modesoffline
Languagesenglish, german, italian, portuguese, spanish
Voice inputBuilt-in voice id or reference WAV
Built-in voicesVoice ids depend on the downloaded language package; alba is used by the examples

Preset voice:

audiocpp_cli --task tts --family pocket_tts --model models/pocket-tts --backend cuda --text "Hello from PocketTTS." --voice-id alba --out out.wav

Voice clone:

audiocpp_cli --task tts --family pocket_tts --model models/pocket-tts --backend cuda --text "Hello from PocketTTS." --voice-ref assets/resources/b.wav --out out.wav
OptionValuesDefaultMeaning
--load-option language=<name>language package nameenglishSelect PocketTTS language package at load time.
--voice-idpackaged voice idnot setBuilt-in voice id.
--voice-refWAV pathnot setReference speaker audio for cloning.
--text-chunk-sizeinteger chars256Long-form chunk size.
--session-option pocket_tts.voice_state_cache_slots=<n>integer slots4Prepared voice-state cache slots; set 0 to disable reuse.

VoxCPM2

VoxCPM2 supports plain TTS, voice design, controllable voice cloning, and an ultimate-clone style that uses both prompt audio and transcript. The CLI expresses voice design with the same text convention as the upstream examples: put the voice/style description in parentheses at the start of --text.

FieldValue
Familyvoxcpm2
Model directorymodels/VoxCPM2
Tasktts
Modesoffline, streaming
LanguagesModel auto-handles supported languages
Voice inputOptional reference WAV; optional transcript through --reference-text
Built-in voicesNot exposed

Voice design:

audiocpp_cli --task tts --family voxcpm2 --model models/VoxCPM2 --backend cuda --text "(A young woman, gentle and clear voice)Hello from VoxCPM2." --out out.wav

Voice clone:

audiocpp_cli --task tts --family voxcpm2 --model models/VoxCPM2 --backend cuda --text "Hello from VoxCPM2." --voice-ref assets/resources/b.wav --out out.wav

Ultimate clone:

audiocpp_cli --task tts --family voxcpm2 --model models/VoxCPM2 --backend cuda --text "Hello from VoxCPM2." --voice-ref assets/resources/b.wav --reference-text "Some call me nature. Others call me Mother Nature. I've been here for over 4.5 billion years. 22,500 times longer than you." --out out.wav

Streaming output:

audiocpp_cli --task tts --family voxcpm2 --model models/VoxCPM2 --backend cuda --mode streaming --text "Hello from VoxCPM2." --out out.wav
OptionValuesDefaultMeaning
--text "(style)content"textrequiredVoice design or style control.
--voice-refWAV pathnot setReference speaker audio.
--reference-texttextempty stringTranscript for ultimate-clone style prompting.
--modeoffline, streamingofflineFull-output or streaming run mode.
--session-option voxcpm2.mem_saver=true|falseboolfalseUse tighter graph workspaces and release MiniCPM/AudioVAE request graphs after completion to reduce resident VRAM.
--session-option voxcpm2.prompt_cache_slots=<n>integer1Prompt and prompt-audio embedding cache slots. Set to 0 to disable prompt caching.
--text-chunk-sizeinteger chars2048Long-form chunk size.
--text-chunk-modedefault, tag_aware, japanese, endlinetag_awareLong-form chunking mode; keeps style/tag controls attached to chunks by default.
--max-tokensinteger4096Maximum generated AR tokens.
--num-inference-stepsinteger10Flow matching steps.
--guidance-scalefloat2.0CFG strength.

Higgs Audio v3 TTS

Higgs Audio v3 TTS is a voice-clone TTS model. The current integration uses the framework chunker for long text and keeps the reference prompt state in the model session.

FieldValue
Familyhiggs_audio_tts
Model pathmodels/Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-q8_0.gguf when installed through the model manager
Tasktts
Modesoffline
LanguagesModel auto-handles supported languages
Voice inputReference WAV through --voice-ref; transcript through --reference-text when known
Built-in voicesNot exposed
audiocpp_cli --task tts --family higgs_audio_tts --model models/Higgs-Audio-v3-TTS-4B-GGUF/higgs-audio-v3-tts-4b-q8_0.gguf --backend cuda --text "Hello from Higgs Audio." --voice-ref assets/resources/b.wav --reference-text "Some call me nature. Others call me Mother Nature. I've been here for over 4.5 billion years. 22,500 times longer than you." --out out.wav

The model manager installs the Q8_0 standalone GGUF package by default:

python3 tools/model_manager_v2.py install --models-root models higgs_audio_tts_4b_q8_0
OptionValuesDefaultMeaning
--voice-refWAV pathrequiredReference speaker audio.
--reference-texttextempty stringTranscript for reference audio.
--text-chunk-sizeinteger chars1024Long-form chunk size.
--max-tokensinteger2048Maximum generated AR tokens per chunk.
--temperaturefloat0.8AR sampling temperature.
--top-kinteger30AR top-k sampling limit. The narrower default is less prone to premature EOC than the Python client's 50.
--top-pfloat0.8AR nucleus sampling limit. The Python client's unfiltered equivalent is 1.0.
--repetition-penaltyfloat1.1Accepted for Python API compatibility; Higgs audio-code sampling does not consume it.

Fish Audio S2 Pro

Fish Audio S2 Pro is a TTS and reference voice-clone model. The integration uses the framework text chunker for long-form input, caches prepared reference audio in the session, and supports GGUF loading through the package spec path.

FieldValue
Familyfish_audio
Model pathmodels/Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf when installed through the model manager
Tasktts
Modesoffline
LanguagesModel auto-handles language; tested paths cover English and Chinese-style prompts
Voice inputOptional reference WAV through --voice-ref; transcript through --reference-text when known
Built-in voicesNot exposed

Text-to-speech:

audiocpp_cli --task tts --family fish_audio --model models/Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf --backend cuda --text "Hello from Fish Audio." --out out.wav

Reference voice clone:

audiocpp_cli --task tts --family fish_audio --model models/Fish-Audio-S2-Pro-GGUF/fish-audio-s2-pro-q8_0.gguf --backend cuda --text "The final render is ready for review." --voice-ref assets/resources/b.wav --reference-text "Some call me nature. Others call me Mother Nature. I've been here for over 4.5 billion years. 22,500 times longer than you." --out out.wav

The model manager installs the Q8_0 standalone GGUF package by default:

python3 tools/model_manager_v2.py install --models-root models fish_audio_s2_pro_q8_0
OptionValuesDefaultMeaning
--voice-refWAV pathnot setReference speaker audio for voice cloning.
--reference-texttextempty stringTranscript for reference audio.
--max-new-tokensinteger1024Maximum generated semantic tokens per chunk. 0 uses the default.
--text-chunk-sizeinteger chars200Long-form chunk size.
--text-chunk-modedefault, tag_aware, japanese, endlinedefaultFramework text chunking mode.
--temperaturefloat0.8Sampling temperature.
--top-kinteger30Top-k sampling limit.
--top-pfloat0.8Nucleus sampling limit.
--seedintegerrandom when omittedSampling seed for reproducible output.
--session-option fish_audio.mem_saver=true|falseboolfalseRelease cached AR runtime graphs after each request.
--session-option fish_audio.reference_cache_slots=<n>integer1Prepared reference-audio cache slots.
--session-option fish_audio.weight_type=<type>native, f32, f16, bf16, q8_0nativeAR matmul weight storage type.
--session-option fish_audio.codec_weight_type=<type>native, f32, f16, q8_0nativeCodec conv/matmul weight storage type.

IndexTTS2

IndexTTS2 is a Chinese and English TTS model with voice cloning and expressive emotion controls. It requires a speaker reference through the framework --voice-ref path.

FieldValue
Familyindex_tts2
Model directorymodels/IndexTTS-2
Tasktts, clon
Modesoffline
Languageszh, en
Voice inputRequired reference WAV through --voice-ref
Built-in voicesNot exposed

Voice clone:

audiocpp_cli --task clon --family index_tts2 --model /path/to/IndexTTS-2 --backend cuda --language en --text "Hello from IndexTTS2." --voice-ref /path/to/reference.wav --out out.wav

Emotion text:

audiocpp_cli --task tts --family index_tts2 --model /path/to/IndexTTS-2 --backend cuda --language zh --text "今天的演示会更有情绪。" --voice-ref /path/to/reference.wav --emotion "你吓死我了!你是鬼吗?" --request-option emotion_alpha=0.6 --out out.wav
OptionValuesDefaultMeaning
--voice-refWAV pathrequiredReference speaker audio.
--languagezh, enemptyText language label.
--emotiontextnot setEmotion-text conditioning through the framework style field.
--request-option emotion_alpha=<float>float in [0, 1]1.0Blend strength for explicit emotion conditioning.
--request-option emotion_vector=<v0,...,v7>8 floatsnot setExplicit emotion vector.
--request-option use_emotion_text=true|falseboolfalseInfer emotion from text.
--request-option use_random_emotion=true|falseboolfalseUse random emotion weights in the emotion mixer.
--request-option interval_silence_ms=<n>milliseconds200Silence inserted between generated text chunks.
--text-chunk-sizecharactersnot setOptional framework outer text chunk size. When omitted, IndexTTS2 keeps its internal tokenizer segmentation.
--text-chunk-modedefault, tag_aware, japanese, endlinedefaultFramework chunking mode used only when --text-chunk-size is set.
--max-tokensintegermodel defaultMaximum generated GPT mel tokens.
--temperaturefloatmodel defaultGPT sampling temperature.
--top-pfloatmodel defaultGPT nucleus sampling limit.
--top-kintegermodel defaultGPT top-k sampling limit.
--repetition-penaltyfloatmodel defaultGPT repetition penalty.
--do-sampletrue, falsemodel defaultEnable stochastic GPT sampling.
--session-option index_tts2.mem_saver=true|falseboolfalseRelease staged reference and conditioning graphs after request phases.
--session-option index_tts2.weight_type=native|f32|f16|bf16|q8_0enumnativeMatmul weight storage type.
--session-option index_tts2.conv_weight_type=native|f32|f16enumnativeConvolution weight storage type.
--session-option index_tts2.speaker_cache_slots=<n>integer slots1Prepared speaker-reference cache slots; set 0 to disable reuse.
--session-option index_tts2.emotion_cache_slots=<n>integer slots1Prepared emotion-reference cache slots; set 0 to disable reuse.
--session-option index_tts2.emotion_text_cache_slots=<n>integer slots1Emotion-text weight cache slots; set 0 to disable reuse.
--session-option index_tts2.gpt_graph_arena_mb=<n>MBmodel defaultGPT graph arena size.
--session-option index_tts2.s2mel_graph_arena_mb=<n>MBmodel defaultS2Mel graph arena size.
--session-option index_tts2.reference_graph_arena_mb=<n>MBmodel defaultReference encoder and codec graph arena size.
--session-option index_tts2.emotion_text_prefill_graph_arena_mb=<n>MBmodel defaultEmotion-text prefill graph arena size.
--session-option index_tts2.emotion_text_decode_graph_arena_mb=<n>MBmodel defaultEmotion-text cached-step graph arena size.
--session-option index_tts2.emotion_text_max_tokens=<n>tokens256Maximum generated tokens for emotion-text classification; old name index_tts2.emotion_text_max_new_tokens is still accepted.
--session-option index_tts2.weight_context_mb=<n>MB32Shared ggml weight metadata context size.

IndexTTS2.5

IndexTTS2.5 is IndexTeam/bilibili's multilingual zero-shot TTS model (released 2026-07): a 0.8B GPT (autoregressive) + DiT CFM + BigVGAN stack that keeps IndexTTS2's timbre-emotion decoupling and adds Japanese, Spanish, and Arabic on top of Chinese and English. It requires a speaker reference through the framework --voice-ref path. Inline <文字|发音> pronunciation overrides (pinyin, CMU phonemes, or kana) are supported. Upstream weights live at IndexTeam/IndexTTS-2.5; the reference implementation is index-tts/index-tts branch indextts-2.5.

IndexTTS2.5 is implemented as a variant of the index_tts2 family rather than a separate family: both variants share the audio features, wav2vec2bert, Qwen emotion, style encoder, BigVGAN vocoder, S2Mel, and the GPT decode/cache code, while the tokenizer (SentencePiece vs multilingual tiktoken), GPT speaker conditioning (conditioning encoder + perceiver vs CAMPPlus spk_emb_proj + lang_embedding), and the semantic-codec decode path (v2.5 adds a 2x nearest upsample + up conv) are selected per variant from the model config version field ("2.5"). All IndexTTS2 session options (index_tts2.*) apply to both variants.

FieldValue
Familyindex_tts2 (the 2.5 variant is selected from the model config version field; no separate family)
Model directorymodels/IndexTTS2.5-GGUF (default GGUF package index_tts2_5_q8_0; index_tts2_5_f16 and index_tts2_5_orig also available)
Tasktts, clon
Modesoffline
Languageszh, en, ja, es, ar
Voice inputRequired reference WAV through --voice-ref
Built-in voicesNot exposed

Voice clone:

audiocpp_cli --task clon --family index_tts2 --model /path/to/IndexTTS2.5-GGUF --backend cuda --text "Hello from IndexTTS2.5." --voice-ref /path/to/reference.wav --out out.wav

Emotion text:

audiocpp_cli --task tts --family index_tts2 --model /path/to/IndexTTS2.5-GGUF --backend cuda --text "今天的演示会更有情绪。" --voice-ref /path/to/reference.wav --emotion "你吓死我了!你是鬼吗?" --request-option emotion_alpha=0.6 --out out.wav

The language request option selects the text language (auto, zh, en, ja, es, ar, or any tokenizer language code). The default auto picks zh when the text contains Han characters and en otherwise, so mixed Japanese/Spanish/Arabic text should set --request-option language=ja|es|ar explicitly.

Emotion conditioning supports all three IndexTTS2 paths: an emotion reference WAV through --audio, an explicit emotion_vector, and Qwen-based emotion-text classification through --emotion / use_emotion_text. Known limitation: the NeMo text normalizers for Japanese and Spanish are not ported, so ja/es input text is passed through without upstream-style normalization.

License: IndexTTS-2.5 weights are distributed under the bilibili Model Use License, which is not OSI-approved. It requires separate commercial authorization when monthly active users exceed 100 million or annual revenue exceeds 1 billion RMB, and it forbids using model outputs to improve other AI models. Check the upstream repository for the full terms before redistribution or commercial use.

OptionValuesDefaultMeaning
--voice-refWAV pathrequiredReference speaker audio.
--request-option language=<code>auto, zh, en, ja, es, ar, ...autoText language hint; auto infers zh when the text contains Han characters, otherwise en.
--emotiontextnot setEmotion-text conditioning through the framework style field.
--request-option emotion_alpha=<float>float in [0, 1]1.0Blend strength for explicit emotion conditioning.
--request-option emotion_vector=<v0,...,v7>8 floatsnot setExplicit emotion vector.
`--request-option use_emotion_text=truefalse`boolfalse
`--request-option use_random_emotion=truefalse`boolfalse
--request-option interval_silence_ms=<n>milliseconds200Silence inserted between generated text chunks.
--text-chunk-sizecharactersnot setOptional framework outer text chunk size. When omitted, IndexTTS2.5 keeps its internal tokenizer segmentation.
--text-chunk-modedefault, tag_aware, japanese, endlinedefaultFramework chunking mode used only when --text-chunk-size is set.
--max-tokensinteger1500Maximum generated GPT mel tokens.
--temperaturefloat0.8GPT sampling temperature.
--top-pfloat0.8GPT nucleus sampling limit.
--top-kinteger30GPT top-k sampling limit.
--repetition-penaltyfloat10.0GPT repetition penalty.
--do-sampletrue, falsetrueEnable stochastic GPT sampling.
--request-option length_penalty=<float>float0.0GPT beam-search length penalty.
--request-option num_beams=<n>integer3GPT beam count.
`--session-option index_tts2.mem_saver=truefalse`boolfalse
`--session-option index_tts2.weight_type=nativef32f16bf16
`--session-option index_tts2.conv_weight_type=nativef32f16`enum
--session-option index_tts2.speaker_cache_slots=<n>integer slots1Prepared speaker-reference cache slots; set 0 to disable reuse.
--session-option index_tts2.emotion_cache_slots=<n>integer slots1Prepared emotion-reference cache slots; set 0 to disable reuse.
--session-option index_tts2.emotion_text_cache_slots=<n>integer slots1Emotion-text weight cache slots; set 0 to disable reuse.
--session-option index_tts2.gpt_graph_arena_mb=<n>MBmodel defaultGPT graph arena size.
--session-option index_tts2.s2mel_graph_arena_mb=<n>MBmodel defaultS2Mel graph arena size.
--session-option index_tts2.reference_graph_arena_mb=<n>MBmodel defaultReference encoder and codec graph arena size.
--session-option index_tts2.emotion_text_prefill_graph_arena_mb=<n>MBmodel defaultEmotion-text prefill graph arena size.
--session-option index_tts2.emotion_text_decode_graph_arena_mb=<n>MBmodel defaultEmotion-text cached-step graph arena size.
--session-option index_tts2.emotion_text_max_tokens=<n>tokens256Maximum generated tokens for emotion-text classification; old name index_tts2.emotion_text_max_new_tokens is still accepted.
--session-option index_tts2.weight_context_mb=<n>MB32Shared ggml weight metadata context size.

Converting From Upstream Weights

tools/convert_index_tts2_5.py turns an official IndexTeam/IndexTTS-2.5 snapshot (the .pth checkpoints) into the Safetensors staging layout the engine expects, and prints (or runs) the matching audiocpp_gguf command. The w2v-bert-2.0, CAMPPlus, and BigVGAN checkpoints are auto-detected under <model-dir>/hf_cache/ (run the official inference once to populate it) and each has an explicit override flag:

python tools/convert_index_tts2_5.py \
    --model-dir /path/to/IndexTTS-2.5 \
    --output-dir /path/to/staging \
    --run-converter /path/to/audiocpp_gguf --type q8_0

Pass --native-dir /path/to/IndexTTS-2.5-native to also emit a directly loadable native Safetensors model directory (hardlinked from the staging files), no GGUF conversion required.

The script repackages the checkpoints the loader needs (unwraps the s2mel.pth/codec.pth container keys, prefixes CAMPPlus tensors with speaker_encoder., strips BigVGAN's generator. prefix, wraps the feat1/feat2.pt matrices as a single tensor) and assembles the sidecar root/ (config, tiktoken vocabulary, auxiliary model configs) that gets embedded into the GGUF. The staged config.yaml has its version field normalized to "2.5" (the official snapshot ships version: 2.0); the engine uses that field to select the IndexTTS2 family variant.

Irodori-TTS

Irodori-TTS is Japanese TTS under --family irodori_tts. v4 Small is the preferred GGUF-first package and supports no-reference speech, reference-conditioned speech, and instruction-based voice design in one checkpoint. The older 500M v3 and 600M v3 VoiceDesign packages remain supported for existing users. See Irodori-TTS for v3/v4 differences, GGUF variants, options, and compatibility aliases.

OuteTTS

OuteTTS 1.0 1B is a community model for 24 kHz TTS and voice cloning. The model manager installs the standalone Q8 GGUF package by default:

python tools/model_manager_v2.py install outetts_1_0_1b_q8_0 --models-root models

Quick start:

audiocpp_cli --task tts --family outetts \
  --model models/Llama-OuteTTS-1.0-1B_Q8/Llama-OuteTTS-1.0-1B_Q8.gguf \
  --backend cuda --text "Hello from OuteTTS." \
  --max-tokens 1024 --out out.wav

Voice clone quick start:

audiocpp_cli --task clon --family outetts \
  --model models/Llama-OuteTTS-1.0-1B_Q8/Llama-OuteTTS-1.0-1B_Q8.gguf \
  --backend cuda \
  --voice-ref reference.wav \
  --reference-text "The exact words spoken in reference.wav." \
  --request-option reference_language=en \
  --text "This sentence uses the cloned voice." \
  --max-tokens 1024 --out cloned.wav

See OuteTTS community model usage for cloning notes, GGUF packing, all options, and validation details.

GLM-TTS

GLM-TTS is a community zero-shot Chinese and English speech-synthesis model. Both the tts and clon routes require a clean reference WAV and its exact transcript:

python tools/model_manager_v2.py install glm_tts --models-root models

audiocpp_cli --task clon --family glm_tts \
  --model models/GLM-TTS-Q8/GLM-TTS_Q8.gguf --backend cuda \
  --voice-ref reference.wav \
  --reference-text "The exact words spoken in reference.wav." \
  --text "Hello from GLM-TTS." \
  --seed 0 --out glm_tts.wav

See the GLM-TTS community model guide for standalone GGUF packaging, controls, and validation results.

Inflect v2

Inflect Micro v2 is a compact English offline TTS model with a native GGML runtime. The model manager defaults to the standalone GGUF package; the original source/conversion path remains documented in the community guide. Inflect requires an external eSpeak-ng installation:

python3 tools/model_manager_v2.py install inflect_micro_v2_orig --models-root models

audiocpp_cli --task tts --family inflect_v2 \
  --model models/Inflect-Micro-v2-GGUF/inflect-micro-v2-orig.gguf --backend cuda \
  --text "Hello from Inflect Micro version two." \
  --request-option speaking_rate=1.0 \
  --request-option variation=0.667 \
  --seed 0 --out inflect.wav

See the Inflect v2 community model guide for eSpeak-ng paths, long-form behavior, source/conversion instructions, and limitations.

Supertonic

Supertonic 3 is a preset-voice multilingual TTS model. It does not use external speaker references in the current integration.

FieldValue
Familysupertonic
Model directorymodels/supertonic-3
Tasktts
Modesoffline, streaming
Languagesen, 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
Voice inputBuilt-in preset voice id
Built-in voicesM1-M5, F1-F5
audiocpp_cli --task tts --family supertonic --model /path/to/supertonic-3 --backend cuda --language en --text "Hello from Supertonic." --voice-id M1 --out out.wav

Streaming output:

audiocpp_cli --task tts --family supertonic --model /path/to/supertonic-3 --backend cuda --mode streaming --language en --text "Hello from Supertonic." --voice-id M1 --out out.wav
OptionValuesDefaultMeaning
--voice-idM1-M5, F1-F5M1Preset voice.
--languagelanguage codeenText language.
--num-inference-stepsinteger8Flow denoising steps.
--request-option speaking_rate=<float>float1.05Speech speed multiplier.
--seedinteger1234Noise seed.
--text-chunk-sizecharacters300, or 120 for ko/jaFramework long-form text chunk size.
--text-chunk-modedefault, tag_aware, japanese, endlinedefaultFramework long-form text chunking mode.
--session-option supertonic.weight_type=native|f32|f16|bf16|q8_0enumnativeWeight storage type.
--session-option supertonic.style_cache_slots=<n>integer slots4Preset voice style cache slots; set 0 to disable reuse.

VibeVoice

VibeVoice is a long-form multi-speaker TTS model, available in 1.5B and 7B sizes. Prompts use speaker-labeled lines, and speaker reference WAVs are provided in the same order as the speaker ids.

FieldValue
Familyvibevoice
Model directorymodels/VibeVoice-1.5B (or models/VibeVoice-7B)
Tasktts
Modesoffline
LanguagesModel auto-handles supported languages
Voice inputUp to four speaker reference WAVs through voice_samples
Text formatLines like Speaker 1: ... Speaker 2: ...; ids are normalized internally
Long-formNo text chunking; generation uses the model long-form path
LoRAOptional PEFT decoder adapter through --load-option vibevoice.lora

Both sizes share the same CLI surface and the same Qwen2.5 tokenizer; the 7B is simply larger (hidden size 3584 vs 1536) and needs a matching 7B LoRA if one is used.

audiocpp_cli --task tts --family vibevoice --model models/VibeVoice-1.5B --backend cuda --text "Speaker 1: Hello. Speaker 2: Nice to meet you." --request-option voice_samples=assets/resources/a.wav,assets/resources/b.wav --out out.wav
OptionValuesDefaultMeaning
--request-option voice_samples=a.wav,b.wavcomma-separated WAVsnot setSpeaker reference WAVs, ordered by speaker id.
--guidance-scalefloat1.3Classifier-free guidance scale.
--num-inference-stepsinteger10Diffusion steps per audio chunk.
--max-tokensinteger, 0 for unlimited0Maximum generated decoder tokens.
--request-option max_length_times=<float>float2.0Generation length multiplier.
--do-sampletrue, falsefalseEnable stochastic decoder sampling.
--temperaturefloat1.0Decoder sampling temperature.
--top-kinteger50Decoder top-k sampling limit.
--top-pfloat1.0Decoder nucleus sampling limit.
--load-option vibevoice.lora=<path>fine-tune adapter dirnot setOverlay a fine-tune at load time: the language-model LoRA is delta-merged into the decoder linears, and the diffusion head and acoustic/semantic connectors (when present in the adapter dir) replace their base tensors. Dims must match the base model size.
--load-option vibevoice.lora_scale=<float>floatlora_alpha / rOverride the LoRA merge scale from adapter_config.json.

The adapter follows the PEFT training layout: adapter_model.safetensors + adapter_config.json for the language-model LoRA, plus optional diffusion_head/model.safetensors (or diffusion_head_full.bin), acoustic_connector/pytorch_model.bin, and semantic_connector/pytorch_model.bin for the fully fine-tuned components. Everything is applied at load time, so it composes with the vibevoice.*_weight_type quantization options and adds no per-step cost; the overlay is logged with --log. Use a 1.5B adapter with VibeVoice-1.5B and a 7B adapter with VibeVoice-7B; a size mismatch is rejected with a descriptive error. The same option may instead be passed as --session-option vibevoice.lora (but not via both at once).

For backend weight-type controls, use audiocpp_cli --inspect --model <model-dir> --family <family>.