Files
whisper-api-server/DESCRIPTION.md
T
2025-03-02 12:35:37 +03:00

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 - для файлов, доступных по 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.