Files
whisper-api-server/CLAUDE.md
T
Serge ZaigraeffandClaude Opus 4.6 2e2bad8255 Simplify architecture: remove overengineering, flatten structure
- Remove dead code: cache.py, context_managers.py, decorators.py, flask-limiter
- Replace AudioSource ABC + FakeFile (5 classes) with 4 plain functions
- Replace TempFileManager class with create_temp_file/cleanup_temp_files functions
- Simplify RequestLogger from 233 to 65 lines, remove file reading side-effect
- Convert HistoryLogger and AudioUtils classes to module-level functions
- Remove unused speed_up_audio and audio_speed_factor config
- Flatten single-file directories: shared/, api/, storage/, validation/, async_tasks/, logging/
- Merge logging config + request_logger into single infrastructure/log.py
- Fix request_logging config key (was request_logger)
- Trim CLAUDE.md to high-level only

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 05:28:34 +03:00

1.2 KiB

Whisper API Server -- Project Bible

Local, OpenAI-compatible speech recognition API service using the Whisper model. Supports multiple audio input methods (file upload, URL, base64, local path), hardware acceleration (CUDA/MPS/CPU), audio preprocessing pipeline, and async transcription.

Development rules and coding standards: see RULES.md

Tech Stack

  • Backend: Python 3.12+, Flask, Waitress (WSGI). Entry: server.py.
  • ML: PyTorch, Hugging Face Transformers (Whisper), Flash Attention 2.
  • Audio: FFmpeg, SoX (external), scipy (resampling).
  • Validation: python-magic (MIME detection).
  • Environment: Conda. Setup: server.sh.
  • Language: Code comments and docstrings in Russian (project convention).

Architecture

  • Entry: server.py -> app/__init__.py (WhisperServiceAPI)
  • Modules: app/core/ (transcriber, config), app/audio/ (processor, sources, utils), app/infrastructure/ (logging, validation, storage, async tasks)
  • Request flow: source function -> validate -> transcribe (AudioProcessor -> Whisper inference) -> save history -> JSON response
  • OpenAI-compatible API: /v1/audio/transcriptions matches OpenAI contract for drop-in replacement
  • All settings in config.json. Device fallback: CUDA -> MPS -> CPU