agentvibes 3.5.0 → 3.5.2
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/.claude/hooks-windows/audio-cache-utils.ps1 +119 -0
- package/.claude/hooks-windows/play-tts-soprano.ps1 +158 -0
- package/.claude/hooks-windows/play-tts-windows-piper.ps1 +164 -0
- package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -0
- package/.claude/hooks-windows/play-tts.ps1 +266 -0
- package/.claude/hooks-windows/provider-manager.ps1 +158 -0
- package/.claude/hooks-windows/session-start-tts.ps1 +124 -0
- package/.claude/hooks-windows/soprano-gradio-synth.py +153 -0
- package/.claude/hooks-windows/voice-manager-windows.ps1 +176 -0
- package/README.md +27 -24
- package/RELEASE_NOTES.md +3 -3
- package/WINDOWS-SETUP.md +208 -0
- package/package.json +4 -1
- package/setup-windows.ps1 +747 -0
- package/.claude/output-styles/agent-vibes-windows.md +0 -194
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
#
|
|
2
|
+
# File: .claude/hooks-windows/voice-manager-windows.ps1
|
|
3
|
+
#
|
|
4
|
+
# AgentVibes - Windows Voice Management
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
param(
|
|
8
|
+
[Parameter(Position = 0)]
|
|
9
|
+
[ValidateSet('list', 'switch', 'get')]
|
|
10
|
+
[string]$Command = 'list',
|
|
11
|
+
|
|
12
|
+
[Parameter(Position = 1)]
|
|
13
|
+
[string]$VoiceName
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
$ClaudeDir = "$env:USERPROFILE\.claude"
|
|
17
|
+
$ProviderFile = "$ClaudeDir\tts-provider.txt"
|
|
18
|
+
$VoiceSapiFile = "$ClaudeDir\tts-voice-sapi.txt"
|
|
19
|
+
$VoicePiperFile = "$ClaudeDir\tts-voice-piper.txt"
|
|
20
|
+
|
|
21
|
+
# Get active provider
|
|
22
|
+
$ActiveProvider = "windows-sapi"
|
|
23
|
+
if (Test-Path $ProviderFile) {
|
|
24
|
+
$ActiveProvider = (Get-Content $ProviderFile -Raw).Trim()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Get SAPI voices
|
|
28
|
+
function Get-SAPIVoices {
|
|
29
|
+
Add-Type -AssemblyName System.Speech
|
|
30
|
+
|
|
31
|
+
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
|
|
32
|
+
$voices = @()
|
|
33
|
+
|
|
34
|
+
foreach ($voice in $synth.GetInstalledVoices()) {
|
|
35
|
+
$voices += $voice.VoiceInfo.Name
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return $voices
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Get Piper voices
|
|
42
|
+
function Get-PiperVoices {
|
|
43
|
+
$VoicesDir = "$ClaudeDir\piper-voices"
|
|
44
|
+
|
|
45
|
+
if (-not (Test-Path $VoicesDir)) {
|
|
46
|
+
return @()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
$voices = @()
|
|
50
|
+
$onnxFiles = Get-ChildItem -Path $VoicesDir -Filter "*.onnx" -ErrorAction SilentlyContinue
|
|
51
|
+
|
|
52
|
+
foreach ($file in $onnxFiles) {
|
|
53
|
+
$name = $file.BaseName
|
|
54
|
+
$voices += $name
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return $voices
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# List available voices
|
|
61
|
+
function List-Voices {
|
|
62
|
+
Write-Host ""
|
|
63
|
+
Write-Host "[VOICES] Available Voices by Provider" -ForegroundColor Cyan
|
|
64
|
+
Write-Host ""
|
|
65
|
+
|
|
66
|
+
# SAPI voices
|
|
67
|
+
Write-Host "[SAPI] Windows SAPI (Built-in):" -ForegroundColor Green
|
|
68
|
+
$sapiVoices = Get-SAPIVoices
|
|
69
|
+
|
|
70
|
+
if ($sapiVoices.Count -eq 0) {
|
|
71
|
+
Write-Host " (No voices installed)" -ForegroundColor Gray
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
$sapiVoices | ForEach-Object {
|
|
75
|
+
$marker = if ($_ -eq (Get-CurrentVoice $VoiceSapiFile)) { "*" } else { " " }
|
|
76
|
+
Write-Host " [$marker] $_" -ForegroundColor White
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Write-Host ""
|
|
81
|
+
|
|
82
|
+
# Piper voices
|
|
83
|
+
Write-Host "[PIPER] Piper (High Quality):" -ForegroundColor Green
|
|
84
|
+
$piperVoices = Get-PiperVoices
|
|
85
|
+
|
|
86
|
+
if ($piperVoices.Count -eq 0) {
|
|
87
|
+
Write-Host " (No voices downloaded - run setup-windows.ps1)" -ForegroundColor Gray
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
$piperVoices | ForEach-Object {
|
|
91
|
+
$marker = if ($_ -eq (Get-CurrentVoice $VoicePiperFile)) { "*" } else { " " }
|
|
92
|
+
Write-Host " [$marker] $_" -ForegroundColor White
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
Write-Host ""
|
|
97
|
+
Write-Host "[ACTIVE] Active Provider: $ActiveProvider" -ForegroundColor Cyan
|
|
98
|
+
Write-Host ""
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Get current voice for provider
|
|
102
|
+
function Get-CurrentVoice {
|
|
103
|
+
param([string]$VoiceFile)
|
|
104
|
+
|
|
105
|
+
if (Test-Path $VoiceFile) {
|
|
106
|
+
return (Get-Content $VoiceFile -Raw).Trim()
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return $null
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
# Switch voice
|
|
113
|
+
function Switch-Voice {
|
|
114
|
+
param([string]$NewVoice)
|
|
115
|
+
|
|
116
|
+
# Determine which provider's voice file to update
|
|
117
|
+
$VoiceFile = ""
|
|
118
|
+
$ValidVoices = @()
|
|
119
|
+
|
|
120
|
+
if ($ActiveProvider -eq "windows-sapi") {
|
|
121
|
+
$VoiceFile = $VoiceSapiFile
|
|
122
|
+
$ValidVoices = Get-SAPIVoices
|
|
123
|
+
}
|
|
124
|
+
elseif ($ActiveProvider -eq "windows-piper") {
|
|
125
|
+
$VoiceFile = $VoicePiperFile
|
|
126
|
+
$ValidVoices = Get-PiperVoices
|
|
127
|
+
}
|
|
128
|
+
elseif ($ActiveProvider -eq "soprano") {
|
|
129
|
+
Write-Host "[INFO] Soprano uses a single fixed voice (Soprano-1.1-80M)" -ForegroundColor Cyan
|
|
130
|
+
return $true
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if ($ValidVoices -notcontains $NewVoice) {
|
|
134
|
+
Write-Host "[ERROR] Voice not found: $NewVoice" -ForegroundColor Red
|
|
135
|
+
Write-Host "Available voices for ${ActiveProvider}:" -ForegroundColor Yellow
|
|
136
|
+
$ValidVoices | ForEach-Object { Write-Host " - $_" }
|
|
137
|
+
return $false
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
Set-Content -Path $VoiceFile -Value $NewVoice
|
|
141
|
+
Write-Host "[OK] Voice set to: $NewVoice" -ForegroundColor Green
|
|
142
|
+
return $true
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
# Show current voice
|
|
146
|
+
function Show-CurrentVoice {
|
|
147
|
+
$VoiceFile = if ($ActiveProvider -eq "windows-sapi") { $VoiceSapiFile } else { $VoicePiperFile }
|
|
148
|
+
$CurrentVoice = Get-CurrentVoice $VoiceFile
|
|
149
|
+
|
|
150
|
+
if ($CurrentVoice) {
|
|
151
|
+
Write-Host "[VOICE] Current voice: $CurrentVoice ($ActiveProvider)" -ForegroundColor Cyan
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
Write-Host "[VOICE] Using default voice ($ActiveProvider)" -ForegroundColor Cyan
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
# Main command routing
|
|
159
|
+
switch ($Command) {
|
|
160
|
+
'list' {
|
|
161
|
+
List-Voices
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
'switch' {
|
|
165
|
+
if (-not $VoiceName) {
|
|
166
|
+
Write-Host "[ERROR] Voice name required" -ForegroundColor Red
|
|
167
|
+
List-Voices
|
|
168
|
+
exit 1
|
|
169
|
+
}
|
|
170
|
+
Switch-Voice $VoiceName | Out-Null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
'get' {
|
|
174
|
+
Show-CurrentVoice
|
|
175
|
+
}
|
|
176
|
+
}
|
package/README.md
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
>
|
|
5
5
|
> 🌐 **[agentvibes.org](https://agentvibes.org)**
|
|
6
6
|
>
|
|
7
|
-
> Professional text-to-speech for **Claude Code**, **Claude Desktop**, **Warp Terminal**, and **OpenClaw** - **Piper TTS (Free!)
|
|
7
|
+
> Professional text-to-speech for **Claude Code**, **Claude Desktop**, **Warp Terminal**, and **OpenClaw** - **Soprano** (Neural), **Piper TTS** (Free!), **macOS Say** (Built-in!), or **Windows SAPI** (Zero Setup!)
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/agentvibes)
|
|
10
10
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/test.yml)
|
|
11
11
|
[](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
|
|
12
12
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
13
13
|
|
|
14
|
-
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v3.
|
|
14
|
+
**Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v3.5.2
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -40,19 +40,21 @@ Whether you're coding in Claude Code, chatting in Claude Desktop, using Warp Ter
|
|
|
40
40
|
|
|
41
41
|
### 🎯 Key Features
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
**🪟 NEW IN v3.5.2 — Native Windows Support:**
|
|
44
|
+
- 🖥️ **Windows Native TTS** - Three providers: Soprano (neural), Piper (offline), Windows SAPI (zero setup). No WSL required!
|
|
45
|
+
- 🎵 **Background Music** - 16 genre tracks (Bachata, Flamenco, Bossa Nova, City Pop, and more) mixed under voice
|
|
46
|
+
- 🎛️ **Reverb & Audio Effects** - 5 reverb levels via ffmpeg (Light, Medium, Heavy, Cathedral)
|
|
47
|
+
- 🔊 **Verbosity Control** - Choose how much Claude speaks: High, Medium, or Low
|
|
48
|
+
- 🎨 **Beautiful Installer** - PowerShell installer with figlet banner, or use `npx agentvibes install`
|
|
49
|
+
|
|
50
|
+
**⚡ v3.4.0 Highlights:**
|
|
44
51
|
- 🎤 **Soprano TTS Provider** - Ultra-fast neural TTS with 20x CPU, 2000x GPU acceleration (thanks [@nathanchase](https://github.com/nathanchase)!)
|
|
45
52
|
- 🛡️ **Security Hardening** - 9.5/10 score with comprehensive validation and timeouts
|
|
46
53
|
- 🌐 **Environment Intelligence** - PulseAudio tunnel auto-detection for SSH scenarios
|
|
47
|
-
- 🎯 **Smart Recommendations** - GPU/RAM-based provider suggestions in installer
|
|
48
|
-
|
|
49
|
-
**✨ NEW IN v3.3.0:**
|
|
50
|
-
- 📱 **AgentVibes Receiver** - Stream TTS from voiceless servers to your phone, laptop, or local machine via encrypted SSH tunnel
|
|
51
|
-
- 🌐 **Voiceless Server Support** - Generate TTS on cloud servers (AWS, GCP, Azure) and play on any device with speakers
|
|
52
54
|
|
|
53
55
|
**⚡ Core Features:**
|
|
54
56
|
- ⚡ **One-Command Install** - Get started in 30 seconds (`npx agentvibes install`)
|
|
55
|
-
- 🎭 **Multi-Provider Support** -
|
|
57
|
+
- 🎭 **Multi-Provider Support** - Soprano (neural), Piper TTS (50+ free voices), macOS Say (100+ built-in), or Windows SAPI
|
|
56
58
|
- 🎙️ **27+ Professional AI Voices** - Character voices, accents, and unique personalities
|
|
57
59
|
- 🎙️ **Verbosity Control** - Choose how much Claude speaks (LOW, MEDIUM, HIGH)
|
|
58
60
|
- 🎙️ **AgentVibes MCP** - Natural language control ("Switch to Aria voice") for Claude Code, Desktop & Warp
|
|
@@ -95,7 +97,7 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
95
97
|
- [📱 Android/Termux](#-quick-setup-android--termux-claude-code-on-your-phone) - Run Claude Code on your phone
|
|
96
98
|
- [📋 Prerequisites](#-prerequisites) - What you actually need (Node.js + optional tools)
|
|
97
99
|
- [✨ What is AgentVibes?](#-what-is-agentvibes) - Overview & key features
|
|
98
|
-
- [📰 Latest Release](#-latest-release) - v3.
|
|
100
|
+
- [📰 Latest Release](#-latest-release) - v3.5.2 - Native Windows Support with Soprano, Piper & SAPI
|
|
99
101
|
- [🪟 Windows Setup Guide for Claude Desktop](mcp-server/WINDOWS_SETUP.md) - Complete Windows installation with WSL & Python
|
|
100
102
|
|
|
101
103
|
### AgentVibes MCP (Natural Language Control)
|
|
@@ -139,25 +141,26 @@ All 50+ Piper voices AgentVibes provides are sourced from Hugging Face's open-so
|
|
|
139
141
|
|
|
140
142
|
## 📰 Latest Release
|
|
141
143
|
|
|
142
|
-
**[v3.
|
|
144
|
+
**[v3.5.2 - Native Windows Support: Soprano, Piper & SAPI Providers](https://github.com/paulpreibisch/AgentVibes/releases/tag/v3.5.2)** 🪟🎤
|
|
145
|
+
|
|
146
|
+
AgentVibes v3.5.2 delivers native Windows support with a polished PowerShell installer offering three TTS providers (Soprano neural, Piper offline, Windows SAPI), background music selection from 16 genre tracks, reverb effects via ffmpeg aecho filter, and verbosity control. The release includes 8 Windows hook scripts, MCP server platform detection for automatic .sh-to-.ps1 resolution, and 46 new unit tests. Security hardening adds path traversal prevention with regex allowlisting and path containment checks, reverb config allowlist validation, and strict mode compliance across all scripts. Cross-platform test fixes ensure the full 93-test suite passes on both Windows and Unix.
|
|
143
147
|
|
|
144
|
-
|
|
148
|
+
Install via `npx agentvibes install` or the standalone PowerShell installer (`.\setup-windows.ps1`). No WSL required!
|
|
145
149
|
|
|
146
150
|
**Key Highlights:**
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
- 🧪 **
|
|
153
|
-
-
|
|
151
|
+
- 🖥️ **Native Windows TTS** - Three providers: Soprano, Piper, and Windows SAPI. No WSL needed!
|
|
152
|
+
- 🎵 **Background Music** - 16 genre tracks (Bachata, Flamenco, Bossa Nova, City Pop, and more)
|
|
153
|
+
- 🎛️ **Reverb & Effects** - 5 reverb levels via ffmpeg aecho filter
|
|
154
|
+
- 🔊 **Verbosity Control** - High (full reasoning), Medium (key updates), Low (essential only)
|
|
155
|
+
- 🎨 **Beautiful Installer** - Figlet banner, directory explanations, provider detection
|
|
156
|
+
- 🧪 **93/93 Tests Passing** - 46 Windows + 47 cross-platform
|
|
157
|
+
- 🛡️ **Security Hardened** - Path traversal prevention, input sanitization, resource disposal
|
|
154
158
|
|
|
155
159
|
**Perfect For:**
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
- Any environment needing intelligent provider selection
|
|
160
|
+
- Windows developers wanting native TTS without WSL
|
|
161
|
+
- Teams needing zero-setup voice (Windows SAPI works out of the box)
|
|
162
|
+
- Users wanting background music and reverb effects
|
|
163
|
+
- Anyone installing via `npx agentvibes install` on Windows
|
|
161
164
|
|
|
162
165
|
💡 **Tip:** If `npx agentvibes` shows an older version or missing commands, clear your npm cache: `npm cache clean --force && npx agentvibes@latest --help`
|
|
163
166
|
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# AgentVibes Release Notes
|
|
2
2
|
|
|
3
|
-
## 📦 v3.5.
|
|
3
|
+
## 📦 v3.5.2 - Native Windows Support: Soprano, Piper & SAPI Providers
|
|
4
4
|
|
|
5
|
-
**Release Date:** February
|
|
5
|
+
**Release Date:** February 12, 2026
|
|
6
6
|
|
|
7
7
|
### 🎯 Why v3.5.0?
|
|
8
8
|
|
|
@@ -146,7 +146,7 @@ None - all changes are backward compatible. Existing Unix/macOS installations ar
|
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
149
|
-
**Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.4.1...v3.5.
|
|
149
|
+
**Full Changelog**: https://github.com/paulpreibisch/AgentVibes/compare/v3.4.1...v3.5.2
|
|
150
150
|
|
|
151
151
|
---
|
|
152
152
|
|
package/WINDOWS-SETUP.md
ADDED
|
@@ -0,0 +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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "3.5.
|
|
4
|
+
"version": "3.5.2",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code, Claude Desktop (via MCP), and Clawdbot with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
".claude/commands/agent-vibes-bmad-voices.md",
|
|
51
51
|
".claude/commands/agent-vibes-rdp.md",
|
|
52
52
|
".claude/hooks/",
|
|
53
|
+
".claude/hooks-windows/",
|
|
53
54
|
".claude/personalities/",
|
|
54
55
|
".claude/output-styles/",
|
|
55
56
|
".claude/audio/tracks/",
|
|
@@ -63,6 +64,8 @@
|
|
|
63
64
|
".claude/github-star-reminder.txt",
|
|
64
65
|
".clawdbot/",
|
|
65
66
|
".mcp.json",
|
|
67
|
+
"setup-windows.ps1",
|
|
68
|
+
"WINDOWS-SETUP.md",
|
|
66
69
|
"README.md",
|
|
67
70
|
"RELEASE_NOTES.md",
|
|
68
71
|
"LICENSE",
|