voxtype 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,195 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ *.manifest
31
+ *.spec
32
+
33
+ # Installer logs
34
+ pip-log.txt
35
+ pip-delete-this-directory.txt
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+ .coverage
42
+ .coverage.*
43
+ .cache
44
+ nosetests.xml
45
+ coverage.xml
46
+ *.cover
47
+ *.py,cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+ cover/
51
+
52
+ # Translations
53
+ *.mo
54
+ *.pot
55
+
56
+ # Django stuff:
57
+ *.log
58
+ local_settings.py
59
+ db.sqlite3
60
+ db.sqlite3-journal
61
+
62
+ # Flask stuff:
63
+ instance/
64
+ .webassets-cache
65
+
66
+ # Scrapy stuff:
67
+ .scrapy
68
+
69
+ # Sphinx documentation
70
+ docs/_build/
71
+
72
+ # PyBuilder
73
+ .pybuilder/
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # IPython
80
+ profile_default/
81
+ ipython_config.py
82
+
83
+ # pyenv
84
+ .python-version
85
+
86
+ # pipenv
87
+ Pipfile.lock
88
+
89
+ # poetry
90
+ poetry.lock
91
+
92
+ # pdm
93
+ .pdm.toml
94
+ .pdm-python
95
+
96
+ # PEP 582
97
+ __pypackages__/
98
+
99
+ # Celery stuff
100
+ celerybeat-schedule
101
+ celerybeat.pid
102
+
103
+ # SageMath parsed files
104
+ *.sage.py
105
+
106
+ # Environments
107
+ .env
108
+ .venv
109
+ env/
110
+ venv/
111
+ ENV/
112
+ env.bak/
113
+ venv.bak/
114
+
115
+ # Spyder project settings
116
+ .spyderproject
117
+ .spyproject
118
+
119
+ # Rope project settings
120
+ .ropeproject
121
+
122
+ # mkdocs documentation
123
+ /site
124
+
125
+ # mypy
126
+ .mypy_cache/
127
+ .dmypy.json
128
+ dmypy.json
129
+
130
+ # Pyre type checker
131
+ .pyre/
132
+
133
+ # pytype static type analyzer
134
+ .pytype/
135
+
136
+ # Cython debug symbols
137
+ cython_debug/
138
+
139
+ # PyCharm
140
+ .idea/
141
+
142
+ # VS Code
143
+ .vscode/
144
+
145
+ # macOS
146
+ .DS_Store
147
+
148
+ # Windows
149
+ Thumbs.db
150
+ ehthumbs.db
151
+
152
+ # Linux
153
+ *~
154
+
155
+ # Temporary files
156
+ *.tmp
157
+ *.bak
158
+ *.swp
159
+ *.swo
160
+
161
+ # UV
162
+ .uv/
163
+
164
+ # Ruff
165
+ .ruff_cache/
166
+
167
+ # Local development
168
+ local/
169
+ scratch/
170
+
171
+ # Claude Code settings and environment files
172
+ settings.json
173
+ hook-settings.json
174
+ hooks/settings.json
175
+ .env*
176
+ node_modules/
177
+ package-lock.json
178
+ !node_ui/package-lock.json
179
+ !docs-site/package-lock.json
180
+ !plugins/dynamic-workflow/package-lock.json
181
+
182
+ # Backup files
183
+ *.backup*
184
+ to-be-deleted.md
185
+ reference/
186
+
187
+ # Ignore config.json files at any level
188
+ **/config.json
189
+ *.flag
190
+
191
+ # Local files
192
+ issues/
193
+ WORKLOG/
194
+
195
+ jsonl-structure-summary.md
voxtype-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Prasad Chalasani
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
voxtype-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: voxtype
3
+ Version: 0.1.0
4
+ Summary: Local, streaming speech-to-text that types wherever your cursor is (macOS)
5
+ Project-URL: Homepage, https://github.com/pchalasani/claude-code-tools
6
+ Project-URL: Documentation, https://pchalasani.github.io/claude-code-tools/tools/voxtype/
7
+ Author-email: Prasad Chalasani <pchalasani@gmail.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 Prasad Chalasani
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ License-File: LICENSE
30
+ Keywords: dictation,macos,parakeet,speech-to-text,voice,whisper
31
+ Classifier: Environment :: MacOS X
32
+ Classifier: Operating System :: MacOS
33
+ Classifier: Programming Language :: Python :: 3
34
+ Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
35
+ Requires-Python: >=3.11
36
+ Requires-Dist: numba>=0.61; sys_platform == 'darwin' and platform_machine == 'arm64'
37
+ Requires-Dist: numpy>=1.26.0
38
+ Requires-Dist: parakeet-mlx>=0.5.0; sys_platform == 'darwin' and platform_machine == 'arm64'
39
+ Requires-Dist: pynput>=1.7.7
40
+ Requires-Dist: questionary>=2.0.0
41
+ Requires-Dist: sherpa-onnx-core<1.13,>=1.12.0
42
+ Requires-Dist: sherpa-onnx<1.13,>=1.12.0
43
+ Requires-Dist: sounddevice>=0.5.0
44
+ Provides-Extra: mlx
45
+ Provides-Extra: moonshine
46
+ Requires-Dist: moonshine-voice>=0.0.69; extra == 'moonshine'
47
+ Provides-Extra: parakeet
48
+ Description-Content-Type: text/markdown
49
+
50
+ # voxtype — local voice dictation that types where your cursor is
51
+
52
+ `voxtype` turns speech into text in whatever app has focus — your editor,
53
+ browser, terminal, or a coding agent's prompt box. Everything runs on your
54
+ machine: no cloud, no accounts, no audio leaving your Mac.
55
+
56
+ > **macOS only (Intel and Apple Silicon).** voxtype relies on macOS APIs
57
+ > for typing (accessibility), hotkey suppression (the CGEvent tap), and its
58
+ > overlay (AppKit). **It is not supported on Linux or Windows** — the toggle
59
+ > hotkey can't be suppressed there (it leaks into your text), there is no
60
+ > overlay, and it is untested. On Apple Silicon (M1 or later) it defaults to
61
+ > the `parakeet-mlx` Apple-GPU engine; Intel Macs use the `parakeet` CPU
62
+ > engine.
63
+
64
+ ## Install
65
+
66
+ ```bash
67
+ uv tool install voxtype
68
+ ```
69
+
70
+ That's it. The install includes the best engine for your machine — the
71
+ Apple-GPU `parakeet-mlx` engine on Apple Silicon (best accuracy AND
72
+ speed), the CPU `parakeet` engine everywhere else — and that engine is
73
+ the runtime default too, so no flags are needed.
74
+
75
+ Or run without installing: `uvx voxtype`. (No `uv`? `pipx install
76
+ voxtype` works too.)
77
+
78
+ ## Why it's different
79
+
80
+ - **One key to dictate.** Hit the toggle hotkey (default `Ctrl+;`), speak as
81
+ long as you like, hit it again — the whole take is transcribed with full
82
+ sentence context and typed in one go (a single edit to undo, in most
83
+ apps). No chopping at pauses, sub-second results.
84
+ - **Or go hands-free.** Say "hey claude" (configurable, with alias
85
+ spellings) to start dictating; say "stop listening" or go quiet to
86
+ re-arm. The hotkey still works as an override.
87
+ - **Spoken submit.** Say "go", "over", or "submit" as a standalone
88
+ utterance and voxtype presses Enter — dictate a prompt to a coding agent
89
+ and send it without touching the keyboard.
90
+ - **Clean transcripts.** Standalone fillers (uh, um, ...) are stripped and
91
+ 3+ word stutters collapse ("I I I think" becomes "I think") — on-device
92
+ regex, no LLM involved.
93
+ - **Visible when it matters.** A floating waveform pill appears ONLY while
94
+ recording — red waves as you speak. Pill on screen = mic live; no pill =
95
+ not listening.
96
+ - **Nothing is ever lost.** Dictated into the wrong window? A paste-again
97
+ hotkey re-types the last session's transcript at the cursor; optional
98
+ clipboard mirroring too. Escape cancels a recording outright.
99
+
100
+ ## Quick start
101
+
102
+ 1. Install (see above), then grant your terminal **Microphone**,
103
+ **Accessibility**, and **Input Monitoring** permissions
104
+ (System Settings → Privacy & Security) when prompted.
105
+
106
+ 2. Start dictating:
107
+
108
+ ```bash
109
+ voxtype --segmentation hold
110
+ ```
111
+
112
+ Press `Ctrl+;`, speak (watch the waveform pill), press `Ctrl+;` again —
113
+ the whole take types at your cursor. `Esc` cancels a take.
114
+
115
+ 3. Make it yours: run `voxtype setup` for an interactive walkthrough — it
116
+ asks a handful of explained questions (engine, mode, hotkey, ...) and
117
+ writes your `~/.config/voxtype/config.toml`. (Prefer editing by hand?
118
+ `voxtype init` drops a fully commented sample instead.) After that,
119
+ plain `voxtype` starts with your settings.
120
+
121
+ ## Hotkey & voice vocabulary
122
+
123
+ | Action | Default | Configurable as |
124
+ |--------|---------|-----------------|
125
+ | Toggle recording | `Ctrl+;` | `hotkey` |
126
+ | Cancel recording (discard) | `Esc` (only while recording) | `cancel_hotkey` |
127
+ | Re-type last transcript | off | `paste_hotkey` |
128
+ | Submit (press Enter) | say "go" / "over" / "submit" | `submit_phrases` |
129
+ | Stop dictating | say "stop listening" | `stop_phrase` |
130
+
131
+ Not sure how to spell a chord? Run `voxtype hotkey`, press the combo you
132
+ want, and it prints the exact line to put in your config
133
+ (e.g. `hotkey = "<ctrl>+;"`).
134
+
135
+ ## Engines
136
+
137
+ | Engine | Availability | Notes |
138
+ |--------|--------------|-------|
139
+ | `parakeet-mlx` | included (default on Apple Silicon) | Parakeet-TDT 0.6b v3 on the Apple GPU via MLX: fp16 accuracy at ~40x realtime — best accuracy AND speed |
140
+ | `parakeet` | included (default elsewhere) | Parakeet-TDT 0.6b v3 on CPU via sherpa-onnx (~490 MB download) |
141
+ | `moonshine` | opt-in: `voxtype[moonshine]` | Streaming Moonshine models, smallest footprint (no Intel-macOS build) |
142
+
143
+ ## Documentation
144
+
145
+ Full reference — every config key with its default, the engine comparison,
146
+ and all CLI flags:
147
+ <https://pchalasani.github.io/claude-code-tools/tools/voxtype/>
148
+
149
+ ## History
150
+
151
+ voxtype previously shipped as `voice-type` inside
152
+ [claude-code-tools](https://github.com/pchalasani/claude-code-tools). It
153
+ still reads a legacy `~/.config/voice-type/config.toml` and reuses the old
154
+ `~/.cache/voice-type` model cache, so upgrading is seamless.
155
+
156
+ MIT license.
@@ -0,0 +1,107 @@
1
+ # voxtype — local voice dictation that types where your cursor is
2
+
3
+ `voxtype` turns speech into text in whatever app has focus — your editor,
4
+ browser, terminal, or a coding agent's prompt box. Everything runs on your
5
+ machine: no cloud, no accounts, no audio leaving your Mac.
6
+
7
+ > **macOS only (Intel and Apple Silicon).** voxtype relies on macOS APIs
8
+ > for typing (accessibility), hotkey suppression (the CGEvent tap), and its
9
+ > overlay (AppKit). **It is not supported on Linux or Windows** — the toggle
10
+ > hotkey can't be suppressed there (it leaks into your text), there is no
11
+ > overlay, and it is untested. On Apple Silicon (M1 or later) it defaults to
12
+ > the `parakeet-mlx` Apple-GPU engine; Intel Macs use the `parakeet` CPU
13
+ > engine.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ uv tool install voxtype
19
+ ```
20
+
21
+ That's it. The install includes the best engine for your machine — the
22
+ Apple-GPU `parakeet-mlx` engine on Apple Silicon (best accuracy AND
23
+ speed), the CPU `parakeet` engine everywhere else — and that engine is
24
+ the runtime default too, so no flags are needed.
25
+
26
+ Or run without installing: `uvx voxtype`. (No `uv`? `pipx install
27
+ voxtype` works too.)
28
+
29
+ ## Why it's different
30
+
31
+ - **One key to dictate.** Hit the toggle hotkey (default `Ctrl+;`), speak as
32
+ long as you like, hit it again — the whole take is transcribed with full
33
+ sentence context and typed in one go (a single edit to undo, in most
34
+ apps). No chopping at pauses, sub-second results.
35
+ - **Or go hands-free.** Say "hey claude" (configurable, with alias
36
+ spellings) to start dictating; say "stop listening" or go quiet to
37
+ re-arm. The hotkey still works as an override.
38
+ - **Spoken submit.** Say "go", "over", or "submit" as a standalone
39
+ utterance and voxtype presses Enter — dictate a prompt to a coding agent
40
+ and send it without touching the keyboard.
41
+ - **Clean transcripts.** Standalone fillers (uh, um, ...) are stripped and
42
+ 3+ word stutters collapse ("I I I think" becomes "I think") — on-device
43
+ regex, no LLM involved.
44
+ - **Visible when it matters.** A floating waveform pill appears ONLY while
45
+ recording — red waves as you speak. Pill on screen = mic live; no pill =
46
+ not listening.
47
+ - **Nothing is ever lost.** Dictated into the wrong window? A paste-again
48
+ hotkey re-types the last session's transcript at the cursor; optional
49
+ clipboard mirroring too. Escape cancels a recording outright.
50
+
51
+ ## Quick start
52
+
53
+ 1. Install (see above), then grant your terminal **Microphone**,
54
+ **Accessibility**, and **Input Monitoring** permissions
55
+ (System Settings → Privacy & Security) when prompted.
56
+
57
+ 2. Start dictating:
58
+
59
+ ```bash
60
+ voxtype --segmentation hold
61
+ ```
62
+
63
+ Press `Ctrl+;`, speak (watch the waveform pill), press `Ctrl+;` again —
64
+ the whole take types at your cursor. `Esc` cancels a take.
65
+
66
+ 3. Make it yours: run `voxtype setup` for an interactive walkthrough — it
67
+ asks a handful of explained questions (engine, mode, hotkey, ...) and
68
+ writes your `~/.config/voxtype/config.toml`. (Prefer editing by hand?
69
+ `voxtype init` drops a fully commented sample instead.) After that,
70
+ plain `voxtype` starts with your settings.
71
+
72
+ ## Hotkey & voice vocabulary
73
+
74
+ | Action | Default | Configurable as |
75
+ |--------|---------|-----------------|
76
+ | Toggle recording | `Ctrl+;` | `hotkey` |
77
+ | Cancel recording (discard) | `Esc` (only while recording) | `cancel_hotkey` |
78
+ | Re-type last transcript | off | `paste_hotkey` |
79
+ | Submit (press Enter) | say "go" / "over" / "submit" | `submit_phrases` |
80
+ | Stop dictating | say "stop listening" | `stop_phrase` |
81
+
82
+ Not sure how to spell a chord? Run `voxtype hotkey`, press the combo you
83
+ want, and it prints the exact line to put in your config
84
+ (e.g. `hotkey = "<ctrl>+;"`).
85
+
86
+ ## Engines
87
+
88
+ | Engine | Availability | Notes |
89
+ |--------|--------------|-------|
90
+ | `parakeet-mlx` | included (default on Apple Silicon) | Parakeet-TDT 0.6b v3 on the Apple GPU via MLX: fp16 accuracy at ~40x realtime — best accuracy AND speed |
91
+ | `parakeet` | included (default elsewhere) | Parakeet-TDT 0.6b v3 on CPU via sherpa-onnx (~490 MB download) |
92
+ | `moonshine` | opt-in: `voxtype[moonshine]` | Streaming Moonshine models, smallest footprint (no Intel-macOS build) |
93
+
94
+ ## Documentation
95
+
96
+ Full reference — every config key with its default, the engine comparison,
97
+ and all CLI flags:
98
+ <https://pchalasani.github.io/claude-code-tools/tools/voxtype/>
99
+
100
+ ## History
101
+
102
+ voxtype previously shipped as `voice-type` inside
103
+ [claude-code-tools](https://github.com/pchalasani/claude-code-tools). It
104
+ still reads a legacy `~/.config/voice-type/config.toml` and reuses the old
105
+ `~/.cache/voice-type` model cache, so upgrading is seamless.
106
+
107
+ MIT license.
@@ -0,0 +1,64 @@
1
+ [project]
2
+ name = "voxtype"
3
+ version = "0.1.0"
4
+ description = "Local, streaming speech-to-text that types wherever your cursor is (macOS)"
5
+ readme = "README.md"
6
+ license = { file = "LICENSE" }
7
+ authors = [{ name = "Prasad Chalasani", email = "pchalasani@gmail.com" }]
8
+ requires-python = ">=3.11"
9
+ keywords = ["speech-to-text", "dictation", "voice", "whisper", "parakeet", "macos"]
10
+ classifiers = [
11
+ "Environment :: MacOS X",
12
+ "Operating System :: MacOS",
13
+ "Programming Language :: Python :: 3",
14
+ "Topic :: Multimedia :: Sound/Audio :: Speech",
15
+ ]
16
+ # A plain `uv tool install voxtype` gets the best engine for the
17
+ # machine: parakeet-mlx (Apple GPU) on Apple Silicon, parakeet CPU
18
+ # (sherpa-onnx) everywhere else. Markers gate the arm64-only MLX stack.
19
+ dependencies = [
20
+ "pynput>=1.7.7",
21
+ # The `voxtype setup` onboarding wizard uses questionary; it is the
22
+ # advertised first-run path, so it ships in the base install (not an
23
+ # extra) — otherwise `voxtype setup` would fail on a clean install.
24
+ "questionary>=2.0.0",
25
+ # Apple-GPU engine (Apple Silicon Macs only; wheels are arm64).
26
+ "parakeet-mlx>=0.5.0; sys_platform == 'darwin' and platform_machine == 'arm64'",
27
+ # Resolver guard: without it uv can backtrack through parakeet-mlx
28
+ # -> librosa -> numba to a 2021 llvmlite that cannot build on
29
+ # modern Python ("Cannot install on Python version 3.13...").
30
+ "numba>=0.61; sys_platform == 'darwin' and platform_machine == 'arm64'",
31
+ # sherpa-onnx: the parakeet CPU engine AND the Silero VAD used by
32
+ # parakeet-mlx segmentation.
33
+ # 1.13.x wheels are missing their bundled onnxruntime dylib on
34
+ # macOS arm64 (dlopen fails); 1.12.x splits the native libs into
35
+ # sherpa-onnx-core, which some resolvers miss (uv caches wheel
36
+ # metadata without it) — declare it explicitly.
37
+ "sherpa-onnx>=1.12.0,<1.13",
38
+ "sherpa-onnx-core>=1.12.0,<1.13",
39
+ "sounddevice>=0.5.0",
40
+ "numpy>=1.26.0",
41
+ ]
42
+
43
+ [project.urls]
44
+ Homepage = "https://github.com/pchalasani/claude-code-tools"
45
+ Documentation = "https://pchalasani.github.io/claude-code-tools/tools/voxtype/"
46
+
47
+ [project.optional-dependencies]
48
+ # The moonshine streaming engine, for those who want it (no
49
+ # Intel-macOS wheels exist, hence opt-in).
50
+ moonshine = ["moonshine-voice>=0.0.69"]
51
+ # Back-compat aliases from when the engines were opt-in extras; both
52
+ # engines now ship in the base install (mlx marker-gated to arm64).
53
+ parakeet = []
54
+ mlx = []
55
+
56
+ [project.scripts]
57
+ voxtype = "voxtype.cli:main"
58
+
59
+ [build-system]
60
+ requires = ["hatchling==1.28.0"]
61
+ build-backend = "hatchling.build"
62
+
63
+ [tool.hatch.build.targets.wheel]
64
+ packages = ["src/voxtype"]
@@ -0,0 +1,7 @@
1
+ """voxtype: local, streaming speech-to-text that types where your cursor is.
2
+
3
+ Fully on-device transcription — NVIDIA Parakeet-TDT on the Apple GPU
4
+ (MLX) or CPU (sherpa-onnx), or Moonshine streaming models — with voice
5
+ activity detection, a configurable global hotkey, and an optional wake
6
+ word (e.g. "claude").
7
+ """