- Updated .env.example to clarify audio frame size validation and default codec settings. - Refactored logging setup in main.py to support JSON serialization based on log format configuration. - Improved session.py to dynamically compute audio frame bytes and include protocol version in session events. - Added tests to validate session start events and audio frame handling based on chunk size settings.
55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
# -----------------------------------------------------------------------------
|
|
# Engine .env example (safe template)
|
|
# Notes:
|
|
# - Never commit real API keys.
|
|
# - Start with defaults below, then tune from logs.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Server
|
|
HOST=0.0.0.0
|
|
PORT=8000
|
|
# EXTERNAL_IP=1.2.3.4
|
|
|
|
# Backend bridge (optional)
|
|
# BACKEND_MODE=auto|http|disabled
|
|
BACKEND_MODE=auto
|
|
BACKEND_URL=http://127.0.0.1:8100
|
|
BACKEND_TIMEOUT_SEC=10
|
|
HISTORY_ENABLED=true
|
|
HISTORY_DEFAULT_USER_ID=1
|
|
HISTORY_QUEUE_MAX_SIZE=256
|
|
HISTORY_RETRY_MAX_ATTEMPTS=2
|
|
HISTORY_RETRY_BACKOFF_SEC=0.2
|
|
HISTORY_FINALIZE_DRAIN_TIMEOUT_SEC=1.5
|
|
|
|
# Audio
|
|
SAMPLE_RATE=16000
|
|
# 20ms is recommended for VAD stability and latency.
|
|
# 100ms works but usually worsens start-of-speech accuracy.
|
|
# WS binary audio frame size validation is derived from SAMPLE_RATE + CHUNK_SIZE_MS.
|
|
# Client frame payloads must be a multiple of: SAMPLE_RATE * 2 * (CHUNK_SIZE_MS / 1000).
|
|
CHUNK_SIZE_MS=20
|
|
# Public default output codec exposed in config.resolved (overridable by runtime metadata).
|
|
DEFAULT_CODEC=pcm
|
|
MAX_AUDIO_BUFFER_SECONDS=30
|
|
|
|
# Local assistant/agent YAML directory. In local mode the runtime resolves:
|
|
# ASSISTANT_LOCAL_CONFIG_DIR/<assistant_id>.yaml
|
|
ASSISTANT_LOCAL_CONFIG_DIR=config/agents
|
|
|
|
# Logging
|
|
LOG_LEVEL=INFO
|
|
# json is better for production/observability; text is easier locally.
|
|
# Controls both console and file log serialization/format.
|
|
LOG_FORMAT=json
|
|
|
|
# WebSocket behavior
|
|
INACTIVITY_TIMEOUT_SEC=60
|
|
HEARTBEAT_INTERVAL_SEC=50
|
|
# Public protocol label emitted in session.started/config.resolved payloads.
|
|
WS_PROTOCOL_VERSION=v1
|
|
|
|
# CORS / ICE (JSON strings)
|
|
CORS_ORIGINS=["http://localhost:3000","http://localhost:8080"]
|
|
ICE_SERVERS=[{"urls":"stun:stun.l.google.com:19302"}]
|