agentvibes 5.6.8 → 5.6.9
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/.agentvibes/LITE-MODE.md +236 -0
- package/.agentvibes/README.md +136 -0
- package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +141 -0
- package/.agentvibes/backups/agents/analyst_20260204_144958.md +78 -0
- package/.agentvibes/backups/agents/architect_20260204_144958.md +72 -0
- package/.agentvibes/backups/agents/dev_20260204_144958.md +74 -0
- package/.agentvibes/backups/agents/pm_20260204_144958.md +72 -0
- package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +64 -0
- package/.agentvibes/backups/agents/sm_20260204_144958.md +87 -0
- package/.agentvibes/backups/agents/tea_20260204_144958.md +79 -0
- package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +82 -0
- package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +80 -0
- package/.agentvibes/config/README-personality-defaults.md +162 -0
- package/.agentvibes/config/agentvibes.json +1 -0
- package/.agentvibes/config/mode.txt +1 -0
- package/.agentvibes/config/personality-voice-defaults.default.json +21 -0
- package/.agentvibes/config/save-audio.txt +1 -0
- package/.agentvibes/config/voice-metadata.json +160 -0
- package/.agentvibes/config.json +38 -1
- package/.agentvibes/hooks/help.sh +191 -0
- package/.agentvibes/hooks/post-tool-use-lite.sh +111 -0
- package/.agentvibes/hooks/save-audio-manager.sh +162 -0
- package/.agentvibes/hooks/session-start-full-optimized.sh +102 -0
- package/.agentvibes/hooks/session-start-full.sh +142 -0
- package/.agentvibes/hooks/session-start-lite-v2.sh +34 -0
- package/.agentvibes/hooks/session-start-lite.sh +29 -0
- package/.agentvibes/hooks/stop-lite.sh +115 -0
- package/.agentvibes/hooks/switch-mode.sh +215 -0
- package/.agentvibes/output-styles/audio-summary.md +30 -0
- package/.claude/audio/voice-samples/piper/alan.wav +0 -0
- package/.claude/audio/voice-samples/piper/amy.wav +0 -0
- package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
- package/.claude/audio/voice-samples/piper/joe.wav +0 -0
- package/.claude/audio/voice-samples/piper/john.wav +0 -0
- package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
- package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
- package/.claude/audio/voice-samples/piper/linda.wav +0 -0
- package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
- package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
- package/.claude/commands/agent-vibes/provider.md +0 -0
- package/.claude/commands/agent-vibes-bmad-voices.md +117 -117
- package/.claude/commands/agent-vibes-rdp.md +24 -24
- package/.claude/config/audio-effects.cfg +1 -1
- package/.claude/config/background-music-position.txt +8 -7
- package/.claude/config/reverb-level.txt +0 -0
- package/.claude/docs/TERMUX_SETUP.md +408 -408
- package/.claude/hooks/audio-cache-utils.sh +0 -0
- package/.claude/hooks/audio-processor.sh +0 -0
- package/.claude/hooks/background-music-manager.sh +0 -0
- package/.claude/hooks/bmad-party-manager.sh +225 -0
- package/.claude/hooks/bmad-party-speak.sh +0 -0
- package/.claude/hooks/bmad-speak-enhanced.sh +0 -0
- package/.claude/hooks/bmad-speak.sh +0 -0
- package/.claude/hooks/bmad-tts-injector.sh +0 -0
- package/.claude/hooks/bmad-voice-manager.sh +0 -0
- package/.claude/hooks/clawdbot-receiver-SECURE.sh +0 -0
- package/.claude/hooks/clawdbot-receiver.sh +0 -0
- package/.claude/hooks/clean-audio-cache.sh +0 -0
- package/.claude/hooks/cleanup-cache.sh +0 -0
- package/.claude/hooks/configure-rdp-mode.sh +0 -0
- package/.claude/hooks/download-extra-voices.sh +0 -0
- package/.claude/hooks/effects-manager.sh +0 -0
- package/.claude/hooks/github-star-reminder.sh +0 -0
- package/.claude/hooks/language-manager.sh +0 -0
- package/.claude/hooks/learn-manager.sh +0 -0
- package/.claude/hooks/macos-voice-manager.sh +0 -0
- package/.claude/hooks/migrate-background-music.sh +0 -0
- package/.claude/hooks/migrate-to-agentvibes.sh +0 -0
- package/.claude/hooks/optimize-background-music.sh +0 -0
- package/.claude/hooks/path-resolver.sh +0 -0
- package/.claude/hooks/personality-manager.sh +0 -0
- package/.claude/hooks/piper-download-voices.sh +0 -0
- package/.claude/hooks/piper-installer.sh +0 -0
- package/.claude/hooks/piper-multispeaker-registry.sh +0 -0
- package/.claude/hooks/piper-voice-manager.sh +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver-for-voiceless-connections.sh +0 -0
- package/.claude/hooks/play-tts-enhanced.sh +0 -0
- package/.claude/hooks/play-tts-macos.sh +0 -0
- package/.claude/hooks/play-tts-piper.sh +1 -1
- package/.claude/hooks/play-tts-soprano.sh +0 -0
- package/.claude/hooks/play-tts-ssh-remote.sh +0 -0
- package/.claude/hooks/play-tts-termux-ssh.sh +0 -0
- package/.claude/hooks/play-tts-windows-receiver.sh +0 -0
- package/.claude/hooks/play-tts.sh +4 -0
- package/.claude/hooks/post-response.sh +41 -0
- package/.claude/hooks/prepare-release.sh +0 -0
- package/.claude/hooks/provider-commands.sh +0 -0
- package/.claude/hooks/provider-manager.sh +0 -0
- package/.claude/hooks/replay-target-audio.sh +0 -0
- package/.claude/hooks/sentiment-manager.sh +0 -0
- package/.claude/hooks/session-start-tts.sh +0 -0
- package/.claude/hooks/soprano-gradio-synth.py +0 -0
- package/.claude/hooks/speed-manager.sh +0 -0
- package/.claude/hooks/stop-tts.sh +0 -0
- package/.claude/hooks/stop.sh +63 -0
- package/.claude/hooks/termux-installer.sh +0 -0
- package/.claude/hooks/translate-manager.sh +0 -0
- package/.claude/hooks/translator.py +0 -0
- package/.claude/hooks/tts-queue-worker.sh +0 -0
- package/.claude/hooks/tts-queue.sh +0 -0
- package/.claude/hooks/verbosity-manager.sh +0 -0
- package/.claude/hooks/voice-manager.sh +0 -0
- package/.claude/hooks-windows/audio-cache-utils.ps1 +119 -119
- package/.claude/piper-voices-dir.txt +1 -0
- package/.clawdbot/README.md +105 -105
- package/.mcp.json +32 -3
- package/README.md +12 -2
- package/RELEASE_NOTES.md +29 -0
- package/WINDOWS-SETUP.md +208 -208
- package/bin/agent-vibes +0 -0
- package/bin/agentvibes-voice-browser.js +59 -4
- package/bin/agentvibes.js +0 -0
- package/bin/ensure-soprano-running.sh +43 -0
- package/bin/mcp-server.js +121 -121
- package/bin/mcp-server.sh +0 -0
- package/bin/test-bmad-pr +78 -78
- package/mcp-server/QUICK_START.md +203 -203
- package/mcp-server/README.md +345 -345
- package/mcp-server/WINDOWS_SETUP.md +260 -260
- package/mcp-server/docs/troubleshooting-audio.md +313 -313
- package/mcp-server/examples/claude_desktop_config.json +11 -11
- package/mcp-server/examples/claude_desktop_config_piper.json +9 -9
- package/mcp-server/examples/custom_instructions.md +169 -169
- package/mcp-server/install-deps.js +177 -130
- package/mcp-server/server.py +1797 -1787
- package/mcp-server/test_server.py +0 -0
- package/package.json +1 -1
- package/src/console/tabs/music-tab.js +18 -2
- package/src/installer.js +0 -0
- package/templates/agentvibes-receiver.sh +0 -0
- package/templates/audio/welcome-music.mp3 +0 -0
- package/.claude/hooks/play-tts-agentvibes-receiver.sh +0 -1
package/WINDOWS-SETUP.md
CHANGED
|
@@ -1,208 +1,208 @@
|
|
|
1
|
-
# AgentVibes Windows Native Setup
|
|
2
|
-
|
|
3
|
-
This folder contains AgentVibes configured for **native Windows** (not WSL) with three TTS providers available.
|
|
4
|
-
|
|
5
|
-
## Quick Start
|
|
6
|
-
|
|
7
|
-
### 1. Open in VS Code (Native Windows)
|
|
8
|
-
|
|
9
|
-
- **File > Open Folder** > Select this folder (`agentvibes-in-windows`)
|
|
10
|
-
- Make sure you're opening in **native Windows VS Code** (not WSL remote)
|
|
11
|
-
|
|
12
|
-
### 2. Open PowerShell Terminal
|
|
13
|
-
|
|
14
|
-
- **Terminal > New Terminal**
|
|
15
|
-
- Change shell to **PowerShell** (if needed)
|
|
16
|
-
|
|
17
|
-
### 3. Run Setup
|
|
18
|
-
|
|
19
|
-
```powershell
|
|
20
|
-
.\setup-windows.ps1
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
This script will:
|
|
24
|
-
- Check PowerShell version (5.1+)
|
|
25
|
-
- Create `.claude` directories
|
|
26
|
-
- Let you choose TTS provider (Piper or SAPI)
|
|
27
|
-
- Install Piper if you choose it
|
|
28
|
-
- Download a default voice model
|
|
29
|
-
- Test TTS
|
|
30
|
-
- Configure for first use
|
|
31
|
-
|
|
32
|
-
### 4. Install Dependencies
|
|
33
|
-
|
|
34
|
-
```powershell
|
|
35
|
-
npm install
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### 5. Start Using AgentVibes
|
|
39
|
-
|
|
40
|
-
Open a Claude Code session in this project. The SessionStart hook will automatically inject TTS protocol instructions, causing Claude to speak all responses.
|
|
41
|
-
|
|
42
|
-
## TTS Providers
|
|
43
|
-
|
|
44
|
-
### Option 1: Soprano (Best Quality)
|
|
45
|
-
- **Quality**: Ultra-high (80M parameter neural model)
|
|
46
|
-
- **Voices**: Single high-quality voice (Soprano-1.1-80M)
|
|
47
|
-
- **Download**: `pip install soprano-tts`
|
|
48
|
-
- **Setup**: Start WebUI with `soprano-webui` or API with `uvicorn soprano.server:app`
|
|
49
|
-
- **Speed**: GPU-accelerated, very fast
|
|
50
|
-
- **Features**: Gradio WebUI mode, OpenAI-compatible API mode, CLI fallback
|
|
51
|
-
|
|
52
|
-
To set up Soprano:
|
|
53
|
-
```powershell
|
|
54
|
-
# Install Soprano
|
|
55
|
-
pip install soprano-tts
|
|
56
|
-
|
|
57
|
-
# Start WebUI (recommended - stays running in background)
|
|
58
|
-
soprano-webui
|
|
59
|
-
|
|
60
|
-
# Set provider
|
|
61
|
-
.\.claude\hooks-windows\provider-manager.ps1 set soprano
|
|
62
|
-
|
|
63
|
-
# Test
|
|
64
|
-
.\.claude\hooks-windows\play-tts-soprano.ps1 "Hello from Soprano"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Option 2: Windows Piper (Recommended for Offline)
|
|
68
|
-
- **Quality**: High (neural voices)
|
|
69
|
-
- **Voices**: 50+ available
|
|
70
|
-
- **Download**: ~100MB
|
|
71
|
-
- **Setup**: Automatic (run `setup-windows.ps1`)
|
|
72
|
-
- **Speed**: Offline synthesis
|
|
73
|
-
- **Features**: All AgentVibes features supported
|
|
74
|
-
|
|
75
|
-
### Option 3: Windows SAPI (Built-in, Zero Setup)
|
|
76
|
-
- **Quality**: Basic
|
|
77
|
-
- **Voices**: ~10 built-in (David, Zira, Mark)
|
|
78
|
-
- **Download**: 0 MB (no installation needed)
|
|
79
|
-
- **Setup**: Select during `setup-windows.ps1`
|
|
80
|
-
- **Speed**: Fast
|
|
81
|
-
- **Features**: Core TTS only
|
|
82
|
-
|
|
83
|
-
## Claude Code Integration
|
|
84
|
-
|
|
85
|
-
AgentVibes hooks into Claude Code via `.claude/settings.json`. The SessionStart hook runs automatically when Claude starts a session:
|
|
86
|
-
|
|
87
|
-
```json
|
|
88
|
-
{
|
|
89
|
-
"hooks": {
|
|
90
|
-
"SessionStart": [{
|
|
91
|
-
"hooks": [{
|
|
92
|
-
"type": "command",
|
|
93
|
-
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$CLAUDE_PROJECT_DIR\\.claude\\hooks-windows\\session-start-tts.ps1\""
|
|
94
|
-
}]
|
|
95
|
-
}]
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
This injects TTS protocol instructions so Claude speaks every response using the configured provider.
|
|
101
|
-
|
|
102
|
-
## Manual Commands
|
|
103
|
-
|
|
104
|
-
Test TTS manually:
|
|
105
|
-
|
|
106
|
-
```powershell
|
|
107
|
-
# Test current provider
|
|
108
|
-
.\.claude\hooks-windows\play-tts.ps1 "Hello from Windows"
|
|
109
|
-
|
|
110
|
-
# Test specific providers
|
|
111
|
-
.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "Hello SAPI"
|
|
112
|
-
.\.claude\hooks-windows\play-tts-windows-piper.ps1 "Hello Piper"
|
|
113
|
-
.\.claude\hooks-windows\play-tts-soprano.ps1 "Hello Soprano"
|
|
114
|
-
|
|
115
|
-
# List available voices
|
|
116
|
-
.\.claude\hooks-windows\voice-manager-windows.ps1 list
|
|
117
|
-
|
|
118
|
-
# Switch voice (for Piper/SAPI)
|
|
119
|
-
.\.claude\hooks-windows\voice-manager-windows.ps1 switch "en_US-lessac-high"
|
|
120
|
-
|
|
121
|
-
# List providers
|
|
122
|
-
.\.claude\hooks-windows\provider-manager.ps1 list
|
|
123
|
-
|
|
124
|
-
# Switch provider
|
|
125
|
-
.\.claude\hooks-windows\provider-manager.ps1 set soprano
|
|
126
|
-
.\.claude\hooks-windows\provider-manager.ps1 set windows-piper
|
|
127
|
-
.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Troubleshooting
|
|
131
|
-
|
|
132
|
-
### PowerShell Execution Policy Error
|
|
133
|
-
|
|
134
|
-
If you get an "execution policy" error, run:
|
|
135
|
-
|
|
136
|
-
```powershell
|
|
137
|
-
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Then try again.
|
|
141
|
-
|
|
142
|
-
### No Audio Playing
|
|
143
|
-
|
|
144
|
-
1. Check Windows volume isn't muted
|
|
145
|
-
2. Try switching to SAPI provider (zero-setup): `.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi`
|
|
146
|
-
3. Test SAPI directly: `.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "test"`
|
|
147
|
-
|
|
148
|
-
### Soprano Not Detected
|
|
149
|
-
|
|
150
|
-
1. Ensure soprano-webui is running: `soprano-webui`
|
|
151
|
-
2. Check port 7860 is accessible: `Test-NetConnection -ComputerName 127.0.0.1 -Port 7860`
|
|
152
|
-
3. Set custom port if needed: `$env:SOPRANO_PORT = "8080"` before running TTS
|
|
153
|
-
|
|
154
|
-
### Piper Installation Failed
|
|
155
|
-
|
|
156
|
-
1. Check internet connection
|
|
157
|
-
2. Run setup again: `.\setup-windows.ps1`
|
|
158
|
-
3. Or manually download from: https://github.com/rhasspy/piper/releases
|
|
159
|
-
|
|
160
|
-
### Can't Find Voice
|
|
161
|
-
|
|
162
|
-
For Piper, voices are stored in: `%USERPROFILE%\.claude\piper-voices\`
|
|
163
|
-
|
|
164
|
-
You can download additional voices with `.\download-piper-voices.ps1`.
|
|
165
|
-
|
|
166
|
-
## Architecture
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
agentvibes-in-windows/
|
|
170
|
-
├── .claude/
|
|
171
|
-
│ ├── hooks-windows/ # PowerShell TTS scripts
|
|
172
|
-
│ │ ├── play-tts.ps1 # Main router (dispatches to active provider)
|
|
173
|
-
│ │ ├── play-tts-soprano.ps1 # Soprano provider
|
|
174
|
-
│ │ ├── play-tts-windows-piper.ps1 # Piper provider
|
|
175
|
-
│ │ ├── play-tts-windows-sapi.ps1 # SAPI provider
|
|
176
|
-
│ │ ├── soprano-gradio-synth.py # Python helper for Soprano Gradio API
|
|
177
|
-
│ │ ├── provider-manager.ps1 # Provider switching
|
|
178
|
-
│ │ ├── voice-manager-windows.ps1 # Voice management
|
|
179
|
-
│ │ ├── session-start-tts.ps1 # SessionStart hook (injects TTS protocol)
|
|
180
|
-
│ │ └── audio-cache-utils.ps1 # Audio cache cleanup
|
|
181
|
-
│ ├── settings.json # Claude Code hooks config
|
|
182
|
-
│ ├── audio/ # Audio cache (auto-created)
|
|
183
|
-
│ ├── piper-voices/ # Piper voice models (auto-created)
|
|
184
|
-
│ └── tts-provider.txt # Active provider config
|
|
185
|
-
├── setup-windows.ps1 # Installation script
|
|
186
|
-
├── download-piper-voices.ps1 # Download additional Piper voices
|
|
187
|
-
└── WINDOWS-SETUP.md # This file
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## What's Different from WSL
|
|
191
|
-
|
|
192
|
-
| Feature | WSL Version | Windows Native |
|
|
193
|
-
|---------|-------------|----------------|
|
|
194
|
-
| **TTS Scripts** | Bash shell scripts (.sh) | PowerShell scripts (.ps1) |
|
|
195
|
-
| **Audio** | PulseAudio/paplay | System.Media.SoundPlayer |
|
|
196
|
-
| **Providers** | Piper, macOS, Termux, Soprano | Piper, SAPI, Soprano |
|
|
197
|
-
| **Setup** | WSL + PulseAudio config | Native Windows only |
|
|
198
|
-
| **Hook Dir** | `.claude/hooks/` | `.claude/hooks-windows/` |
|
|
199
|
-
|
|
200
|
-
## Support
|
|
201
|
-
|
|
202
|
-
- **Documentation**: https://agentvibes.org
|
|
203
|
-
- **Issues**: https://github.com/paulpreibisch/AgentVibes/issues
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
-
|
|
207
|
-
**Version**: 2.0 (Windows Native + Soprano)
|
|
208
|
-
**Last Updated**: 2026-02-11
|
|
1
|
+
# AgentVibes Windows Native Setup
|
|
2
|
+
|
|
3
|
+
This folder contains AgentVibes configured for **native Windows** (not WSL) with three TTS providers available.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### 1. Open in VS Code (Native Windows)
|
|
8
|
+
|
|
9
|
+
- **File > Open Folder** > Select this folder (`agentvibes-in-windows`)
|
|
10
|
+
- Make sure you're opening in **native Windows VS Code** (not WSL remote)
|
|
11
|
+
|
|
12
|
+
### 2. Open PowerShell Terminal
|
|
13
|
+
|
|
14
|
+
- **Terminal > New Terminal**
|
|
15
|
+
- Change shell to **PowerShell** (if needed)
|
|
16
|
+
|
|
17
|
+
### 3. Run Setup
|
|
18
|
+
|
|
19
|
+
```powershell
|
|
20
|
+
.\setup-windows.ps1
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This script will:
|
|
24
|
+
- Check PowerShell version (5.1+)
|
|
25
|
+
- Create `.claude` directories
|
|
26
|
+
- Let you choose TTS provider (Piper or SAPI)
|
|
27
|
+
- Install Piper if you choose it
|
|
28
|
+
- Download a default voice model
|
|
29
|
+
- Test TTS
|
|
30
|
+
- Configure for first use
|
|
31
|
+
|
|
32
|
+
### 4. Install Dependencies
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
npm install
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 5. Start Using AgentVibes
|
|
39
|
+
|
|
40
|
+
Open a Claude Code session in this project. The SessionStart hook will automatically inject TTS protocol instructions, causing Claude to speak all responses.
|
|
41
|
+
|
|
42
|
+
## TTS Providers
|
|
43
|
+
|
|
44
|
+
### Option 1: Soprano (Best Quality)
|
|
45
|
+
- **Quality**: Ultra-high (80M parameter neural model)
|
|
46
|
+
- **Voices**: Single high-quality voice (Soprano-1.1-80M)
|
|
47
|
+
- **Download**: `pip install soprano-tts`
|
|
48
|
+
- **Setup**: Start WebUI with `soprano-webui` or API with `uvicorn soprano.server:app`
|
|
49
|
+
- **Speed**: GPU-accelerated, very fast
|
|
50
|
+
- **Features**: Gradio WebUI mode, OpenAI-compatible API mode, CLI fallback
|
|
51
|
+
|
|
52
|
+
To set up Soprano:
|
|
53
|
+
```powershell
|
|
54
|
+
# Install Soprano
|
|
55
|
+
pip install soprano-tts
|
|
56
|
+
|
|
57
|
+
# Start WebUI (recommended - stays running in background)
|
|
58
|
+
soprano-webui
|
|
59
|
+
|
|
60
|
+
# Set provider
|
|
61
|
+
.\.claude\hooks-windows\provider-manager.ps1 set soprano
|
|
62
|
+
|
|
63
|
+
# Test
|
|
64
|
+
.\.claude\hooks-windows\play-tts-soprano.ps1 "Hello from Soprano"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Option 2: Windows Piper (Recommended for Offline)
|
|
68
|
+
- **Quality**: High (neural voices)
|
|
69
|
+
- **Voices**: 50+ available
|
|
70
|
+
- **Download**: ~100MB
|
|
71
|
+
- **Setup**: Automatic (run `setup-windows.ps1`)
|
|
72
|
+
- **Speed**: Offline synthesis
|
|
73
|
+
- **Features**: All AgentVibes features supported
|
|
74
|
+
|
|
75
|
+
### Option 3: Windows SAPI (Built-in, Zero Setup)
|
|
76
|
+
- **Quality**: Basic
|
|
77
|
+
- **Voices**: ~10 built-in (David, Zira, Mark)
|
|
78
|
+
- **Download**: 0 MB (no installation needed)
|
|
79
|
+
- **Setup**: Select during `setup-windows.ps1`
|
|
80
|
+
- **Speed**: Fast
|
|
81
|
+
- **Features**: Core TTS only
|
|
82
|
+
|
|
83
|
+
## Claude Code Integration
|
|
84
|
+
|
|
85
|
+
AgentVibes hooks into Claude Code via `.claude/settings.json`. The SessionStart hook runs automatically when Claude starts a session:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"hooks": {
|
|
90
|
+
"SessionStart": [{
|
|
91
|
+
"hooks": [{
|
|
92
|
+
"type": "command",
|
|
93
|
+
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$CLAUDE_PROJECT_DIR\\.claude\\hooks-windows\\session-start-tts.ps1\""
|
|
94
|
+
}]
|
|
95
|
+
}]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This injects TTS protocol instructions so Claude speaks every response using the configured provider.
|
|
101
|
+
|
|
102
|
+
## Manual Commands
|
|
103
|
+
|
|
104
|
+
Test TTS manually:
|
|
105
|
+
|
|
106
|
+
```powershell
|
|
107
|
+
# Test current provider
|
|
108
|
+
.\.claude\hooks-windows\play-tts.ps1 "Hello from Windows"
|
|
109
|
+
|
|
110
|
+
# Test specific providers
|
|
111
|
+
.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "Hello SAPI"
|
|
112
|
+
.\.claude\hooks-windows\play-tts-windows-piper.ps1 "Hello Piper"
|
|
113
|
+
.\.claude\hooks-windows\play-tts-soprano.ps1 "Hello Soprano"
|
|
114
|
+
|
|
115
|
+
# List available voices
|
|
116
|
+
.\.claude\hooks-windows\voice-manager-windows.ps1 list
|
|
117
|
+
|
|
118
|
+
# Switch voice (for Piper/SAPI)
|
|
119
|
+
.\.claude\hooks-windows\voice-manager-windows.ps1 switch "en_US-lessac-high"
|
|
120
|
+
|
|
121
|
+
# List providers
|
|
122
|
+
.\.claude\hooks-windows\provider-manager.ps1 list
|
|
123
|
+
|
|
124
|
+
# Switch provider
|
|
125
|
+
.\.claude\hooks-windows\provider-manager.ps1 set soprano
|
|
126
|
+
.\.claude\hooks-windows\provider-manager.ps1 set windows-piper
|
|
127
|
+
.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Troubleshooting
|
|
131
|
+
|
|
132
|
+
### PowerShell Execution Policy Error
|
|
133
|
+
|
|
134
|
+
If you get an "execution policy" error, run:
|
|
135
|
+
|
|
136
|
+
```powershell
|
|
137
|
+
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Then try again.
|
|
141
|
+
|
|
142
|
+
### No Audio Playing
|
|
143
|
+
|
|
144
|
+
1. Check Windows volume isn't muted
|
|
145
|
+
2. Try switching to SAPI provider (zero-setup): `.\.claude\hooks-windows\provider-manager.ps1 set windows-sapi`
|
|
146
|
+
3. Test SAPI directly: `.\.claude\hooks-windows\play-tts-windows-sapi.ps1 "test"`
|
|
147
|
+
|
|
148
|
+
### Soprano Not Detected
|
|
149
|
+
|
|
150
|
+
1. Ensure soprano-webui is running: `soprano-webui`
|
|
151
|
+
2. Check port 7860 is accessible: `Test-NetConnection -ComputerName 127.0.0.1 -Port 7860`
|
|
152
|
+
3. Set custom port if needed: `$env:SOPRANO_PORT = "8080"` before running TTS
|
|
153
|
+
|
|
154
|
+
### Piper Installation Failed
|
|
155
|
+
|
|
156
|
+
1. Check internet connection
|
|
157
|
+
2. Run setup again: `.\setup-windows.ps1`
|
|
158
|
+
3. Or manually download from: https://github.com/rhasspy/piper/releases
|
|
159
|
+
|
|
160
|
+
### Can't Find Voice
|
|
161
|
+
|
|
162
|
+
For Piper, voices are stored in: `%USERPROFILE%\.claude\piper-voices\`
|
|
163
|
+
|
|
164
|
+
You can download additional voices with `.\download-piper-voices.ps1`.
|
|
165
|
+
|
|
166
|
+
## Architecture
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
agentvibes-in-windows/
|
|
170
|
+
├── .claude/
|
|
171
|
+
│ ├── hooks-windows/ # PowerShell TTS scripts
|
|
172
|
+
│ │ ├── play-tts.ps1 # Main router (dispatches to active provider)
|
|
173
|
+
│ │ ├── play-tts-soprano.ps1 # Soprano provider
|
|
174
|
+
│ │ ├── play-tts-windows-piper.ps1 # Piper provider
|
|
175
|
+
│ │ ├── play-tts-windows-sapi.ps1 # SAPI provider
|
|
176
|
+
│ │ ├── soprano-gradio-synth.py # Python helper for Soprano Gradio API
|
|
177
|
+
│ │ ├── provider-manager.ps1 # Provider switching
|
|
178
|
+
│ │ ├── voice-manager-windows.ps1 # Voice management
|
|
179
|
+
│ │ ├── session-start-tts.ps1 # SessionStart hook (injects TTS protocol)
|
|
180
|
+
│ │ └── audio-cache-utils.ps1 # Audio cache cleanup
|
|
181
|
+
│ ├── settings.json # Claude Code hooks config
|
|
182
|
+
│ ├── audio/ # Audio cache (auto-created)
|
|
183
|
+
│ ├── piper-voices/ # Piper voice models (auto-created)
|
|
184
|
+
│ └── tts-provider.txt # Active provider config
|
|
185
|
+
├── setup-windows.ps1 # Installation script
|
|
186
|
+
├── download-piper-voices.ps1 # Download additional Piper voices
|
|
187
|
+
└── WINDOWS-SETUP.md # This file
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## What's Different from WSL
|
|
191
|
+
|
|
192
|
+
| Feature | WSL Version | Windows Native |
|
|
193
|
+
|---------|-------------|----------------|
|
|
194
|
+
| **TTS Scripts** | Bash shell scripts (.sh) | PowerShell scripts (.ps1) |
|
|
195
|
+
| **Audio** | PulseAudio/paplay | System.Media.SoundPlayer |
|
|
196
|
+
| **Providers** | Piper, macOS, Termux, Soprano | Piper, SAPI, Soprano |
|
|
197
|
+
| **Setup** | WSL + PulseAudio config | Native Windows only |
|
|
198
|
+
| **Hook Dir** | `.claude/hooks/` | `.claude/hooks-windows/` |
|
|
199
|
+
|
|
200
|
+
## Support
|
|
201
|
+
|
|
202
|
+
- **Documentation**: https://agentvibes.org
|
|
203
|
+
- **Issues**: https://github.com/paulpreibisch/AgentVibes/issues
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
**Version**: 2.0 (Windows Native + Soprano)
|
|
208
|
+
**Last Updated**: 2026-02-11
|
package/bin/agent-vibes
CHANGED
|
File without changes
|
|
@@ -474,6 +474,51 @@ class AgentVibesVoiceBrowser {
|
|
|
474
474
|
this.screen.render();
|
|
475
475
|
}
|
|
476
476
|
|
|
477
|
+
/**
|
|
478
|
+
* Apply audio effects (reverb, background music) via audio-processor.sh.
|
|
479
|
+
* Falls back to rawFile if the processor is unavailable or fails.
|
|
480
|
+
* @param {string} rawFile - Path to the raw piper-generated WAV
|
|
481
|
+
* @returns {Promise<string>} Path to processed WAV (or rawFile on failure)
|
|
482
|
+
*/
|
|
483
|
+
async applyEffects(rawFile) {
|
|
484
|
+
// Find audio-processor.sh relative to this script (bin/../.claude/hooks/)
|
|
485
|
+
const processorPath = path.resolve(path.join(__dirname, '..', '.claude', 'hooks', 'audio-processor.sh'));
|
|
486
|
+
|
|
487
|
+
// SECURITY: Validate path stays within the expected hooks directory
|
|
488
|
+
const hooksDir = path.resolve(path.join(__dirname, '..', '.claude', 'hooks'));
|
|
489
|
+
if (!processorPath.startsWith(hooksDir + path.sep) && processorPath !== hooksDir) {
|
|
490
|
+
return rawFile;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
if (!fsSync.existsSync(processorPath)) {
|
|
494
|
+
return rawFile;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
const processedFile = rawFile.replace(/\.wav$/, '-preview-proc.wav');
|
|
498
|
+
const env = { ...process.env, CLAUDE_PROJECT_DIR: process.cwd() };
|
|
499
|
+
|
|
500
|
+
return new Promise((resolve) => {
|
|
501
|
+
// Use 'bash' prefix so the script works even without execute permission (NPX cache)
|
|
502
|
+
const proc = spawn('bash', [processorPath, rawFile, 'llm:claude-code', processedFile, ''], {
|
|
503
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
504
|
+
env
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
proc.on('close', (code) => {
|
|
508
|
+
let stat;
|
|
509
|
+
try { stat = fsSync.statSync(processedFile); } catch { stat = null; }
|
|
510
|
+
if (code === 0 && stat && stat.size > 0) {
|
|
511
|
+
resolve(processedFile);
|
|
512
|
+
} else {
|
|
513
|
+
try { fsSync.unlinkSync(processedFile); } catch { /* ignore */ }
|
|
514
|
+
resolve(rawFile);
|
|
515
|
+
}
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
proc.on('error', () => resolve(rawFile));
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
|
|
477
522
|
async playSample(row) {
|
|
478
523
|
if (this.currentAudioProcess) {
|
|
479
524
|
try {
|
|
@@ -574,10 +619,13 @@ class AgentVibesVoiceBrowser {
|
|
|
574
619
|
}
|
|
575
620
|
}
|
|
576
621
|
|
|
622
|
+
// Apply audio effects (reverb, background music) before playback
|
|
623
|
+
const playFile = await this.applyEffects(outputFile);
|
|
624
|
+
|
|
577
625
|
const players = [
|
|
578
|
-
{ cmd: 'aplay', args: [
|
|
579
|
-
{ cmd: 'paplay', args: [
|
|
580
|
-
{ cmd: 'ffplay', args: ['-nodisp', '-autoexit',
|
|
626
|
+
{ cmd: 'aplay', args: [playFile] },
|
|
627
|
+
{ cmd: 'paplay', args: [playFile] },
|
|
628
|
+
{ cmd: 'ffplay', args: ['-nodisp', '-autoexit', playFile] }
|
|
581
629
|
];
|
|
582
630
|
|
|
583
631
|
for (const player of players) {
|
|
@@ -592,14 +640,21 @@ class AgentVibesVoiceBrowser {
|
|
|
592
640
|
if (this.currentAudioProcess === audioProcess) {
|
|
593
641
|
this.currentAudioProcess = null;
|
|
594
642
|
}
|
|
643
|
+
// Clean up processed preview file (not the cached raw file)
|
|
644
|
+
if (playFile !== outputFile) {
|
|
645
|
+
try { fsSync.unlinkSync(playFile); } catch { /* ignore */ }
|
|
646
|
+
}
|
|
595
647
|
this.statusBar.setContent(`{green-fg}✓ Played ${row.name}{/green-fg}`);
|
|
596
648
|
this.screen.render();
|
|
597
649
|
});
|
|
598
650
|
|
|
599
|
-
audioProcess.on('error', (
|
|
651
|
+
audioProcess.on('error', () => {
|
|
600
652
|
if (this.currentAudioProcess === audioProcess) {
|
|
601
653
|
this.currentAudioProcess = null;
|
|
602
654
|
}
|
|
655
|
+
if (playFile !== outputFile) {
|
|
656
|
+
try { fsSync.unlinkSync(playFile); } catch { /* ignore */ }
|
|
657
|
+
}
|
|
603
658
|
});
|
|
604
659
|
|
|
605
660
|
break;
|
package/bin/agentvibes.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Helper script to start Soprano TTS server if available
|
|
3
|
+
# Fails gracefully if Soprano is not installed
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# Check if Soprano is installed via pipx
|
|
8
|
+
if ! command -v soprano &> /dev/null; then
|
|
9
|
+
# Soprano not in PATH, exit silently
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Check if server is already running
|
|
14
|
+
if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
|
|
15
|
+
# Already running
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Try to start Soprano server
|
|
20
|
+
VENV_PATH="${HOME}/.local/share/pipx/venvs/soprano-tts"
|
|
21
|
+
|
|
22
|
+
if [ ! -d "$VENV_PATH" ]; then
|
|
23
|
+
# Soprano not installed via pipx, exit silently
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
# Start server in background
|
|
28
|
+
cd /tmp
|
|
29
|
+
nohup "${VENV_PATH}/bin/python" -m uvicorn soprano.server:app \
|
|
30
|
+
--host 127.0.0.1 \
|
|
31
|
+
--port 7860 \
|
|
32
|
+
> "${HOME}/.soprano-tts.log" 2>&1 &
|
|
33
|
+
|
|
34
|
+
# Wait a moment to see if it starts
|
|
35
|
+
sleep 2
|
|
36
|
+
|
|
37
|
+
# Check if it started successfully
|
|
38
|
+
if curl -s -m 1 http://127.0.0.1:7860/openapi.json &> /dev/null; then
|
|
39
|
+
exit 0
|
|
40
|
+
else
|
|
41
|
+
# Failed to start, but exit gracefully
|
|
42
|
+
exit 0
|
|
43
|
+
fi
|