Django REST API backend for the AI Receptionist system. Handles webhooks, voice processing (STT/TTS), and communicates with the agent API.
This repository is standalone: deploy it as its own GitHub repo. Pair it with separate agent and frontend repositories using AGENT_API_URL (here) and BACKEND_API_BASE_URL / VITE_BACKEND_URL (in those repos).
Documentation site (GitHub Pages): Jekyll sources in docs/ — start with docs/index.md and docs/github-pages.md.
brew install espeak-ngsudo apt-get install espeak-ngsudo yum install espeak-ng# Using conda (recommended)
conda activate backend # or your preferred environment
pip install -r requirements.txt
Copy .env.example to .env in this directory (AI_receptionist_backend/). Example block below (extend as needed):
# Django Configuration
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# Database (optional - defaults to SQLite)
DATABASE_URL=postgresql://user:password@localhost:5432/receptionist_db
# Twilio Configuration (optional for local testing)
TWILIO_ACCOUNT_SID=your-account-sid
TWILIO_AUTH_TOKEN=your-auth-token
TWILIO_PHONE_NUMBER=+1234567890
# Email Configuration (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
FROM_EMAIL=noreply@receptionist.local
# Agent API Configuration
AGENT_API_URL=http://localhost:8001 # URL of the agent API service
# Voice Configuration
USE_LOCAL_VOICE=True
LOCAL_WHISPER_MODEL=base # Options: tiny, base, small, medium, large
WHISPER_COMPUTE_TYPE=int8_float16 # Options: int8, int8_float16, float16, float32
# TTS Provider Selection (priority order)
TTS_PROVIDER=dia2 # Options: dia2, chatterbox, kokoro, orpheus, cosyvoice, openai, piper
# Dia2 Configuration (Recommended - Best for Dialogue with Streaming)
DIA_TTS_ENABLED=True
DIA_TTS_MODEL=nari-labs/dia-2b # dia-2b, dia-1b, or dia-1.6b
DIA_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
DIA_TTS_SPEAKER=S1 # S1 or S2 for multi-speaker dialogue
DIA_TTS_STREAMING=True # Enable streaming generation
DIA_TTS_MAX_DURATION=120 # Max duration in seconds (~2 minutes)
# Chatterbox-Turbo Configuration (Production-Grade Fast - Sub-200ms latency)
CHATTERBOX_TURBO_ENABLED=False
CHATTERBOX_TURBO_MODEL=resemble-ai/chatterbox-turbo
CHATTERBOX_TURBO_DEVICE= # Auto-detect
CHATTERBOX_TURBO_EMOTION_EXAGGERATION=1.0 # Emotion control (0.0-2.0)
CHATTERBOX_TURBO_CFG=3.0 # CFG scale
# Orpheus 3B Configuration (Best Naturalness - Recommended for M3 Max)
ORPHEUS_TTS_ENABLED=False
ORPHEUS_TTS_MODEL=canopylabs/orpheus-tts-0.1-finetune-prod # or orpheus-3b-0.1-pretrained
ORPHEUS_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
ORPHEUS_TTS_EMOTION=neutral # happy, sad, angry, neutral, excited, calm, fearful, disgusted
ORPHEUS_TTS_VOICE=tara # tara, leah, jess, leo, dan, mia, zac, zoe (English voices)
ORPHEUS_TTS_STREAMING=False # Streaming supported but requires vLLM setup
# CosyVoice2-0.5B Configuration (Ultra-Low Latency Streaming - 150ms)
COSYVOICE_TTS_ENABLED=False
COSYVOICE_TTS_MODEL=FunAudioLLM/CosyVoice2-0.5B # Note: Requires CosyVoice repo clone
COSYVOICE_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
COSYVOICE_TTS_STREAMING=True # Enable bi-streaming (text-in and audio-out)
COSYVOICE_REF_AUDIO= # Path to reference audio file for zero-shot voice cloning
# Kokoro 82M Configuration (Ultra-Fast CPU Option - No GPU Required)
KOKORO_TTS_ENABLED=False
KOKORO_TTS_MODEL=hexgrad/Kokoro-82M # Model name (not used directly, kept for compatibility)
KOKORO_TTS_VOICE=af_sky # af_sky, af_nova, af_bella, af_heart, etc. (see VOICES.md)
# OpenAI TTS Configuration (Cloud Fallback)
OPENAI_TTS_MODEL=tts-1-hd # tts-1 or tts-1-hd (recommended for best quality)
OPENAI_TTS_VOICE=nova # alloy, echo, fable, onyx, nova, shimmer
OPENAI_TTS_SPEED=1.0 # Speech speed (0.25-4.0) - Note: OpenAI TTS does NOT support SSML or pitch control
# Piper TTS (Legacy Fallback)
PIPER_VOICE_PATH=en_US-lessac-medium # Used when TTS_PROVIDER=piper
# OpenAI Configuration (for TTS/STT fallback)
OPENAI_API_KEY=your-openai-api-key
# Run migrations
python manage.py migrate
# Create superuser (optional)
python manage.py createsuperuser
python manage.py runserver
The backend will be available at http://localhost:8000
POST /webhooks/sms/ - Twilio SMS webhookPOST /webhooks/voice/ - Twilio voice webhookPOST /webhooks/test-message/ - Test endpoint for local developmentPOST /webhooks/voice/transcribe/ - STT endpoint (transcribe audio to text)POST /webhooks/tts/ - TTS endpoint (text to speech audio)GET /api/customers/ - List customersPOST /api/customers/ - Create customerGET /api/appointments/ - List appointmentsPOST /api/appointments/ - Create appointmentGET /api/conversations/ - List conversationshttp://localhost:8000/admin/ - Django admin interfaceThe backend includes a voice service (backend/services/voice_service.py) that supports multiple TTS providers optimized for different use cases.
USE_LOCAL_VOICE=falseDia2 ⭐ BEST CHOICE (TTS_PROVIDER=dia2)
[S1]/[S2] tags(laughs), (coughs), (gasps), (sighs)pip install torch transformers (MPS auto-detected)nari-labs/dia-2b (or dia-1b for smaller model)Chatterbox-Turbo ⭐ FASTEST (TTS_PROVIDER=chatterbox)
[laugh], [cough], [chuckle]pip install torch transformersOrpheus 3B ⭐ MOST NATURAL (TTS_PROVIDER=orpheus)
<happy>, <sad>, <angry>, <neutral>, etc.pip install orpheus-speech (uses vLLM under the hood)CosyVoice2-0.5B ⭐ ULTRA-LOW LATENCY (TTS_PROVIDER=cosyvoice)
Kokoro 82M ⭐ ULTRA-FAST CPU (TTS_PROVIDER=kokoro)
pip install kokoro>=0.9.4 soundfile + brew install espeak-ngTTS_PROVIDER=openai): Cloud fallback, high quality ($30/1M chars)TTS_PROVIDER=piper): Legacy fallback, fast but roboticThe system automatically detects and uses MPS (Metal Performance Shaders) on Apple Silicon for optimal performance.
# Install PyTorch (includes MPS support for Apple Silicon)
pip install torch torchaudio transformers
# Verify MPS availability
python -c "import torch; print('MPS available:', torch.backends.mps.is_available())"
The system automatically:
mps devicecpu if MPS unavailableManual Override (if needed):
# Force CPU (useful for debugging)
DIA_TTS_DEVICE=cpu
# Force MPS (if auto-detection fails)
DIA_TTS_DEVICE=mps
Some models require Hugging Face authentication:
# Login to Hugging Face
huggingface-cli login
# Enter your token when prompted
Models requiring authentication:
canopylabs/orpheus-tts-0.1-finetune-prod)Memory Management:
Optimization:
dia-1b instead of dia-2b for faster inferenceBenchmarks on M3 Max (36GB RAM):
| Provider | Model Size | Latency | Quality | Best For |
|---|---|---|---|---|
| Dia2 | ~4-6GB | ~1-2s (non-streaming) | ⭐⭐⭐⭐⭐ | Dialogue/Receptionist |
| Chatterbox-Turbo | ~2-3GB | <200ms | ⭐⭐⭐⭐ | Production speed |
| Orpheus 3B | ~8-12GB | ~200ms | ⭐⭐⭐⭐⭐ | Naturalness |
| CosyVoice2-0.5B | ~2-3GB | 150ms | ⭐⭐⭐⭐ | Ultra-low latency |
| Kokoro 82M | <100MB | <300ms | ⭐⭐⭐ | CPU fallback |
| OpenAI tts-1-hd | Cloud | ~500ms | ⭐⭐⭐⭐⭐ | Cloud fallback |
Note: Latency varies based on text length and system load
Before synthesis, agent responses are preprocessed (utils/tts_text.py):
[S1]/[S2] and nonverbal tags (laughs), (coughs), etc.The system checks providers in priority order:
TTS_PROVIDER=dia2) - RecommendedConfigure via environment variables (see .env example above).
The backend communicates with a separate agent API service. Configure the agent API URL:
AGENT_API_URL=http://localhost:8001
The backend will forward messages to the agent API at /process endpoint.
Logs are stored in backend/logs/backend.log. Structured logging includes:
backend/
├── apps/
│ ├── core/ # Customer and appointment models
│ ├── conversations/ # Conversation tracking
│ └── webhooks/ # Twilio webhook handlers
├── services/
│ ├── voice_service.py # STT/TTS service
│ └── tts_compat.py # Python 3.9 compatibility
├── utils/
│ ├── logger.py # Structured logging
│ └── tts_text.py # TTS text preprocessing
├── config.py # Configuration (voice, OpenAI, etc.)
├── manage.py
├── requirements.txt
└── README.md
DEBUG=False in .envDATABASE_URLSECRET_KEYALLOWED_HOSTS properlypip install gunicorn
gunicorn receptionist.wsgi:application --bind 0.0.0.0:8000
This backend is designed to be deployed independently. It:
backend/config.py)backend/logs/)If you see ModuleNotFoundError, ensure:
pip install -r requirements.txt.env file exists in backend/ directoryDia2 (Recommended):
pip install torch transformershuggingface-cli login[S1] Hello! [S2] Hi there! (laughs)Chatterbox-Turbo:
pip install torch transformersOrpheus 3B:
pip install orpheus-speechpip install vllm==0.7.3huggingface-cli logincanopylabs/orpheus-tts-0.1-finetune-prod (recommended for production)canopylabs/orpheus-3b-0.1-pretrained (base model)<happy>, <sad>, <angry>, <neutral>, <excited>, <calm>, <fearful>, <disgusted>"<happy>Hello! How can I help you today?</happy>"CosyVoice2-0.5B:
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.gitcd CosyVoice && pip install -r requirements.txtfrom huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
COSYVOICE_REF_AUDIO=/path/to/reference/audio.wavKokoro 82M:
pip install kokoro>=0.9.4 soundfilebrew install espeak-ng (macOS) or apt-get install espeak-ng (Linux)OpenAI tts-1-hd:
TTS_PROVIDER=openai or USE_LOCAL_VOICE=falseOPENAI_API_KEYOPENAI_TTS_SPEED)Piper TTS (Legacy):
brew install piper-tts (macOS) or download from GitHubPIPER_VOICE_PATH for voice selectionmps device (no configuration needed)Recommended Configuration for M3 Max:
# Best for receptionist/dialogue use case
TTS_PROVIDER=dia2
DIA_TTS_ENABLED=True
DIA_TTS_MODEL=nari-labs/dia-2b # or dia-1b for faster inference
DIA_TTS_DEVICE= # Auto-detect (will use mps)
# Alternative: Best naturalness
TTS_PROVIDER=orpheus
ORPHEUS_TTS_ENABLED=True
ORPHEUS_TTS_MODEL=canopylabs/orpheus-tts-0.1-finetune-prod
ORPHEUS_TTS_VOICE=tara # Most conversational voice
# Fallback: Ultra-fast CPU option
TTS_PROVIDER=kokoro
KOKORO_TTS_ENABLED=True
KOKORO_TTS_VOICE=af_sky
STT_CACHE_SIZE and STT_CACHE_TTL)STT_MAX_WORKERS)brew install ffmpegsudo apt-get install ffmpegDATABASE_URLpython manage.py migrateSee LICENSE (MIT).
19 commits
Python
99.6%
Django REST API backend for the AI Receptionist system. Handles webhooks, voice processing (STT/TTS), and communicates with the agent API.
This repository is standalone: deploy it as its own GitHub repo. Pair it with separate agent and frontend repositories using AGENT_API_URL (here) and BACKEND_API_BASE_URL / VITE_BACKEND_URL (in those repos).
Documentation site (GitHub Pages): Jekyll sources in docs/ — start with docs/index.md and docs/github-pages.md.
brew install espeak-ngsudo apt-get install espeak-ngsudo yum install espeak-ng# Using conda (recommended)
conda activate backend # or your preferred environment
pip install -r requirements.txt
Copy .env.example to .env in this directory (AI_receptionist_backend/). Example block below (extend as needed):
# Django Configuration
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
# Database (optional - defaults to SQLite)
DATABASE_URL=postgresql://user:password@localhost:5432/receptionist_db
# Twilio Configuration (optional for local testing)
TWILIO_ACCOUNT_SID=your-account-sid
TWILIO_AUTH_TOKEN=your-auth-token
TWILIO_PHONE_NUMBER=+1234567890
# Email Configuration (optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
FROM_EMAIL=noreply@receptionist.local
# Agent API Configuration
AGENT_API_URL=http://localhost:8001 # URL of the agent API service
# Voice Configuration
USE_LOCAL_VOICE=True
LOCAL_WHISPER_MODEL=base # Options: tiny, base, small, medium, large
WHISPER_COMPUTE_TYPE=int8_float16 # Options: int8, int8_float16, float16, float32
# TTS Provider Selection (priority order)
TTS_PROVIDER=dia2 # Options: dia2, chatterbox, kokoro, orpheus, cosyvoice, openai, piper
# Dia2 Configuration (Recommended - Best for Dialogue with Streaming)
DIA_TTS_ENABLED=True
DIA_TTS_MODEL=nari-labs/dia-2b # dia-2b, dia-1b, or dia-1.6b
DIA_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
DIA_TTS_SPEAKER=S1 # S1 or S2 for multi-speaker dialogue
DIA_TTS_STREAMING=True # Enable streaming generation
DIA_TTS_MAX_DURATION=120 # Max duration in seconds (~2 minutes)
# Chatterbox-Turbo Configuration (Production-Grade Fast - Sub-200ms latency)
CHATTERBOX_TURBO_ENABLED=False
CHATTERBOX_TURBO_MODEL=resemble-ai/chatterbox-turbo
CHATTERBOX_TURBO_DEVICE= # Auto-detect
CHATTERBOX_TURBO_EMOTION_EXAGGERATION=1.0 # Emotion control (0.0-2.0)
CHATTERBOX_TURBO_CFG=3.0 # CFG scale
# Orpheus 3B Configuration (Best Naturalness - Recommended for M3 Max)
ORPHEUS_TTS_ENABLED=False
ORPHEUS_TTS_MODEL=canopylabs/orpheus-tts-0.1-finetune-prod # or orpheus-3b-0.1-pretrained
ORPHEUS_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
ORPHEUS_TTS_EMOTION=neutral # happy, sad, angry, neutral, excited, calm, fearful, disgusted
ORPHEUS_TTS_VOICE=tara # tara, leah, jess, leo, dan, mia, zac, zoe (English voices)
ORPHEUS_TTS_STREAMING=False # Streaming supported but requires vLLM setup
# CosyVoice2-0.5B Configuration (Ultra-Low Latency Streaming - 150ms)
COSYVOICE_TTS_ENABLED=False
COSYVOICE_TTS_MODEL=FunAudioLLM/CosyVoice2-0.5B # Note: Requires CosyVoice repo clone
COSYVOICE_TTS_DEVICE= # Auto-detect: mps (Apple Silicon), cuda (NVIDIA), cpu
COSYVOICE_TTS_STREAMING=True # Enable bi-streaming (text-in and audio-out)
COSYVOICE_REF_AUDIO= # Path to reference audio file for zero-shot voice cloning
# Kokoro 82M Configuration (Ultra-Fast CPU Option - No GPU Required)
KOKORO_TTS_ENABLED=False
KOKORO_TTS_MODEL=hexgrad/Kokoro-82M # Model name (not used directly, kept for compatibility)
KOKORO_TTS_VOICE=af_sky # af_sky, af_nova, af_bella, af_heart, etc. (see VOICES.md)
# OpenAI TTS Configuration (Cloud Fallback)
OPENAI_TTS_MODEL=tts-1-hd # tts-1 or tts-1-hd (recommended for best quality)
OPENAI_TTS_VOICE=nova # alloy, echo, fable, onyx, nova, shimmer
OPENAI_TTS_SPEED=1.0 # Speech speed (0.25-4.0) - Note: OpenAI TTS does NOT support SSML or pitch control
# Piper TTS (Legacy Fallback)
PIPER_VOICE_PATH=en_US-lessac-medium # Used when TTS_PROVIDER=piper
# OpenAI Configuration (for TTS/STT fallback)
OPENAI_API_KEY=your-openai-api-key
# Run migrations
python manage.py migrate
# Create superuser (optional)
python manage.py createsuperuser
python manage.py runserver
The backend will be available at http://localhost:8000
POST /webhooks/sms/ - Twilio SMS webhookPOST /webhooks/voice/ - Twilio voice webhookPOST /webhooks/test-message/ - Test endpoint for local developmentPOST /webhooks/voice/transcribe/ - STT endpoint (transcribe audio to text)POST /webhooks/tts/ - TTS endpoint (text to speech audio)GET /api/customers/ - List customersPOST /api/customers/ - Create customerGET /api/appointments/ - List appointmentsPOST /api/appointments/ - Create appointmentGET /api/conversations/ - List conversationshttp://localhost:8000/admin/ - Django admin interfaceThe backend includes a voice service (backend/services/voice_service.py) that supports multiple TTS providers optimized for different use cases.
USE_LOCAL_VOICE=falseDia2 ⭐ BEST CHOICE (TTS_PROVIDER=dia2)
[S1]/[S2] tags(laughs), (coughs), (gasps), (sighs)pip install torch transformers (MPS auto-detected)nari-labs/dia-2b (or dia-1b for smaller model)Chatterbox-Turbo ⭐ FASTEST (TTS_PROVIDER=chatterbox)
[laugh], [cough], [chuckle]pip install torch transformersOrpheus 3B ⭐ MOST NATURAL (TTS_PROVIDER=orpheus)
<happy>, <sad>, <angry>, <neutral>, etc.pip install orpheus-speech (uses vLLM under the hood)CosyVoice2-0.5B ⭐ ULTRA-LOW LATENCY (TTS_PROVIDER=cosyvoice)
Kokoro 82M ⭐ ULTRA-FAST CPU (TTS_PROVIDER=kokoro)
pip install kokoro>=0.9.4 soundfile + brew install espeak-ngTTS_PROVIDER=openai): Cloud fallback, high quality ($30/1M chars)TTS_PROVIDER=piper): Legacy fallback, fast but roboticThe system automatically detects and uses MPS (Metal Performance Shaders) on Apple Silicon for optimal performance.
# Install PyTorch (includes MPS support for Apple Silicon)
pip install torch torchaudio transformers
# Verify MPS availability
python -c "import torch; print('MPS available:', torch.backends.mps.is_available())"
The system automatically:
mps devicecpu if MPS unavailableManual Override (if needed):
# Force CPU (useful for debugging)
DIA_TTS_DEVICE=cpu
# Force MPS (if auto-detection fails)
DIA_TTS_DEVICE=mps
Some models require Hugging Face authentication:
# Login to Hugging Face
huggingface-cli login
# Enter your token when prompted
Models requiring authentication:
canopylabs/orpheus-tts-0.1-finetune-prod)Memory Management:
Optimization:
dia-1b instead of dia-2b for faster inferenceBenchmarks on M3 Max (36GB RAM):
| Provider | Model Size | Latency | Quality | Best For |
|---|---|---|---|---|
| Dia2 | ~4-6GB | ~1-2s (non-streaming) | ⭐⭐⭐⭐⭐ | Dialogue/Receptionist |
| Chatterbox-Turbo | ~2-3GB | <200ms | ⭐⭐⭐⭐ | Production speed |
| Orpheus 3B | ~8-12GB | ~200ms | ⭐⭐⭐⭐⭐ | Naturalness |
| CosyVoice2-0.5B | ~2-3GB | 150ms | ⭐⭐⭐⭐ | Ultra-low latency |
| Kokoro 82M | <100MB | <300ms | ⭐⭐⭐ | CPU fallback |
| OpenAI tts-1-hd | Cloud | ~500ms | ⭐⭐⭐⭐⭐ | Cloud fallback |
Note: Latency varies based on text length and system load
Before synthesis, agent responses are preprocessed (utils/tts_text.py):
[S1]/[S2] and nonverbal tags (laughs), (coughs), etc.The system checks providers in priority order:
TTS_PROVIDER=dia2) - RecommendedConfigure via environment variables (see .env example above).
The backend communicates with a separate agent API service. Configure the agent API URL:
AGENT_API_URL=http://localhost:8001
The backend will forward messages to the agent API at /process endpoint.
Logs are stored in backend/logs/backend.log. Structured logging includes:
backend/
├── apps/
│ ├── core/ # Customer and appointment models
│ ├── conversations/ # Conversation tracking
│ └── webhooks/ # Twilio webhook handlers
├── services/
│ ├── voice_service.py # STT/TTS service
│ └── tts_compat.py # Python 3.9 compatibility
├── utils/
│ ├── logger.py # Structured logging
│ └── tts_text.py # TTS text preprocessing
├── config.py # Configuration (voice, OpenAI, etc.)
├── manage.py
├── requirements.txt
└── README.md
DEBUG=False in .envDATABASE_URLSECRET_KEYALLOWED_HOSTS properlypip install gunicorn
gunicorn receptionist.wsgi:application --bind 0.0.0.0:8000
This backend is designed to be deployed independently. It:
backend/config.py)backend/logs/)If you see ModuleNotFoundError, ensure:
pip install -r requirements.txt.env file exists in backend/ directoryDia2 (Recommended):
pip install torch transformershuggingface-cli login[S1] Hello! [S2] Hi there! (laughs)Chatterbox-Turbo:
pip install torch transformersOrpheus 3B:
pip install orpheus-speechpip install vllm==0.7.3huggingface-cli logincanopylabs/orpheus-tts-0.1-finetune-prod (recommended for production)canopylabs/orpheus-3b-0.1-pretrained (base model)<happy>, <sad>, <angry>, <neutral>, <excited>, <calm>, <fearful>, <disgusted>"<happy>Hello! How can I help you today?</happy>"CosyVoice2-0.5B:
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.gitcd CosyVoice && pip install -r requirements.txtfrom huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')
COSYVOICE_REF_AUDIO=/path/to/reference/audio.wavKokoro 82M:
pip install kokoro>=0.9.4 soundfilebrew install espeak-ng (macOS) or apt-get install espeak-ng (Linux)OpenAI tts-1-hd:
TTS_PROVIDER=openai or USE_LOCAL_VOICE=falseOPENAI_API_KEYOPENAI_TTS_SPEED)Piper TTS (Legacy):
brew install piper-tts (macOS) or download from GitHubPIPER_VOICE_PATH for voice selectionmps device (no configuration needed)Recommended Configuration for M3 Max:
# Best for receptionist/dialogue use case
TTS_PROVIDER=dia2
DIA_TTS_ENABLED=True
DIA_TTS_MODEL=nari-labs/dia-2b # or dia-1b for faster inference
DIA_TTS_DEVICE= # Auto-detect (will use mps)
# Alternative: Best naturalness
TTS_PROVIDER=orpheus
ORPHEUS_TTS_ENABLED=True
ORPHEUS_TTS_MODEL=canopylabs/orpheus-tts-0.1-finetune-prod
ORPHEUS_TTS_VOICE=tara # Most conversational voice
# Fallback: Ultra-fast CPU option
TTS_PROVIDER=kokoro
KOKORO_TTS_ENABLED=True
KOKORO_TTS_VOICE=af_sky
STT_CACHE_SIZE and STT_CACHE_TTL)STT_MAX_WORKERS)brew install ffmpegsudo apt-get install ffmpegDATABASE_URLpython manage.py migrateSee LICENSE (MIT).
19 commits
Python
99.6%