feat: обновление конфигурации ASR сервера и поддержка GPU NVIDIA/AMD
This commit is contained in:
@@ -6,11 +6,13 @@
|
||||
|
||||
- 🎯 Эндпоинт `/transcribe` для распознавания речи
|
||||
- 🔑 Управление API-ключами без перезапуска сервиса
|
||||
- 📊 Три формата ответа: `json`, `simple`, `text`
|
||||
- 📊 Три формата ответа: `json`, `simple`, `text/plain`
|
||||
- ⚙️ Поддержка всех параметров `whisper.transcribe()`
|
||||
- 🐳 Docker и native запуск
|
||||
- 🏥 Health check эндпоинт
|
||||
- 🔄 Горячая перезагрузка API-ключей
|
||||
- 🚀 GPU ускорение по умолчанию (NVIDIA/AMD)
|
||||
- ⚙️ Централизованная конфигурация через .env файл
|
||||
|
||||
## Требования
|
||||
|
||||
@@ -18,10 +20,12 @@
|
||||
- FFmpeg (для обработки аудио)
|
||||
- Минимум 4GB RAM
|
||||
- Свободное место для моделей (turbo ~1GB, large ~3GB)
|
||||
- **GPU с поддержкой CUDA или ROCm (рекомендуется)**
|
||||
|
||||
Для Docker дополнительно:
|
||||
- Docker + Docker Compose
|
||||
- GPU AMD с поддержкой ROCm (опционально)
|
||||
- NVIDIA Docker runtime (для NVIDIA GPU)
|
||||
- ROCm (для AMD GPU)
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
@@ -30,6 +34,10 @@
|
||||
```bash
|
||||
git clone https://github.com/SlavaVlad/simple-asr-server.git ./asr
|
||||
cd asr
|
||||
|
||||
# Для AMD GPU оставьте как есть
|
||||
# Для NVIDIA GPU раскомментируйте соответствующую секцию в docker-compose.yml
|
||||
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
@@ -38,41 +46,54 @@ docker compose up -d
|
||||
```bash
|
||||
git clone https://github.com/SlavaVlad/simple-asr-server.git ./asr
|
||||
cd asr
|
||||
|
||||
chmod +x start_server.sh
|
||||
./start_server.sh
|
||||
```
|
||||
|
||||
## Конфигурация
|
||||
### Переменные окружения
|
||||
|
||||
Создайте файл `.env` для настройки переменных окружения:
|
||||
| Переменная | По умолчанию | Описание |
|
||||
|------------|--------------|----------|
|
||||
| `HOST` | `0.0.0.0` | IP адрес для привязки |
|
||||
| `PORT` | `9854` | Порт сервера |
|
||||
| `DEFAULT_MODEL` | `turbo` | Модель Whisper для загрузки |
|
||||
| `MODEL_DEVICE` | `cuda` | Устройство: `cuda`, `cpu`, или `auto` |
|
||||
| `MODEL_DOWNLOAD_ROOT` | `./models` | Директория для моделей |
|
||||
| `KEYS_FILE` | `./data/keys.txt` | Файл с API ключами |
|
||||
| `LOG_LEVEL` | `info` | Уровень логирования |
|
||||
| `HSA_OVERRIDE_GFX_VERSION` | `10.3.0` | Версия GPU для AMD ROCm |
|
||||
| `AUDIO_SPEEDUP` | `1.25` | Ускорение обработки аудио |
|
||||
|
||||
### Настройка GPU
|
||||
|
||||
**По умолчанию сервис настроен для работы с NVIDIA GPU.**
|
||||
|
||||
**Для использования CPU:**
|
||||
```env
|
||||
HOST=0.0.0.0
|
||||
PORT=9854
|
||||
DEFAULT_MODEL=turbo
|
||||
MODEL_DOWNLOAD_ROOT=./models
|
||||
KEYS_FILE=./data/keys.txt
|
||||
LOG_LEVEL=info
|
||||
MODEL_DEVICE=cpu
|
||||
```
|
||||
|
||||
### Доступные модели Whisper
|
||||
|
||||
- `tiny` - самая быстрая, наименее точная
|
||||
- `base` - баланс скорости и качества
|
||||
- `small` - хорошее качество
|
||||
- `medium` - лучшее качество
|
||||
- `large` - максимальное качество
|
||||
- `turbo` - оптимизированная версия (рекомендуется)
|
||||
- `tiny` - самая быстрая, наименее точная (~40MB)
|
||||
- `base` - баланс скорости и качества (~150MB)
|
||||
- `small` - хорошее качество (~500MB)
|
||||
- `medium` - лучшее качество (~1.5GB)
|
||||
- `large` - максимальное качество (~3GB)
|
||||
- `turbo` - оптимизированная версия (~800MB, рекомендуется)
|
||||
|
||||
## Управление API-ключами
|
||||
|
||||
### Создание ключей
|
||||
### Автоматическое создание ключей
|
||||
|
||||
При первом запуске автоматически создается файл `data/keys.txt` с демонстрационным ключом.
|
||||
При первом запуске:
|
||||
1. Если установлен `openssl` - генерируется безопасный 64-символьный ключ
|
||||
2. Если `openssl` отсутствует - создается пустой файл ключей
|
||||
|
||||
### Добавление/удаление ключей
|
||||
|
||||
1. Отредактируйте файл `data/keys.txt` (один ключ на строку)
|
||||
1. Отредактируйте файл `data/keys.txt` (один ключ на строку, 64 hex символа)
|
||||
2. Вызовите эндпоинт перезагрузки:
|
||||
|
||||
```bash
|
||||
@@ -86,6 +107,16 @@ key1
|
||||
key2
|
||||
```
|
||||
|
||||
### Генерация новых ключей
|
||||
|
||||
```bash
|
||||
# Генерация нового ключа
|
||||
openssl rand -hex 32
|
||||
|
||||
# Добавление в файл ключей
|
||||
echo "$(openssl rand -hex 32)" >> data/keys.txt
|
||||
```
|
||||
|
||||
## API Документация
|
||||
|
||||
### POST /transcribe
|
||||
@@ -107,14 +138,14 @@ key2
|
||||
- `best_of` - количество кандидатов для выбора лучшего
|
||||
- `compression_ratio_threshold` - порог сжатия для фильтрации
|
||||
- `logprob_threshold` - порог логарифмической вероятности
|
||||
- `no_speech_threshold` - порог детекции отсутствия речи
|
||||
- `no_speech_threshold` - порог отсутствия речи
|
||||
- `condition_on_previous_text` - использовать предыдущий текст как контекст
|
||||
- `initial_prompt` - начальная подсказка для модели
|
||||
- `word_timestamps` - временные метки слов (true/false)
|
||||
- `prepend_punctuations` - знаки препинания для добавления в начало
|
||||
- `append_punctuations` - знаки препинания для добавления в конец
|
||||
- `clip_timestamps` - временные метки для обрезки аудио
|
||||
- `hallucination_silence_threshold` - порог тишины для детекции галлюцинаций
|
||||
- `hallucination_silence_threshold` - порог тишины для отрезания галлюцинаций
|
||||
|
||||
#### Примеры запросов
|
||||
|
||||
@@ -214,24 +245,6 @@ curl "http://localhost:9854/health"
|
||||
}
|
||||
```
|
||||
|
||||
### POST /keys/reload
|
||||
|
||||
Перезагрузка API-ключей без перезапуска:
|
||||
|
||||
```bash
|
||||
curl -X POST "http://localhost:9854/keys/reload" \
|
||||
-H "X-API-Key: your-api-key"
|
||||
```
|
||||
|
||||
### GET /keys/count
|
||||
|
||||
Количество активных ключей:
|
||||
|
||||
```bash
|
||||
curl "http://localhost:9854/keys/count" \
|
||||
-H "X-API-Key: your-api-key"
|
||||
```
|
||||
|
||||
## Коды ошибок
|
||||
|
||||
- `401` - API ключ не предоставлен
|
||||
|
||||
Reference in New Issue
Block a user