136 lines
4.3 KiB
Markdown
136 lines
4.3 KiB
Markdown
# Smart STT Pipeline v3
|
|
|
|
Умный пайплайн распознавания речи (Speech-to-Text) для русского языка с автоматическим выбором движка и пунктуацией.
|
|
|
|
## 🚀 Возможности
|
|
|
|
- **Два STT-движка**: T-one (быстрый) + GigaAM-v2 (точный)
|
|
- **Автоматический роутинг**: выбор движка по длительности аудио
|
|
- **Пунктуация через LLM**: Qwen3.5-4B
|
|
- **Поддержка форматов**: OGG, WAV, MP3 и другие (через ffmpeg)
|
|
|
|
## 📊 Сравнение движков
|
|
|
|
| Движок | Время STT | Точность | Русский |
|
|
|--------|-----------|----------|---------|
|
|
| **T-one** | ~3 сек | Высокая | ✅ |
|
|
| **GigaAM-v2** | ~7 сек | Очень высокая | ✅ |
|
|
|
|
## 🔄 Логика роутинга
|
|
|
|
```
|
|
Аудио < 10 сек → GigaAM-v2 (точнее для коротких)
|
|
Аудио ≥ 10 сек → T-one (быстрее для длинных)
|
|
T-one fail → GigaAM (fallback)
|
|
```
|
|
|
|
## 🛠️ Установка
|
|
|
|
```bash
|
|
docker build -t stt-pipeline-v3 .
|
|
docker run -d --name stt-pipeline-v3 --network host stt-pipeline-v3
|
|
```
|
|
|
|
## 📡 API
|
|
|
|
### POST /transcribe
|
|
|
|
Распознать аудиофайл с автоматическим выбором движка.
|
|
|
|
**Request:**
|
|
```bash
|
|
curl -X POST http://localhost:8005/transcribe \
|
|
-F "file=@voice_message.ogg"
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"original": "какие докеры у нас еще остались",
|
|
"punctuated": "Какие докеры у нас еще остались?",
|
|
"duration_sec": 2.7,
|
|
"stt_time_sec": 7.14,
|
|
"punct_time_sec": 0.87,
|
|
"server_used": "178.17.143.46:8080",
|
|
"stt_engine": "gigaam"
|
|
}
|
|
```
|
|
|
|
### GET /health
|
|
|
|
Проверка статуса сервиса.
|
|
|
|
```bash
|
|
curl http://localhost:8005/health
|
|
# {"status":"ok","service":"stt-pipeline-v3"}
|
|
```
|
|
|
|
## 🏗️ Архитектура
|
|
|
|
```
|
|
Аудиофайл
|
|
│
|
|
▼
|
|
┌─────────────┐
|
|
│ FFmpeg │ ← Конвертация в WAV (16kHz mono)
|
|
└─────┬───────┘
|
|
│
|
|
▼
|
|
┌─────────────┐
|
|
│ Определяем │ ← Длительность аудио
|
|
│ длительность│
|
|
└─────┬───────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────┐
|
|
│ Smart STT Router │
|
|
│ ┌─────────┐ ┌──────────────┐ │
|
|
│ │ < 10 сек │ │ ≥ 10 сек │ │
|
|
│ │ GigaAM │ │ T-one │ │
|
|
│ └─────────┘ └──────┬───────┘ │
|
|
│ │ │
|
|
│ ▼ │
|
|
│ ┌──────────────┐ │
|
|
│ │ T-one fail? │ │
|
|
│ └──────┬───────┘ │
|
|
│ │ │
|
|
│ ▼ │
|
|
│ ┌──────────────┐ │
|
|
│ │ GigaAM │ │
|
|
│ │ (fallback) │ │
|
|
│ └──────────────┘ │
|
|
└─────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────┐
|
|
│ Qwen3.5-4B │ ← Пунктуация (178.17.143.46:8080)
|
|
└─────┬───────┘
|
|
│
|
|
▼
|
|
JSON ответ
|
|
```
|
|
|
|
## 📁 Структура проекта
|
|
|
|
```
|
|
stt-pipeline-v3/
|
|
├── app.py # FastAPI приложение
|
|
├── Dockerfile # Контейнеризация
|
|
├── requirements.txt # Зависимости
|
|
└── README.md # Документация
|
|
```
|
|
|
|
## 🔧 Зависимости
|
|
|
|
- Python 3.12
|
|
- FastAPI 0.115
|
|
- Uvicorn 0.32
|
|
- FFmpeg (конвертация аудио)
|
|
- T-one STT (localhost:8003)
|
|
- GigaAM-v2 STT (localhost:8001)
|
|
- Qwen3.5-4B (178.17.143.46:8080)
|
|
|
|
## 📝 Лицензия
|
|
|
|
MIT
|