agentvibes 2.0.20 → 2.0.22
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/agents/health-coach.md +154 -0
- package/.claude/agents/motivator.md +171 -0
- package/.claude/agents/negotiator.md +97 -0
- package/.claude/commands/agent-vibes/agent-health-coach.md +15 -0
- package/.claude/commands/agent-vibes/agent-motivator.md +15 -0
- package/.claude/commands/agent-vibes/agent-negotiator.md +15 -0
- package/.claude/commands/agent-vibes/agent.md +79 -0
- package/.claude/commands/agent-vibes/commands.json +4 -0
- package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -0
- package/.claude/github-star-reminder.txt +1 -1
- package/.claude/hooks/download-extra-voices.sh +244 -0
- package/.claude/hooks/personality-manager.sh +81 -0
- package/.claude/hooks/piper-download-voices.sh +3 -93
- package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
- package/.claude/hooks/play-tts-elevenlabs.sh +5 -3
- package/.claude/hooks/play-tts-piper.sh +27 -44
- package/.claude/hooks/provider-manager.sh +24 -5
- package/.claude/hooks/speed-manager.sh +10 -12
- package/.claude/hooks/voice-manager.sh +94 -56
- package/README.md +0 -3
- package/RELEASE_NOTES.md +40 -247
- package/docs/agents.md +485 -0
- package/docs/commands.md +1 -21
- package/docs/extra-voices-implementation-summary.md +235 -0
- package/docs/voice-registration-fix.md +254 -0
- package/fix-vscode-colors.sh +88 -0
- package/fixcolors +88 -0
- package/generate-all-agent-voices.sh +174 -0
- package/generate-missing-elevenlabs-complete.sh +236 -0
- package/generate-missing-elevenlabs.sh +110 -0
- package/generate-new-voices.sh +108 -0
- package/generate-piper-agent-intros.sh +85 -0
- package/generate-provider-and-agent-intros.sh +136 -0
- package/logo/fav_icon_128x128.png +0 -0
- package/logo/fav_icon_128x128.png:Zone.Identifier +4 -0
- package/logo/logo1.webp +0 -0
- package/logo/logo1.webp:Zone.Identifier +4 -0
- package/logo/social.png +0 -0
- package/logo/social.png:Zone.Identifier +4 -0
- package/mcp-server/agentvibes.db +0 -0
- package/mcp-server/server.py +47 -14
- package/package.json +3 -3
- package/regenerate-agent-voices.sh +79 -0
- package/test/unit/provider-manager.bats +8 -5
- package/test/unit/speed-manager.bats +4 -4
- package/agentvibes.org/.claude/audio/tts-padded-1760744118.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748535.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760748676.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750748.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760750947.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752718.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760752907.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753017.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753045.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753241.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753315.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753382.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753408.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753426.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753446.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753541.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753553.mp3 +0 -0
- package/agentvibes.org/.claude/audio/tts-padded-1760753577.mp3 +0 -0
- package/agentvibes.org/.claude/commands/agent-vibes/add.md +0 -21
- package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +0 -68
- package/agentvibes.org/.claude/commands/agent-vibes/bmad.md +0 -196
- package/agentvibes.org/.claude/commands/agent-vibes/commands.json +0 -77
- package/agentvibes.org/.claude/commands/agent-vibes/get.md +0 -9
- package/agentvibes.org/.claude/commands/agent-vibes/language.md +0 -23
- package/agentvibes.org/.claude/commands/agent-vibes/learn.md +0 -67
- package/agentvibes.org/.claude/commands/agent-vibes/list.md +0 -13
- package/agentvibes.org/.claude/commands/agent-vibes/personality.md +0 -79
- package/agentvibes.org/.claude/commands/agent-vibes/preview.md +0 -17
- package/agentvibes.org/.claude/commands/agent-vibes/provider.md +0 -54
- package/agentvibes.org/.claude/commands/agent-vibes/replay-target.md +0 -14
- package/agentvibes.org/.claude/commands/agent-vibes/replay.md +0 -19
- package/agentvibes.org/.claude/commands/agent-vibes/sample.md +0 -12
- package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +0 -52
- package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +0 -47
- package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +0 -65
- package/agentvibes.org/.claude/commands/agent-vibes/set-speed.md +0 -41
- package/agentvibes.org/.claude/commands/agent-vibes/switch.md +0 -53
- package/agentvibes.org/.claude/commands/agent-vibes/target-voice.md +0 -26
- package/agentvibes.org/.claude/commands/agent-vibes/target.md +0 -30
- package/agentvibes.org/.claude/commands/agent-vibes/update.md +0 -20
- package/agentvibes.org/.claude/commands/agent-vibes/version.md +0 -10
- package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +0 -7
- package/agentvibes.org/.claude/hooks/bmad-tts-injector.sh +0 -386
- package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +0 -375
- package/agentvibes.org/.claude/hooks/check-output-style.sh +0 -60
- package/agentvibes.org/.claude/hooks/github-star-reminder.sh +0 -94
- package/agentvibes.org/.claude/hooks/language-manager.sh +0 -360
- package/agentvibes.org/.claude/hooks/learn-manager.sh +0 -443
- package/agentvibes.org/.claude/hooks/personality-manager.sh +0 -324
- package/agentvibes.org/.claude/hooks/piper-download-voices.sh +0 -133
- package/agentvibes.org/.claude/hooks/piper-installer.sh +0 -144
- package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +0 -227
- package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +0 -376
- package/agentvibes.org/.claude/hooks/play-tts-piper.sh +0 -281
- package/agentvibes.org/.claude/hooks/play-tts.sh +0 -69
- package/agentvibes.org/.claude/hooks/provider-commands.sh +0 -505
- package/agentvibes.org/.claude/hooks/provider-manager.sh +0 -248
- package/agentvibes.org/.claude/hooks/replay-target-audio.sh +0 -64
- package/agentvibes.org/.claude/hooks/sentiment-manager.sh +0 -163
- package/agentvibes.org/.claude/hooks/speed-manager.sh +0 -259
- package/agentvibes.org/.claude/hooks/voice-manager.sh +0 -477
- package/agentvibes.org/.claude/hooks/voices-config.sh +0 -33
- package/agentvibes.org/.claude/journal/2025-10-07.html +0 -373
- package/agentvibes.org/.claude/journal/index.html +0 -91
- package/agentvibes.org/.claude/output-styles/agent-vibes.md +0 -203
- package/agentvibes.org/.claude/personalities/angry.md +0 -17
- package/agentvibes.org/.claude/personalities/annoying.md +0 -17
- package/agentvibes.org/.claude/personalities/crass.md +0 -17
- package/agentvibes.org/.claude/personalities/dramatic.md +0 -17
- package/agentvibes.org/.claude/personalities/dry-humor.md +0 -53
- package/agentvibes.org/.claude/personalities/flirty.md +0 -23
- package/agentvibes.org/.claude/personalities/funny.md +0 -17
- package/agentvibes.org/.claude/personalities/grandpa.md +0 -35
- package/agentvibes.org/.claude/personalities/millennial.md +0 -17
- package/agentvibes.org/.claude/personalities/moody.md +0 -17
- package/agentvibes.org/.claude/personalities/normal.md +0 -19
- package/agentvibes.org/.claude/personalities/pirate.md +0 -17
- package/agentvibes.org/.claude/personalities/poetic.md +0 -17
- package/agentvibes.org/.claude/personalities/professional.md +0 -17
- package/agentvibes.org/.claude/personalities/robot.md +0 -17
- package/agentvibes.org/.claude/personalities/sarcastic.md +0 -41
- package/agentvibes.org/.claude/personalities/sassy.md +0 -17
- package/agentvibes.org/.claude/personalities/surfer-dude.md +0 -17
- package/agentvibes.org/.claude/personalities/zen.md +0 -17
- package/agentvibes.org/.claude/piper-voices-dir.txt +0 -1
- package/agentvibes.org/.claude/plugins/bmad-voices.md +0 -42
- package/agentvibes.org/.claude/tts-provider.txt +0 -1
- package/agentvibes.org/.mcp-minimal.json +0 -60
- package/agentvibes.org/CHANGELOG.md +0 -56
- package/agentvibes.org/README.md +0 -93
- package/agentvibes.org/app/(auth)/layout.tsx +0 -15
- package/agentvibes.org/app/(auth)/reset-password/page.tsx +0 -45
- package/agentvibes.org/app/(auth)/signin/page.tsx +0 -82
- package/agentvibes.org/app/(auth)/signup/page.tsx +0 -104
- package/agentvibes.org/app/(default)/blog/[slug]/page.tsx +0 -128
- package/agentvibes.org/app/(default)/blog/page.tsx +0 -95
- package/agentvibes.org/app/(default)/layout.tsx +0 -31
- package/agentvibes.org/app/(default)/page.tsx +0 -20
- package/agentvibes.org/app/api/hello/route.ts +0 -3
- package/agentvibes.org/app/css/additional-styles/theme.css +0 -82
- package/agentvibes.org/app/css/additional-styles/utility-patterns.css +0 -55
- package/agentvibes.org/app/css/style.css +0 -100
- package/agentvibes.org/app/layout.tsx +0 -63
- package/agentvibes.org/components/code-block.tsx +0 -27
- package/agentvibes.org/components/cta.tsx +0 -58
- package/agentvibes.org/components/features.tsx +0 -256
- package/agentvibes.org/components/hero-home.tsx +0 -133
- package/agentvibes.org/components/mdx-components.tsx +0 -128
- package/agentvibes.org/components/modal-video.tsx +0 -137
- package/agentvibes.org/components/page-illustration.tsx +0 -55
- package/agentvibes.org/components/spotlight.tsx +0 -77
- package/agentvibes.org/components/testimonials.tsx +0 -282
- package/agentvibes.org/components/ui/footer.tsx +0 -82
- package/agentvibes.org/components/ui/header.tsx +0 -68
- package/agentvibes.org/components/ui/logo.tsx +0 -10
- package/agentvibes.org/components/workflows.tsx +0 -176
- package/agentvibes.org/content/blog/discovering-new-piper-voices.mdx +0 -253
- package/agentvibes.org/content/blog/getting-started-agentvibes.mdx +0 -228
- package/agentvibes.org/content/blog/introducing-agentvibes-v2.mdx +0 -250
- package/agentvibes.org/content/blog/language-learning-with-agentvibes.mdx +0 -142
- package/agentvibes.org/content/blog/voice-personalities-guide.mdx +0 -119
- package/agentvibes.org/lib/blog.ts +0 -73
- package/agentvibes.org/next.config.js +0 -6
- package/agentvibes.org/package-lock.json +0 -4285
- package/agentvibes.org/package.json +0 -40
- package/agentvibes.org/pnpm-lock.yaml +0 -1141
- package/agentvibes.org/postcss.config.js +0 -5
- package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
- package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
- package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
- package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
- package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_0_Cori_Samuel.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_10_Steve_C.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_11_Owlivia.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_12_Paul_Hampton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_13_Jennifer_Dorr.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_14_Emily_Cripps.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_15_Martin_Clifton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_1_Kara_Shallenberg.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_2_Kristin_Hughes.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_3_Maria_Kasper.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_4_Mike_Pelton.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_5_Mark_Nelson.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_6_Michael_Scherer.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_7_James_K_White.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_8_Rose_Ibex.wav +0 -0
- package/agentvibes.org/public/audio/piper-voices/speaker_9_progressingamerica.wav +0 -0
- package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
- package/agentvibes.org/public/favicon.ico +0 -0
- package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
- package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
- package/agentvibes.org/public/images/blurred-shape-gray.svg +0 -1
- package/agentvibes.org/public/images/blurred-shape.svg +0 -1
- package/agentvibes.org/public/images/client-logo-01.svg +0 -1
- package/agentvibes.org/public/images/client-logo-02.svg +0 -1
- package/agentvibes.org/public/images/client-logo-03.svg +0 -1
- package/agentvibes.org/public/images/client-logo-04.svg +0 -1
- package/agentvibes.org/public/images/client-logo-05.svg +0 -1
- package/agentvibes.org/public/images/client-logo-06.svg +0 -1
- package/agentvibes.org/public/images/client-logo-07.svg +0 -1
- package/agentvibes.org/public/images/client-logo-08.svg +0 -1
- package/agentvibes.org/public/images/client-logo-09.svg +0 -1
- package/agentvibes.org/public/images/features.png +0 -0
- package/agentvibes.org/public/images/footer-illustration.svg +0 -1
- package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
- package/agentvibes.org/public/images/logo.svg +0 -1
- package/agentvibes.org/public/images/page-illustration.svg +0 -1
- package/agentvibes.org/public/images/secondary-illustration.svg +0 -1
- package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
- package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
- package/agentvibes.org/public/images/workflow-01.png +0 -0
- package/agentvibes.org/public/images/workflow-02.png +0 -0
- package/agentvibes.org/public/images/workflow-03.png +0 -0
- package/agentvibes.org/public/videos/video.mp4 +0 -0
- package/agentvibes.org/tsconfig.json +0 -28
- package/agentvibes.org/utils/useMasonry.tsx +0 -67
- package/agentvibes.org/utils/useMousePosition.tsx +0 -27
- package/docs/bryce-beattie-voice-licensing.md +0 -131
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Script to generate agent intro samples for ALL ElevenLabs and Piper voices
|
|
4
|
+
# This allows users to hear agent intros in any voice they select
|
|
5
|
+
|
|
6
|
+
# Check if ELEVENLABS_API_KEY is set
|
|
7
|
+
if [ -z "$ELEVENLABS_API_KEY" ]; then
|
|
8
|
+
echo "Error: ELEVENLABS_API_KEY environment variable is not set"
|
|
9
|
+
echo "Please set it with: export ELEVENLABS_API_KEY='your-key-here'"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Output directories
|
|
14
|
+
ELEVENLABS_DIR="agentvibes.org/public/audio/elevenlabs/agents"
|
|
15
|
+
PIPER_DIR="agentvibes.org/public/audio/piper-voices/agents"
|
|
16
|
+
|
|
17
|
+
mkdir -p "$ELEVENLABS_DIR"
|
|
18
|
+
mkdir -p "$PIPER_DIR"
|
|
19
|
+
|
|
20
|
+
# Voice model path for Piper
|
|
21
|
+
VOICE_MODEL_16="mcp-server/voices/16Speakers.onnx"
|
|
22
|
+
|
|
23
|
+
# Agent intro texts
|
|
24
|
+
NEGOTIATOR_TEXT="Hello, I'm your Negotiator agent, inspired by some of the proven methods from Chris Voss, former FBI lead hostage negotiator. I specialize in tactical empathy, calibrated questions, and psychological techniques that help you win negotiations. Whether you're discussing salary, closing a business deal, or navigating a difficult situation, I'll do my best to guide you through strategies from Never Split the Difference. To activate me in AgentVibes, just select the Negotiator agent and I'll help you prepare for any high-stakes conversation. Let's get you the outcome you deserve. Please note, this is an experimental feature and it's meant for entertainment purposes only."
|
|
25
|
+
|
|
26
|
+
HEALTH_COACH_TEXT="Hey there! I'm your Health Coach, inspired by the Keto Flex approach from Ben Azadi. I focus on sustainable wellness through clean ketogenic nutrition, intermittent fasting, and addressing root causes rather than just symptoms. Whether you want to lose weight, boost your energy, or improve your metabolic flexibility, I'll do my best to guide you with evidence-based protocols. Activate me in AgentVibes by selecting the Health Coach agent, and let's start your transformation. Remember, you're not broken, your metabolism just needs support. Please note, this is an experimental feature and it's meant for entertainment purposes only."
|
|
27
|
+
|
|
28
|
+
MOTIVATOR_TEXT="LISTEN UP! I'm your Motivator agent, inspired by the most powerful strategies from Tony Robbins, David Goggins, Mel Robbins, and Les Brown to help you TAKE ACTION NOW. You've got five seconds before your brain kills that idea. Five, four, three, two, one, GO! I'll do my best to use state management, the forty percent rule, and the philosophy of massive action to help destroy your limiting beliefs and get you moving. Select the Motivator agent in AgentVibes when you need someone to hold you accountable and push you past your comfort zone. Your life is happening RIGHT NOW. Stop waiting. Let's DO this! Please note, this is an experimental feature and it's meant for entertainment purposes only."
|
|
29
|
+
|
|
30
|
+
# ElevenLabs Voice IDs (from voices-config.sh)
|
|
31
|
+
declare -A ELEVENLABS_VOICES=(
|
|
32
|
+
["jessica"]="flHkNRp1BlvT73UL6gyz"
|
|
33
|
+
["drill"]="vfaqCOvlrKi4Zp7C2IAm" # Demon Monster
|
|
34
|
+
["drill-sergeant"]="DGzg6RaUqxGRTHSBjfgF"
|
|
35
|
+
["aria"]="9BWtsMINqrJLrRacOk9x"
|
|
36
|
+
["cowboy"]="KTPVrSVAEUSJRClDzBw7"
|
|
37
|
+
["dr"]="yjJ45q8TVCrtMhEKurxY"
|
|
38
|
+
["grandpa"]="MKlLqCItoCkvdhrxgtLv"
|
|
39
|
+
["michael"]="flq6f7yk4E4fJM5XTYuZ"
|
|
40
|
+
["ms"]="t0jbNlBVZ17f02VDIeMI"
|
|
41
|
+
["pirate"]="PPzYpIqttlTYA83688JI"
|
|
42
|
+
["amy"]="bhJUNIXWQQ94l8eI2VUf"
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Piper voices (speaker IDs from 16Speakers model)
|
|
46
|
+
declare -A PIPER_VOICES=(
|
|
47
|
+
["0"]="Cori"
|
|
48
|
+
["1"]="Kara"
|
|
49
|
+
["2"]="Kristin"
|
|
50
|
+
["3"]="Maria"
|
|
51
|
+
["4"]="Mike"
|
|
52
|
+
["5"]="Mark"
|
|
53
|
+
["6"]="Michael"
|
|
54
|
+
["7"]="James"
|
|
55
|
+
["8"]="Rose"
|
|
56
|
+
["9"]="Hazel"
|
|
57
|
+
["10"]="Steve"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Function to generate ElevenLabs audio
|
|
61
|
+
generate_elevenlabs_audio() {
|
|
62
|
+
local voice_id=$1
|
|
63
|
+
local voice_slug=$2
|
|
64
|
+
local agent=$3
|
|
65
|
+
local text=$4
|
|
66
|
+
local output_file="${ELEVENLABS_DIR}/${agent}-${voice_slug}.mp3"
|
|
67
|
+
|
|
68
|
+
echo " Generating: ${agent}-${voice_slug}.mp3"
|
|
69
|
+
|
|
70
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${voice_id}" \
|
|
71
|
+
-H "xi-api-key: ${ELEVENLABS_API_KEY}" \
|
|
72
|
+
-H "Content-Type: application/json" \
|
|
73
|
+
-d "{
|
|
74
|
+
\"text\": \"${text}\",
|
|
75
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
76
|
+
\"voice_settings\": {
|
|
77
|
+
\"stability\": 0.5,
|
|
78
|
+
\"similarity_boost\": 0.75
|
|
79
|
+
}
|
|
80
|
+
}" \
|
|
81
|
+
--output "$output_file"
|
|
82
|
+
|
|
83
|
+
if [ $? -eq 0 ] && [ -s "$output_file" ]; then
|
|
84
|
+
echo " ✓ Generated: ${agent}-${voice_slug}.mp3"
|
|
85
|
+
else
|
|
86
|
+
echo " ✗ Failed: ${agent}-${voice_slug}.mp3"
|
|
87
|
+
return 1
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
sleep 0.5
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# Function to generate Piper audio
|
|
94
|
+
generate_piper_audio() {
|
|
95
|
+
local speaker_id=$1
|
|
96
|
+
local speaker_name=$2
|
|
97
|
+
local agent=$3
|
|
98
|
+
local text=$4
|
|
99
|
+
local output_file="${PIPER_DIR}/${agent}-${speaker_id}.wav"
|
|
100
|
+
|
|
101
|
+
echo " Generating: ${agent}-${speaker_id}.wav (${speaker_name})"
|
|
102
|
+
|
|
103
|
+
if [ ! -f "$VOICE_MODEL_16" ]; then
|
|
104
|
+
echo " ✗ Model not found: $VOICE_MODEL_16"
|
|
105
|
+
return 1
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
echo "$text" | piper --model "$VOICE_MODEL_16" --speaker "$speaker_id" --output_file "$output_file" 2>/dev/null
|
|
109
|
+
|
|
110
|
+
if [ $? -eq 0 ]; then
|
|
111
|
+
echo " ✓ Generated: ${agent}-${speaker_id}.wav"
|
|
112
|
+
else
|
|
113
|
+
echo " ✗ Failed: ${agent}-${speaker_id}.wav"
|
|
114
|
+
return 1
|
|
115
|
+
fi
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
echo "=========================================="
|
|
119
|
+
echo "Generating Agent Voice Samples"
|
|
120
|
+
echo "=========================================="
|
|
121
|
+
echo ""
|
|
122
|
+
|
|
123
|
+
# Generate for each agent
|
|
124
|
+
for agent_slug in "negotiator" "health-coach" "motivator"; do
|
|
125
|
+
# Set agent text
|
|
126
|
+
case $agent_slug in
|
|
127
|
+
"negotiator")
|
|
128
|
+
agent_text="$NEGOTIATOR_TEXT"
|
|
129
|
+
agent_name="Negotiator"
|
|
130
|
+
;;
|
|
131
|
+
"health-coach")
|
|
132
|
+
agent_text="$HEALTH_COACH_TEXT"
|
|
133
|
+
agent_name="Health Coach"
|
|
134
|
+
;;
|
|
135
|
+
"motivator")
|
|
136
|
+
agent_text="$MOTIVATOR_TEXT"
|
|
137
|
+
agent_name="Motivator"
|
|
138
|
+
;;
|
|
139
|
+
esac
|
|
140
|
+
|
|
141
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
142
|
+
echo "Agent: $agent_name"
|
|
143
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
144
|
+
echo ""
|
|
145
|
+
|
|
146
|
+
# Generate ElevenLabs voices
|
|
147
|
+
echo "ElevenLabs Voices:"
|
|
148
|
+
echo "------------------------------------------"
|
|
149
|
+
for voice_slug in "${!ELEVENLABS_VOICES[@]}"; do
|
|
150
|
+
voice_id="${ELEVENLABS_VOICES[$voice_slug]}"
|
|
151
|
+
generate_elevenlabs_audio "$voice_id" "$voice_slug" "$agent_slug" "$agent_text"
|
|
152
|
+
done
|
|
153
|
+
|
|
154
|
+
echo ""
|
|
155
|
+
echo "Piper Voices:"
|
|
156
|
+
echo "------------------------------------------"
|
|
157
|
+
# Generate Piper voices
|
|
158
|
+
for speaker_id in "${!PIPER_VOICES[@]}"; do
|
|
159
|
+
speaker_name="${PIPER_VOICES[$speaker_id]}"
|
|
160
|
+
generate_piper_audio "$speaker_id" "$speaker_name" "$agent_slug" "$agent_text"
|
|
161
|
+
done
|
|
162
|
+
|
|
163
|
+
echo ""
|
|
164
|
+
done
|
|
165
|
+
|
|
166
|
+
echo "=========================================="
|
|
167
|
+
echo "Generation Complete!"
|
|
168
|
+
echo "=========================================="
|
|
169
|
+
echo ""
|
|
170
|
+
echo "ElevenLabs files:"
|
|
171
|
+
ls -lh "${ELEVENLABS_DIR}"/*.mp3 2>/dev/null | wc -l
|
|
172
|
+
echo ""
|
|
173
|
+
echo "Piper files:"
|
|
174
|
+
ls -lh "${PIPER_DIR}"/*.wav 2>/dev/null | wc -l
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Script to generate ALL missing ElevenLabs audio samples
|
|
4
|
+
# Usage: ./generate-missing-elevenlabs-complete.sh
|
|
5
|
+
|
|
6
|
+
# Use the API key from environment
|
|
7
|
+
if [ -z "$OCT_8_ELEVELABS_API_KEY" ]; then
|
|
8
|
+
echo "ERROR: OCT_8_ELEVELABS_API_KEY environment variable is not set"
|
|
9
|
+
echo "Run: export OCT_8_ELEVELABS_API_KEY='your-key-here'"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
OUTPUT_DIR="/home/fire/claude/AgentVibes/agentvibes.org/public/audio/elevenlabs"
|
|
14
|
+
mkdir -p "$OUTPUT_DIR"
|
|
15
|
+
|
|
16
|
+
# Define updated personality texts
|
|
17
|
+
declare -A PERSONALITY_TEXTS
|
|
18
|
+
PERSONALITY_TEXTS[sarcastic]="Oh wonderful! Even more documentation surgery. Because that's exactly what I wanted to do with my evening."
|
|
19
|
+
PERSONALITY_TEXTS[angry]="ARE YOU KIDDING ME?! Another bug in production! This is absolutely UNACCEPTABLE!"
|
|
20
|
+
PERSONALITY_TEXTS[flirty]="Well hello there, gorgeous! I've been waiting for you to ask me that. How about we tackle this together?"
|
|
21
|
+
PERSONALITY_TEXTS[pirate]="Arrr matey! Hoist the colors and prepare to set sail on this here coding adventure!"
|
|
22
|
+
PERSONALITY_TEXTS[millennial]="I literally can't even write now. This cold is giving me anxiety. I need coffee and avocado toast to deal with this. Then we select about it later."
|
|
23
|
+
PERSONALITY_TEXTS[sassy]="Oh honey, please. I've been doing this since before you even knew what a terminal was. Watch and learn."
|
|
24
|
+
PERSONALITY_TEXTS[robot]="Beeep boop. Processing request. Human emotion detected. Initiating task completion protocol. Probability of success: 99.7%."
|
|
25
|
+
PERSONALITY_TEXTS[zen]="Breathe in the bugs. Breathe out the fixes. The code flows like water. We are one with the repository. All errors are merely opportunities for growth."
|
|
26
|
+
PERSONALITY_TEXTS[dramatic]="This is the most important commit of our lives. The fate of the entire application rests upon this single line of code. Behold."
|
|
27
|
+
PERSONALITY_TEXTS[funny]="Oh. My. God. Like, this is totally the most important thing ever? I'm literally so excited right now!"
|
|
28
|
+
PERSONALITY_TEXTS[professional]="For our previous discussion, I've completed the code review and identified three actionable items for optimization. Please advise our next steps."
|
|
29
|
+
PERSONALITY_TEXTS[poetic]="The code flows eternal. Each function a verse, each variable a rhyme. We write not mere programs, but digital poetry."
|
|
30
|
+
PERSONALITY_TEXTS[moody]="I guess I'll fix this bug. Not like anyone appreciates my work anyway. Why do I even bother? *Sigh* Fine. Let's get this over with."
|
|
31
|
+
PERSONALITY_TEXTS[grandpa]="Back in my day, we didn't have all these fancy frameworks. We coded uphill both ways in the snow and we liked it."
|
|
32
|
+
PERSONALITY_TEXTS[dry_humor]="Another merge conflict. How thrilling. I can barely contain my excitement. This is exactly what I went to computer science school for."
|
|
33
|
+
|
|
34
|
+
# Define ElevenLabs voice IDs from voices-config.sh
|
|
35
|
+
declare -A VOICE_IDS
|
|
36
|
+
VOICE_IDS[cowboy]="KTPVrSVAEUSJRClDzBw7" # Cowboy Bob
|
|
37
|
+
VOICE_IDS[dr]="yjJ45q8TVCrtMhEKurxY" # Dr. Von Fusion
|
|
38
|
+
VOICE_IDS[michael]="U1Vk2oyatMdYs096Ety7" # Michael
|
|
39
|
+
VOICE_IDS[ms]="DLsHlh26Ugcm6ELvS0qi" # Ms. Walker
|
|
40
|
+
|
|
41
|
+
echo "========================================="
|
|
42
|
+
echo "ElevenLabs Missing Audio Generator"
|
|
43
|
+
echo "========================================="
|
|
44
|
+
echo ""
|
|
45
|
+
echo "Missing files to generate:"
|
|
46
|
+
echo " Cowboy: 14 files"
|
|
47
|
+
echo " Dr. Von: 14 files"
|
|
48
|
+
echo " Michael: 7 files"
|
|
49
|
+
echo " Ms. Walker: 13 files"
|
|
50
|
+
echo ""
|
|
51
|
+
echo "Total: 48 audio files"
|
|
52
|
+
echo ""
|
|
53
|
+
read -p "Continue? (y/n) " -n 1 -r
|
|
54
|
+
echo
|
|
55
|
+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
56
|
+
echo "Aborted."
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
echo ""
|
|
60
|
+
|
|
61
|
+
# All personalities (15 total, no surfer_dude)
|
|
62
|
+
ALL_PERSONALITIES="sarcastic angry flirty pirate millennial sassy robot zen dramatic funny professional poetic moody grandpa dry_humor"
|
|
63
|
+
|
|
64
|
+
# Generate Cowboy samples (missing 14)
|
|
65
|
+
echo "========================================="
|
|
66
|
+
echo "Generating Cowboy samples..."
|
|
67
|
+
echo "========================================="
|
|
68
|
+
for personality in $ALL_PERSONALITIES; do
|
|
69
|
+
OUTPUT_FILE="$OUTPUT_DIR/cowboy-${personality}.mp3"
|
|
70
|
+
|
|
71
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
72
|
+
echo "⏭️ Skipping cowboy-${personality} (already exists)"
|
|
73
|
+
continue
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
TEXT="${PERSONALITY_TEXTS[$personality]}"
|
|
77
|
+
VOICE_ID="${VOICE_IDS[cowboy]}"
|
|
78
|
+
|
|
79
|
+
echo "🎙️ Generating cowboy-${personality}..."
|
|
80
|
+
|
|
81
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
|
|
82
|
+
-H "Accept: audio/mpeg" \
|
|
83
|
+
-H "Content-Type: application/json" \
|
|
84
|
+
-H "xi-api-key: ${OCT_8_ELEVELABS_API_KEY}" \
|
|
85
|
+
-d "{
|
|
86
|
+
\"text\": \"${TEXT}\",
|
|
87
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
88
|
+
\"voice_settings\": {
|
|
89
|
+
\"stability\": 0.5,
|
|
90
|
+
\"similarity_boost\": 0.75
|
|
91
|
+
}
|
|
92
|
+
}" \
|
|
93
|
+
--output "$OUTPUT_FILE"
|
|
94
|
+
|
|
95
|
+
if [ $? -eq 0 ] && [ -f "$OUTPUT_FILE" ]; then
|
|
96
|
+
echo "✅ Generated cowboy-${personality}"
|
|
97
|
+
else
|
|
98
|
+
echo "❌ Failed to generate cowboy-${personality}"
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
sleep 0.5 # Rate limiting
|
|
102
|
+
done
|
|
103
|
+
|
|
104
|
+
echo ""
|
|
105
|
+
|
|
106
|
+
# Generate Dr. Von samples (missing 14)
|
|
107
|
+
echo "========================================="
|
|
108
|
+
echo "Generating Dr. Von samples..."
|
|
109
|
+
echo "========================================="
|
|
110
|
+
for personality in $ALL_PERSONALITIES; do
|
|
111
|
+
OUTPUT_FILE="$OUTPUT_DIR/dr-${personality}.mp3"
|
|
112
|
+
|
|
113
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
114
|
+
echo "⏭️ Skipping dr-${personality} (already exists)"
|
|
115
|
+
continue
|
|
116
|
+
fi
|
|
117
|
+
|
|
118
|
+
TEXT="${PERSONALITY_TEXTS[$personality]}"
|
|
119
|
+
VOICE_ID="${VOICE_IDS[dr]}"
|
|
120
|
+
|
|
121
|
+
echo "🎙️ Generating dr-${personality}..."
|
|
122
|
+
|
|
123
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
|
|
124
|
+
-H "Accept: audio/mpeg" \
|
|
125
|
+
-H "Content-Type: application/json" \
|
|
126
|
+
-H "xi-api-key: ${OCT_8_ELEVELABS_API_KEY}" \
|
|
127
|
+
-d "{
|
|
128
|
+
\"text\": \"${TEXT}\",
|
|
129
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
130
|
+
\"voice_settings\": {
|
|
131
|
+
\"stability\": 0.5,
|
|
132
|
+
\"similarity_boost\": 0.75
|
|
133
|
+
}
|
|
134
|
+
}" \
|
|
135
|
+
--output "$OUTPUT_FILE"
|
|
136
|
+
|
|
137
|
+
if [ $? -eq 0 ] && [ -f "$OUTPUT_FILE" ]; then
|
|
138
|
+
echo "✅ Generated dr-${personality}"
|
|
139
|
+
else
|
|
140
|
+
echo "❌ Failed to generate dr-${personality}"
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
sleep 0.5
|
|
144
|
+
done
|
|
145
|
+
|
|
146
|
+
echo ""
|
|
147
|
+
|
|
148
|
+
# Generate Michael samples (missing 7)
|
|
149
|
+
echo "========================================="
|
|
150
|
+
echo "Generating Michael samples..."
|
|
151
|
+
echo "========================================="
|
|
152
|
+
for personality in $ALL_PERSONALITIES; do
|
|
153
|
+
OUTPUT_FILE="$OUTPUT_DIR/michael-${personality}.mp3"
|
|
154
|
+
|
|
155
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
156
|
+
echo "⏭️ Skipping michael-${personality} (already exists)"
|
|
157
|
+
continue
|
|
158
|
+
fi
|
|
159
|
+
|
|
160
|
+
TEXT="${PERSONALITY_TEXTS[$personality]}"
|
|
161
|
+
VOICE_ID="${VOICE_IDS[michael]}"
|
|
162
|
+
|
|
163
|
+
echo "🎙️ Generating michael-${personality}..."
|
|
164
|
+
|
|
165
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
|
|
166
|
+
-H "Accept: audio/mpeg" \
|
|
167
|
+
-H "Content-Type: application/json" \
|
|
168
|
+
-H "xi-api-key: ${OCT_8_ELEVELABS_API_KEY}" \
|
|
169
|
+
-d "{
|
|
170
|
+
\"text\": \"${TEXT}\",
|
|
171
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
172
|
+
\"voice_settings\": {
|
|
173
|
+
\"stability\": 0.5,
|
|
174
|
+
\"similarity_boost\": 0.75
|
|
175
|
+
}
|
|
176
|
+
}" \
|
|
177
|
+
--output "$OUTPUT_FILE"
|
|
178
|
+
|
|
179
|
+
if [ $? -eq 0 ] && [ -f "$OUTPUT_FILE" ]; then
|
|
180
|
+
echo "✅ Generated michael-${personality}"
|
|
181
|
+
else
|
|
182
|
+
echo "❌ Failed to generate michael-${personality}"
|
|
183
|
+
fi
|
|
184
|
+
|
|
185
|
+
sleep 0.5
|
|
186
|
+
done
|
|
187
|
+
|
|
188
|
+
echo ""
|
|
189
|
+
|
|
190
|
+
# Generate Ms. Walker samples (missing 13)
|
|
191
|
+
echo "========================================="
|
|
192
|
+
echo "Generating Ms. Walker samples..."
|
|
193
|
+
echo "========================================="
|
|
194
|
+
for personality in $ALL_PERSONALITIES; do
|
|
195
|
+
OUTPUT_FILE="$OUTPUT_DIR/ms-${personality}.mp3"
|
|
196
|
+
|
|
197
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
198
|
+
echo "⏭️ Skipping ms-${personality} (already exists)"
|
|
199
|
+
continue
|
|
200
|
+
fi
|
|
201
|
+
|
|
202
|
+
TEXT="${PERSONALITY_TEXTS[$personality]}"
|
|
203
|
+
VOICE_ID="${VOICE_IDS[ms]}"
|
|
204
|
+
|
|
205
|
+
echo "🎙️ Generating ms-${personality}..."
|
|
206
|
+
|
|
207
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
|
|
208
|
+
-H "Accept: audio/mpeg" \
|
|
209
|
+
-H "Content-Type: application/json" \
|
|
210
|
+
-H "xi-api-key: ${OCT_8_ELEVELABS_API_KEY}" \
|
|
211
|
+
-d "{
|
|
212
|
+
\"text\": \"${TEXT}\",
|
|
213
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
214
|
+
\"voice_settings\": {
|
|
215
|
+
\"stability\": 0.5,
|
|
216
|
+
\"similarity_boost\": 0.75
|
|
217
|
+
}
|
|
218
|
+
}" \
|
|
219
|
+
--output "$OUTPUT_FILE"
|
|
220
|
+
|
|
221
|
+
if [ $? -eq 0 ] && [ -f "$OUTPUT_FILE" ]; then
|
|
222
|
+
echo "✅ Generated ms-${personality}"
|
|
223
|
+
else
|
|
224
|
+
echo "❌ Failed to generate ms-${personality}"
|
|
225
|
+
fi
|
|
226
|
+
|
|
227
|
+
sleep 0.5
|
|
228
|
+
done
|
|
229
|
+
|
|
230
|
+
echo ""
|
|
231
|
+
echo "========================================="
|
|
232
|
+
echo "Generation Complete!"
|
|
233
|
+
echo "========================================="
|
|
234
|
+
echo ""
|
|
235
|
+
echo "All missing ElevenLabs samples generated!"
|
|
236
|
+
echo "Check: $OUTPUT_DIR"
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Script to generate missing ElevenLabs audio samples
|
|
4
|
+
# Usage: ./generate-missing-elevenlabs.sh
|
|
5
|
+
|
|
6
|
+
# Use the API key from environment
|
|
7
|
+
if [ -z "$OCT_8_ELEVELABS_API_KEY" ]; then
|
|
8
|
+
echo "ERROR: OCT_8_ELEVELABS_API_KEY environment variable is not set"
|
|
9
|
+
echo "Run: export OCT_8_ELEVELABS_API_KEY='your-key-here'"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
OUTPUT_DIR="/home/fire/claude/AgentVibes/agentvibes.org/public/audio/elevenlabs"
|
|
14
|
+
mkdir -p "$OUTPUT_DIR"
|
|
15
|
+
|
|
16
|
+
# Define personality texts
|
|
17
|
+
declare -A PERSONALITY_TEXTS
|
|
18
|
+
PERSONALITY_TEXTS[sarcastic]="Oh wonderful! Even more documentation surgery. Because that's exactly what I wanted to do with my evening."
|
|
19
|
+
PERSONALITY_TEXTS[angry]="ARE YOU KIDDING ME?! Another bug in production! This is absolutely UNACCEPTABLE!"
|
|
20
|
+
PERSONALITY_TEXTS[flirty]="Well hello there, gorgeous! I've been waiting for you to ask me that. How about we tackle this together?"
|
|
21
|
+
PERSONALITY_TEXTS[pirate]="Arrr matey! Hoist the colors and prepare to set sail on this here coding adventure!"
|
|
22
|
+
PERSONALITY_TEXTS[millennial]="No cap, I'll handle that for you fr fr! This is gonna be absolutely bussin, bestie!"
|
|
23
|
+
PERSONALITY_TEXTS[sassy]="Oh honey, please. I've been doing this since before you even knew what a terminal was. Watch and learn."
|
|
24
|
+
PERSONALITY_TEXTS[robot]="AFFIRMATIVE. INITIATING TASK SEQUENCE. PROCESSING REQUEST WITH MAXIMUM EFFICIENCY."
|
|
25
|
+
PERSONALITY_TEXTS[zen]="Take a deep breath. Center yourself. The code will flow naturally when we approach it with mindfulness."
|
|
26
|
+
PERSONALITY_TEXTS[dramatic]="GASP! This changes EVERYTHING! The fate of the entire codebase hangs in the balance!"
|
|
27
|
+
PERSONALITY_TEXTS[surfer_dude]="Dude! This wave is totally tubular! Let's hang ten and catch some gnarly code, bro!"
|
|
28
|
+
PERSONALITY_TEXTS[funny]="Oh. My. God. Like, this is totally the most important thing ever? I'm literally so excited right now!"
|
|
29
|
+
PERSONALITY_TEXTS[professional]="According to best practices and industry standards, the optimal approach would be to implement this systematically."
|
|
30
|
+
PERSONALITY_TEXTS[poetic]="In the garden of code, where logic blooms eternal, let us craft solutions that sing with elegant beauty."
|
|
31
|
+
PERSONALITY_TEXTS[moody]="I suppose we could work on this... if you really think it matters. Does anything really matter though?"
|
|
32
|
+
PERSONALITY_TEXTS[grandpa]="Oh sweetie, come here and let grandpa help you with that. I've got some wisdom to share from my years of coding!"
|
|
33
|
+
PERSONALITY_TEXTS[dry_humor]="Well, that's just fantastic. Another edge case. What could possibly go wrong this time?"
|
|
34
|
+
|
|
35
|
+
# Define ElevenLabs voice IDs (you'll need to add the actual voice IDs)
|
|
36
|
+
declare -A VOICE_IDS
|
|
37
|
+
VOICE_IDS[aria]="9BWtsMINqrJLrRacOk9x" # Aria voice ID
|
|
38
|
+
VOICE_IDS[cowboy]="INSERT_COWBOY_VOICE_ID" # Need actual ID
|
|
39
|
+
VOICE_IDS[dr]="INSERT_DR_VOICE_ID" # Need actual ID
|
|
40
|
+
VOICE_IDS[michael]="INSERT_MICHAEL_VOICE_ID" # Need actual ID
|
|
41
|
+
VOICE_IDS[ms]="INSERT_MS_VOICE_ID" # Need actual ID
|
|
42
|
+
|
|
43
|
+
# Missing files to generate
|
|
44
|
+
# Aria: needs all 16 personalities except dry_humor, poetic, zen
|
|
45
|
+
# Cowboy: needs all except funny
|
|
46
|
+
# Dr: needs all except ?
|
|
47
|
+
# Michael: needs 8 files
|
|
48
|
+
# Ms: needs all except ?
|
|
49
|
+
|
|
50
|
+
echo "========================================="
|
|
51
|
+
echo "ElevenLabs Missing Audio Generator"
|
|
52
|
+
echo "========================================="
|
|
53
|
+
echo ""
|
|
54
|
+
|
|
55
|
+
# Generate missing Aria files (13 missing)
|
|
56
|
+
echo "Generating Aria samples..."
|
|
57
|
+
aria_personalities="sarcastic angry flirty pirate millennial sassy robot dramatic surfer_dude funny professional moody grandpa"
|
|
58
|
+
for personality in $aria_personalities; do
|
|
59
|
+
OUTPUT_FILE="$OUTPUT_DIR/aria-${personality}.mp3"
|
|
60
|
+
|
|
61
|
+
if [ -f "$OUTPUT_FILE" ]; then
|
|
62
|
+
echo "⏭️ Skipping aria-${personality} (already exists)"
|
|
63
|
+
continue
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
TEXT="${PERSONALITY_TEXTS[$personality]}"
|
|
67
|
+
VOICE_ID="${VOICE_IDS[aria]}"
|
|
68
|
+
|
|
69
|
+
echo "🎙️ Generating aria-${personality}..."
|
|
70
|
+
|
|
71
|
+
curl -s -X POST "https://api.elevenlabs.io/v1/text-to-speech/${VOICE_ID}" \
|
|
72
|
+
-H "Accept: audio/mpeg" \
|
|
73
|
+
-H "Content-Type: application/json" \
|
|
74
|
+
-H "xi-api-key: ${OCT_8_ELEVELABS_API_KEY}" \
|
|
75
|
+
-d "{
|
|
76
|
+
\"text\": \"${TEXT}\",
|
|
77
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
78
|
+
\"voice_settings\": {
|
|
79
|
+
\"stability\": 0.5,
|
|
80
|
+
\"similarity_boost\": 0.75
|
|
81
|
+
}
|
|
82
|
+
}" \
|
|
83
|
+
--output "$OUTPUT_FILE"
|
|
84
|
+
|
|
85
|
+
if [ $? -eq 0 ] && [ -f "$OUTPUT_FILE" ]; then
|
|
86
|
+
echo "✅ Generated aria-${personality}"
|
|
87
|
+
else
|
|
88
|
+
echo "❌ Failed to generate aria-${personality}"
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
sleep 0.5 # Rate limiting
|
|
92
|
+
done
|
|
93
|
+
|
|
94
|
+
echo ""
|
|
95
|
+
echo "========================================="
|
|
96
|
+
echo "IMPORTANT: Update voice IDs in this script"
|
|
97
|
+
echo "========================================="
|
|
98
|
+
echo ""
|
|
99
|
+
echo "To generate the remaining voices, you need to:"
|
|
100
|
+
echo "1. Find the correct ElevenLabs voice IDs for:"
|
|
101
|
+
echo " - cowboy"
|
|
102
|
+
echo " - dr (Dr. Von)"
|
|
103
|
+
echo " - michael"
|
|
104
|
+
echo " - ms (Ms. Walker)"
|
|
105
|
+
echo ""
|
|
106
|
+
echo "2. Update the VOICE_IDS array in this script"
|
|
107
|
+
echo ""
|
|
108
|
+
echo "3. Uncomment and add generation loops for each voice"
|
|
109
|
+
echo ""
|
|
110
|
+
echo "Aria samples generated. Check $OUTPUT_DIR"
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Script to generate ElevenLabs voice samples for new voices
|
|
4
|
+
# Voices: Drill Sergeant (DGzg6RaUqxGRTHSBjfgF) and Grandpa Werthers (MKlLqCItoCkvdhrxgtLv)
|
|
5
|
+
|
|
6
|
+
# Check if ELEVENLABS_API_KEY is set
|
|
7
|
+
if [ -z "$ELEVENLABS_API_KEY" ]; then
|
|
8
|
+
echo "Error: ELEVENLABS_API_KEY environment variable is not set"
|
|
9
|
+
echo "Please set it with: export ELEVENLABS_API_KEY='your-key-here'"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# Output directory
|
|
14
|
+
OUTPUT_DIR="agentvibes.org/public/audio/elevenlabs"
|
|
15
|
+
mkdir -p "$OUTPUT_DIR"
|
|
16
|
+
|
|
17
|
+
# Voice configurations
|
|
18
|
+
DRILL_SERGEANT_ID="DGzg6RaUqxGRTHSBjfgF"
|
|
19
|
+
DRILL_SERGEANT_SLUG="drill-sergeant"
|
|
20
|
+
|
|
21
|
+
GRANDPA_WERTHERS_ID="MKlLqCItoCkvdhrxgtLv"
|
|
22
|
+
GRANDPA_WERTHERS_SLUG="grandpa"
|
|
23
|
+
|
|
24
|
+
# Personality texts (from the webpage)
|
|
25
|
+
declare -A PERSONALITY_TEXTS=(
|
|
26
|
+
["sarcastic"]="Oh wonderful! Even more documentation surgery. Because that's exactly what I wanted to do with my evening."
|
|
27
|
+
["angry"]="ARE YOU KIDDING ME?! Another bug in production! This is absolutely UNACCEPTABLE!"
|
|
28
|
+
["flirty"]="Well hello there, gorgeous! I've been waiting for you to ask me that. How about we tackle this together?"
|
|
29
|
+
["pirate"]="Arrr matey! Hoist the colors and prepare to set sail on this here coding adventure!"
|
|
30
|
+
["millennial"]="I literally can't even write now. This cold is giving me anxiety. I need coffee and avocado toast to deal with this. Then we select about it later."
|
|
31
|
+
["sassy"]="Oh honey, please. I've been doing this since before you even knew what a terminal was. Watch and learn."
|
|
32
|
+
["robot"]="Beeep boop. Processing request. Human emotion detected. Initiating task completion protocol. Probability of success: 99.7%."
|
|
33
|
+
["zen"]="Breathe in the bugs. Breathe out the fixes. The code flows like water. We are one with the repository. All errors are merely opportunities for growth."
|
|
34
|
+
["dramatic"]="This is the most important commit of our lives. The fate of the entire application rests upon this single line of code. Behold."
|
|
35
|
+
["surfer_dude"]="This code is totally gnarly, like riding the wave of optimization, bro. Let's catch some sick performance improvements."
|
|
36
|
+
["funny"]="Oh. My. God. Like, this is totally the most important thing ever? I'm literally so excited right now!"
|
|
37
|
+
["professional"]="For our previous discussion, I've completed the code review and identified three actionable items for optimization. Please advise our next steps."
|
|
38
|
+
["poetic"]="The code flows eternal. Each function a verse, each variable a rhyme. We write not mere programs, but digital poetry."
|
|
39
|
+
["moody"]="I guess I'll fix this bug. Not like anyone appreciates my work anyway. Why do I even bother? *Sigh* Fine. Let's get this over with."
|
|
40
|
+
["grandpa"]="Back in my day, we didn't have all these fancy frameworks. We coded uphill both ways in the snow and we liked it."
|
|
41
|
+
["dry_humor"]="Another merge conflict. How thrilling. I can barely contain my excitement. This is exactly what I went to computer science school for."
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# Function to generate audio using ElevenLabs API
|
|
45
|
+
generate_audio() {
|
|
46
|
+
local voice_id=$1
|
|
47
|
+
local voice_slug=$2
|
|
48
|
+
local personality=$3
|
|
49
|
+
local text=$4
|
|
50
|
+
local output_file="${OUTPUT_DIR}/${voice_slug}-${personality}.mp3"
|
|
51
|
+
|
|
52
|
+
echo "Generating: ${voice_slug}-${personality}.mp3"
|
|
53
|
+
|
|
54
|
+
curl -X POST "https://api.elevenlabs.io/v1/text-to-speech/${voice_id}" \
|
|
55
|
+
-H "xi-api-key: ${ELEVENLABS_API_KEY}" \
|
|
56
|
+
-H "Content-Type: application/json" \
|
|
57
|
+
-d "{
|
|
58
|
+
\"text\": \"${text}\",
|
|
59
|
+
\"model_id\": \"eleven_monolingual_v1\",
|
|
60
|
+
\"voice_settings\": {
|
|
61
|
+
\"stability\": 0.5,
|
|
62
|
+
\"similarity_boost\": 0.75
|
|
63
|
+
}
|
|
64
|
+
}" \
|
|
65
|
+
--output "$output_file"
|
|
66
|
+
|
|
67
|
+
if [ $? -eq 0 ]; then
|
|
68
|
+
echo "✓ Successfully generated: $output_file"
|
|
69
|
+
else
|
|
70
|
+
echo "✗ Failed to generate: $output_file"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
# Small delay to avoid rate limiting
|
|
74
|
+
sleep 1
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
echo "=========================================="
|
|
78
|
+
echo "Generating ElevenLabs Voice Samples"
|
|
79
|
+
echo "=========================================="
|
|
80
|
+
echo ""
|
|
81
|
+
|
|
82
|
+
# Generate all samples for Drill Sergeant
|
|
83
|
+
echo "Voice 1: Drill Sergeant"
|
|
84
|
+
echo "------------------------------------------"
|
|
85
|
+
for personality in "${!PERSONALITY_TEXTS[@]}"; do
|
|
86
|
+
text="${PERSONALITY_TEXTS[$personality]}"
|
|
87
|
+
generate_audio "$DRILL_SERGEANT_ID" "$DRILL_SERGEANT_SLUG" "$personality" "$text"
|
|
88
|
+
done
|
|
89
|
+
|
|
90
|
+
echo ""
|
|
91
|
+
echo "Voice 2: Grandpa Werthers"
|
|
92
|
+
echo "------------------------------------------"
|
|
93
|
+
# Note: Grandpa Werthers keeps the same slug 'grandpa' as before, just new voice ID
|
|
94
|
+
for personality in "${!PERSONALITY_TEXTS[@]}"; do
|
|
95
|
+
text="${PERSONALITY_TEXTS[$personality]}"
|
|
96
|
+
generate_audio "$GRANDPA_WERTHERS_ID" "$GRANDPA_WERTHERS_SLUG" "$personality" "$text"
|
|
97
|
+
done
|
|
98
|
+
|
|
99
|
+
echo ""
|
|
100
|
+
echo "=========================================="
|
|
101
|
+
echo "Generation Complete!"
|
|
102
|
+
echo "=========================================="
|
|
103
|
+
echo ""
|
|
104
|
+
echo "Files created in: $OUTPUT_DIR"
|
|
105
|
+
echo ""
|
|
106
|
+
echo "Total files generated:"
|
|
107
|
+
ls -1 "$OUTPUT_DIR"/*-sergeant-*.mp3 2>/dev/null | wc -l | xargs echo " Drill Sergeant:"
|
|
108
|
+
ls -1 "$OUTPUT_DIR"/grandpa-*.mp3 2>/dev/null | wc -l | xargs echo " Grandpa Werthers:"
|