๐ญ Terminal Session Voice Mapping
October 1, 2025 ยท View on GitHub
Each Terminal Keeper session now has its own unique voice for easy audio identification!
๐ค How Dynamic Voice Assignment Works
The hook automatically reads your .vscode/sessions.json file and assigns voices to sessions dynamically:
- Automatic Detection: Reads current Terminal Keeper sessions from
.vscode/sessions.json - Dynamic Assignment: Assigns voices to sessions in order (first session gets first voice, etc.)
- Consistent Mapping: The same session always gets the same voice (as long as session order doesn't change)
- Adaptive: Automatically handles new sessions or session changes
๐ฏ Example Voice Assignment
If your .vscode/sessions.json contains these sessions:
{
"active": "default",
"sessions": {
"default": [
{"name": "SageDev 1", "cwd": "..."},
{"name": "SageDev 2", "cwd": "..."},
{"name": "WSL SageDev", "cwd": "..."},
{"name": "TypeScript", "cwd": "..."},
{"name": "Frontend", "cwd": "..."}
]
}
}
The voices will be assigned automatically:
- SageDev 1 โ Voice 1 (
zYcjlYFOd3taleS0gkk3) - SageDev 2 โ Voice 2 (
ruirxsoakN0GWmGNIo04) - WSL SageDev โ Voice 3 (
DGzg6RaUqxGRTHSBjfgF) - TypeScript โ Voice 4 (
vfaqCOvlrKi4Zp7C2IAm) - Frontend โ Voice 5 (
KTPVrSVAEUSJRClDzBw7)
โ ๏ธ Important Note
The example voice IDs provided are custom/personal voices from an ElevenLabs account. They may not be available in the public voice library, which means:
- Personal Use: These voices are likely from a personal ElevenLabs account
- Custom Voices: They might be voice clones or premium voices
- Account Specific: Other users will need to replace these with their own voice IDs
๐ง For Other Users
Replace the voice IDs in the availableVoiceIds array with your own ElevenLabs voice IDs:
availableVoiceIds: [
'your-voice-id-1', // Will be assigned to first session
'your-voice-id-2', // Will be assigned to second session
'your-voice-id-3', // Will be assigned to third session
// ... add more voice IDs as needed
]
๐ How It Works
- Automatic Detection: Hook reads
.vscode/sessions.jsonto identify your current session - Voice Mapping: Each session gets its unique voice that stays consistent
- Audio Identification: You'll instantly know which session completed a task by the voice
๐ฏ Example Outputs
- SageDev 1: Your custom voice says "Session SageDev 1: Created test file successfully"
- SageDev 2: Rachel says "Session SageDev 2: Updated configuration settings"
- WSL SageDev: George says "Session WSL SageDev: Fixed authentication bug"
โ๏ธ Customization
Add New Sessions
Edit the sessionVoices mapping in hooks/stop-elevenlabs.ts:
sessionVoices: {
'Your New Session': 'voice-id-here', // Add your session
// ... existing mappings
}
Change Voice for Existing Session
Simply update the voice ID in the mapping and restart Claude Code.
Manual Override
export CLAUDE_SESSION_NAME="TypeScript"
# Now all tasks will use Daniel's British accent
๐ญ Voice Characteristics
- Custom (SageDev 1): Your personal selection
- Rachel: Clear, professional, perfect for serious tasks
- George: Calm and reassuring, great for complex operations
- Emily: Energetic and friendly, good for quick tasks
- Josh: Enthusiastic, perfect for development work
- Daniel: Distinguished British accent, ideal for TypeScript work
- Adam: Warm and approachable, great for frontend tasks
- Antoni: Balanced and versatile, perfect for backend operations
- Grace: Gentle and precise, excellent for testing feedback
๐ง Advanced Configuration
Finding New Voice IDs
- Go to ElevenLabs Voice Library
- Preview voices and find ones you like
- Copy the voice ID from the URL or API
- Add to your
sessionVoicesmapping
Personal Collection Voice IDs
- Northern Terry:
wo6udizrrtpIxWGp2qJk(eccentric & husky character from the North of England) - Grandpa Spuds Oxley:
NOpBlnGInO9m6vDvFkFC(friendly grandpa storyteller) - Ms. Walker:
DLsHlh26Ugcm6ELvS0qi(warm & caring Southern mom) - Ralf Eisend:
A9evEp8yGjv4c3WsIKuY(international audiobook speaker) - Amy:
bhJUNIXWQQ94l8eI2VUf(young and natural, relaxed and friendly) - Michael:
U1Vk2oyatMdYs096Ety7(deep and controlled British urban voice) - Jessica Anne Bogart:
flHkNRp1BlvT73UL6gyz(villain - wickedly eloquent) - Aria:
TC0Zp7WVFzhA8zpTlRqV(sexy female villain voice) - Lutz Laugh:
9yzdeviXkFddZ4Oz8Mok(chuckling and giggly character) - Dr. Von Fusion:
yjJ45q8TVCrtMhEKurxY(energetic, quirky eccentric character) - Matthew Schmitz:
0SpgpJ4D3MpHCiWdyTg3(elitist, arrogant tyrant) - Demon Monster:
vfaqCOvlrKi4Zp7C2IAm(deep demon for horror/fantasy) - Cowboy Bob:
KTPVrSVAEUSJRClDzBw7(rugged warmth, perfect for tales) - Drill Sergeant:
DGzg6RaUqxGRTHSBjfgF(harsh, commanding authority)
Now you can identify which Claude instance completed a task just by listening! ๐