python-voiceio 0.2.0__py3-none-any.whl
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.
- python_voiceio-0.2.0.dist-info/METADATA +260 -0
- python_voiceio-0.2.0.dist-info/RECORD +43 -0
- python_voiceio-0.2.0.dist-info/WHEEL +5 -0
- python_voiceio-0.2.0.dist-info/entry_points.txt +6 -0
- python_voiceio-0.2.0.dist-info/licenses/LICENSE +21 -0
- python_voiceio-0.2.0.dist-info/top_level.txt +1 -0
- voiceio/__init__.py +1 -0
- voiceio/__main__.py +3 -0
- voiceio/app.py +415 -0
- voiceio/backends.py +13 -0
- voiceio/cli.py +475 -0
- voiceio/config.py +136 -0
- voiceio/feedback.py +78 -0
- voiceio/health.py +194 -0
- voiceio/hotkeys/__init__.py +22 -0
- voiceio/hotkeys/base.py +27 -0
- voiceio/hotkeys/chain.py +83 -0
- voiceio/hotkeys/evdev.py +134 -0
- voiceio/hotkeys/pynput_backend.py +80 -0
- voiceio/hotkeys/socket_backend.py +77 -0
- voiceio/ibus/__init__.py +8 -0
- voiceio/ibus/engine.py +268 -0
- voiceio/platform.py +139 -0
- voiceio/recorder.py +208 -0
- voiceio/service.py +234 -0
- voiceio/sounds/__init__.py +0 -0
- voiceio/sounds/commit.wav +0 -0
- voiceio/sounds/start.wav +0 -0
- voiceio/sounds/stop.wav +0 -0
- voiceio/streaming.py +202 -0
- voiceio/transcriber.py +165 -0
- voiceio/tray.py +54 -0
- voiceio/typers/__init__.py +31 -0
- voiceio/typers/base.py +44 -0
- voiceio/typers/chain.py +79 -0
- voiceio/typers/clipboard.py +110 -0
- voiceio/typers/ibus.py +389 -0
- voiceio/typers/pynput_type.py +51 -0
- voiceio/typers/wtype.py +57 -0
- voiceio/typers/xdotool.py +45 -0
- voiceio/typers/ydotool.py +115 -0
- voiceio/wizard.py +882 -0
- voiceio/worker.py +39 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: python-voiceio
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Push-to-talk voice-to-text for Linux. Press a hotkey, speak, press again - text appears at your cursor.
|
|
5
|
+
Author: Hugo Montenegro
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Hugo0/voiceio
|
|
8
|
+
Project-URL: Issues, https://github.com/Hugo0/voiceio/issues
|
|
9
|
+
Keywords: voice,speech-to-text,whisper,linux,dictation,wayland,ibus
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: X11 Applications
|
|
12
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
|
|
16
|
+
Requires-Python: >=3.11
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: faster-whisper>=1.0.0
|
|
20
|
+
Requires-Dist: sounddevice>=0.4.6
|
|
21
|
+
Requires-Dist: numpy>=1.24.0
|
|
22
|
+
Provides-Extra: linux
|
|
23
|
+
Requires-Dist: evdev>=1.6.0; extra == "linux"
|
|
24
|
+
Provides-Extra: x11
|
|
25
|
+
Requires-Dist: pynput>=1.7.6; extra == "x11"
|
|
26
|
+
Provides-Extra: mac
|
|
27
|
+
Requires-Dist: pynput>=1.7.6; extra == "mac"
|
|
28
|
+
Provides-Extra: tray
|
|
29
|
+
Requires-Dist: pystray>=0.19; extra == "tray"
|
|
30
|
+
Requires-Dist: Pillow>=10.0; extra == "tray"
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-mock; extra == "dev"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# voiceio
|
|
37
|
+
|
|
38
|
+
[](https://github.com/Hugo0/voiceio/actions/workflows/ci.yml)
|
|
39
|
+
[](https://pypi.org/project/voiceio/)
|
|
40
|
+
[](https://pypi.org/project/voiceio/)
|
|
41
|
+
[](LICENSE)
|
|
42
|
+
|
|
43
|
+
Push-to-talk voice-to-text for Linux and macOS, on any app. Press a hotkey, speak, press again - text appears at your cursor.
|
|
44
|
+
|
|
45
|
+
100% local and open source. No API keys, no cloud, no telemetry. Use and modify at your will.
|
|
46
|
+
|
|
47
|
+
<!-- demo video -->
|
|
48
|
+
<p align="center">
|
|
49
|
+
<a href="https://www.tella.tv/video/YOUR_VIDEO_ID">
|
|
50
|
+
<img src="https://github.com/Hugo0/voiceio/raw/main/assets/demo-thumbnail.png" alt="voiceio demo" width="600">
|
|
51
|
+
</a>
|
|
52
|
+
<br>
|
|
53
|
+
<em>Click to watch the demo</em>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
## Quick start
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 1. Install system dependencies (Ubuntu/Debian)
|
|
60
|
+
sudo apt install pipx ibus gir1.2-ibus-1.0 python3-gi portaudio19-dev
|
|
61
|
+
|
|
62
|
+
# 2. Install voiceio
|
|
63
|
+
pipx install voiceio
|
|
64
|
+
|
|
65
|
+
# 3. Run the setup wizard
|
|
66
|
+
voiceio setup
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
That's it. Press **Ctrl+Alt+V** (or your chosen hotkey) to start dictating.
|
|
70
|
+
|
|
71
|
+
<details>
|
|
72
|
+
<summary><strong>Fedora</strong></summary>
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
sudo dnf install pipx ibus python3-gobject portaudio-devel
|
|
76
|
+
pipx install voiceio
|
|
77
|
+
voiceio setup
|
|
78
|
+
```
|
|
79
|
+
</details>
|
|
80
|
+
|
|
81
|
+
<details>
|
|
82
|
+
<summary><strong>Arch Linux</strong></summary>
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
sudo pacman -S python-pipx ibus python-gobject portaudio
|
|
86
|
+
pipx install voiceio
|
|
87
|
+
voiceio setup
|
|
88
|
+
```
|
|
89
|
+
</details>
|
|
90
|
+
|
|
91
|
+
<details>
|
|
92
|
+
<summary><strong>Build from source</strong></summary>
|
|
93
|
+
|
|
94
|
+
If you want the source code locally to hack on or customize for personal use. PRs are welcome!
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
git clone https://github.com/Hugo0/voiceio
|
|
98
|
+
cd voiceio
|
|
99
|
+
pip install -e ".[linux,dev]"
|
|
100
|
+
voiceio setup
|
|
101
|
+
```
|
|
102
|
+
</details>
|
|
103
|
+
|
|
104
|
+
> You can also install with `uv tool install voiceio` or `pip install voiceio`.
|
|
105
|
+
|
|
106
|
+
## How it works
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
hotkey → mic capture → whisper (local) → text at cursor
|
|
110
|
+
pre-buffered streaming IBus / clipboard
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
1. Press your hotkey: voiceio starts recording (with a 1-second pre-buffer, so it catches the beginning even if you start speaking before pressing)
|
|
114
|
+
2. Speak naturally: text streams into the focused app in real-time as an underlined preview
|
|
115
|
+
3. Press the hotkey again: the final transcription replaces the preview and is committed
|
|
116
|
+
|
|
117
|
+
Transcription runs locally via [faster-whisper](https://github.com/SYSTRAN/faster-whisper). Text is injected through IBus (works in any GTK/Qt app: browsers, Telegram, editors) with an automatic clipboard fallback for terminals.
|
|
118
|
+
|
|
119
|
+
## Features
|
|
120
|
+
|
|
121
|
+
- **Streaming**: text appears as you speak, not after you stop
|
|
122
|
+
- **Works everywhere**: IBus input method for GUI apps, clipboard for terminals
|
|
123
|
+
- **Wayland + X11**: evdev hotkeys work on both, no root required
|
|
124
|
+
- **Pre-buffer**: never miss the first syllable
|
|
125
|
+
- **Auto-healing**: falls back to the next working backend if one fails
|
|
126
|
+
- **Autostart**: optional systemd service, restarts on crash
|
|
127
|
+
- **Self-diagnosing**: `voiceio doctor` checks everything, `--fix` repairs it
|
|
128
|
+
|
|
129
|
+
## Models
|
|
130
|
+
|
|
131
|
+
| Model | Size | Speed | Accuracy | Good for |
|
|
132
|
+
|-------|------|-------|----------|----------|
|
|
133
|
+
| `tiny` | 75 MB | ~10x realtime | Basic | Quick notes, low-end hardware |
|
|
134
|
+
| `base` | 150 MB | ~7x realtime | Good | Daily use (default) |
|
|
135
|
+
| `small` | 500 MB | ~4x realtime | Better | Longer dictation |
|
|
136
|
+
| `medium` | 1.5 GB | ~2x realtime | Great | Accuracy-sensitive work |
|
|
137
|
+
| `large-v3` | 3 GB | ~1x realtime | Best | Maximum quality, GPU recommended |
|
|
138
|
+
|
|
139
|
+
Models download automatically on first use. Switch anytime: `voiceio --model small`.
|
|
140
|
+
|
|
141
|
+
## Commands
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
voiceio Start the daemon
|
|
145
|
+
voiceio setup Interactive setup wizard
|
|
146
|
+
voiceio doctor Health check (--fix to auto-repair)
|
|
147
|
+
voiceio test Test microphone + live transcription
|
|
148
|
+
voiceio toggle Toggle recording on a running daemon
|
|
149
|
+
voiceio service install Autostart on login via systemd
|
|
150
|
+
voiceio logs View recent logs
|
|
151
|
+
voiceio uninstall Remove all system integrations
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Configuration
|
|
155
|
+
|
|
156
|
+
`voiceio setup` handles everything interactively. To tweak later, edit `~/.config/voiceio/config.toml` or override at runtime:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
voiceio --model large-v3 --language auto -v
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
See [config.example.toml](config.example.toml) for all options.
|
|
163
|
+
|
|
164
|
+
## Troubleshooting
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
voiceio doctor # see what's working
|
|
168
|
+
voiceio doctor --fix # auto-fix issues
|
|
169
|
+
voiceio logs # check debug output
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
| Problem | Fix |
|
|
173
|
+
|---------|-----|
|
|
174
|
+
| No text appears | `voiceio doctor --fix` - usually a missing IBus component or GNOME input source |
|
|
175
|
+
| Hotkey doesn't work on Wayland | `sudo usermod -aG input $USER` then log out and back in |
|
|
176
|
+
| Transcription too slow | Use a smaller model: `voiceio --model tiny` |
|
|
177
|
+
| Want to start fresh | `voiceio uninstall` then `voiceio setup` |
|
|
178
|
+
| Doesn't work on MacOS | I haven't added proper support for apple yet. either use https://aquavoice.com/ or make a PR |
|
|
179
|
+
|
|
180
|
+
## Platform support
|
|
181
|
+
|
|
182
|
+
| Platform | Status | Text injection | Hotkeys | Streaming preview |
|
|
183
|
+
|----------|--------|---------------|---------|-------------------|
|
|
184
|
+
| Ubuntu / Debian (GNOME, Wayland) | **Tested daily** | IBus | evdev / GNOME shortcut | Yes |
|
|
185
|
+
| Ubuntu / Debian (GNOME, X11) | Supported | IBus | evdev / pynput | Yes |
|
|
186
|
+
| Fedora (GNOME) | Supported | IBus | evdev / GNOME shortcut | Yes |
|
|
187
|
+
| Arch Linux | Supported | IBus | evdev | Yes |
|
|
188
|
+
| KDE / Sway / Hyprland | Should work | IBus / ydotool / wtype | evdev | Yes |
|
|
189
|
+
| macOS | Experimental | pynput / clipboard | pynput | Type-and-correct (no preedit) |
|
|
190
|
+
|
|
191
|
+
voiceio auto-detects your platform and picks the best available backends. Run `voiceio doctor` to see what's working on your system.
|
|
192
|
+
|
|
193
|
+
## Uninstall
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
voiceio uninstall # removes service, IBus, shortcuts, symlinks
|
|
197
|
+
pipx uninstall voiceio # removes the package
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## TODO
|
|
201
|
+
|
|
202
|
+
**Launch**
|
|
203
|
+
- [ ] Publish to PyPI
|
|
204
|
+
- [ ] Record demo video + thumbnail
|
|
205
|
+
- [ ] Test clean install on a fresh VM/container
|
|
206
|
+
- [ ] GitHub repo: description, topics, social preview image
|
|
207
|
+
- [ ] Bump version to 0.2.0
|
|
208
|
+
|
|
209
|
+
**Code quality**
|
|
210
|
+
- [ ] IBus activation on non-GNOME desktops (KDE, Sway, Hyprland), currently GNOME-only via gsettings
|
|
211
|
+
- [ ] `voiceio doctor --json` for machine-readable output
|
|
212
|
+
- [ ] Shell completions (`voiceio completion bash/zsh/fish`)
|
|
213
|
+
- [ ] Refactor wizard.py (882 lines) into smaller, testable modules
|
|
214
|
+
- [ ] Socket protocol versioning (e.g. `v1:preedit:text`)
|
|
215
|
+
- [ ] Configurable log file path
|
|
216
|
+
|
|
217
|
+
## Wishlist
|
|
218
|
+
|
|
219
|
+
Contributions welcome! Open an issue to discuss before starting.
|
|
220
|
+
|
|
221
|
+
**High impact**
|
|
222
|
+
- [ ] **Text-to-speech (voice output)**: select text, press a hotkey, hear it spoken aloud. Completes the "io" in voiceio. Use a local TTS engine (Piper, Coqui, espeak-ng), same philosophy: no cloud, no API keys
|
|
223
|
+
- [ ] **Wake word**: "Hey voiceio" hands-free activation (no hotkey needed). Use a small always-on keyword model (e.g. openWakeWord, Porcupine)
|
|
224
|
+
- [ ] **Custom vocabulary / hot words**: user-defined word list for names, jargon, technical terms that Whisper gets wrong. Boost via `initial_prompt` or fine-tuned logit bias
|
|
225
|
+
- [ ] **Per-app profiles**: different language/model/output settings per application (e.g. formal writing in docs, casual in chat)
|
|
226
|
+
- [ ] **Voice commands**: "select all", "new line", "undo that", "delete last sentence". Parse transcribed text for command patterns before injecting
|
|
227
|
+
- [ ] **Punctuation & formatting commands**: "period", "comma", "new paragraph", "capitalize that"
|
|
228
|
+
- [ ] **Auto-punctuation model**: post-process Whisper output with a small punctuation/capitalization model for cleaner text
|
|
229
|
+
|
|
230
|
+
**Platform expansion**
|
|
231
|
+
- [ ] **macOS Input Method (IMKit)**: native streaming preedit on macOS, matching IBus quality on Linux
|
|
232
|
+
- [ ] **Windows support**: Text Services Framework (TSF) for text injection, global hotkeys via win32api
|
|
233
|
+
- [ ] **Flatpak / Snap packaging**: sandboxed distribution for Linux
|
|
234
|
+
- [ ] **AUR package**: community package for Arch Linux
|
|
235
|
+
|
|
236
|
+
**UX polish**
|
|
237
|
+
- [ ] **System tray icon with recording animation**: pulsing/colored icon showing recording state, quick menu for model/language switching
|
|
238
|
+
- [ ] **Desktop notifications with transcribed text**: show what was typed, with an undo button
|
|
239
|
+
- [ ] **Confidence indicator**: visual hint when Whisper is uncertain (maybe highlight low-confidence words)
|
|
240
|
+
- [ ] **Recording timeout**: auto-stop after N seconds of silence or max duration, preventing forgotten recordings
|
|
241
|
+
- [ ] **Sound themes**: bundled sound packs (subtle, mechanical, sci-fi, none)
|
|
242
|
+
- [ ] **First-run onboarding overlay**: lightweight "press Ctrl+Alt+V to start" hint on first launch
|
|
243
|
+
|
|
244
|
+
**Power features**
|
|
245
|
+
- [ ] **Multi-language in one session**: auto-detect language switches mid-dictation (Whisper supports this but needs tuning)
|
|
246
|
+
- [ ] **Speaker diarization**: "Person 1: ... Person 2: ..." for meeting notes (via pyannote or whisperX)
|
|
247
|
+
- [ ] **LLM post-processing**: pipe transcription through a local LLM (Ollama) for grammar correction, summarization, or reformatting
|
|
248
|
+
- [ ] **Clipboard history**: keep last N transcriptions, quick-paste from history
|
|
249
|
+
- [ ] **Transcription log / journal**: searchable history of everything you've dictated, with timestamps
|
|
250
|
+
- [ ] **API / webhook**: expose a local API so other tools can trigger recording or receive transcriptions
|
|
251
|
+
- [ ] **Browser extension**: inject text into web apps that don't work with IBus (e.g. some Electron apps)
|
|
252
|
+
|
|
253
|
+
**Developer experience**
|
|
254
|
+
- [ ] **Plugin system**: hooks for pre/post processing (e.g. custom formatters, translators, text transforms)
|
|
255
|
+
- [ ] **Alternative STT backends**: support Whisper.cpp, Deepgram, AssemblyAI, OpenAI Whisper API as optional backends
|
|
256
|
+
- [ ] **GPU acceleration docs**: CUDA/ROCm setup guide for faster transcription on large models
|
|
257
|
+
|
|
258
|
+
## License
|
|
259
|
+
|
|
260
|
+
MIT
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
python_voiceio-0.2.0.dist-info/licenses/LICENSE,sha256=Gz61o8jFTAvZUZyB3nWDB3DQQVuipjfPkVu9W8hBHM0,1072
|
|
2
|
+
voiceio/__init__.py,sha256=Zn1KFblwuFHiDRdRAiRnDBRkbPttWh44jKa5zG2ov0E,22
|
|
3
|
+
voiceio/__main__.py,sha256=Glqj9AiBGL7nv1KHF3O72yeiA-zo67a_ygZ2bE4iFfY,37
|
|
4
|
+
voiceio/app.py,sha256=Xh3nbUodWT1VQam_cI0iQFuT6Awf-Y_RzVl-h8b7gAY,16697
|
|
5
|
+
voiceio/backends.py,sha256=-rs1YhPblub4NjFb6qCD7Ih9FqBRXtPuvjVv9bQoQ1w,368
|
|
6
|
+
voiceio/cli.py,sha256=4x3GsKWaDLotJ5KrjcS986Cj3X4bqcFR4xx47S8TrSY,18509
|
|
7
|
+
voiceio/config.py,sha256=qMGVWMRvbpjkYK9DC7_P14CCVw5yK_JwLClwM7pq9yM,3856
|
|
8
|
+
voiceio/feedback.py,sha256=-DgLhOVaDQhlR4AfB3S8zme8jC4zbZV1teQUHwekSzU,2320
|
|
9
|
+
voiceio/health.py,sha256=pdDaPqwCO-l2Ll7G2PYjXdl-bb6dqzTgiB2U8MlRmKY,6165
|
|
10
|
+
voiceio/platform.py,sha256=wORxvRrTG6Z6bkY4wAyqOnFxzyvmqNkAX_lMpXQlZlE,3671
|
|
11
|
+
voiceio/recorder.py,sha256=feUuVmlpy-EBZuYriuYikYLNqZiRt86LJy1mVP-fqUk,7102
|
|
12
|
+
voiceio/service.py,sha256=5rxjo_jFZCKi4C_gIBW7PJAB7Izsk1cqFGkYmbtfBio,7116
|
|
13
|
+
voiceio/streaming.py,sha256=x08IiKe6SkLTYHkBmdMYpCcBfR8KmhYTiIjEiaQSPYE,7019
|
|
14
|
+
voiceio/transcriber.py,sha256=FFhuzwbgQHYawP3yktKbq1VzZ2Ifgio_bnR9amQeTHo,5688
|
|
15
|
+
voiceio/tray.py,sha256=cnE-qDBit9xcyyFqhQ_WsE3_zA_bMe1MP9Cze1fboIc,1243
|
|
16
|
+
voiceio/wizard.py,sha256=69nDNibDxAKpzvLv9yjJdsfsOJsPBxpwScR5-w72DIk,33131
|
|
17
|
+
voiceio/worker.py,sha256=3FR2zD71PBtvi238CKDwfuEz4s5vahT4iBZxKBPJsiA,1255
|
|
18
|
+
voiceio/hotkeys/__init__.py,sha256=rGXSGZLD2mS_Ep2HfVdRdkUKNr4xagySlL1FM00cYgk,735
|
|
19
|
+
voiceio/hotkeys/base.py,sha256=L3iBh368sjWpt64JZpocH9DibYEZ0V16-rYflLYbpZY,699
|
|
20
|
+
voiceio/hotkeys/chain.py,sha256=bqV4lCc26CrqbmssZi0Kjf-QlzjqCNspNCreqiW9TZw,2754
|
|
21
|
+
voiceio/hotkeys/evdev.py,sha256=VXJoR81YQxYFyWPU_7J-cm381mW1Zgauy9hJkn7A0wY,4935
|
|
22
|
+
voiceio/hotkeys/pynput_backend.py,sha256=r93daJnONWyMfiaSK1hY-HiySnVIDoCfpn2CH54mo4k,2686
|
|
23
|
+
voiceio/hotkeys/socket_backend.py,sha256=d0B5P_u4XY9sI9dt4Z1mFsLLzmZW--HJVol5CRmsdP0,2456
|
|
24
|
+
voiceio/ibus/__init__.py,sha256=12n0pSsb1ZPE1kkscDFmcQjZzovC8zrAnmYbvIuv1AI,284
|
|
25
|
+
voiceio/ibus/engine.py,sha256=EZfixCUhCrUffumMceUCxOJQk-lFBD8MuXAyJ9ARX58,7775
|
|
26
|
+
voiceio/sounds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
voiceio/sounds/commit.wav,sha256=waDP8i7xL9iQ98f1Rg5buCC-LSlZdQrGhc16EyMOzNQ,18120
|
|
28
|
+
voiceio/sounds/start.wav,sha256=GgF_jPjNP5vJNDxBodZGGlmnfsojPSHF0Hkl1OECPro,10628
|
|
29
|
+
voiceio/sounds/stop.wav,sha256=lDCRuS-UtxaUIzhod32a5ojBSYQ2qR9ylh3KTchdvV4,10628
|
|
30
|
+
voiceio/typers/__init__.py,sha256=lFIMEjfPGw8tfYGELhsq0mYM849uKLx_SZhbHqGJrlo,1071
|
|
31
|
+
voiceio/typers/base.py,sha256=VVMgARlpaSVqen-zFUssnbUMYDrWryacRE8MKvlLk-s,1180
|
|
32
|
+
voiceio/typers/chain.py,sha256=642xaHkcYELvpNeoKq2BPUNECDxWnvwKoFiDDPvFwrY,2907
|
|
33
|
+
voiceio/typers/clipboard.py,sha256=VaCz6J0DipUORWvlmI7-uqelS3i1tL6tgn17J16T8mU,4193
|
|
34
|
+
voiceio/typers/ibus.py,sha256=stFpjHUOFBCOWd7y7FZ4zCxv2UsWDT05nftg-Q2RWsY,13741
|
|
35
|
+
voiceio/typers/pynput_type.py,sha256=4EYTUO7d87RHUilZ-idoFi94IRGEzDcmaB73s9ZZRFw,1441
|
|
36
|
+
voiceio/typers/wtype.py,sha256=hMYWRmObCbKJh_LlK8mZ9vcdbiDY9TNSpjfnuqCG38Q,1737
|
|
37
|
+
voiceio/typers/xdotool.py,sha256=7xQOumjQQ81dHmSbj-qFnrxYt6f4-B6Ssn1CWTU1nMk,1307
|
|
38
|
+
voiceio/typers/ydotool.py,sha256=D3s90EQIHIbOYb19_QIpOa_uzfhknxNRS0wjJjZf-0M,3679
|
|
39
|
+
python_voiceio-0.2.0.dist-info/METADATA,sha256=vtOkzLyVS-1k5O0XhR73ocxjH9Zgpppo7pjUubKVC9g,11147
|
|
40
|
+
python_voiceio-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
41
|
+
python_voiceio-0.2.0.dist-info/entry_points.txt,sha256=BlApaBhSRQHEAJU5RHUeTo7zSooEJPB2BPBcxr0uyLs,210
|
|
42
|
+
python_voiceio-0.2.0.dist-info/top_level.txt,sha256=piwtn309lD6uexQyXdZ-efAVBJF9y6Wfr48Z-8zkNhg,8
|
|
43
|
+
python_voiceio-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Hugo Montenegro
|
|
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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
voiceio
|
voiceio/__init__.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.0"
|
voiceio/__main__.py
ADDED