claude-voice 1.4.1 → 1.5.0
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.
- package/README.md +39 -10
- package/config/default.json +13 -8
- package/dist/cli.js +849 -162
- package/dist/cli.js.map +1 -1
- package/dist/tts/index.d.ts.map +1 -1
- package/dist/tts/index.js +7 -1
- package/dist/tts/index.js.map +1 -1
- package/dist/tts/providers/espeak.d.ts +19 -0
- package/dist/tts/providers/espeak.d.ts.map +1 -0
- package/dist/tts/providers/espeak.js +59 -0
- package/dist/tts/providers/espeak.js.map +1 -0
- package/dist/wake-word/index.d.ts +3 -0
- package/dist/wake-word/index.d.ts.map +1 -1
- package/dist/wake-word/index.js +13 -1
- package/dist/wake-word/index.js.map +1 -1
- package/dist/wake-word/openwakeword-detector.d.ts +32 -8
- package/dist/wake-word/openwakeword-detector.d.ts.map +1 -1
- package/dist/wake-word/openwakeword-detector.js +271 -170
- package/dist/wake-word/openwakeword-detector.js.map +1 -1
- package/hooks/session-start.js +6 -2
- package/package.json +10 -10
- package/scripts/openwakeword-detector.py +124 -0
- package/scripts/postinstall.js +178 -261
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Voice interface for Claude Code CLI. Speak commands, hear responses.
|
|
|
14
14
|
|
|
15
15
|
- Speaks Claude's responses aloud (Text-to-Speech)
|
|
16
16
|
- Transcribes your voice commands (Speech-to-Text)
|
|
17
|
-
- Hands-free with wake word detection ("Jarvis")
|
|
17
|
+
- Hands-free with wake word detection ("Hey Jarvis")
|
|
18
18
|
- Works offline with local providers - no API keys required
|
|
19
19
|
- Deep integration with Claude Code via hooks system
|
|
20
20
|
|
|
@@ -22,11 +22,14 @@ Voice interface for Claude Code CLI. Speak commands, hear responses.
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
npm install -g claude-voice
|
|
25
|
-
claude-voice setup
|
|
26
|
-
claude-voice start
|
|
27
25
|
```
|
|
28
26
|
|
|
29
|
-
Say **"Jarvis"** followed by your command
|
|
27
|
+
That's it! The extension auto-starts when you open Claude Code. Say **"Hey Jarvis"** followed by your command.
|
|
28
|
+
|
|
29
|
+
**Upgrade voice quality:**
|
|
30
|
+
- Better TTS: `claude-voice local --download` (Piper neural voices)
|
|
31
|
+
- Best quality: `claude-voice openai` (requires API key)
|
|
32
|
+
- Customize: `claude-voice setup`
|
|
30
33
|
|
|
31
34
|
## How It Works
|
|
32
35
|
|
|
@@ -59,7 +62,7 @@ Choose local (free, offline) or cloud providers:
|
|
|
59
62
|
|------------|--------------|-------|
|
|
60
63
|
| Text-to-Speech | Piper, macOS Say, espeak | OpenAI TTS, ElevenLabs |
|
|
61
64
|
| Speech-to-Text | Sherpa-ONNX | OpenAI Whisper |
|
|
62
|
-
| Wake Word | Sherpa-ONNX | Picovoice Porcupine |
|
|
65
|
+
| Wake Word | openWakeWord, Sherpa-ONNX | Picovoice Porcupine |
|
|
63
66
|
|
|
64
67
|
<details>
|
|
65
68
|
<summary><strong>TTS Providers</strong></summary>
|
|
@@ -138,9 +141,20 @@ claude-voice config set stt.provider=openai
|
|
|
138
141
|
<details>
|
|
139
142
|
<summary><strong>Wake Word Providers</strong></summary>
|
|
140
143
|
|
|
141
|
-
###
|
|
144
|
+
### openWakeWord (Default)
|
|
145
|
+
|
|
146
|
+
Purpose-trained wake word detection with high accuracy. Requires Python 3. Installed automatically during setup.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
claude-voice openwakeword --install # Install/configure openWakeWord
|
|
150
|
+
claude-voice config set wakeWord.provider=openwakeword
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Available models: `hey_jarvis` (default), `alexa`, `hey_mycroft`, `hey_rhasspy`
|
|
154
|
+
|
|
155
|
+
### Sherpa-ONNX KWS (Fallback)
|
|
142
156
|
|
|
143
|
-
Local
|
|
157
|
+
Local keyword spotting, no Python required. Used as fallback when Python is not available.
|
|
144
158
|
|
|
145
159
|
```bash
|
|
146
160
|
claude-voice config set wakeWord.provider=sherpa-onnx
|
|
@@ -204,7 +218,7 @@ claude-voice config reset # Reset to defaults
|
|
|
204
218
|
| Option | Default | Description |
|
|
205
219
|
|--------|---------|-------------|
|
|
206
220
|
| `wakeWord.enabled` | `true` | Enable wake word detection |
|
|
207
|
-
| `wakeWord.provider` | `
|
|
221
|
+
| `wakeWord.provider` | `openwakeword` | openwakeword, sherpa-onnx, or picovoice |
|
|
208
222
|
| `wakeWord.keyword` | `jarvis` | Wake word: jarvis, claude, computer, etc. |
|
|
209
223
|
| `wakeWord.sensitivity` | `0.5` | Detection sensitivity (0.0-1.0) |
|
|
210
224
|
| `wakeWord.playSound` | `true` | Play sound on detection |
|
|
@@ -287,6 +301,14 @@ claude-voice status # Check status
|
|
|
287
301
|
claude-voice setup # Interactive setup wizard
|
|
288
302
|
claude-voice doctor # Diagnose issues
|
|
289
303
|
|
|
304
|
+
# Provider Presets (Quick Configuration)
|
|
305
|
+
claude-voice openai # Use OpenAI for TTS and STT (cloud)
|
|
306
|
+
claude-voice openai --voice nova # Specify voice (nova, alloy, echo, fable, onyx, shimmer)
|
|
307
|
+
claude-voice local # Use Piper TTS + Sherpa-ONNX STT (offline)
|
|
308
|
+
claude-voice local --download # Configure and download required models
|
|
309
|
+
claude-voice openwakeword # Switch to openWakeWord (better wake word detection)
|
|
310
|
+
claude-voice download-models # Download models for current config
|
|
311
|
+
|
|
290
312
|
# Models & Voices
|
|
291
313
|
claude-voice model list # List STT models
|
|
292
314
|
claude-voice model download <id>
|
|
@@ -315,13 +337,14 @@ Run `claude-voice --help` for all 50+ commands.
|
|
|
315
337
|
|---------|-------|-------|
|
|
316
338
|
| TTS | Piper, Say, OpenAI, ElevenLabs | Piper, espeak, OpenAI, ElevenLabs |
|
|
317
339
|
| STT | Sherpa-ONNX, OpenAI | Sherpa-ONNX, OpenAI |
|
|
318
|
-
| Wake Word | Sherpa-ONNX, Picovoice | Sherpa-ONNX, Picovoice |
|
|
340
|
+
| Wake Word | openWakeWord, Sherpa-ONNX, Picovoice | openWakeWord, Sherpa-ONNX, Picovoice |
|
|
319
341
|
| Keyboard Shortcut | Cmd+Shift+Space | Ctrl+Shift+Space |
|
|
320
342
|
| Terminal Injection | AppleScript | xdotool (X11), dotool (Wayland) |
|
|
321
343
|
|
|
322
344
|
**Requirements:**
|
|
323
345
|
- Node.js 18+
|
|
324
346
|
- Microphone access
|
|
347
|
+
- Python 3 (for openWakeWord; falls back to Sherpa-ONNX if unavailable)
|
|
325
348
|
|
|
326
349
|
## Troubleshooting
|
|
327
350
|
|
|
@@ -347,6 +370,7 @@ claude-voice config get tts.provider
|
|
|
347
370
|
```
|
|
348
371
|
|
|
349
372
|
**Wake word not detecting**
|
|
373
|
+
- Upgrade to openWakeWord: `claude-voice openwakeword --install`
|
|
350
374
|
- Check microphone permissions in System Preferences
|
|
351
375
|
- Run `claude-voice devices` to verify microphone
|
|
352
376
|
- Adjust sensitivity: `claude-voice config set wakeWord.sensitivity=0.7`
|
|
@@ -375,6 +399,12 @@ claude-voice config get tts.provider
|
|
|
375
399
|
|
|
376
400
|
## Changelog
|
|
377
401
|
|
|
402
|
+
### v1.5.0
|
|
403
|
+
- **openWakeWord as default** - Purpose-trained "Hey Jarvis" model (200K+ samples) replaces generic Sherpa-ONNX KWS for much better wake word accuracy
|
|
404
|
+
- **Smart provider detection** - Automatically uses openWakeWord when Python 3 is available, falls back to Sherpa-ONNX KWS otherwise
|
|
405
|
+
- **espeak TTS provider** - Linux native TTS support
|
|
406
|
+
- **Setup wizard upgrade** - All presets now prefer openWakeWord, Custom preset includes wake word provider choice
|
|
407
|
+
|
|
378
408
|
### v1.4.0
|
|
379
409
|
- **License change** - Switched to PolyForm Noncommercial (commercial use restricted)
|
|
380
410
|
|
|
@@ -394,7 +424,6 @@ claude-voice config get tts.provider
|
|
|
394
424
|
|
|
395
425
|
### v1.3.3
|
|
396
426
|
- **Linux support** - Full Linux platform support added
|
|
397
|
-
- **OpenWakeWord removed** - Using only sherpa-onnx for wake word detection
|
|
398
427
|
|
|
399
428
|
## Contributing
|
|
400
429
|
|
package/config/default.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
3
|
"tts": {
|
|
4
|
-
"provider": "
|
|
4
|
+
"provider": "macos-say",
|
|
5
5
|
"autoSpeak": true,
|
|
6
6
|
"maxSpeechLength": 5000,
|
|
7
7
|
"skipCodeBlocks": true,
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"provider": "sherpa-onnx",
|
|
35
35
|
"language": "en",
|
|
36
36
|
"sherpaOnnx": {
|
|
37
|
-
"model": "whisper-
|
|
37
|
+
"model": "whisper-tiny"
|
|
38
38
|
},
|
|
39
39
|
"whisperLocal": {
|
|
40
40
|
"model": "base",
|
|
@@ -46,18 +46,18 @@
|
|
|
46
46
|
},
|
|
47
47
|
"wakeWord": {
|
|
48
48
|
"enabled": true,
|
|
49
|
-
"provider": "
|
|
49
|
+
"provider": "openwakeword",
|
|
50
50
|
"keyword": "jarvis",
|
|
51
|
-
"sensitivity": 0
|
|
51
|
+
"sensitivity": 1.0,
|
|
52
52
|
"playSound": true,
|
|
53
53
|
"keywords": {
|
|
54
54
|
"jarvis": [
|
|
55
55
|
"▁JA R VI S",
|
|
56
56
|
"▁JA R V I S",
|
|
57
|
-
"J AR VI S",
|
|
58
57
|
"J A R VI S",
|
|
59
58
|
"J A R V I S",
|
|
60
|
-
"
|
|
59
|
+
"J AR V I S",
|
|
60
|
+
"J AR VI S"
|
|
61
61
|
],
|
|
62
62
|
"claude": [
|
|
63
63
|
"▁C L A U DE",
|
|
@@ -70,6 +70,11 @@
|
|
|
70
70
|
},
|
|
71
71
|
"picovoice": {
|
|
72
72
|
"accessKey": ""
|
|
73
|
+
},
|
|
74
|
+
"openwakeword": {
|
|
75
|
+
"model": "hey_jarvis",
|
|
76
|
+
"threshold": 0.5,
|
|
77
|
+
"debug": false
|
|
73
78
|
}
|
|
74
79
|
},
|
|
75
80
|
"notifications": {
|
|
@@ -124,8 +129,8 @@
|
|
|
124
129
|
"recording": {
|
|
125
130
|
"sampleRate": 16000,
|
|
126
131
|
"channels": 1,
|
|
127
|
-
"silenceThreshold":
|
|
128
|
-
"silenceAmplitude":
|
|
132
|
+
"silenceThreshold": 3500,
|
|
133
|
+
"silenceAmplitude": 300,
|
|
129
134
|
"maxDuration": 60000
|
|
130
135
|
},
|
|
131
136
|
"server": {
|