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%