feat: preload Whisper model at startup with disk space check
- Add WHISPER_MODEL_SIZE and WHISPER_MIN_FREE_SPACE_BYTES config options - voice.py now preloads/downloads the Whisper model at bot startup - Detailed logging for model presence, disk space, download progress and readiness - If model is already present locally, preload is skipped - If disk space is insufficient, bot fails fast with a clear error - main.py calls preload_model() after proxy setup and before polling - Document voice recognition model download behavior in README
This commit is contained in:
@@ -95,6 +95,10 @@ ROUTERAI_BASE_URL=https://routerai.ru/api/v1
|
||||
# Внимание: проверка расходует токены API. По умолчанию отключена.
|
||||
AI_HEALTH_CHECK_ENABLED=false
|
||||
AI_HEALTH_CHECK_INTERVAL=600
|
||||
|
||||
# Настройки модели Whisper для распознавания голоса.
|
||||
WHISPER_MODEL_SIZE=base
|
||||
WHISPER_MIN_FREE_SPACE_BYTES=5368709120
|
||||
```
|
||||
|
||||
Для включения прокси установите `PROXY_ENABLED=true` и укажите корректный `PROXY_URL`.
|
||||
@@ -114,6 +118,45 @@ docker compose up -d --build
|
||||
|
||||
Модели Whisper сохраняются в `./models`, база данных и логи — в `./bot/data`.
|
||||
|
||||
## 🎙️ Распознавание голосовых сообщений
|
||||
|
||||
Бот автоматически распознаёт все голосовые сообщения с помощью локальной модели [faster-whisper](https://github.com/SYSTRAN/faster-whisper).
|
||||
|
||||
### Поведение загрузки модели
|
||||
|
||||
- При запуске бота проверяется наличие модели в `./models/faster-whisper/<WHISPER_MODEL_SIZE>/`.
|
||||
- Если модель уже скачана — бот сразу готов к работе.
|
||||
- Если модели нет — бот проверяет свободное место на диске и **скачивает модель автоматически** перед началом polling.
|
||||
- Для скачивания используется прокси из `.env`, если `PROXY_ENABLED=true`.
|
||||
|
||||
### Требования к месту
|
||||
|
||||
| Модель | Размер модели | Рекомендуемое свободное место |
|
||||
|--------|---------------|-------------------------------|
|
||||
| `base` | ~150 MB архив, ~500 MB на диске | 5 GB (`WHISPER_MIN_FREE_SPACE_BYTES=5368709120`) |
|
||||
| `small` | ~500 MB архив, ~1.5 GB на диске | 5 GB+ |
|
||||
| `medium` | ~1.5 GB архив, ~5 GB на диске | 10 GB+ |
|
||||
|
||||
> 💡 По умолчанию используется модель `base`. Для смены модели измените `WHISPER_MODEL_SIZE` в `.env`.
|
||||
|
||||
### Логирование
|
||||
|
||||
В логах будет видно:
|
||||
|
||||
```
|
||||
Free disk space: 45.23 GB, required: 5.00 GB
|
||||
Whisper model 'base' found locally at /app/models/faster-whisper/base
|
||||
Whisper model 'base' is ready
|
||||
```
|
||||
|
||||
или при скачивании:
|
||||
|
||||
```
|
||||
Whisper model 'base' not found locally. Starting download to /app/models/faster-whisper...
|
||||
Whisper model 'base' downloaded and loaded in 125.4s
|
||||
Whisper model 'base' is ready
|
||||
```
|
||||
|
||||
## 🧪 Тесты
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user