claude-voice 1.5.9 → 1.5.11
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 +62 -10
- package/config/default.json +1 -1
- package/dist/wake-word/picovoice-detector.d.ts +1 -0
- package/dist/wake-word/picovoice-detector.d.ts.map +1 -1
- package/dist/wake-word/picovoice-detector.js +34 -10
- package/dist/wake-word/picovoice-detector.js.map +1 -1
- package/package.json +1 -1
- package/scripts/postinstall.js +61 -17
package/README.md
CHANGED
|
@@ -18,7 +18,21 @@
|
|
|
18
18
|
npm install -g claude-voice
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
That's it. The extension auto-installs hooks and starts with Claude Code. Say **"Hey Jarvis"** and speak your command.
|
|
21
|
+
That's it. The extension auto-installs hooks, downloads speech models, and starts with Claude Code. Say **"Hey Jarvis"** and speak your command.
|
|
22
|
+
|
|
23
|
+
## What Gets Installed
|
|
24
|
+
|
|
25
|
+
The postinstall script sets up everything automatically:
|
|
26
|
+
|
|
27
|
+
1. Default configuration (`~/.claude-voice/config.json`)
|
|
28
|
+
2. Claude Code hooks (session-start, stop, post-tool-use, notification)
|
|
29
|
+
3. Claude Code plugin (voice skill)
|
|
30
|
+
4. Wake word model (openWakeWord or Sherpa-ONNX KWS)
|
|
31
|
+
5. **STT model** — Whisper Small (~488MB) for high-accuracy speech recognition
|
|
32
|
+
6. **TTS voice** — Piper neural voice (`en_US-joe-medium`, ~50MB)
|
|
33
|
+
7. Audio tools check (sox, afplay, etc.)
|
|
34
|
+
|
|
35
|
+
Total download: ~1GB on first install. All models run locally — no API keys needed.
|
|
22
36
|
|
|
23
37
|
## Why Claude Voice?
|
|
24
38
|
|
|
@@ -26,10 +40,12 @@ That's it. The extension auto-installs hooks and starts with Claude Code. Say **
|
|
|
26
40
|
|
|
27
41
|
**Hear every response** — Claude doesn't just respond in text. It speaks back to you. Step away from the screen and still follow along.
|
|
28
42
|
|
|
29
|
-
**Works offline** — Local STT (Sherpa-ONNX) and local TTS (Piper
|
|
43
|
+
**Works offline** — Local STT (Whisper Small via Sherpa-ONNX) and local TTS (Piper neural voice) mean zero API calls, zero latency, zero cost. Your voice data never leaves your machine.
|
|
30
44
|
|
|
31
45
|
**5 TTS providers, 3 STT providers** — Choose the quality/cost/privacy balance that works for you. From free local voices to premium OpenAI and ElevenLabs.
|
|
32
46
|
|
|
47
|
+
**Custom wake words** — Train your own Picovoice keyword model and drop the `.ppn` file in `~/.claude-voice/models/`. Say "Hey Claude" instead of "Hey Jarvis".
|
|
48
|
+
|
|
33
49
|
**Tool announcements** — Hear "Build completed", "Tests passed", "File written" while you're making coffee. Know what Claude is doing without watching the screen.
|
|
34
50
|
|
|
35
51
|
**Multi-language** — Speak in English, Turkish, German, French, Spanish, Japanese, Chinese, and more. Change with one command: `claude-voice config set stt.language=tr`
|
|
@@ -47,9 +63,9 @@ The extension integrates via Claude Code hooks: auto-start on session, speak res
|
|
|
47
63
|
|
|
48
64
|
| | Local (Free) | Cloud |
|
|
49
65
|
|---|---|---|
|
|
50
|
-
| **TTS** | macOS Say,
|
|
51
|
-
| **STT** | Sherpa-ONNX Whisper | OpenAI Whisper |
|
|
52
|
-
| **Wake Word** | openWakeWord, Sherpa-ONNX | Picovoice |
|
|
66
|
+
| **TTS** | Piper (default), macOS Say, espeak | OpenAI, ElevenLabs |
|
|
67
|
+
| **STT** | Sherpa-ONNX Whisper Small (default) | OpenAI Whisper |
|
|
68
|
+
| **Wake Word** | openWakeWord (default), Sherpa-ONNX | Picovoice |
|
|
53
69
|
|
|
54
70
|
**Quick presets:**
|
|
55
71
|
|
|
@@ -59,6 +75,33 @@ claude-voice openai # Cloud TTS + STT (requires API key)
|
|
|
59
75
|
claude-voice local --download # Piper TTS + larger Whisper model (offline)
|
|
60
76
|
```
|
|
61
77
|
|
|
78
|
+
## Wake Word
|
|
79
|
+
|
|
80
|
+
### Default: openWakeWord
|
|
81
|
+
Works out of the box. Say **"Hey Jarvis"** to activate.
|
|
82
|
+
|
|
83
|
+
### Picovoice (best accuracy)
|
|
84
|
+
Picovoice offers 97%+ keyword detection accuracy with custom wake words.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
claude-voice picovoice --key YOUR_ACCESS_KEY
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Get a free access key at [console.picovoice.ai](https://console.picovoice.ai/).
|
|
91
|
+
|
|
92
|
+
### Custom Wake Words (Picovoice)
|
|
93
|
+
Train a custom keyword at [Picovoice Console](https://console.picovoice.ai/), download the `.ppn` file, and place it in `~/.claude-voice/models/`:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Example: use "Hey Claude" as wake word
|
|
97
|
+
cp hey-claude_en_mac_v3_0_0.ppn ~/.claude-voice/models/hey-claude.ppn
|
|
98
|
+
claude-voice config set wakeWord.provider=picovoice
|
|
99
|
+
claude-voice config set wakeWord.keyword=hey-claude
|
|
100
|
+
claude-voice restart
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The detector searches for `<keyword>.ppn` in `~/.claude-voice/models/` first, then falls back to Picovoice built-in keywords (jarvis, alexa, computer, etc.).
|
|
104
|
+
|
|
62
105
|
## Configuration
|
|
63
106
|
|
|
64
107
|
```bash
|
|
@@ -75,13 +118,15 @@ Config file: `~/.claude-voice/config.json`
|
|
|
75
118
|
|
|
76
119
|
| Option | Default | Description |
|
|
77
120
|
|--------|---------|-------------|
|
|
78
|
-
| `tts.provider` | `
|
|
79
|
-
| `tts.autoSpeak` | `
|
|
121
|
+
| `tts.provider` | `piper` | piper, macos-say, openai, elevenlabs, espeak, disabled |
|
|
122
|
+
| `tts.autoSpeak` | `false` | Auto-speak Claude responses |
|
|
80
123
|
| `tts.maxSpeechLength` | `5000` | Max characters to speak |
|
|
81
124
|
| `stt.provider` | `sherpa-onnx` | sherpa-onnx, openai, whisper-local, disabled |
|
|
125
|
+
| `stt.sherpaOnnx.model` | `whisper-small` | whisper-tiny (75MB), whisper-base (142MB), whisper-small (488MB) |
|
|
82
126
|
| `stt.language` | `en` | Language code (en, tr, de, fr, es, ja, zh...) |
|
|
83
127
|
| `wakeWord.enabled` | `true` | Enable wake word detection |
|
|
84
128
|
| `wakeWord.provider` | `openwakeword` | openwakeword, sherpa-onnx, picovoice |
|
|
129
|
+
| `wakeWord.keyword` | `jarvis` | Wake word (or custom .ppn filename without extension) |
|
|
85
130
|
| `wakeWord.sensitivity` | `0.5` | Detection sensitivity (0.0-1.0) |
|
|
86
131
|
| `voiceOutput.enabled` | `false` | TTS-friendly response formatting |
|
|
87
132
|
| `toolTTS.enabled` | `false` | Announce tool completions |
|
|
@@ -100,6 +145,11 @@ claude-voice start / stop / restart / status
|
|
|
100
145
|
claude-voice setup # Interactive wizard
|
|
101
146
|
claude-voice doctor # Diagnose issues
|
|
102
147
|
|
|
148
|
+
# Provider Presets
|
|
149
|
+
claude-voice openai # Cloud TTS + STT
|
|
150
|
+
claude-voice local --download # Local with model downloads
|
|
151
|
+
claude-voice picovoice --key KEY # Best wake word accuracy
|
|
152
|
+
|
|
103
153
|
# Models & Voices
|
|
104
154
|
claude-voice model list / download <id> # STT models (whisper-tiny/base/small)
|
|
105
155
|
claude-voice voice list / download <id> # Piper TTS voices
|
|
@@ -120,11 +170,11 @@ claude-voice devices # List audio devices
|
|
|
120
170
|
|
|
121
171
|
| | macOS | Linux |
|
|
122
172
|
|---|---|---|
|
|
123
|
-
| TTS |
|
|
173
|
+
| TTS | Piper, Say, OpenAI, ElevenLabs | Piper, espeak, OpenAI, ElevenLabs |
|
|
124
174
|
| STT | Sherpa-ONNX, OpenAI | Sherpa-ONNX, OpenAI |
|
|
125
175
|
| Wake Word | openWakeWord, Sherpa-ONNX, Picovoice | openWakeWord, Sherpa-ONNX, Picovoice |
|
|
126
176
|
|
|
127
|
-
**Requires:** Node.js 18+, microphone access. Python 3 recommended (for openWakeWord).
|
|
177
|
+
**Requires:** Node.js 18+, microphone access. Python 3 recommended (for Piper TTS and openWakeWord).
|
|
128
178
|
|
|
129
179
|
## Troubleshooting
|
|
130
180
|
|
|
@@ -134,7 +184,9 @@ claude-voice logs # Check daemon logs
|
|
|
134
184
|
claude-voice start -f # Run in foreground for debugging
|
|
135
185
|
```
|
|
136
186
|
|
|
137
|
-
**Wake word not detecting?** Run `claude-voice openwakeword --install` for better accuracy.
|
|
187
|
+
**Wake word not detecting?** Run `claude-voice openwakeword --install` for better accuracy, or switch to Picovoice for 97%+ detection rate.
|
|
188
|
+
|
|
189
|
+
**STT not working?** Check model is installed: `claude-voice model list`. Re-download if needed: `claude-voice model download whisper-small`.
|
|
138
190
|
|
|
139
191
|
## License
|
|
140
192
|
|
package/config/default.json
CHANGED
|
@@ -13,6 +13,7 @@ export declare class PicovoiceDetector extends EventEmitter {
|
|
|
13
13
|
private recordingProcess;
|
|
14
14
|
constructor(wakeWordConfig: WakeWordConfig, recordingConfig: RecordingConfig);
|
|
15
15
|
initialize(): Promise<void>;
|
|
16
|
+
private findCustomKeywordPath;
|
|
16
17
|
start(): Promise<void>;
|
|
17
18
|
private tryPvRecorder;
|
|
18
19
|
private readFrames;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picovoice-detector.d.ts","sourceRoot":"","sources":["../../src/wake-word/picovoice-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"picovoice-detector.d.ts","sourceRoot":"","sources":["../../src/wake-word/picovoice-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAsB5D,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,gBAAgB,CAAyC;gBAErD,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe;IAMtE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CjC,OAAO,CAAC,qBAAqB;IAgBvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBd,aAAa;YAgBb,UAAU;IAkDxB,OAAO,CAAC,iBAAiB;IAqFzB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,8BAA8B;IA6BtC,OAAO,CAAC,eAAe;IAavB,IAAI,IAAI,IAAI;IAoBZ,OAAO,IAAI,IAAI;IAsBf,gBAAgB,IAAI,IAAI;IAQxB,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;CAGf"}
|
|
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.PicovoiceDetector = void 0;
|
|
37
37
|
const events_1 = require("events");
|
|
38
38
|
const child_process_1 = require("child_process");
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
39
41
|
const platform_1 = require("../platform");
|
|
40
42
|
const audio_1 = require("../utils/audio");
|
|
41
43
|
// Built-in Porcupine keywords
|
|
@@ -86,18 +88,26 @@ class PicovoiceDetector extends events_1.EventEmitter {
|
|
|
86
88
|
try {
|
|
87
89
|
// Dynamic import for picovoice
|
|
88
90
|
const { Porcupine, BuiltinKeyword } = await Promise.resolve().then(() => __importStar(require('@picovoice/porcupine-node')));
|
|
89
|
-
// Get keyword
|
|
91
|
+
// Get keyword - check for custom .ppn file first
|
|
90
92
|
const keywordLower = this.config.keyword.toLowerCase();
|
|
91
|
-
const
|
|
92
|
-
if (
|
|
93
|
-
|
|
94
|
-
console.
|
|
95
|
-
|
|
93
|
+
const customPpnPath = this.findCustomKeywordPath(keywordLower);
|
|
94
|
+
if (customPpnPath) {
|
|
95
|
+
// Use custom .ppn model file
|
|
96
|
+
console.log(`Using custom Picovoice keyword: ${customPpnPath}`);
|
|
97
|
+
this.porcupine = new Porcupine(accessKey, [customPpnPath], [this.config.sensitivity]);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Fall back to built-in keyword
|
|
101
|
+
const builtinName = BUILTIN_KEYWORDS[keywordLower];
|
|
102
|
+
if (!builtinName) {
|
|
103
|
+
console.warn(`Keyword "${this.config.keyword}" is not a built-in Porcupine keyword and no .ppn file found.`);
|
|
104
|
+
console.warn(`Available built-in: ${Object.keys(BUILTIN_KEYWORDS).join(', ')}`);
|
|
105
|
+
console.warn(`Custom .ppn files can be placed in ~/.claude-voice/models/`);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const keyword = BuiltinKeyword[builtinName];
|
|
109
|
+
this.porcupine = new Porcupine(accessKey, [keyword], [this.config.sensitivity]);
|
|
96
110
|
}
|
|
97
|
-
// Get the built-in keyword enum value
|
|
98
|
-
const keyword = BuiltinKeyword[builtinName];
|
|
99
|
-
// Create Porcupine instance
|
|
100
|
-
this.porcupine = new Porcupine(accessKey, [keyword], [this.config.sensitivity]);
|
|
101
111
|
console.log(`Picovoice detector initialized (keyword: "${this.config.keyword}")`);
|
|
102
112
|
}
|
|
103
113
|
catch (error) {
|
|
@@ -105,6 +115,20 @@ class PicovoiceDetector extends events_1.EventEmitter {
|
|
|
105
115
|
throw error;
|
|
106
116
|
}
|
|
107
117
|
}
|
|
118
|
+
findCustomKeywordPath(keyword) {
|
|
119
|
+
// Normalize keyword: "hey-claude" or "hey_claude" or "hey claude" → "hey-claude.ppn"
|
|
120
|
+
const normalized = keyword.replace(/[\s_]/g, '-');
|
|
121
|
+
const searchPaths = [
|
|
122
|
+
path.join(process.env.HOME || '', '.claude-voice', 'models', `${normalized}.ppn`),
|
|
123
|
+
path.join(__dirname, '..', '..', 'models', `${normalized}.ppn`),
|
|
124
|
+
];
|
|
125
|
+
for (const p of searchPaths) {
|
|
126
|
+
if (fs.existsSync(p)) {
|
|
127
|
+
return p;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
108
132
|
async start() {
|
|
109
133
|
if (!this.porcupine) {
|
|
110
134
|
console.warn('Picovoice detector not initialized');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picovoice-detector.js","sourceRoot":"","sources":["../../src/wake-word/picovoice-detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picovoice-detector.js","sourceRoot":"","sources":["../../src/wake-word/picovoice-detector.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/scripts/postinstall.js
CHANGED
|
@@ -7,10 +7,8 @@
|
|
|
7
7
|
* 2. Install Claude Code hooks
|
|
8
8
|
* 3. Install Claude Code plugin
|
|
9
9
|
* 4. Download keyword spotting model for wake word (19MB)
|
|
10
|
-
* 5.
|
|
11
|
-
*
|
|
12
|
-
* TTS uses native providers (macOS-say / espeak) for zero-config.
|
|
13
|
-
* STT model (whisper-tiny) downloads on first voice command.
|
|
10
|
+
* 5. Download STT model (whisper-small, ~488MB)
|
|
11
|
+
* 6. Check platform-specific audio tools
|
|
14
12
|
* Uses pure Node.js for downloads (no curl/bzip2 system dependencies)
|
|
15
13
|
*/
|
|
16
14
|
|
|
@@ -198,7 +196,7 @@ async function runSetup() {
|
|
|
198
196
|
let ttsProviderId = platform === 'darwin' ? 'macos-say' : 'espeak';
|
|
199
197
|
|
|
200
198
|
// 1. Create config directory and set up configuration
|
|
201
|
-
console.log('Step 1/
|
|
199
|
+
console.log('Step 1/7: Setting up configuration...');
|
|
202
200
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
203
201
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
204
202
|
console.log(' [✓] Created config directory');
|
|
@@ -224,7 +222,7 @@ async function runSetup() {
|
|
|
224
222
|
config.stt = config.stt || {};
|
|
225
223
|
config.stt.provider = 'sherpa-onnx';
|
|
226
224
|
config.stt.sherpaOnnx = config.stt.sherpaOnnx || {};
|
|
227
|
-
config.stt.sherpaOnnx.model = 'whisper-
|
|
225
|
+
config.stt.sherpaOnnx.model = 'whisper-small';
|
|
228
226
|
config.wakeWord = config.wakeWord || {};
|
|
229
227
|
// Smart wake word provider: prefer openWakeWord if Python 3 is available
|
|
230
228
|
const pythonCmd = hasPython3();
|
|
@@ -241,7 +239,7 @@ async function runSetup() {
|
|
|
241
239
|
}
|
|
242
240
|
|
|
243
241
|
// 2. Install Claude Code hooks
|
|
244
|
-
console.log('\nStep 2/
|
|
242
|
+
console.log('\nStep 2/7: Installing Claude Code hooks...');
|
|
245
243
|
try {
|
|
246
244
|
const settingsFile = installHooks(HOOKS_DIR);
|
|
247
245
|
console.log(' [✓] Hooks installed');
|
|
@@ -251,7 +249,7 @@ async function runSetup() {
|
|
|
251
249
|
}
|
|
252
250
|
|
|
253
251
|
// 3. Install Claude Code plugin (skill)
|
|
254
|
-
console.log('\nStep 3/
|
|
252
|
+
console.log('\nStep 3/7: Installing Claude Code plugin...');
|
|
255
253
|
try {
|
|
256
254
|
const pluginPath = installPlugin(path.join(__dirname, '..'));
|
|
257
255
|
console.log(' [✓] Plugin installed');
|
|
@@ -261,7 +259,7 @@ async function runSetup() {
|
|
|
261
259
|
}
|
|
262
260
|
|
|
263
261
|
// 4. Set up wake word detection
|
|
264
|
-
console.log('\nStep 4/
|
|
262
|
+
console.log('\nStep 4/7: Setting up wake word detection...');
|
|
265
263
|
|
|
266
264
|
// Re-read config to check which provider was selected
|
|
267
265
|
let wakeWordProvider = 'sherpa-onnx';
|
|
@@ -330,8 +328,53 @@ async function runSetup() {
|
|
|
330
328
|
console.log(' Tip: Install Python 3 + openwakeword for better wake word detection');
|
|
331
329
|
}
|
|
332
330
|
|
|
333
|
-
//
|
|
334
|
-
|
|
331
|
+
// Copy custom Picovoice .ppn keyword files to models dir
|
|
332
|
+
try {
|
|
333
|
+
const ppnSourceDir = path.join(__dirname, '..', 'models');
|
|
334
|
+
if (fs.existsSync(ppnSourceDir)) {
|
|
335
|
+
const ppnFiles = fs.readdirSync(ppnSourceDir).filter(f => f.endsWith('.ppn'));
|
|
336
|
+
if (ppnFiles.length > 0) {
|
|
337
|
+
if (!fs.existsSync(MODELS_DIR)) {
|
|
338
|
+
fs.mkdirSync(MODELS_DIR, { recursive: true });
|
|
339
|
+
}
|
|
340
|
+
for (const ppn of ppnFiles) {
|
|
341
|
+
const src = path.join(ppnSourceDir, ppn);
|
|
342
|
+
const dest = path.join(MODELS_DIR, ppn);
|
|
343
|
+
fs.copyFileSync(src, dest);
|
|
344
|
+
}
|
|
345
|
+
console.log(` [✓] Copied ${ppnFiles.length} Picovoice keyword model(s): ${ppnFiles.join(', ')}`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
} catch (err) {
|
|
349
|
+
console.log(' [!] Could not copy Picovoice keyword models:', err.message);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// 5. Download STT model (whisper-small)
|
|
353
|
+
console.log('\nStep 5/7: Downloading STT model...');
|
|
354
|
+
try {
|
|
355
|
+
const sttModelId = 'whisper-small';
|
|
356
|
+
const sttModelFolder = 'sherpa-onnx-whisper-small';
|
|
357
|
+
const sttModelUrl = 'https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/sherpa-onnx-whisper-small.tar.bz2';
|
|
358
|
+
const sttModelPath = path.join(MODELS_DIR, sttModelFolder);
|
|
359
|
+
|
|
360
|
+
if (fs.existsSync(sttModelPath)) {
|
|
361
|
+
console.log(` [✓] STT model already installed: ${sttModelId}`);
|
|
362
|
+
} else {
|
|
363
|
+
if (!fs.existsSync(MODELS_DIR)) {
|
|
364
|
+
fs.mkdirSync(MODELS_DIR, { recursive: true });
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
console.log(` Model: Whisper Small (~950MB download, ~488MB extracted)`);
|
|
368
|
+
await downloadAndExtract(sttModelUrl, MODELS_DIR, sttModelFolder, sttModelId);
|
|
369
|
+
console.log(` [✓] STT model installed: ${sttModelId}`);
|
|
370
|
+
}
|
|
371
|
+
} catch (err) {
|
|
372
|
+
console.log(' [!] Could not download STT model:', err.message);
|
|
373
|
+
console.log(' Run manually: claude-voice model download whisper-small');
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// 6. Install Piper TTS voice for high-quality speech
|
|
377
|
+
console.log('\nStep 6/7: Installing Piper TTS voice...');
|
|
335
378
|
const pythonForPiper = hasPython3();
|
|
336
379
|
if (pythonForPiper) {
|
|
337
380
|
try {
|
|
@@ -407,8 +450,8 @@ async function runSetup() {
|
|
|
407
450
|
console.log(` Using ${ttsProvider} (native TTS)`);
|
|
408
451
|
}
|
|
409
452
|
|
|
410
|
-
//
|
|
411
|
-
console.log('\nStep
|
|
453
|
+
// 7. Check platform-specific audio tools
|
|
454
|
+
console.log('\nStep 7/7: Checking audio tools...');
|
|
412
455
|
|
|
413
456
|
if (platform === 'darwin') {
|
|
414
457
|
console.log(' [✓] TTS: macOS Say (built-in)');
|
|
@@ -494,11 +537,12 @@ async function runSetup() {
|
|
|
494
537
|
}
|
|
495
538
|
}
|
|
496
539
|
|
|
497
|
-
// STT model
|
|
540
|
+
// Check STT model
|
|
541
|
+
const whisperSmall = path.join(MODELS_DIR, 'sherpa-onnx-whisper-small');
|
|
498
542
|
const whisperTiny = path.join(MODELS_DIR, 'sherpa-onnx-whisper-tiny');
|
|
499
543
|
const whisperBase = path.join(MODELS_DIR, 'sherpa-onnx-whisper-base');
|
|
500
|
-
if (!fs.existsSync(whisperTiny) && !fs.existsSync(whisperBase)) {
|
|
501
|
-
|
|
544
|
+
if (!fs.existsSync(whisperSmall) && !fs.existsSync(whisperTiny) && !fs.existsSync(whisperBase)) {
|
|
545
|
+
installationIssues.push('STT model not installed. Run: claude-voice model download whisper-small');
|
|
502
546
|
} else {
|
|
503
547
|
console.log(' [✓] STT model installed');
|
|
504
548
|
}
|
|
@@ -536,7 +580,7 @@ async function runSetup() {
|
|
|
536
580
|
console.log(' The extension will auto-start when you launch Claude Code.');
|
|
537
581
|
const ttsLabel = ttsProviderId === 'piper' ? `${ttsProvider} (neural voice: en_US-joe-medium)` : `${ttsProvider} (native)`;
|
|
538
582
|
console.log(` TTS: ${ttsLabel}`);
|
|
539
|
-
console.log(' STT: Sherpa-ONNX Whisper
|
|
583
|
+
console.log(' STT: Sherpa-ONNX Whisper Small');
|
|
540
584
|
const wakeWordName = wakeWordProvider === 'openwakeword' ? 'openWakeWord' : 'Sherpa-ONNX KWS';
|
|
541
585
|
const wakeWordPhrase = wakeWordProvider === 'openwakeword' ? 'Hey Jarvis' : 'Jarvis';
|
|
542
586
|
console.log(` Wake Word: ${wakeWordName} - Say "${wakeWordPhrase}" to start speaking.\n`);
|