6.2 KiB
Структура проекта 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- для файлов, доступных по URLBase64Source- для аудио, закодированного в base64LocalFileSource- для локальных файлов на сервере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.