Repository navigation
Provider Parakeet Overview
Pluggable speech-to-text layer. All backends expose an OpenAI-compatible
/v1/audio/transcriptions endpoint so Open WebUI, n8n, and the backend API
can use them interchangeably.
STT_PROVIDER_SOURCE |
Engine | License | Runs on |
|---|---|---|---|
speaches-container-cpu |
Speaches (Faster-Whisper inside) | MIT | Linux + macOS Docker, CPU |
speaches-container-gpu |
Speaches CUDA build | MIT | Not usable yet: no GPU device is attached (#1373) |
parakeet-container-gpu |
NVIDIA Parakeet-TDT (NeMo) | Model CC-BY-4.0 | NVIDIA |
parakeet-localhost |
Parakeet-MLX or another operator-run Parakeet server | Model CC-BY-4.0 | macOS MLX / Linux |
whisper-cpp-localhost |
whisper.cpp | MIT | macOS Metal / Linux |
disabled |
none | — | — |
The default for fresh installs is speaches-container-cpu. It starts on
every platform with no host install, but it has no model. The pinned Speaches
release does not download a missing model on request, and PRELOAD_MODELS is
empty (#799). Install the model as described in the
STT Provider quick start.
For Mac users, both whisper-cpp-localhost (Metal) and
parakeet-localhost (MLX) provide native acceleration. Benchmark the
chosen model and representative audio on the target host; Atlas does not make
a hardware-independent speed or quality ranking.
services/parakeet/provider/
├── mlx/ Apple Silicon MLX server for Parakeet (parakeet-localhost)
│ ├── api_server.py
│ ├── README.md
│ ├── requirements.txt
│ └── requirements-locked.txt
├── gpu/ NVIDIA CUDA container build for Parakeet (parakeet-container-gpu)
│ ├── Dockerfile
│ ├── requirements.txt
│ └── transcribe.py
├── whisper-cpp/ whisper.cpp host install notes (whisper-cpp-localhost)
│ └── README.md
└── shared/ Common server scaffolding
├── api_server.py
└── utils.py
The Speaches path doesn't have a directory here because it's an off-the-shelf container — see services/speaches/compose.yml for the runtime config.
Speaches (default — already enabled in .env.example):
./start.sh
curl http://localhost:63060/healthThis proves the default Speaches container is up. Transcription remains
unavailable until the whisper-1 alias target is installed or preloaded; see
the STT Provider quick start (#799).
Parakeet on NVIDIA GPU:
./start.sh --stt-provider-source parakeet-container-gpuThe GPU API starts a deadline-bounded background load for the configured
Parakeet model. Its health endpoint and transcription routes return 503 until
the model is loaded. Health-aware callers can therefore wait for inference
readiness, even though consumers may start independently.
Parakeet on macOS MLX:
Before launch, prepare the active Atlas env file (.env by default; copy
.env.example only if the target does not exist). Set a nonempty
PARAKEET_API_TOKEN there; preserve an existing token. To generate a new value,
run python3.12 -c 'import secrets; print(secrets.token_urlsafe(32))'.
Run the preflight from the Atlas repository root. Use the same ATLAS_ENV_FILE
setting in both terminals. The preflight reads the configured value and stops
if it is missing or blank. Restart the native provider after changing its token.
# Terminal 1 — run from repo root with the lock's certified interpreter
python3.12 -m venv .venv-parakeet-mlx
. .venv-parakeet-mlx/bin/activate
python -m pip install -r services/parakeet/provider/mlx/requirements-locked.txt
PARAKEET_API_TOKEN=$(
PYTHONPATH=bootstrapper python - <<'PYTOKEN'
import sys
from core.config_parser import ConfigParser
token = ConfigParser().parse_env_file().get("PARAKEET_API_TOKEN", "")
if not token:
sys.exit("Set a nonempty PARAKEET_API_TOKEN in the active Atlas env file.")
print(token, end="")
PYTOKEN
) || exit 1
export PARAKEET_API_TOKEN
export PARAKEET_LOCALHOST_BIND_HOST=0.0.0.0
export PARAKEET_LOCALHOST_PORT=63042
cd services/parakeet/provider && python -m mlx.api_server
# Terminal 2
./start.sh --stt-provider-source parakeet-localhostThe MLX health endpoint starts one shared background model load and returns
503 with status=loading while that work is in progress. Concurrent health
and transcription requests share the same load; model initialization never
runs on the API event loop. Both Parakeet providers default advanced segment
timestamps to disabled unless return_timestamps=true is supplied.
PARAKEET_MAX_UPLOAD_BYTES is parsed as a positive integer during provider
startup; malformed, zero, and negative values fail fast before the API serves.
The whole request body must arrive within PARAKEET_UPLOAD_TIMEOUT_SECONDS
(1-3600 seconds; default 120). Otherwise the provider returns 408 and releases
its admission slot.
whisper.cpp on macOS (Metal):
# Terminal 1: in a whisper.cpp checkout with whisper-server built and
# models/ggml-large-v3.bin downloaded (see whisper-cpp/README.md)
./build/bin/whisper-server --host 0.0.0.0 --port 63042 \
--model models/ggml-large-v3.bin \
--inference-path /v1/audio/transcriptions \
--convert
# Terminal 2: from the Atlas repository root
./start.sh --stt-provider-source whisper-cpp-localhostSee whisper-cpp/README.md for the build (Homebrew
does not ship whisper-server), model downloads and options.
Disable STT entirely:
./start.sh --stt-provider-source disabledThroughput and word-error rate depend on the exact checkpoint, audio corpus, codec, duration, timestamps, hardware, and thermal state. Benchmark representative inputs on the deployment host and record real-time factor, word-error rate, and peak resident/GPU memory before capacity planning.
The bootstrapper sets these env vars on the open-web-ui container based on the chosen source:
AUDIO_STT_ENGINE=openaiAUDIO_STT_OPENAI_API_BASE_URL=${STT_ENDPOINT}/v1-
AUDIO_STT_OPENAI_API_KEY=${OPEN_WEB_UI_STT_API_KEY}(source-aware bearer token) -
AUDIO_STT_MODEL=whisper-1(the OpenAI-compatible model name all engines accept)
You can change the model name in the Open WebUI admin panel — Audio settings.
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