Repository navigation
Provider Tts Localhost
Run Resemble AI Chatterbox on the
host with the chatterbox-tts-api
server. Atlas containers reach it through host.docker.internal. Select it
with TTS_PROVIDER_SOURCE=chatterbox-localhost.
Use this source for zero-shot voice cloning without an NVIDIA container. The server runs on macOS (MPS) and on Linux (CPU or CUDA).
- macOS: Docker Desktop containers cannot use MPS. A host install can.
-
No large GPU: the
chatterbox-container-gpusource needs an NVIDIA GPU; upstream recommends 8 GB+ memory. The host server can run on the CPU, but slowly. - Voice samples on the host: the voice library is a host directory, not a container volume.
For TTS with no host setup, use TTS_PROVIDER_SOURCE=speaches-container-cpu.
Speaches provides Kokoro voices but no voice cloning.
Atlas publishes no speed figures for Chatterbox. Benchmark representative text on the deployment host.
The chatterbox-tts-api 1.0.0 package on PyPI contains no code, so install
from the repository. Its pyproject.toml requires Python 3.11.
git clone https://github.com/travisvn/chatterbox-tts-api
cd chatterbox-tts-api
# With uv (creates the virtual environment):
uv sync
# Or with pip:
python3.11 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtThe chatterbox-tts model library installs from a git source, so the first
install can take a few minutes.
main.py is the entry point. It listens on PORT (default 4123) and HOST
(default 0.0.0.0).
# 63044 is the CHATTERBOX_LOCALHOST_PORT default. It is independent of the
# container CHATTERBOX_PORT, which is 63059.
PORT=63044 uv run main.py
# or, in an activated virtual environment:
PORT=63044 python main.pyThe server starts, then loads the model in the background. The first start
downloads the weights from Hugging Face (about 2 GB). GET /health responds
during the load and reports the initialization state.
The server has no authentication. With the default HOST=0.0.0.0, it is
reachable from the local network as well as from Docker. Use the host firewall
when the network is not trusted.
The device setting DEVICE=auto selects MPS on Apple Silicon. Set
DEVICE=mps if detection fails, or DEVICE=cpu to force the CPU.
In another terminal, from the Atlas repository root, select the source:
./start.sh --tts-provider-source chatterbox-localhostIf the server uses another port, set it in .env. Atlas derives the URL
http://host.docker.internal:${CHATTERBOX_LOCALHOST_PORT:-63044}:
CHATTERBOX_LOCALHOST_PORT=9000curl http://localhost:63044/health # expect "status": "healthy" once loaded
curl http://localhost:63044/v1/models # expect chatterbox-tts-1 in the list
curl -X POST http://localhost:63044/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"model":"chatterbox-tts-1","input":"hello world","voice":"alloy"}' \
--output /tmp/test.wav
file /tmp/test.wav # expect: RIFF (little-endian) data, WAVE audioChatterbox has two voice-cloning paths. Neither uses a reference_audio
JSON field.
1) Add a voice to the server's voice library, then use its name:
# Upload once (multipart). Use a short, clean speech clip.
curl -X POST http://localhost:63044/voices \
-F "voice_name=alice" \
-F "voice_file=@ALICE.wav"
# Use the registered name as the voice:
curl -X POST http://localhost:63044/v1/audio/speech \
-H 'Content-Type: application/json' \
-d '{"model":"chatterbox-tts-1","input":"Synthesize in this voice.","voice":"alice"}' \
--output cloned.wav2) Upload the reference clip with the request to the /upload route:
curl -X POST http://localhost:63044/v1/audio/speech/upload \
-F "input=Synthesize in this voice." \
-F "voice_file=@ALICE.wav" \
--output cloned.wavThe upstream voice library guide covers the other voice operations.
The Chatterbox model is MIT-licensed. The chatterbox-tts-api server is AGPL-3.0.
MPS not detected on macOS: the server log reports the CPU device. Set
DEVICE=mps. If that fails, reinstall PyTorch with MPS support, for example
pip install --upgrade --force-reinstall torch torchaudio.
Port already in use: start on another port, then set it in .env:
PORT=9000 uv run main.py
# then in .env:
CHATTERBOX_LOCALHOST_PORT=9000First requests fail after the first start: the model is still
downloading or loading. Wait until /health returns "status": "healthy".
Atlas documentation.
- 1. Overview
- 2. Quick Start
- 3. Core Concepts
- 4. Tracks
-
5. Services
- 5.1. Service Catalog
-
5.2. Service Guides
- 5.2.1. airflow
- 5.2.2. asset-baker
- 5.2.3. asset-worker
- 5.2.4. backend
- 5.2.5. backup
- 5.2.6. blender-mcp
- 5.2.7. celery
- 5.2.8. chatterbox
- 5.2.9. cloud-providers
- 5.2.10. cloudflared
- 5.2.11. comfyui
- 5.2.12. crawl4ai
- 5.2.13. doc-processor
- 5.2.14. docling
- 5.2.15. docling-lightrag-adapter
- 5.2.16. fal
- 5.2.17. globals
- 5.2.18. grafana
- 5.2.19. hermes
- 5.2.20. iceberg-rest
- 5.2.21. jenkins
- 5.2.22. jupyterhub
- 5.2.23. kong
- 5.2.24. label-studio
- 5.2.25. langfuse
- 5.2.26. lightrag
- 5.2.27. litellm
- 5.2.28. llm-graph-builder
- 5.2.29. local-deep-researcher
- 5.2.30. loki
- 5.2.31. mcp-servers
- 5.2.32. minio
- 5.2.33. mlflow
- 5.2.34. multi2vec-clip
- 5.2.35. n8n
- 5.2.36. neo4j
- 5.2.37. ollama
- 5.2.38. open-webui
- 5.2.39. openclaw
- 5.2.40. otel-collector
- 5.2.41. parakeet
- 5.2.42. prometheus
- 5.2.43. ray
- 5.2.44. redis
- 5.2.45. redpanda
- 5.2.46. searxng
- 5.2.47. spark
- 5.2.48. speaches
- 5.2.49. stt-provider
- 5.2.50. supabase
- 5.2.51. supavisor
- 5.2.52. tei-reranker
- 5.2.53. tempo
- 5.2.54. tika
- 5.2.55. trino
- 5.2.56. trueforge
- 5.2.57. tts-provider
- 5.2.58. verba
- 5.2.59. vllm-metal
- 5.2.60. weaviate
- 5.2.61. zeppelin
- 5.3. Provider And Extension Guides
- 6. Configuration
- 7. Operations
- 8. Architecture
- 9. Development
- 10. Reference