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
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 Эндпоинты
Документация доступна по адресу:
- Swagger UI: http://localhost:8000/api/v1/docs
- ReDoc: http://localhost:8000/api/v1/redoc
Аудио файлы
Загрузка аудиофайла
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 версии
- FastAPI вместо Flask: Использование современного асинхронного фреймворка
- Pydantic схемы: Валидация данных с помощью Pydantic
- Асинхронная обработка: BackgroundTasks для фоновых задач
- Dependency Injection: Внедрение зависимостей для сессий БД
- Автодокументация: Автоматическая генерация Swagger/ReDoc
- Type hints: Полная поддержка типизации
Примечания
- Для production рекомендуется использовать PostgreSQL вместо SQLite
- Для хранения статусов задач в production рекомендуется использовать Redis
- Фоновые задачи обрабатываются асинхронно с помощью BackgroundTasks
- Поддерживается загрузка файлов до 100MB