-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpyproject.toml
More file actions
137 lines (126 loc) · 4.72 KB
/
Copy pathpyproject.toml
File metadata and controls
137 lines (126 loc) · 4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
[build-system]
requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "scribe-cli"
dynamic = ["version"]
description = "Speech-to-text CLI and system-tray app for dictating into any focused window. Local (vosk, faster-whisper) or cloud (groq, openai) backends, batch or streaming."
authors = [
{ name="Mahé Perrette", email="mahe.perrette@gmail.com" }
]
readme = "README.md"
license = { file="LICENSE" }
requires-python = ">=3.9"
dependencies = [
"numpy",
"sounddevice",
"tqdm",
"requests",
"pyperclip",
"unidecode",
"termcolor",
"platformdirs",
"desktop-ai-core>=0.3.1", # >=0.3.1 carries the portable-tempdir pidfile fix (no more /tmp on Windows)
# Runs the bundled silero VAD ONNX model (~2 MB shipped in scribe_data).
# In base deps so silero is available out of the box — see scribe/audio.py.
# `faster-whisper` already pulls it transitively, so installing with
# [whisper] is free; standalone adds ~57 MB which is trivial for an STT tool.
"onnxruntime",
# Default run uses the keyboard typer (needs pynput) and the system-tray app
# (needs pystray). Both are small, have wheels on all platforms, and back the
# README's headline zero-config experience, so they live in base deps.
"pynput",
"pystray",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Operating System :: OS Independent",
"Environment :: Console",
"Environment :: X11 Applications",
"Environment :: MacOS X",
"Environment :: Win32 (MS Windows)",
"Natural Language :: English",
"Natural Language :: French",
"Natural Language :: German",
"Natural Language :: Italian",
"Topic :: Multimedia :: Sound/Audio :: Speech",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Office/Business",
"Topic :: Text Processing :: Linguistic",
"Topic :: Utilities",
]
keywords = [
"speech-to-text",
"stt",
"transcription",
"dictation",
"voice-typing",
"voice-recognition",
"multilingual",
"realtime",
"streaming",
"cli",
"tray",
"vosk",
"whisper",
"faster-whisper",
"openai",
"groq",
"gpt-4o",
"linux",
"wayland",
"keyboard",
"clipboard",
"microphone",
"audio",
]
[project.optional-dependencies]
keyboard = ["pynput"] # kept for back-compat; pynput is a base dep now
whisper = ["faster-whisper"]
whisper-futo = ["pywhispercpp"] # CPU wheels exist but have known Windows DLL
# issues; keep strictly opt-in (not in [all])
vosk = ["vosk"]
# pystray is a base dep now; [app] only adds the Linux-only AppIndicator binding.
# PyGObject needs GTK system libraries and does not pip-install on Windows/macOS,
# so the PEP 508 marker skips it everywhere except Linux.
app = ["PyGObject; sys_platform == 'linux'"]
openai = ["openai>=2.37.0,<3", "soundfile"]
groq = ["openai>=2.37.0,<3", "soundfile"]
# [vad] is now a no-op alias kept for back-compat (`pip install scribe-cli[vad]`
# was the documented install before onnxruntime moved into base deps).
vad = []
# pynput + pystray are base deps; pywhispercpp intentionally omitted due to
# Windows build/DLL friction (install via scribe-cli[whisper-futo] if wanted).
all = ["faster-whisper", "openai>=2.37.0,<3", "soundfile", "vosk", "PyGObject; sys_platform == 'linux'"]
docs = [
# Pin below MkDocs 2.0: that release drops the plugin/theme/config system
# with no migration path and is incompatible with Material for MkDocs.
# The 1.x line is stable and is what Material targets.
"mkdocs>=1.5,<2",
"mkdocs-material>=9.5",
"mkdocs-include-markdown-plugin>=6.0",
]
[tool.setuptools]
packages = [ "scribe", "scribe_data" ]
[tool.setuptools.package-data]
scribe_data = ["share/*.png", "templates/*", "silero_vad.onnx", "silero_vad.LICENSE"]
[tool.setuptools_scm]
write_to = "scribe/_version.py"
[project.urls]
Homepage = "https://github.com/perrette/scribe"
Source = "https://github.com/perrette/scribe"
Issues = "https://github.com/perrette/scribe/issues"
Documentation = "https://perrette.github.io/scribe/"
Changelog = "https://github.com/perrette/scribe/releases"
Funding = "https://github.com/sponsors/perrette"
[project.scripts]
scribe = "scribe.app:main"
scribe-install = "scribe.install_desktop:main"