Files
local-transcription/pyproject.toml
jknapp c968eb8a48 Fix RealtimeSTT warmup file and PyTorch CUDA version mismatch
Fixed two build/runtime issues:

1. Windows: Missing warmup_audio.wav file from RealtimeSTT
   - Added RealtimeSTT to collect_data_files() in spec
   - Ensures warmup_audio.wav and other RealtimeSTT data files are bundled
   - Fixes: soundfile.LibsndfileError opening warmup_audio.wav

2. Linux: PyTorch/TorchAudio CUDA version mismatch (12.1 vs 12.4)
   - Added torchaudio>=2.0.0 explicitly to dependencies
   - Ensures torchaudio comes from pytorch-cu121 index (same as torch)
   - Previously RealtimeSTT was pulling torchaudio from PyPI with CUDA 12.4
   - Fixes: RuntimeError about CUDA version mismatch

Both packages now correctly use the pytorch-cu121 index via tool.uv.sources
configuration, ensuring matching CUDA versions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-28 20:28:11 -08:00

96 lines
2.7 KiB
TOML

[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",
"torchaudio>=2.0.0", # Must match torch CUDA version (from pytorch-cu121 index)
"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"]