pyproject.toml 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. [build-system]
  2. requires = ["hatchling"]
  3. build-backend = "hatchling.build"
  4. [project]
  5. name = "stt-daemon"
  6. version = "0.1.0"
  7. description = "Always-on speech-to-text daemon with pre-roll buffer and a voice assistant layer"
  8. readme = "README.md"
  9. license = "ISC"
  10. license-files = ["LICENSE.md"]
  11. requires-python = ">=3.11"
  12. authors = [{name = "Efren", email = "efren@example.com"}]
  13. dependencies = [
  14. "numpy>=1.26",
  15. "faster-whisper>=1.1.0",
  16. # Floor set for the HIP allocator fix (cub_caching default on ROCm); the ROCm
  17. # host still needs the matching ROCm wheel, installed by scripts/install-rocm.sh.
  18. "ctranslate2>=4.8.4",
  19. "webrtcvad-wheels>=2.0.14",
  20. "questionary>=2.0",
  21. "textual>=0.80",
  22. # Vendored local CUDA build (cp313-only); see docs/PYWHISPERCPP.md.
  23. "pywhispercpp>=1.5.1 ; python_full_version == '3.13.*'",
  24. ]
  25. [project.optional-dependencies]
  26. portaudio = ["sounddevice>=0.4.6"]
  27. # In-process Laya multilingual triage lane: `uv sync --extra triage`, pinned in [tool.uv.sources].
  28. triage = ["laya"]
  29. # In-process sherpa-onnx speaker-embedding lane. `sherpa-onnx` is a meta wheel
  30. # that requires `sherpa-onnx-core` (the wheel bundling libonnxruntime.so); list
  31. # it explicitly so the lock and `uv sync` always install the native runtime.
  32. speaker = ["sherpa-onnx>=1.12.0", "sherpa-onnx-core>=1.12.0"]
  33. [dependency-groups]
  34. dev = ["pytest>=8", "ruff"]
  35. [tool.uv.sources]
  36. pywhispercpp = { path = "vendor/pywhispercpp-1.5.1-cp313-cp313-linux_x86_64.whl" }
  37. laya = { git = "https://github.com/NandhaKishorM/laya.git", rev = "970dc8c5f63d7b886a68409493f37d569424f933" }
  38. [project.scripts]
  39. stt-daemon = "stt_daemon.cli:main"
  40. stt-assistant = "stt_daemon.assistant.runner:main"
  41. stt-ctl = "stt_daemon.ctl:main"
  42. stt-tui = "stt_daemon.tui.app:main"
  43. [tool.hatch.build.targets.wheel]
  44. packages = ["src/stt_daemon"]
  45. [tool.ruff]
  46. target-version = "py311"
  47. line-length = 100
  48. [tool.ruff.lint]
  49. select = ["E", "F", "W"]
  50. [tool.pytest.ini_options]
  51. testpaths = ["tests"]
  52. python_files = ["test_*.py"]