CUDA Version Compatibility for Qwen3-TTS on Linux: Requirements and Setup Guide
Qwen3-TTS requires CUDA 11.8 (driver ≥520.56) or CUDA 12.0+ (driver ≥525.60) when running on Linux via the faster-qwen3-tts backend, with automatic fallback to CPU if these requirements are not met.
The huggingface/speech-to-speech repository provides a high-performance text-to-speech pipeline that includes the Qwen3TTSHandler for running Qwen3-TTS models. When deploying on Linux, understanding the CUDA version compatibility requirements is essential for GPU acceleration, as the handler automatically selects between CUDA-enabled and CPU-only backends based on your system configuration.
How Qwen3-TTS Selects the Execution Backend on Linux
The Qwen3TTSHandler class automatically determines which audio backend to use based on the host platform. In src/speech_to_speech/TTS/qwen3_tts_handler.py, the initialization logic checks the operating system and sets the backend accordingly:
# Lines 51-55 in qwen3_tts_handler.py
self.backend = "mlx" if platform == "darwin" else "faster_qwen3_tts"
On Linux (non-Darwin systems), the handler defaults to the faster-qwen3-tts library. This backend loads the model using the FasterQwen3TTS class from the pre-built GPU wheels:
# Lines 21-29 and 102-110 in qwen3_tts_handler.py
from faster_qwen3_tts import FasterQwen3TTS
self.model = FasterQwen3TTS.from_pretrained(
model_name,
device=self.device,
dtype=self.dtype,
backend=self.faster_backend,
# ... additional parameters
)
The device parameter defaults to "cuda", which triggers the CUDA runtime checks when the model initializes.
CUDA Version Requirements for faster-qwen3-tts
The faster-qwen3-tts package ships with pre-built GPU wheels that link against specific CUDA toolkit versions. According to the package documentation and PyPI release metadata, the following combinations are supported:
| CUDA Toolkit | Minimum NVIDIA Driver Version |
|---|---|
| CUDA 11.8 | 520.56 or newer |
| CUDA 12.0+ | 525.60 or newer |
If your installed CUDA runtime does not satisfy these requirements, the import will raise an ImportError indicating a binary mismatch. In such cases, the handler can fall back to the CPU-only ggml backend, though this results in significantly slower inference.
Installing Qwen3-TTS with CUDA Support on Linux
To enable GPU acceleration, install the package with the ggml extra, which pulls the appropriate CUDA wheel if a compatible toolkit is detected:
pip install "faster-qwen3-tts[ggml]"
Verify your CUDA environment before running the handler:
import torch
assert torch.cuda.is_available(), "CUDA not detected – check driver/CUDA toolkit"
print(f"CUDA version: {torch.version.cuda}")
print(f"Driver version: {torch.cuda.get_device_properties(0).major}.{torch.cuda.get_device_properties(0).minor}")
Ensure your NVIDIA driver meets the minimum requirements:
- CUDA 11.8 users: Driver must be version 520.56 or higher
- CUDA 12.0+ users: Driver must be version 525.60 or higher
Configuring the Handler for GPU and CPU Execution
GPU Execution with CUDA
To force CUDA acceleration on Linux, instantiate the handler with device="cuda" and the ggml backend:
from threading import Event
from speech_to_speech.TTS.qwen3_tts_handler import Qwen3TTSHandler
handler = Qwen3TTSHandler(
should_listen=Event(),
model_name="Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
device="cuda", # Forces GPU execution
backend="ggml", # Uses faster-qwen3-tts GPU kernels
ggml_quantization="BF16", # Selects compatible quantization for CUDA
)
handler.warmup() # Loads model and validates CUDA compatibility
CPU-Only Fallback
If your system lacks compatible CUDA drivers, configure the handler for CPU inference:
handler = Qwen3TTSHandler(
should_listen=Event(),
model_name="Qwen/Qwen3-TTS-12Hz-0.6B-Base",
device="cpu", # Forces CPU execution
backend="ggml", # Uses ggml CPU backend
ggml_quantization="BF16",
)
handler.warmup()
Runtime Backend Inspection
To verify which backend was selected at runtime:
print(f"Backend in use: {handler.backend}")
# Outputs: "faster_qwen3_tts" on Linux with CUDA
# Outputs: "mlx" on macOS
Troubleshooting CUDA Compatibility Issues
When the CUDA runtime is incompatible, the handler will fail during the faster_qwen3_tts import or model initialization. Common resolution steps include:
- Check driver compatibility – Run
nvidia-smito verify your driver version meets the 520.56 (CUDA 11.8) or 525.60 (CUDA 12.0+) thresholds - Verify wheel installation – Ensure you installed
faster-qwen3-tts[ggml]rather than the base package - Force CPU fallback – Explicitly set
device="cpu"andbackend="ggml"to bypass CUDA requirements entirely
The test suite in tests/test_qwen3_tts_handler_backend.py validates these backend selection paths and error handling scenarios, providing reference implementations for handling missing libraries.
Summary
- Platform detection:
Qwen3TTSHandlerinsrc/speech_to_speech/TTS/qwen3_tts_handler.pyautomatically selectsfaster_qwen3_ttson Linux andmlxon macOS - CUDA requirements: Linux GPU support requires CUDA 11.8+ (driver ≥520.56) or CUDA 12.0+ (driver ≥525.60)
- Installation: Use
pip install "faster-qwen3-tts[ggml]"to obtain CUDA-enabled wheels - Fallback option: Set
device="cpu"andbackend="ggml"to run without CUDA dependencies - Verification: Inspect
handler.backendat runtime to confirm which execution path is active
Frequently Asked Questions
What CUDA versions are supported by Qwen3-TTS on Linux?
The faster-qwen3-tts backend supports CUDA 11.8 and CUDA 12.0 or newer. CUDA 11.8 requires NVIDIA driver version 520.56 or higher, while CUDA 12.0+ requires driver 525.60 or higher. These requirements are enforced by the pre-built binary wheels that Qwen3TTSHandler imports from src/speech_to_speech/TTS/qwen3_tts_handler.py.
How do I check if my NVIDIA driver is compatible with Qwen3-TTS?
Run nvidia-smi in your terminal to display the current driver version. Compare this against the minimum requirements: 520.56 for CUDA 11.8 or 525.60 for CUDA 12.0. Alternatively, use torch.cuda.is_available() in Python to verify that PyTorch can detect your GPU and CUDA runtime before initializing the handler.
Can I run Qwen3-TTS without CUDA on Linux?
Yes. Set device="cpu" and backend="ggml" when instantiating Qwen3TTSHandler. This configuration uses the CPU-only ggml backend instead of the CUDA-dependent faster_qwen3_tts library. While functional, CPU inference is significantly slower than GPU acceleration and is best suited for development or systems without NVIDIA hardware.
Where does the backend selection logic live in the source code?
The automatic backend selection occurs in src/speech_to_speech/TTS/qwen3_tts_handler.py at lines 51-55, where the handler checks if platform == "darwin" to choose between mlx (macOS) and faster_qwen3_tts (Linux/Windows). The CUDA-specific model loading logic resides in the _setup_faster() method at lines 102-110, which imports FasterQwen3TTS and passes the device parameter directly to the underlying library.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →