# Speech Analytics FastAPI Сервис для хранения аудиофайлов, индексации файлов, записи и выдачи результатов распознавания, реализованный на FastAPI. ## Установка зависимостей ```bash pip install -r requirements.txt ``` ## Запуск приложения ### Разработка с автоперезагрузкой ```bash python run.py ``` ### Production режим ```bash uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4 ``` ## API Эндпоинты Документация доступна по адресу: - Swagger UI: http://localhost:8000/api/v1/docs - ReDoc: http://localhost:8000/api/v1/redoc ### Аудио файлы #### Загрузка аудиофайла ```http POST /api/v1/upload Content-Type: multipart/form-data file: ``` #### Список всех аудиофайлов ```http GET /api/v1/audio/list?skip=0&limit=100 ``` #### Получить информацию об аудиофайле ```http GET /api/v1/audio/{audio_id} ``` #### Скачать аудиофайл ```http GET /api/v1/audio/file/{audio_id} ``` #### Удалить аудиофайл ```http DELETE /api/v1/audio/delete/{audio_id} ``` ### Распознавание #### Запустить распознавание ```http POST /api/v1/recognize/{audio_id} ``` Возвращает: - 202 Accepted - распознавание запущено - 200 OK - уже есть активная задача - 404 Not Found - аудио не найдено #### Получить статус распознавания ```http GET /api/v1/recognize/{audio_id} ``` Статусы: - `not_started` - распознавание не запускалось - `processing` - в процессе - `completed` - завершено - `error` - ошибка #### Получить статус по task_id ```http GET /api/v1/recognize/task/{task_id} ``` #### Получить результат распознавания ```http 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