pyproject.toml 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. "webrtcvad-wheels>=2.0.14",
  17. "questionary>=2.0",
  18. "textual>=0.80",
  19. # Vendored local CUDA build (cp313-only); see docs/PYWHISPERCPP.md.
  20. "pywhispercpp>=1.5.1 ; python_full_version == '3.13.*'",
  21. ]
  22. [project.optional-dependencies]
  23. portaudio = ["sounddevice>=0.4.6"]
  24. # In-process Laya multilingual triage lane: `uv sync --extra triage`, pinned in [tool.uv.sources].
  25. triage = ["laya"]
  26. # In-process sherpa-onnx speaker-embedding lane. `sherpa-onnx` is a meta wheel
  27. # that requires `sherpa-onnx-core` (the wheel bundling libonnxruntime.so); list
  28. # it explicitly so the lock and `uv sync` always install the native runtime.
  29. speaker = ["sherpa-onnx>=1.12.0", "sherpa-onnx-core>=1.12.0"]
  30. [dependency-groups]
  31. dev = ["pytest>=8", "ruff"]
  32. [tool.uv.sources]
  33. pywhispercpp = { path = "vendor/pywhispercpp-1.5.1-cp313-cp313-linux_x86_64.whl" }
  34. laya = { git = "https://github.com/NandhaKishorM/laya.git", rev = "970dc8c5f63d7b886a68409493f37d569424f933" }
  35. [project.scripts]
  36. stt-daemon = "stt_daemon.cli:main"
  37. stt-assistant = "stt_daemon.assistant.runner:main"
  38. stt-ctl = "stt_daemon.ctl:main"
  39. stt-tui = "stt_daemon.tui.app:main"
  40. [tool.hatch.build.targets.wheel]
  41. packages = ["src/stt_daemon"]
  42. [tool.ruff]
  43. target-version = "py311"
  44. line-length = 100
  45. [tool.ruff.lint]
  46. select = ["E", "F", "W"]
  47. [tool.pytest.ini_options]
  48. testpaths = ["tests"]
  49. python_files = ["test_*.py"]