Сервис для хранения файлов аудио, индексации файлов, записи и выдачи результатов распознавания
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4.5 KiB

Speech Analytics FastAPI

Сервис для хранения аудиофайлов, индексации файлов, записи и выдачи результатов распознавания, реализованный на FastAPI.

Установка зависимостей

pip install -r requirements.txt

Запуск приложения

Разработка с автоперезагрузкой

python run.py

Production режим

uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4

API Эндпоинты

Документация доступна по адресу:

Аудио файлы

Загрузка аудиофайла

POST /api/v1/upload
Content-Type: multipart/form-data

file: <audio_file>

Список всех аудиофайлов

GET /api/v1/audio/list?skip=0&limit=100

Получить информацию об аудиофайле

GET /api/v1/audio/{audio_id}

Скачать аудиофайл

GET /api/v1/audio/file/{audio_id}

Удалить аудиофайл

DELETE /api/v1/audio/delete/{audio_id}

Распознавание

Запустить распознавание

POST /api/v1/recognize/{audio_id}

Возвращает:

  • 202 Accepted - распознавание запущено
  • 200 OK - уже есть активная задача
  • 404 Not Found - аудио не найдено

Получить статус распознавания

GET /api/v1/recognize/{audio_id}

Статусы:

  • not_started - распознавание не запускалось
  • processing - в процессе
  • completed - завершено
  • error - ошибка

Получить статус по task_id

GET /api/v1/recognize/task/{task_id}

Получить результат распознавания

GET /api/v1/recognize/{audio_id}/result

Структура проекта

FileAudioAPI/
├── main.py                      # Точка входа FastAPI приложения
├── run.py                       # Скрипт запуска
├── requirements.txt             # Зависимости
├── apiApp/
│   ├── __init__.py
│   ├── config.py                # Конфигурация
│   ├── database.py              # SQLAlchemy настройка
│   ├── schemas.py               # Pydantic модели
│   ├── crud.py                  # CRUD операции
│   ├── routers/                 # API routers
│   │   ├── __init__.py
│   │   ├── audio.py            # Эндпоинты для аудио
│   │   └── recognition.py      # Эндпоинты для распознавания
│   ├── database/               # SQLAlchemy модели
│   │   ├── Audio.py
│   │   ├── AiConclusion.py
│   │   ├── Operator.py
│   │   └── ConclusionVersion.py
│   └── dbApi/                  # Legacy совместимость
│       └── __init__.py
└── uploads/                    # Загруженные файлы

Конфигурация

Переменные окружения:

  • DATABASE_URL - URL базы данных (по умолчанию: sqlite:///./speech_analytics.db)

Основные изменения от Flask версии

  1. FastAPI вместо Flask: Использование современного асинхронного фреймворка
  2. Pydantic схемы: Валидация данных с помощью Pydantic
  3. Асинхронная обработка: BackgroundTasks для фоновых задач
  4. Dependency Injection: Внедрение зависимостей для сессий БД
  5. Автодокументация: Автоматическая генерация Swagger/ReDoc
  6. Type hints: Полная поддержка типизации

Примечания

  • Для production рекомендуется использовать PostgreSQL вместо SQLite
  • Для хранения статусов задач в production рекомендуется использовать Redis
  • Фоновые задачи обрабатываются асинхронно с помощью BackgroundTasks
  • Поддерживается загрузка файлов до 100MB