main
deploy / deploy (push) Has been cancelled
Simple Call Center
Простой Python/FastAPI прототип голосовой сессии:
- браузер отправляет микрофон в WebSocket как PCM 16 kHz;
- сервер стримит аудио в ElevenLabs realtime STT;
- финальный фрагмент речи отправляется в OpenAI Responses API с общей историей текущей сессии;
- текст ответа одновременно стримится в ElevenLabs TTS WebSocket;
- браузер проигрывает PCM-аудио чанки по мере генерации.
Быстрый старт
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
Заполните .env:
OPENAI_API_KEY=...
ELEVENLABS_API_KEY=...
Запуск:
uvicorn app.main:app --reload --port 8000
Откройте http://127.0.0.1:8000.
Настройки
OPENAI_MODELпо умолчанию стоитgpt-5.4-nano, потому что в актуальной документации OpenAIgpt-5.4 nanoописан как самый дешевый GPT-5.4-class вариант, аgpt-5.4 miniиnanoрекомендуются для latency/cost задач.ELEVENLABS_STT_MODEL=scribe_v2_realtimeиспользует realtime STT WebSocket.AI_VOICE_V2_STREAMING_TTS=0использует обычный HTTP TTS, поэтомуAI_VOICE_TTS_ELEVENLABS_MODEL_ID=eleven_v3применяется напрямую.- Если вернуть
AI_VOICE_V2_STREAMING_TTS=1, приложение автоматически используетAI_VOICE_TTS_ELEVENLABS_STREAMING_FALLBACK_MODEL=eleven_flash_v2_5, потому что ElevenLabs/stream-inputне поддерживаетeleven_v3. LOCAL_KB_ENABLED=1включает локальную базу знаний из JSONL-файлов вknowledge/.LOCAL_KB_MAX_RESULTS=4задает, сколько найденных записей подмешивать в один ответ.- Контекст хранится в памяти на один WebSocket-сеанс браузера. Кнопка reset очищает локальную историю.
Полезные ссылки
- OpenAI streaming Responses API: https://developers.openai.com/api/docs/guides/streaming-responses
- OpenAI models: https://developers.openai.com/api/docs/models
- ElevenLabs realtime STT: https://elevenlabs.io/docs/api-reference/speech-to-text/v-1-speech-to-text-realtime
- ElevenLabs realtime TTS WebSocket: https://elevenlabs.io/docs/eleven-api/guides/how-to/websockets/realtime-tts
Languages
Python
75.3%
JavaScript
17.6%
CSS
5.1%
HTML
1.8%
Dockerfile
0.2%