| --- |
| license: apache-2.0 |
| language: |
| - zh |
| - en |
| - ja |
| - ko |
| - de |
| - fr |
| - ru |
| - pt |
| - es |
| - it |
| pipeline_tag: text-to-speech |
| library_name: llama.cpp |
| base_model: Qwen/Qwen3-TTS-12Hz-0.6B-Base |
| tags: |
| - qwen3-tts |
| - spacemit |
| - k1 |
| - k3 |
| - gguf |
| - onnx |
| - onnxruntime |
| - voice-cloning |
| --- |
| |
| # Qwen3-TTS-0.6B for SpaceMIT K1/K3 |
|
|
| This repository contains a SpaceMIT-optimized split-runtime export of |
| `Qwen/Qwen3-TTS-12Hz-0.6B-Base`. The text embedding and codec stages run with |
| ONNX Runtime and the SpaceMIT Execution Provider, while the talker and code |
| predictor run through the SpaceMIT llama.cpp/ggml backend. |
|
|
| The bundle generates 24 kHz mono PCM16 WAV audio and includes one default |
| speaker embedding for evaluation. |
|
|
| ## Validation Status |
|
|
| - K3: validated with Chinese, English, and mixed Chinese-English requests. |
| - K1: the current configuration is identical to K3, but has not yet completed |
| independent board acceptance. |
| - Functional runtime: SpaceMIT llama.cpp `v0.1.7` (`c9af964b5`). |
| - Recommended performance runtime: a release containing commit `787e5fcf9` |
| ([spacemit-com/llama.cpp#29](https://github.com/spacemit-com/llama.cpp/pull/29)). |
|
|
| SpaceMIT llama.cpp `v0.1.7` is functionally compatible but does not contain the |
| persistent shared-threadpool optimization. In a controlled K3 A/B test, that |
| optimization reduced median warm RTF from approximately `1.1113` to `0.9006` |
| without changing the generated WAV bytes. Performance depends on text, |
| speaker, board configuration, system load, and runtime revision. |
|
|
| ## Files |
|
|
| | File | Purpose | Precision/format | |
| | --- | --- | --- | |
| | `Qwen3-TTS-0.6B-talker-q8_0.gguf` | Autoregressive talker | GGUF Q8_0 | |
| | `Qwen3-TTS-0.6B-code-predictor-q4_0.gguf` | Multi-codebook predictor | GGUF Q4_0 | |
| | `Qwen3-TTS-0.6B-text-embed-proj.fp32.onnx` | Text embedding and projection | ONNX FP32 | |
| | `Qwen3-TTS-0.6B-codec-decoder-t50.dynq.onnx` | Codec decoder, bucket 50 | Dynamically quantized ONNX | |
| | `Qwen3-TTS-0.6B-tokenizer.gguf` | Tokenizer metadata | GGUF | |
| | `Qwen3-TTS-0.6B-aux.gguf` | Runtime auxiliary tensors | GGUF | |
| | `default.spk.bin` | Default speaker embedding | Raw float32 `[1024]` | |
| | `configs/K1/config.json` | K1 runtime configuration | JSON | |
| | `configs/K3/config.json` | K3 runtime configuration | JSON | |
| |
| The FP32 text embedding model is intentionally named with its precision. It is |
| the largest file in the bundle and has a significant effect on resident memory |
| and cold-start cost. |
| |
| ## Runtime Requirements |
| |
| - A SpaceMIT K1/K3 Linux image with ONNX Runtime and SpaceMIT EP installed. |
| - [SpaceMIT llama.cpp](https://github.com/spacemit-com/llama.cpp) `v0.1.7` or |
| newer. |
| - A future release containing commit `787e5fcf9` is recommended for the |
| validated shared-threadpool performance path. |
| |
| The llama.cpp release archive contains llama/ggml/mtmd binaries and libraries. |
| It does not bundle ONNX Runtime or SpaceMIT EP. |
| |
| ## Run on K3 |
| |
| Download and extract the runtime: |
| |
| ```bash |
| wget https://github.com/spacemit-com/llama.cpp/releases/download/v0.1.7/spacemit-llama.cpp.riscv64.0.1.7.tar.gz |
| tar -xzf spacemit-llama.cpp.riscv64.0.1.7.tar.gz |
| ``` |
| |
| Start the OpenAI-compatible speech service: |
| |
| ```bash |
| export LLAMA_ROOT=$PWD/spacemit-llama.cpp.riscv64.0.1.7 |
| export MODEL_ROOT=$PWD/Qwen3-TTS-0.6B |
| export LD_LIBRARY_PATH=$LLAMA_ROOT/lib:${LD_LIBRARY_PATH:-} |
|
|
| $LLAMA_ROOT/bin/llama-server \ |
| --media-backend smt \ |
| --smt-config-dir $MODEL_ROOT/configs/K3 \ |
| --host 127.0.0.1 \ |
| --port 8090 \ |
| --no-ui |
| ``` |
| |
| Generate speech: |
| |
| ```bash |
| curl http://127.0.0.1:8090/v1/audio/speech \ |
| -H 'Content-Type: application/json' \ |
| -d '{ |
| "model": "qwen3-tts", |
| "input": "你好,这是 Qwen3-TTS 在 K3 上的语音合成测试。", |
| "voice": "default", |
| "response_format": "wav" |
| }' \ |
| -o qwen3_tts.wav |
| ``` |
| |
| To use the K1 configuration, replace `configs/K3` with `configs/K1` after |
| validating the target board image and runtime packages. |
|
|
| ## Speaker Selection |
|
|
| The default speaker is loaded from `default.spk.bin`. A compatible raw |
| float32 `[1024]` speaker embedding can be selected at server startup: |
|
|
| ```bash |
| $LLAMA_ROOT/bin/llama-server \ |
| --media-backend smt \ |
| --smt-config-dir $MODEL_ROOT/configs/K3 \ |
| --tts-speaker-file /path/to/custom.spk.bin \ |
| --host 127.0.0.1 \ |
| --port 8090 \ |
| --no-ui |
| ``` |
|
|
| The bundled default embedding was derived from a generic female reference |
| approved by the project owner for redistribution. Obtain consent before |
| creating or distributing embeddings derived from another person's voice. |
|
|
| ## Limitations |
|
|
| - The validated output format is 24 kHz mono PCM16 WAV. |
| - Runtime performance is not determined by model files alone; use the |
| recommended llama.cpp revision for the optimized path. |
| - The current text embedding model is FP32 rather than quantized. |
| - K1 uses the same initial configuration as K3 but still requires independent |
| acceptance testing. |
|
|
| ## Revisions |
|
|
| - Export source revision: `58a4795010ba25b34966a56d07499d496ff9cd6f` |
| - Initial llama.cpp Qwen3-TTS runtime revision: `6ad6d85f1bc0967ece71506074f1f7e1c372e167` |
| - Shared-threadpool optimization revision: `787e5fcf956164d87e5bd0e2dc9d9f5d776a20ab` |
|
|
| ## License and Attribution |
|
|
| This repository is distributed under the Apache License 2.0. See `LICENSE`. |
| The base model is provided by the Qwen team; review the upstream model card for |
| its complete usage guidance, limitations, and citation information. |
|
|