cb2d32b8e1eead70f3a1f8b7345d0f08aa8775b1
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)
🛠️ Установка
docker build -t stt-pipeline-v3 .
docker run -d --name stt-pipeline-v3 --network host stt-pipeline-v3
📡 API
POST /transcribe
Распознать аудиофайл с автоматическим выбором движка.
Request:
curl -X POST http://localhost:8005/transcribe \
-F "file=@voice_message.ogg"
Response:
{
"original": "какие докеры у нас еще остались",
"punctuated": "Какие докеры у нас еще остались?",
"duration_sec": 2.7,
"stt_time_sec": 7.14,
"punct_time_sec": 0.87,
"server_used": "<QWEN_SERVER:8080>",
"stt_engine": "gigaam"
}
GET /health
Проверка статуса сервиса.
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 │ ← Пунктуация (<QWEN_SERVER:8080>)
└─────┬───────┘
│
▼
JSON ответ
📁 Структура проекта
stt-pipeline-v3/
├── .env # Конфигурация (секреты, не коммитить!)
├── .env.example # Шаблон конфигурации
├── .gitignore # Исключения для git
├── 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 (<QWEN_SERVER:8080>)
📝 Лицензия
MIT
Languages
Python
95.2%
Dockerfile
4.8%