mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-15 04:40:40 -07:00
The 0.6B slot was aliased to the 1.7B repo as a temporary fallback because `mlx-community/Qwen3-TTS-12Hz-0.6B-Base-bf16` wasn't published when MLX support shipped. That conversion is live now, so use it — Apple Silicon users picking 0.6B get the actual 0.6B model (1.2 GB instead of 3.5 GB). Also drops the now-obsolete troubleshooting entry and updates the triage notes in PROJECT_STATUS.md. Fixes #485. Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
597 lines
14 KiB
Plaintext
597 lines
14 KiB
Plaintext
---
|
||
title: "Troubleshooting"
|
||
description: "Common issues and solutions for Voicebox"
|
||
---
|
||
|
||
This guide covers common issues you might encounter when using or developing Voicebox, along with solutions.
|
||
|
||
## Installation Issues
|
||
|
||
### macOS: "App is damaged and can't be opened"
|
||
|
||
This occurs because the app isn't signed with an Apple Developer certificate.
|
||
|
||
**Solution:**
|
||
```bash
|
||
# Remove the quarantine attribute
|
||
xattr -cr /Applications/Voicebox.app
|
||
```
|
||
|
||
### Windows: SmartScreen Warning
|
||
|
||
Windows SmartScreen may warn that the app is unrecognized.
|
||
|
||
**Solution:**
|
||
- Click "More info"
|
||
- Click "Run anyway"
|
||
|
||
<Callout type="info">
|
||
This is expected for unsigned applications. We're working on code signing for future releases.
|
||
</Callout>
|
||
|
||
### Linux: AppImage Won't Run
|
||
|
||
**Solution:**
|
||
```bash
|
||
chmod +x voicebox-*.AppImage
|
||
./voicebox-*.AppImage
|
||
```
|
||
|
||
## Server Issues
|
||
|
||
### Backend Server Won't Start
|
||
|
||
**Symptoms:**
|
||
- Red status indicator in bottom-left corner
|
||
- "Failed to connect to server" error
|
||
|
||
**Solutions:**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Port Already in Use">
|
||
Check if port 17493 is already in use:
|
||
|
||
```bash
|
||
# macOS/Linux
|
||
lsof -i :17493
|
||
|
||
# Windows
|
||
powershell -Command "Get-NetTCPConnection -LocalPort 17493 -State Listen"
|
||
```
|
||
|
||
Kill the process using the port:
|
||
```bash
|
||
# macOS/Linux
|
||
kill -9 <PID>
|
||
|
||
# Windows
|
||
taskkill /PID <PID> /F
|
||
```
|
||
</Accordion>
|
||
|
||
<Accordion title="Permission Issues">
|
||
The server binary might not have execute permissions:
|
||
|
||
```bash
|
||
# macOS/Linux
|
||
chmod +x ~/Library/Application\ Support/sh.voicebox.app/backend/voicebox-server
|
||
```
|
||
</Accordion>
|
||
|
||
<Accordion title="Check Logs">
|
||
View server logs for errors:
|
||
|
||
**macOS:**
|
||
```bash
|
||
tail -f ~/Library/Application\ Support/sh.voicebox.app/logs/server.log
|
||
```
|
||
|
||
**Windows:**
|
||
```bash
|
||
type %APPDATA%\sh.voicebox.app\logs\server.log
|
||
```
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
### `flash-attn is not installed` Warning in Server Logs
|
||
|
||
**Symptoms:**
|
||
```
|
||
Warning: flash-attn is not installed. Will only run the manual PyTorch version.
|
||
Please install flash-attn for faster inference.
|
||
```
|
||
|
||
**This is harmless.** The warning is emitted by our transformer-based engines (Chatterbox / Qwen) on every startup. FlashAttention is an optional acceleration library — when it's not present, PyTorch's built-in scaled-dot-product attention (SDPA) runs instead, which is near-FA2 throughput on modern GPUs. Generation works normally.
|
||
|
||
**Why it shows up on every platform:**
|
||
- **Windows:** `flash-attn` has no official Windows support. The upstream project (Dao-AILab/flash-attention) still only says it *might* work, and source builds typically fail on recent CUDA/MSVC combinations.
|
||
- **macOS (Apple Silicon):** FlashAttention is CUDA-only and doesn't apply here at all. MLX has its own optimized attention kernels.
|
||
- **Linux:** It's not pinned in our requirements because installing it is fragile and version-sensitive; users who want it install it themselves.
|
||
|
||
**Solutions (all optional):**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Ignore it (recommended)">
|
||
PyTorch SDPA is what actually runs the model, and on Ampere/Ada/Hopper GPUs it's within a few percent of FA2 for our workloads. You won't notice a meaningful speed difference.
|
||
</Accordion>
|
||
|
||
<Accordion title="Install flash-attn on Linux">
|
||
```bash
|
||
pip install flash-attn --no-build-isolation
|
||
```
|
||
|
||
Requires a matching CUDA toolkit. Build can take 20+ minutes.
|
||
</Accordion>
|
||
|
||
<Accordion title="Install flash-attn on Windows (community wheels)">
|
||
Official builds don't exist, but community maintainers publish prebuilt wheels:
|
||
|
||
- [kingbri1/flash-attention releases](https://github.com/kingbri1/flash-attention/releases)
|
||
- [bdashore3/flash-attention releases](https://github.com/bdashore3/flash-attention/releases)
|
||
|
||
Pick the wheel matching your exact CUDA + PyTorch + Python combination. Example:
|
||
|
||
```bash
|
||
pip install https://github.com/kingbri1/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu128torch2.8.0cxx11abiFALSE-cp312-cp312-win_amd64.whl
|
||
```
|
||
|
||
Alternatively, run Voicebox's backend inside WSL2 and use the standard Linux wheels.
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
### Connection Timeout
|
||
|
||
**Symptoms:**
|
||
- Long loading times
|
||
- "Connection timeout" errors
|
||
|
||
**Solution:**
|
||
- Restart the app
|
||
- Check your firewall settings
|
||
- Ensure localhost is accessible
|
||
|
||
## Generation Issues
|
||
|
||
### First Generation is Very Slow
|
||
|
||
**Symptoms:**
|
||
- First generation takes 2-5 minutes
|
||
- Progress indicator stuck at "Loading model..."
|
||
|
||
**Explanation:**
|
||
This is expected behavior. The first generation downloads the selected TTS engine's model and initializes it. Sizes range from 350 MB (Kokoro) to 8 GB (TADA 3B).
|
||
|
||
**Solution:**
|
||
- Wait for the initial download to complete (progress is shown in Settings → Models)
|
||
- Subsequent generations reuse the cached model and are much faster
|
||
- Check your internet connection
|
||
- For low-bandwidth setups, start with Kokoro (~350 MB) or LuxTTS (~300 MB)
|
||
|
||
### Poor Voice Quality
|
||
|
||
**Symptoms:**
|
||
- Robotic or unnatural voice
|
||
- Missing emotion or prosody
|
||
- Pronunciation errors
|
||
|
||
**Solutions:**
|
||
|
||
<Steps>
|
||
<Step title="Improve Voice Samples">
|
||
- Use 10-30 seconds of clear audio
|
||
- Avoid background noise
|
||
- Ensure consistent speaking tone
|
||
- Add multiple samples from the same speaker
|
||
</Step>
|
||
|
||
<Step title="Match Speaking Style">
|
||
The generated voice will mimic the tone and style of your samples. If your sample is monotone, the generation will be too.
|
||
</Step>
|
||
|
||
<Step title="Adjust Text Formatting">
|
||
- Use proper punctuation
|
||
- Add commas for natural pauses
|
||
- Capitalize proper nouns
|
||
</Step>
|
||
</Steps>
|
||
|
||
### Generation Fails with "Out of Memory"
|
||
|
||
**Symptoms:**
|
||
- Generation crashes
|
||
- "CUDA out of memory" or "RuntimeError: out of memory"
|
||
|
||
**Solutions:**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Free GPU Memory">
|
||
Close other GPU-intensive applications:
|
||
- Games
|
||
- Video editors
|
||
- Multiple browser tabs with WebGL
|
||
|
||
Then restart Voicebox.
|
||
</Accordion>
|
||
|
||
<Accordion title="Use CPU Mode">
|
||
If your GPU doesn't have enough VRAM (need 6GB+), use CPU mode:
|
||
|
||
Settings → Generation → Use CPU instead of GPU
|
||
|
||
<Callout type="warn">
|
||
CPU generation is 5-10x slower but uses system RAM instead of VRAM.
|
||
</Callout>
|
||
</Accordion>
|
||
|
||
<Accordion title="Reduce Batch Size">
|
||
For long text, split it into smaller chunks instead of generating all at once.
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
### MLX "Failed to load the default metallib" (Apple Silicon)
|
||
|
||
**Symptoms:**
|
||
- Generation fails with "library not found" or "metallib" errors
|
||
- Server logs reference missing Metal shader libraries
|
||
|
||
**Solutions:**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Rebuild the Server Binary">
|
||
```bash
|
||
just build-server
|
||
```
|
||
|
||
The build script bundles MLX Metal shader libraries on Apple Silicon automatically.
|
||
</Accordion>
|
||
|
||
<Accordion title="Reinstall MLX Dependencies">
|
||
```bash
|
||
pip install -r backend/requirements-mlx.txt
|
||
```
|
||
</Accordion>
|
||
|
||
<Accordion title="Verify Backend Detection">
|
||
Check Settings → Server Status. Should show **Backend: MLX** on Apple Silicon. If it shows **Backend: PYTORCH**, MLX isn't installed correctly.
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
## Audio Issues
|
||
|
||
### No Audio Playback
|
||
|
||
**Symptoms:**
|
||
- Generated audio won't play
|
||
- Playback button doesn't respond
|
||
|
||
**Solutions:**
|
||
- Check system audio settings
|
||
- Ensure audio output device is connected
|
||
- Try exporting and playing in a media player
|
||
|
||
### Crackling or Distorted Audio
|
||
|
||
**Symptoms:**
|
||
- Audio has static or distortion
|
||
- Clipping sounds
|
||
|
||
**Solutions:**
|
||
- Check if your input samples have distortion
|
||
- Reduce playback volume
|
||
- Re-generate with cleaner voice samples
|
||
|
||
## Development Issues
|
||
|
||
### Backend Won't Start in Dev Mode
|
||
|
||
**Symptoms:**
|
||
- `just dev-backend` or `just dev` fails
|
||
- Import errors or module not found
|
||
|
||
**Solutions:**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Python Version">
|
||
Ensure Python 3.11 or higher:
|
||
|
||
```bash
|
||
python --version
|
||
```
|
||
|
||
If not, install Python 3.11+ and recreate the virtual environment.
|
||
</Accordion>
|
||
|
||
<Accordion title="Virtual Environment">
|
||
Ensure venv is activated:
|
||
|
||
```bash
|
||
# macOS/Linux
|
||
source backend/venv/bin/activate
|
||
|
||
# Windows
|
||
backend\venv\Scripts\activate
|
||
```
|
||
|
||
You should see `(venv)` in your prompt.
|
||
</Accordion>
|
||
|
||
<Accordion title="Dependencies">
|
||
Reinstall dependencies — easiest via `just`:
|
||
|
||
```bash
|
||
just setup
|
||
```
|
||
|
||
Or manually:
|
||
|
||
```bash
|
||
cd backend
|
||
pip install -r requirements.txt
|
||
pip install --no-deps chatterbox-tts
|
||
pip install --no-deps hume-tada
|
||
pip install git+https://github.com/QwenLM/Qwen3-TTS.git
|
||
```
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
### Tauri Build Fails
|
||
|
||
**Symptoms:**
|
||
- `bun run tauri build` fails
|
||
- Rust compilation errors
|
||
|
||
**Solutions:**
|
||
|
||
```bash
|
||
# Clean build artifacts
|
||
cd tauri/src-tauri
|
||
cargo clean
|
||
|
||
# Update Rust
|
||
rustup update
|
||
|
||
# Try building again
|
||
cd ../..
|
||
bun run tauri build
|
||
```
|
||
|
||
### OpenAPI Client Generation Fails
|
||
|
||
**Symptoms:**
|
||
- `./scripts/generate-api.sh` fails
|
||
- "Failed to fetch schema" error
|
||
|
||
**Solutions:**
|
||
|
||
<Steps>
|
||
<Step title="Ensure Backend is Running">
|
||
```bash
|
||
curl http://localhost:17493/openapi.json
|
||
```
|
||
|
||
Should return JSON. If not, start the backend.
|
||
</Step>
|
||
|
||
<Step title="Check Port">
|
||
Ensure nothing else is using port 17493
|
||
</Step>
|
||
|
||
<Step title="Regenerate Manually">
|
||
```bash
|
||
cd backend
|
||
source venv/bin/activate
|
||
uvicorn main:app --reload --port 17493
|
||
|
||
# In another terminal
|
||
./scripts/generate-api.sh
|
||
```
|
||
</Step>
|
||
</Steps>
|
||
|
||
## Database Issues
|
||
|
||
### "Database is locked" Error
|
||
|
||
**Symptoms:**
|
||
- Profile or generation operations fail
|
||
- SQLite lock errors
|
||
|
||
**Solutions:**
|
||
- Close all Voicebox instances
|
||
- Delete the lock file:
|
||
```bash
|
||
# macOS
|
||
rm ~/Library/Application\ Support/sh.voicebox.app/data/voicebox.db-shm
|
||
rm ~/Library/Application\ Support/sh.voicebox.app/data/voicebox.db-wal
|
||
```
|
||
|
||
### Corrupted Database
|
||
|
||
**Symptoms:**
|
||
- App crashes on launch
|
||
- Data missing or corrupted
|
||
|
||
**Solutions:**
|
||
|
||
<Callout type="warn">
|
||
This will delete all your voice profiles and generation history. Export important profiles first if possible.
|
||
</Callout>
|
||
|
||
```bash
|
||
# macOS
|
||
rm ~/Library/Application\ Support/sh.voicebox.app/data/voicebox.db
|
||
|
||
# Windows
|
||
del %APPDATA%\sh.voicebox.app\data\voicebox.db
|
||
```
|
||
|
||
Restart the app to create a fresh database.
|
||
|
||
## Model Issues
|
||
|
||
### Model Download Fails
|
||
|
||
**Symptoms:**
|
||
- "Failed to download model" error
|
||
- Stuck at "Downloading..."
|
||
|
||
**Solutions:**
|
||
- Check your internet connection
|
||
- Check HuggingFace Hub status
|
||
- Try using a VPN if HuggingFace is blocked in your region
|
||
- Manually download via the HuggingFace CLI and place in the cache directory:
|
||
|
||
```bash
|
||
pip install huggingface_hub
|
||
huggingface-cli download Qwen/Qwen3-TTS-12Hz-1.7B-Base
|
||
```
|
||
|
||
### Wrong Model Version
|
||
|
||
**Symptoms:**
|
||
- Generation quality suddenly degraded
|
||
- Different voice output
|
||
|
||
**Solutions:**
|
||
Clear the model cache and re-download. Replace the `Qwen*` glob with the engine org prefix for other engines (`ResembleAI*` for Chatterbox, `HumeAI*` for TADA, `hexgrad*` for Kokoro, etc.) or use `DELETE /models/{name}` via the API.
|
||
|
||
```bash
|
||
# macOS / Linux
|
||
rm -rf ~/.cache/huggingface/hub/models--Qwen*
|
||
|
||
# Windows
|
||
rmdir /s %USERPROFILE%\.cache\huggingface\hub\models--Qwen*
|
||
```
|
||
|
||
## Performance Issues
|
||
|
||
### Slow Generation on GPU
|
||
|
||
**Symptoms:**
|
||
- Generation slower than expected
|
||
- GPU not being utilized
|
||
|
||
**Solutions:**
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Verify CUDA Installation">
|
||
```bash
|
||
nvidia-smi
|
||
```
|
||
|
||
Should show your GPU. If not, install CUDA drivers.
|
||
</Accordion>
|
||
|
||
<Accordion title="Check GPU Selection">
|
||
If you have multiple GPUs, ensure Voicebox is using the right one.
|
||
|
||
Settings → Generation → GPU Device
|
||
</Accordion>
|
||
|
||
<Accordion title="Update GPU Drivers">
|
||
Outdated drivers can cause performance issues. Update to the latest NVIDIA drivers.
|
||
</Accordion>
|
||
|
||
<Accordion title="Apple Silicon: Confirm MLX Backend">
|
||
Check Settings → Server Status. Should show **Backend: MLX** on Apple Silicon — MLX is 4–5× faster than PyTorch here. If it shows **Backend: PYTORCH**, reinstall MLX:
|
||
|
||
```bash
|
||
pip install -r backend/requirements-mlx.txt
|
||
```
|
||
|
||
GPU availability should read "Metal (Apple Silicon via MLX)".
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
### High Memory Usage
|
||
|
||
**Symptoms:**
|
||
- App uses excessive RAM
|
||
- System becomes sluggish
|
||
|
||
**Solutions:**
|
||
- Close unused voice profiles
|
||
- Clear generation history
|
||
- Restart the app periodically
|
||
|
||
## Update Issues
|
||
|
||
### "Update Check Failed"
|
||
|
||
**Solutions:**
|
||
- Confirm your internet connection — updates are fetched from GitHub releases.
|
||
- Ensure `github.com` is accessible and not blocked by a firewall or proxy.
|
||
- As a fallback, download the latest release from GitHub and install manually.
|
||
|
||
### "Invalid Signature" Error
|
||
|
||
**Solutions:**
|
||
- Re-download the installer — the signature may have been corrupted in transit.
|
||
- Verify the `.sig` file matches the installer; if it doesn't, file an issue.
|
||
|
||
## Remote Mode Issues
|
||
|
||
### Can't Connect to Remote Server
|
||
|
||
**Symptoms:**
|
||
- "Connection refused" error
|
||
- Remote server not found
|
||
|
||
**Solutions:**
|
||
|
||
<Steps>
|
||
<Step title="Check Server Status">
|
||
Ensure the remote server is running:
|
||
|
||
```bash
|
||
curl http://<server-ip>:17493/health
|
||
```
|
||
</Step>
|
||
|
||
<Step title="Check Firewall">
|
||
Ensure port 17493 is open on the remote server:
|
||
|
||
```bash
|
||
# Allow port on Ubuntu/Debian
|
||
sudo ufw allow 17493
|
||
```
|
||
</Step>
|
||
|
||
<Step title="Verify Network">
|
||
- Ensure both machines are on the same network (for local servers)
|
||
- Use IP address instead of hostname
|
||
- Try pinging the server: `ping <server-ip>`
|
||
</Step>
|
||
</Steps>
|
||
|
||
## Still Having Issues?
|
||
|
||
If you're still experiencing problems:
|
||
|
||
1. **Check GitHub Issues:** [github.com/jamiepine/voicebox/issues](https://github.com/jamiepine/voicebox/issues)
|
||
2. **Open a New Issue:** Provide:
|
||
- Operating system and version
|
||
- Voicebox version
|
||
- Steps to reproduce
|
||
- Error messages or logs
|
||
3. **Join Discord:** [discord.gg/voicebox](https://discord.gg/voicebox) (coming soon)
|
||
|
||
## Diagnostic Information
|
||
|
||
When reporting issues, include this information:
|
||
|
||
```bash
|
||
# Voicebox version
|
||
# Check Help → About in the app
|
||
|
||
# Operating system
|
||
uname -a # macOS/Linux
|
||
systeminfo # Windows
|
||
|
||
# Python version (for dev issues)
|
||
python --version
|
||
|
||
# GPU info (if generation issues)
|
||
nvidia-smi # NVIDIA GPUs
|
||
```
|