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
89 lines
3.5 KiB
Markdown
89 lines
3.5 KiB
Markdown
# KugelAudio-0-Open
|
|
|
|
KugelAudio generates 24 kHz mono speech from text and a bundled preset voice.
|
|
The open model does not support cloning a voice from reference audio. This port
|
|
does not apply a watermark.
|
|
|
|
Upstream: [KugelAudio-0-Open](https://huggingface.co/kugelaudio/kugelaudio-0-open).
|
|
The model and upstream implementation use the MIT license.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
audiocpp_cli --task tts --family kugelaudio \
|
|
--model /path/to/kugelaudio-0-open-q8_0.gguf --backend cuda \
|
|
--text "The next train leaves in ten minutes." \
|
|
--request-option voice_id=english_female --seed 1234 \
|
|
--out speech.wav --log
|
|
```
|
|
|
|
The GGUF includes the tokenizer and all four preset voices. No separate Python
|
|
environment or tokenizer download is required for inference.
|
|
|
|
Packages are available in BF16, Q8_0 (default), and Q4_K. Each package contains
|
|
the same four voices; select its GGUF file with `--model`.
|
|
|
|
## Common Options
|
|
|
|
Use these as ordinary CLI flags.
|
|
|
|
| Option | Description |
|
|
| --- | --- |
|
|
| `--text` | Text to speak. The model infers the language from the text. |
|
|
| `--seed` | Random seed; `-1` chooses a random seed. |
|
|
| `--mode` | `offline` or `streaming`. |
|
|
| `--out` | Output WAV path. |
|
|
|
|
## Request Options
|
|
|
|
Use with `--request-option name=value`.
|
|
|
|
| Option | Default | Description |
|
|
| --- | --- | --- |
|
|
| `voice_id` | `default` | `default`, `clear`, `english_female`, or `english_male`. |
|
|
| `num_inference_steps` | `20` | Diffusion steps per acoustic frame, from 1 to 1000; omitted uses `diffusion_head_config.ddpm_num_inference_steps` from the checkpoint. |
|
|
| `guidance_scale` | `3` | Diffusion guidance; `1` disables the unconditional pass. |
|
|
| `max_tokens` | `2048` | Maximum generated tokens per text chunk. |
|
|
| `do_sample` | `false` | Sample AR control tokens rather than choose the highest logit. |
|
|
| `temperature` | `1` | AR temperature when sampling is enabled; `0` uses greedy decoding. |
|
|
| `seed` | `1234` | Random seed; `-1` chooses a random seed. |
|
|
| `text_chunk_size` | `300` | Maximum Unicode codepoints per long-form chunk. |
|
|
| `text_chunk_mode` | `default` | `default`, `tag_aware`, `japanese`, or `endline`. |
|
|
|
|
The `default` and `clear` presets are German female voices. `english_female`
|
|
and `english_male` are British English voices. Presets can speak other supported
|
|
languages, but upstream recommends their native languages for best reliability.
|
|
|
|
## Session Options
|
|
|
|
Use with `--session-option kugelaudio.name=value`.
|
|
|
|
| Option | Default | Description |
|
|
| --- | --- | --- |
|
|
| `weight_type` | `native` | Weight storage type. |
|
|
|
|
## Long-Form and Streaming
|
|
|
|
Long text uses the framework text chunker. Each text chunk starts a new
|
|
generation with the same preset and an incremented seed.
|
|
|
|
Streaming sends decoded audio frames as they become available. Offline output
|
|
is peak-normalized if it exceeds full scale. Streaming cannot retrospectively
|
|
normalize already-delivered audio, so it sends the decoder output directly.
|
|
|
|
## Conversion
|
|
|
|
Build `audiocpp_gguf` first, then run:
|
|
|
|
```bash
|
|
python tests/kugelaudio/convert_gguf.py \
|
|
--model-dir /path/to/original-checkpoint \
|
|
--tokenizer-dir /path/to/Qwen2.5-tokenizer \
|
|
--output-dir /path/to/KugelAudio-0-Open-GGUF
|
|
```
|
|
|
|
The original checkpoint must include its safetensors index and `voices/*.pt`.
|
|
Add `--type q8_0` or `--type q4_k` to create a quantized package.
|
|
The tokenizer directory must contain `tokenizer.json` and `tokenizer_config.json`
|
|
from `Qwen/Qwen2.5-1.5B`. Conversion excludes the unused audio and semantic
|
|
encoders and embeds the preset acoustic features in the GGUF.
|