[project] name = "local-transcription" version = "0.1.0" description = "A standalone desktop application for real-time speech-to-text transcription using Whisper models" readme = "README.md" requires-python = ">=3.9" license = {text = "MIT"} authors = [ {name = "Your Name", email = "your.email@example.com"} ] keywords = ["transcription", "speech-to-text", "whisper", "streaming", "obs"] dependencies = [ "numpy>=1.24.0", "pyyaml>=6.0", "sounddevice>=0.4.6", "scipy>=1.10.0", "torch>=2.0.0", "PySide6>=6.6.0", # RealtimeSTT for advanced VAD-based transcription "RealtimeSTT>=0.3.0", # Web server (always-running for OBS integration) "fastapi>=0.104.0", "uvicorn>=0.24.0", "websockets>=12.0", # Server sync client "requests>=2.31.0", ] [project.optional-dependencies] # Kept for backwards compatibility, but server deps are now in main dependencies server = [ "fastapi>=0.104.0", "uvicorn>=0.24.0", "websockets>=12.0", "requests>=2.31.0", ] dev = [ "pytest>=7.4.0", "black>=23.0.0", "ruff>=0.1.0", ] [project.scripts] local-transcription = "main:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["client", "gui"] [dependency-groups] dev = [ "pyinstaller>=6.17.0", ] # Add PyTorch CUDA index as additional source # CUDA builds work on both GPU and CPU systems (fallback to CPU if no GPU) # Using 'explicit = true' means only packages we explicitly specify use this index [[tool.uv.index]] name = "pytorch-cu121" url = "https://download.pytorch.org/whl/cu121" explicit = true # Tell uv to get torch, torchvision, and torchaudio from the PyTorch CUDA index # All other packages come from PyPI [tool.uv.sources] torch = { index = "pytorch-cu121" } torchvision = { index = "pytorch-cu121" } torchaudio = { index = "pytorch-cu121" } # Override enum34 dependency to only install on Python < 3.4 # (which effectively never happens since we require Python >= 3.9) # # Background: RealtimeSTT depends on pvporcupine==1.9.5 (the last fully open-source # version before 2.0+ required an access key). pvporcupine 1.9.5 depends on enum34, # which is an obsolete Python 2.7/3.3 backport that's incompatible with PyInstaller. # # Since enum is part of Python stdlib since 3.4, and we don't use wake word features # from pvporcupine (it's just an indirect dependency), we can safely skip enum34. [tool.uv] override-dependencies = [ "enum34; python_version < '3.4'" ] [tool.ruff] line-length = 100 target-version = "py39" [tool.black] line-length = 100 target-version = ["py39"]