Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Real-time text-to-speech with Qwen3-TTS
| Date | Stars |
|---|---|
| 2026-07-31 | 1266 |
| 2026-08-01 | 1273 |
| 2026-08-06 | 1273 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
35.0
growth rate 0.00%/day
# Faster Qwen3-TTS
Real-time Qwen3-TTS inference using CUDA graph capture. No Flash Attention, no vLLM, no Triton. Just `torch.cuda.CUDAGraph`. Supports both streaming and non-streaming generation.
## Install
Requires: Python 3.10+, PyTorch 2.5.1+, NVIDIA GPU with CUDA.
```bash
pip install faster-qwen3-tts
```
**PyTorch compatibility note:** CUDA-graph capture in the fast path is not reliable on `torch<=2.5.0` for this project (capture can fail with "operation not permitted when stream is capturing"). We validated `2.5.1+` as working and set that as the minimum supported version.
**Blackwell note:** RTX 50xx / Blackwell GPUs need CUDA 12.8 PyTorch wheels. If the default setup fails on those cards, install a `cu128` PyTorch build (PyTorch 2.7+).
**Driver / CUDA mismatch note (T4, A10G, and other CUDA-12.4 hosts):** `pip install` pulls the default PyTorch wheel, which is built against a recent CUDA toolkit. If your NVIDIA driver is *older* than that toolkit — common on CUDA 12.4 hosts such as AWS, Azure ML, and many Colab/T4 boxes — `torch.cuda.is_available()` returns `False` with `CUDA initialization: The NVIDIA driver on your system is too old`. Install a PyTorch wheel matching your driver's CUDA version. Check it with `nvidia-smi` (top-right "CUDA Version"); for a CUDA 12.4 driver:
```bash
pip install "torch==2.5.1" "torchaudio==2.5.1" --index-url https://download.pytorch.org/whl/cu124
```
### Experimental GGML backend
There is an experimental adapter for Pascal's `qwentts.cpp` runtime. The
current Torch/CUDA-graph backend remains the default; GGML is opt-in and
uses a separate native wheel package so the main install path stays simple.
```bash
pip install "faster-qwen3-tts[ggml]"
faster-qwen3-tts --backend ggml --quant BF16 design \
--model Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign \
--instruct "Warm, confident narrator" \
--text "Welcome to the show." \
--language English \
--output out.wav
```
The extra installs `qwentts-cpp-python>=0.3.1` from PyPI. That default wheel is
CUDA 12.8. For CUDA 13 / DGX Spark, CUDA 12.4 targets, or Ubuntu 22.04 / older
Linux hosts that need a `manylinux_2_35` wheel, install the matching wrapper
wheel from the Hugging Face wheelhouse before installing the extra:
```bash
# Ubuntu 22.04 / older Linux with CUDA 12.8
pip install "qwentts-cpp-python==0.3.1+cu128" \
-f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu128
# CUDA 13 / DGX Spark
pip install "qwentts-cpp-python==0.3.1+cu130" \
-f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/cu130
pip install "faster-qwen3-tts[ggml]"
```
See [`docs/ggml-backend.md`](docs/ggml-backend.md) for the native wrapper
package and wheel selection details.
The GGML backend caches raw reference audio as qwentts.cpp `.spk` speaker
latents plus `.rvq` acoustic latents after the first clone request. You can also
pass precomputed references directly:
```bash
faster-qwen3-tts --backend ggml --quant BF16 clone \
--model Qwen/Qwen3-TTS-12Hz-1.7B-Base \
--ref-spk freeman.spk \
--ref-rvq freeman.rvq \
--ref-text "$(cat freeman.txt)" \
--text "Cached references skip reference audio encoding on every request." \
--language English \
--output out.wav
```
## Quick Start
### Python
```python
from examples.audio import StreamPlayer # helper from this repo's examples/
from faster_qwen3_tts import FasterQwen3TTS
model = FasterQwen3TTS.from_pretrained("Qwen/Qwen3-TTS-12Hz-0.6B-Base")
ref_audio = "ref_audio.wav"
ref_text = (
"I'm confused why some people have super short timelines, yet at the same time are bullish on scaling up "
"reinforcement learning atop LLMs. If we're actually close to a human-like learner, then this whole approach "
"of training on verifiable outcomes is doomed."
)
# Streaming — yields audio chunks during generation
play = StreamPlayer()
try:
for audio_chunk, sr, timing in model.generate_voice_clone_streaming(
text="What do yExcerpt of 26,433 characters
Read on GitHubAndrés Marafioti · Hugging Face · Switzerland
322
2
moduvoice
1
Hugging Face · France
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:bc03e007f4d771a6, desc:text-to-speech