# 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.
## Model
| Field | Value |
|---|---|
| Family | `miotts` |
| GGUF model | `models/MioTTS-1.7B-GGUF/miotts-1.7b-q8_0.gguf` |
| Required dependency | MioCodec through `--session-option miotts.codec_model_path=
` |
| Tasks | `tts`, `clon` |
| Modes | `offline` |
| Languages | Model auto-handles supported text languages; no explicit language selector is exposed |
| Voice input | Required reference WAV through `--voice-ref` |
| Built-in voices | Not exposed |
## Quick Start
```bash
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
```
`clon` is an alias to the same synthesis path. Route selection does not change
the existing reference-audio requirement.
With best-of-N scoring, also provide a Qwen3-ASR model:
```bash
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
```
## Common Options (use directly)
| Option | Values | Default | Meaning |
|---|---|---:|---|
| `--voice-ref` | WAV path | required | Reference speaker audio. |
| `--text-chunk-size` | integer chars | `120` or `180` | Long-form chunk size: `120` when hanzi, kana and Hangul outnumber other letters and digits, otherwise `180`. Each chunk is generated within `max_tokens` (700 tokens, 28 s). |
| `--max-tokens` | integer | `700` | Maximum generated LM tokens per chunk. |
| `--temperature` | float | `0.8` | LM sampling temperature. |
| `--top-k` | integer | `50` | LM top-k sampling limit. |
| `--top-p` | float | `1.0` | LM nucleus sampling limit. |
| `--repetition-penalty` | float | `1.0` | LM repetition penalty. |
| `--do-sample` | `true`, `false` | `true` | Enable stochastic LM sampling. |
## Request Options (use with `--request-option`)
| Option | Values | Default | Meaning |
|---|---|---:|---|
| `max_tokens` | integer | `700` | Maximum generated tokens. |
| `top_k` | integer | model default | Generation control; defaults to the checkpoint config. |
| `top_p` | float | model default | Generation control; defaults to the checkpoint config. |
| `temperature` | float | model default | Generation control; defaults to the checkpoint config. |
| `repetition_penalty` | float | model default | Generation control; defaults to the checkpoint config. |
| `presence_penalty` | float | `0` | Presence penalty. |
| `frequency_penalty` | float | `0` | Frequency penalty. |
| `do_sample` | bool | model default | Generation control; defaults to the checkpoint config. |
| `seed` | integer >= 0 | random | Sampling seed; omitted chooses a random seed. |
| `best_of_n` | integer | not set | Generate n candidates and select by ASR scoring. |
| `best_of_n_enabled` | bool | not set | Run best-of-N candidate selection. |
| `best_of_n_language` | `auto`, `en`, `ja` | not set | Language used to score candidates. |
| `text_chunk_size` | integer | shared setting | Framework long-form text chunk size; inherits the session setting. |
The legacy `miotts.best_of_n*` request names remain accepted. Session names
retain the `miotts.` prefix. Use only one name for each request control.
The legacy unprefixed session name `text_chunk_size` remains accepted for
`miotts.text_chunk_size`.
## Session Options (use with `--session-option`)
| Option | Values | Default | Meaning |
|---|---|---:|---|
| `miotts.weight_type` | `native`, `f32`, `f16`, `bf16`, `q8_0` | not set | Weight storage type; defaults to native. |
| `miotts.codec_model_path` | directory | not set | MioCodec model used for acoustic decoding. |
| `miotts.best_of_n_asr_model_path` | directory | not set | Qwen3-ASR model used for best-of-N scoring. |
| `miotts.text_chunk_size` | integer | `120` or `180` | Default framework text chunk size: `120` when hanzi, kana and Hangul outnumber other letters and digits, otherwise `180`. |
| `miotts.best_of_n_enabled` | bool | `false` | Enable candidate generation and ASR ranking. |
| `miotts.best_of_n_default` | integer | `1` | Default best-of-N candidate count. |
| `miotts.best_of_n_max` | integer | `8` | Maximum best-of-N candidate count. |
| `miotts.best_of_n_language` | `auto`, `en`, `ja` | `auto` | Default language used when scoring candidates. |
| `miotts.prefill_graph_arena_mb` | integer >= 1 | `1024` | Context or graph arena size in MiB. |
| `miotts.decode_graph_arena_mb` | integer >= 1 | `1024` | Context or graph arena size in MiB. |
| `miotts.weight_context_mb` | integer >= 1 | `512` | Context or graph arena size in MiB. |
| `miotts.codec_weight_context_mb` | integer >= 1 | `256` | Context or graph arena size in MiB. |
| `miotts.codec_constant_context_mb` | integer >= 1 | `256` | Context or graph arena size in MiB. |
| `miotts.global_graph_arena_mb` | integer >= 1 | `256` | Context or graph arena size in MiB. |
| `miotts.wave_graph_arena_mb` | integer >= 1 | `512` | Context or graph arena size in MiB. |