voice_audio_multi/docs/models/index_echo.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

81 lines
3.4 KiB
Markdown

# Index-Echo-S2TT
[Index-Echo-S2TT](https://huggingface.co/IndexTeam/Index-Echo-S2TT-2B)
translates Chinese speech into English, Spanish, or Japanese text. It returns
the source transcript and translation as timestamped subtitle cues.
| Field | Value |
|---|---|
| Family | `index_echo` |
| Task | `asr` |
| Mode | `offline` |
| Input | Chinese speech |
| Output | Timestamp, source transcript, and translation per sentence |
| Checkpoints | 2B: original precision, Q8_0, experimental Q4_K; 9B: original precision and Q8_0 |
## Convert
Download the [official 2B checkpoint](https://huggingface.co/IndexTeam/Index-Echo-S2TT-2B),
then create the GGUF with the debug converter and the model-specific conversion
script. The resulting file includes the model configuration and tokenizer.
```bash
conda run -n qwen3-tts python tests/index_echo/convert_s2tt_gguf.py \
--source-dir /path/to/Index-Echo-S2TT-2B \
--output-dir /path/to/Index-Echo-S2TT-GGUF
```
To convert the [official 9B checkpoint](https://huggingface.co/IndexTeam/Index-Echo-S2TT-9B),
pass its source directory and a storage type:
```bash
conda run -n qwen3-tts python tests/index_echo/convert_s2tt_gguf.py \
--source-dir /path/to/Index-Echo-S2TT-9B \
--output-dir /path/to/Index-Echo-S2TT-GGUF --type q8_0
```
The same `--type` choices apply to 2B. Use `orig` for original precision,
`q8_0` for 8-bit weights, or `q4_k` for the smallest 2B package. With native
BF16 decoder weights, `orig` also rounds decoder activations to BF16, as in
the official Python default. The 2B Q4_K package keeps its linear-attention
QKV projections at Q8_0 because GGML Q4_K
cannot quantize those tensors. **9B Q4_K is not packaged:** it repeated or
omitted speech on short clips and returned incomplete subtitle cues on a
long-form request. Use 9B Q8_0 or original precision instead.
## CLI
```bash
build/debug/bin/audiocpp_cli --task asr --family index_echo \
--model /path/to/Index-Echo-S2TT-GGUF/index-echo-s2tt-2b-orig.gguf \
--backend cuda --audio speech.wav \
--request-option target_language=en \
--text-out subtitles.txt --log
```
Select `index-echo-s2tt-9b-q8_0.gguf` for the 9B variant.
For long recordings, the runtime processes windows up to 60 seconds and carries
the preceding five windows' transcript and translation as context. The `auto`
mode chooses quiet boundaries. It does not run the official Python Silero VAD;
window boundaries and, consequently, some output may differ.
## Request Options (use with `--request-option`)
| Option | Default | Meaning |
|---|---|---|
| `target_language` | `en` | `en`, `es`, or `ja`. |
| `max_tokens` | `2000` | Maximum generated text tokens per window. Legacy `max_text_tokens` remains accepted. |
| `temperature` | `0` | Zero uses greedy decoding; a positive value samples and can interrupt repetition. |
| `seed` | `0` | Sampling seed when temperature is positive. |
| `glossary` | empty | Translation terminology supplied in the prompt. |
| `audio_chunk_mode` | `auto` | `auto` or `quiet_energy` uses quiet boundaries; `fixed` uses equal windows; `none` processes the full input as one window. |
| `audio_chunk_duration_sec` | `60` | Maximum window duration in seconds, from 1 to 60. |
## Session Options (use with `--session-option`)
| Option | Default | Meaning |
|---|---|---|
| `index_echo.weight_type` | `native` | Runtime weight storage type. |
Index-Echo-S2ST speech generation is not supported by this family yet.