Files
voice-call-center-ai/README.md
T
2026-06-20 17:38:19 +05:00

51 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Simple Call Center
Простой Python/FastAPI прототип голосовой сессии:
1. браузер отправляет микрофон в WebSocket как PCM 16 kHz;
2. сервер стримит аудио в ElevenLabs realtime STT;
3. финальный фрагмент речи отправляется в OpenAI Responses API с общей историей текущей сессии;
4. текст ответа одновременно стримится в ElevenLabs TTS WebSocket;
5. браузер проигрывает PCM-аудио чанки по мере генерации.
## Быстрый старт
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
```
Заполните `.env`:
```bash
OPENAI_API_KEY=...
ELEVENLABS_API_KEY=...
```
Запуск:
```bash
uvicorn app.main:app --reload --port 8000
```
Откройте [http://127.0.0.1:8000](http://127.0.0.1:8000).
## Настройки
- `OPENAI_MODEL` по умолчанию стоит `gpt-5.4-nano`, потому что в актуальной документации OpenAI `gpt-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