add description

This commit is contained in:
Serge Zaigraeff
2025-03-02 12:35:37 +03:00
parent 5af6225c51
commit eed8dd2813
2 changed files with 259 additions and 50 deletions
+76
View File
@@ -0,0 +1,76 @@
# Структура проекта Whisper API Service
Проект представляет собой локальный API-сервис для распознавания речи, построенный на основе модели Whisper. Сервис разработан как OpenAI-совместимый API, что позволяет использовать его в качестве локальной альтернативы облачным сервисам распознавания речи.
## Основные файлы
### Корневые файлы
- **server.py** - точка входа в приложение, инициализирует и запускает сервис
- **server.sh** - bash-скрипт для запуска сервера с опциональным обновлением conda-окружения
- **config.json** - конфигурационный файл с настройками сервиса
- **requirements.txt** - зависимости проекта для conda/pip
### Модуль `app`
#### app/\_\_init\_\_.py
Содержит основной класс `WhisperServiceAPI`, который инициализирует приложение, загружает конфигурацию и запускает сервер на указанном порту.
#### app/logger.py
Настройка логирования для всех компонентов приложения.
#### app/transcriber.py
Содержит класс `WhisperTranscriber`, который загружает модель Whisper и выполняет распознавание речи. Класс определяет оптимальное устройство для вычислений (CPU, CUDA, MPS) и поддерживает ускорение с помощью Flash Attention 2.
#### app/audio_processor.py
Содержит класс `AudioProcessor` для предобработки аудиофайлов перед их транскрибацией. Включает методы для:
- Конвертации в WAV с частотой 16 кГц
- Нормализации уровня громкости
- Добавления тишины в начало записи
- Очистки временных файлов
#### app/audio_sources.py
Содержит абстрактный класс `AudioSource` и его конкретные реализации для различных источников аудио:
- `UploadedFileSource` - для файлов, загруженных через HTTP-запрос
- `URLSource` - для файлов, доступных по URL
- `Base64Source` - для аудио, закодированного в base64
- `LocalFileSource` - для локальных файлов на сервере
- `FakeFile` - вспомогательный класс для унификации обработки из разных источников
#### app/routes.py
Содержит классы:
- `TranscriptionService` - сервис для обработки и транскрибации аудиофайлов
- `Routes` - регистрирует все эндпоинты API, включая OpenAI-совместимые маршруты
## Основные классы и их описание
### WhisperServiceAPI
Основной класс приложения, инициализирует сервис, загружает конфигурацию и запускает сервер с использованием Waitress.
### WhisperTranscriber
Класс для распознавания речи с использованием модели Whisper. Определяет оптимальное устройство для вычислений, загружает модель с учетом доступного оборудования и выполняет транскрибацию аудиофайлов.
### AudioProcessor
Класс для предобработки аудиофайлов. Выполняет конвертацию, нормализацию и добавление тишины в начало записи для улучшения качества распознавания.
### AudioSource (и наследники)
Абстрактный класс и его реализации для работы с различными источниками аудиофайлов. Обеспечивает унифицированный интерфейс для получения аудиофайлов из разных источников.
### TranscriptionService
Сервис, объединяющий логику обработки запросов и транскрибации аудио. Принимает источник аудио, обрабатывает его и возвращает результат транскрибации.
### Routes
Класс, регистрирующий все маршруты API сервиса, включая совместимые с OpenAI эндпоинты для интеграции с существующими клиентами.
## API Endpoints
Сервис предоставляет несколько эндпоинтов, включая:
- `/health` - проверка статуса сервиса
- `/config` - получение текущей конфигурации
- `/local/transcriptions` - транскрибация локального файла на сервере
- `/v1/models` - получение списка доступных моделей (OpenAI-совместимый)
- `/v1/audio/transcriptions` - транскрибация загруженного файла (OpenAI-совместимый)
- `/v1/audio/transcriptions/url` - транскрибация по URL
- `/v1/audio/transcriptions/base64` - транскрибация из base64
- `/v1/audio/transcriptions/multipart` - транскрибация файла из multipart-формы
Сервис разработан таким образом, чтобы обеспечить максимальную гибкость в использовании и интеграцию с существующими системами, поддерживающими API OpenAI Whisper.