If you're looking for a genuinely local, open-source alternative to ElevenLabs, it's hard to get around Voicebox (by Jamie Pine) right now. Powered by models like Qwen3-TTS and Kokoro, the tool delivers first-class voice cloning and an intuitive audio timeline right on your own machine.
Standard Linux setups often come with a catch, though: the developer's official automated script forces you rigidly into a local Python venv. But if you keep your development environments neatly separated with Conda and you're running a very fast-moving rolling-release distro like CachyOS (or plain Arch Linux) on Wayland, that automated path quickly leads to serious graphics and import errors.
In this post you'll learn how to set up the Python backend cleanly in Conda, sidestep typical version conflicts, and use the Voicebox studio platform-independently and with good performance right in your web browser.
What is Conda, anyway?
If you play around with local AI tools, you'll inevitably run into Python. But Python has one big weakness: so-called dependency hell. Different AI tools often need different versions of the same library (PyTorch, for example) or even entirely different Python versions.
That's where Conda comes in. Think of a Conda environment as a sealed container: whatever gets installed in it stays in it and never gets in the way of the rest of your operating system (or your other AI projects).
Note: If you don't have Conda or Miniconda on your CachyOS system yet, just install it first via the package manager of your choice or the official Miniconda Linux script.
1. Prepare system dependencies & the repository
We grab the fast JavaScript package manager bun and the basic build tools straight from pacman. Then we clone the official repository:
Bash
sudo pacman -S --needed base-devel curl wget git bun
# Clone the repository and install the Node packages
git clone https://github.com/jamiepine/voicebox.git
cd voicebox
bun install
2. Set up a Conda environment for the AI backend
Now we build the isolated environment with Python 3.11. Voicebox is extremely picky about the versions of its AI libraries. To avoid the dreaded C++ ABI error (undefined symbol: aoti_torch_abi_version) when loading models, we install the PyTorch trio fresh in one go for NVIDIA graphics cards (CUDA 12.1):
Bash
# 1. Create and activate the environment
conda create -n voicebox-backend python=3.11 -y
conda activate voicebox-backend
# 2. Install PyTorch, TorchVision and TorchAudio in sync for CUDA
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
# 3. Switch to the backend folder and install the remaining modules
cd backend
pip install -r requirements.txt
# 4. Add the specific Voicebox engines without conflicts
pip install --no-deps chatterbox-tts
pip install --no-deps hume-tada
pip install git+https://github.com/QwenLM/Qwen3-TTS.git
3. The essential CORS patch for running in the browser
Since Voicebox is designed as a native desktop app (via Tauri) by default, modern web browsers block access to the backend for security reasons (CORS policy). But because we want to run the app in the browser – lighter on resources and more stable – we need to quickly allow the Python backend to talk to our browser.
Open the file ~/voicebox/backend/main.py in a text editor and insert the following code block directly below the line from .app import app:
Python
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # Allows access from local IPs and localhost
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
Save and close the file. The backend is now ready for the browser!
4. Start Voicebox in "browser mode"
We now start the backend and the web interface in two separate terminal windows or tabs. Important: run both commands from the project's root directory to avoid path errors with the Python imports.
Terminal 1: the Conda backend server
Change to the root directory, activate your environment and start the server without the --reload flag (to prevent endless loops when cache files are written):
Bash
cd ~/voicebox
conda activate voicebox-backend
uvicorn backend.main:app --port 17493
The backend is now running stably in the background, waiting for AI commands on port 17493.
Terminal 2: the web interface (Vite)
Open a new terminal tab and start the workspace script that's preconfigured for the web interface. Never run a bare vite in the root directory, or you'll get a 404 error!
Bash
cd ~/voicebox
bun run dev:web
Time for the first test run!
Now open your favourite web browser and go to the address Terminal 2 prints out (usually http://localhost:5173/ or your local network IP).
Don't be surprised if the terminal freezes for a moment the first time you clone a voice or hit Generate: Voicebox is now automatically downloading the massive model weights (such as the Qwen-TTS 1.7B model) from Hugging Face. Depending on the engine, that can mean a download of anywhere between 350 MB and 4 GB.
Once the models are cached on your drive, speech generation on your NVIDIA GPU under CachyOS runs completely locally and in blazing-fast real time. Have fun cloning voices locally!
