- 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>
1.2 KiB
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/transcriptionsmatches OpenAI contract for drop-in replacement - All settings in
config.json. Device fallback: CUDA -> MPS -> CPU