--- updated-dependencies: - dependency-name: aiohttp dependency-version: 3.13.3 dependency-type: indirect dependency-group: uv - dependency-name: filelock dependency-version: 3.20.3 dependency-type: indirect dependency-group: uv - dependency-name: fonttools dependency-version: 4.60.2 dependency-type: indirect dependency-group: uv - dependency-name: protobuf dependency-version: 6.33.5 dependency-type: indirect dependency-group: uv - dependency-name: starlette dependency-version: 0.49.1 dependency-type: indirect dependency-group: uv - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: indirect dependency-group: uv - dependency-name: aiohttp dependency-version: 3.13.3 dependency-type: indirect dependency-group: uv - dependency-name: protobuf dependency-version: 6.33.5 dependency-type: indirect dependency-group: uv - dependency-name: filelock dependency-version: 3.20.3 dependency-type: indirect dependency-group: uv - dependency-name: fonttools dependency-version: 4.60.2 dependency-type: indirect dependency-group: uv - dependency-name: starlette dependency-version: 0.49.1 dependency-type: indirect dependency-group: uv - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: indirect dependency-group: uv - dependency-name: sentencepiece dependency-version: 0.2.1 dependency-type: direct:production dependency-group: uv - dependency-name: aiohttp dependency-version: 3.13.3 dependency-type: direct:production dependency-group: uv - dependency-name: filelock dependency-version: 3.20.3 dependency-type: indirect dependency-group: uv - dependency-name: fonttools dependency-version: 4.60.2 dependency-type: indirect dependency-group: uv - dependency-name: protobuf dependency-version: 6.33.5 dependency-type: direct:production dependency-group: uv - dependency-name: starlette dependency-version: 0.49.1 dependency-type: indirect dependency-group: uv - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: indirect dependency-group: uv - dependency-name: aiohttp dependency-version: 3.13.3 dependency-type: direct:production dependency-group: uv - dependency-name: sentencepiece dependency-version: 0.2.1 dependency-type: direct:production dependency-group: uv - dependency-name: protobuf dependency-version: 6.33.5 dependency-type: direct:production dependency-group: uv - dependency-name: llama-index dependency-version: 0.13.0 dependency-type: direct:production dependency-group: uv - dependency-name: black dependency-version: 24.3.0 dependency-type: direct:development dependency-group: uv - dependency-name: filelock dependency-version: 3.20.3 dependency-type: indirect dependency-group: uv - dependency-name: fonttools dependency-version: 4.60.2 dependency-type: indirect dependency-group: uv - dependency-name: llama-index-core dependency-version: 0.13.6 dependency-type: indirect dependency-group: uv - dependency-name: marshmallow dependency-version: 3.26.2 dependency-type: indirect dependency-group: uv - dependency-name: pyasn1 dependency-version: 0.6.2 dependency-type: indirect dependency-group: uv - dependency-name: pypdf dependency-version: 6.6.2 dependency-type: indirect dependency-group: uv - dependency-name: starlette dependency-version: 0.49.1 dependency-type: indirect dependency-group: uv - dependency-name: urllib3 dependency-version: 2.6.3 dependency-type: indirect dependency-group: uv ... Signed-off-by: dependabot[bot] <support@github.com>
Self-hosted Model API
Run transcription, translation, and diarization services compatible with Reflector's GPU Model API. Works on CPU or GPU.
Environment variables
- REFLECTOR_GPU_APIKEY: Optional Bearer token. If unset, auth is disabled.
- HF_TOKEN: Optional. Required for diarization to download pyannote pipelines
Requirements
- FFmpeg must be installed and on PATH (used for URL-based and segmented transcription)
- Python 3.12+
- NVIDIA GPU optional. If available, it will be used automatically
Local run Set env vars in self_hosted/.env file uv sync
uv run uvicorn main:app --host 0.0.0.0 --port 8000
Authentication
- If REFLECTOR_GPU_APIKEY is set, include header: Authorization: Bearer
Endpoints
-
POST /v1/audio/transcriptions
- multipart/form-data
- fields: file (single file) OR files[] (multiple files), language, batch (true/false)
- response: single { text, words, filename } or { results: [ ... ] }
-
POST /v1/audio/transcriptions-from-url
- application/json
- body: { audio_file_url, language, timestamp_offset }
- response: { text, words }
-
POST /translate
- text: query parameter
- body (application/json): { source_language, target_language }
- response: { text: { : original, : translated } }
-
POST /diarize
- query parameters: audio_file_url, timestamp (optional)
- requires HF_TOKEN to be set (for pyannote)
- response: { diarization: [ { start, end, speaker } ] }
OpenAPI docs
- Visit /docs when the server is running
Docker
- Not yet provided in this directory. A Dockerfile will be added later. For now, use Local run above
Setup
Conformance tests
From this directory
TRANSCRIPT_URL=http://localhost:8000
TRANSCRIPT_API_KEY=dev-key
uv run -m pytest -m model_api --no-cov ../../server/tests/test_model_api_transcript.py
TRANSLATION_URL=http://localhost:8000
TRANSLATION_API_KEY=dev-key
uv run -m pytest -m model_api --no-cov ../../server/tests/test_model_api_translation.py
DIARIZATION_URL=http://localhost:8000
DIARIZATION_API_KEY=dev-key
uv run -m pytest -m model_api --no-cov ../../server/tests/test_model_api_diarization.py