[build-system] requires = ["setuptools>=68.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "python-voiceio" version = "1.15.1" description = "Voice dictation for Linux. Speak → text, locally, instantly." readme = "README.md" license = "MIT" requires-python = ">=3.11" authors = [{ name = "Hugo Montenegro" }] keywords = ["voice", "speech-to-text", "whisper", "linux", "dictation", "wayland", "ibus"] classifiers = [ "Development Status :: 4 - Beta", "Environment :: X11 Applications", "Intended Audience :: End Users/Desktop", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Sound/Audio :: Speech", ] dependencies = [ # Headless transcription only: decode, VAD, vocabulary ranking. Microphone, # hotkeys, tray and text injection live in the `desktop` extra so a server # install (`.[server]`) needs no display or audio stack. "faster-whisper>=1.0.0", "numpy>=1.24.0", "onnxruntime>=1.16.0", "wordfreq>=3.0", ] [project.optional-dependencies] # The dictation app: microphone capture, global hotkeys, tray icon. System # packages (PortAudio, IBus, a C toolchain for evdev) are separate — see README. desktop = [ "sounddevice>=0.4.6", "evdev>=1.6.0; sys_platform == 'linux'", "pynput>=1.7.6", "pystray>=0.19", "Pillow>=10.0", ] # Pre-1.0 name for the desktop install; kept so existing setups keep syncing. linux = [ "sounddevice>=0.4.6", "evdev>=1.6.0; sys_platform == 'linux'", "pynput>=1.7.6", "pystray>=0.19", "Pillow>=10.0", ] # Headless HTTP/WebSocket server (`python -m voiceio.server`). server = ["aiohttp>=3.9"] # Text-to-speech: local (piper) and cloud (edge-tts) engines. tts = ["piper-tts>=1.3.0", "edge-tts>=6.1.0"] # `voiceio learn train`: LoRA fine-tuning (a GPU helps; see voiceio/learn/train.py) train = ["torch>=2.2", "transformers>=4.40", "peft>=0.10"] # Alternative decoder runtime (Parakeet & co.); see CONTRIBUTING.md "Model choice". sherpa = ["sherpa-onnx>=1.12"] dev = ["pytest>=7.0", "pytest-mock", "ruff>=0.15,<0.18"] [project.urls] Homepage = "https://voiceio.dev/" Repository = "https://github.com/Hugo0/voiceio" Issues = "https://github.com/Hugo0/voiceio/issues" Changelog = "https://github.com/Hugo0/voiceio/releases" [project.scripts] voiceio = "voiceio.cli:_entry_point" # Pre-1.0 GNOME shortcuts call this; kept through 1.x. voiceio-toggle = "voiceio.cli:_cmd_toggle" [tool.ruff] # Explicit, so a new ruff release changing its defaults can't break CI. lint.select = ["E4", "E7", "E9", "F"] lint.per-file-ignores."voiceio/ibus/engine.py" = ["E402"] [tool.setuptools.packages.find] include = ["voiceio*"] [tool.setuptools.package-data] "voiceio.sounds" = ["*.wav"] "voiceio.models" = ["*.onnx"] "voiceio.data" = ["*.rules"]