- поработал с переменными среды

- добавил ограничение максимального размера аудиофайлы (по умолчанию 50мб что дофига)
- поправил docker-compose.yml, теперь можно одной командой развернуться
- написал большую инструкцию по деплою через docker на debian
This commit is contained in:
2025-09-06 16:37:02 +03:00
parent f718da13d6
commit d8c27b1cbb
5 changed files with 254 additions and 108 deletions
+113
View File
@@ -0,0 +1,113 @@
# ASR service на базе Whisper + AMD ROCm
Сервис для распознавания речи с использованием GPU AMD через ROCm.
## Требования
- GPU AMD с поддержкой ROCm (RX5000, RX6000 +)
- Установленный ROCm
- Docker + Compose plugin
- Debian based linux (для инструкции)
- Минимум 8GB RAM
- Минимум 2GB свободного места + место для ROCm + Модели (turbo ~3.5GB)
## Установка и запуск
### 1. Клонирование репозитория
```bash
git clone https://github.com/SlavaVlad/simple-asr-server.git ./asr
cd asr
```
### 2. Создание Docker-образа
Перед запуском в файле docker-compose.yml можно изменить всякие переменные окружения, например модель по умолчанию.
```bash
docker compose up -d
```
Тут он сам всё соберёт и запустится.
## Управление API-ключами
При первом запуске сервиса автоматически создается файл `keys.txt` со случайно сгенерированным API-ключом.
### Добавление новых ключей
1. Откройте файл `keys.txt`
2. Добавьте новые ключи, каждый с новой строки
3. Перезапустите сервис
Пример содержимого `keys.txt`:
```
f7a9c2b3d4e5a6b7c8d9e0f1a2b3c4d5
e8b9a2c3d4f5g6h7i8j9k0l1m2n3o4p5
```
## Использование API
### Распознавание речи
```bash
curl -X POST "http://localhost:9854/transcribe" \
-H "x-api-key: ВАШ_КЛЮЧ" \
-F "file=@путь_к_аудио_файлу" \
-F "model_name=turbo" # (необязательно, по умолчанию turbo)
```
### Ответ API
```json
{
"transcription": [...],
"text": "распознанный текст",
"metrics": {
"processing_time_seconds": 1.23,
"characters_per_second": 45.6,
"audio_realtime_ratio": 2.34,
"audio_duration": 5.67,
"text_length": 89
}
}
```
```text
```
## Метрики производительности
API возвращает следующие метрики:
- `processing_time_seconds`: время обработки в секундах
- `characters_per_second`: скорость обработки (символов в секунду)
- `audio_realtime_ratio`: отношение длительности аудио к времени обработки
- `audio_duration`: длительность аудио в секундах
- `text_length`: количество символов в распознанном тексте
## Поддерживаемые форматы
Поддерживаются все аудиоформаты, которые может обработать FFmpeg. Файлы автоматически конвертируются в нужный формат.
## Решение проблем
### Проверка статуса сервиса
```bash
curl http://localhost:9854/docs
```
### Частые проблемы
1. **Ошибка доступа к GPU**
```bash
sudo usermod -a -G video,render $USER
sudo reboot
```
2. **Ошибка 403**
- Проверьте правильность API-ключа
- Убедитесь, что ключ добавлен в файл keys.txt
- Перезапустите сервис
## Лицензия
MIT License