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.
Files changed (233) hide show
  1. package/.claude/agents/health-coach.md +154 -0
  2. package/.claude/agents/motivator.md +171 -0
  3. package/.claude/agents/negotiator.md +97 -0
  4. package/.claude/commands/agent-vibes/agent-health-coach.md +15 -0
  5. package/.claude/commands/agent-vibes/agent-motivator.md +15 -0
  6. package/.claude/commands/agent-vibes/agent-negotiator.md +15 -0
  7. package/.claude/commands/agent-vibes/agent.md +79 -0
  8. package/.claude/commands/agent-vibes/commands.json +4 -0
  9. package/.claude/commands/agent-vibes/set-favorite-voice.md +84 -0
  10. package/.claude/github-star-reminder.txt +1 -1
  11. package/.claude/hooks/download-extra-voices.sh +244 -0
  12. package/.claude/hooks/personality-manager.sh +81 -0
  13. package/.claude/hooks/piper-download-voices.sh +3 -93
  14. package/.claude/hooks/piper-multispeaker-registry.sh +165 -0
  15. package/.claude/hooks/play-tts-elevenlabs.sh +5 -3
  16. package/.claude/hooks/play-tts-piper.sh +27 -44
  17. package/.claude/hooks/provider-manager.sh +24 -5
  18. package/.claude/hooks/speed-manager.sh +10 -12
  19. package/.claude/hooks/voice-manager.sh +94 -56
  20. package/README.md +0 -3
  21. package/RELEASE_NOTES.md +40 -247
  22. package/docs/agents.md +485 -0
  23. package/docs/commands.md +1 -21
  24. package/docs/extra-voices-implementation-summary.md +235 -0
  25. package/docs/voice-registration-fix.md +254 -0
  26. package/fix-vscode-colors.sh +88 -0
  27. package/fixcolors +88 -0
  28. package/generate-all-agent-voices.sh +174 -0
  29. package/generate-missing-elevenlabs-complete.sh +236 -0
  30. package/generate-missing-elevenlabs.sh +110 -0
  31. package/generate-new-voices.sh +108 -0
  32. package/generate-piper-agent-intros.sh +85 -0
  33. package/generate-provider-and-agent-intros.sh +136 -0
  34. package/logo/fav_icon_128x128.png +0 -0
  35. package/logo/fav_icon_128x128.png:Zone.Identifier +4 -0
  36. package/logo/logo1.webp +0 -0
  37. package/logo/logo1.webp:Zone.Identifier +4 -0
  38. package/logo/social.png +0 -0
  39. package/logo/social.png:Zone.Identifier +4 -0
  40. package/mcp-server/agentvibes.db +0 -0
  41. package/mcp-server/server.py +47 -14
  42. package/package.json +3 -3
  43. package/regenerate-agent-voices.sh +79 -0
  44. package/test/unit/provider-manager.bats +8 -5
  45. package/test/unit/speed-manager.bats +4 -4
  46. package/agentvibes.org/.claude/audio/tts-padded-1760744118.mp3 +0 -0
  47. package/agentvibes.org/.claude/audio/tts-padded-1760748535.mp3 +0 -0
  48. package/agentvibes.org/.claude/audio/tts-padded-1760748676.mp3 +0 -0
  49. package/agentvibes.org/.claude/audio/tts-padded-1760750748.mp3 +0 -0
  50. package/agentvibes.org/.claude/audio/tts-padded-1760750947.mp3 +0 -0
  51. package/agentvibes.org/.claude/audio/tts-padded-1760752718.mp3 +0 -0
  52. package/agentvibes.org/.claude/audio/tts-padded-1760752907.mp3 +0 -0
  53. package/agentvibes.org/.claude/audio/tts-padded-1760753017.mp3 +0 -0
  54. package/agentvibes.org/.claude/audio/tts-padded-1760753045.mp3 +0 -0
  55. package/agentvibes.org/.claude/audio/tts-padded-1760753241.mp3 +0 -0
  56. package/agentvibes.org/.claude/audio/tts-padded-1760753315.mp3 +0 -0
  57. package/agentvibes.org/.claude/audio/tts-padded-1760753382.mp3 +0 -0
  58. package/agentvibes.org/.claude/audio/tts-padded-1760753408.mp3 +0 -0
  59. package/agentvibes.org/.claude/audio/tts-padded-1760753426.mp3 +0 -0
  60. package/agentvibes.org/.claude/audio/tts-padded-1760753446.mp3 +0 -0
  61. package/agentvibes.org/.claude/audio/tts-padded-1760753541.mp3 +0 -0
  62. package/agentvibes.org/.claude/audio/tts-padded-1760753553.mp3 +0 -0
  63. package/agentvibes.org/.claude/audio/tts-padded-1760753577.mp3 +0 -0
  64. package/agentvibes.org/.claude/commands/agent-vibes/add.md +0 -21
  65. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +0 -68
  66. package/agentvibes.org/.claude/commands/agent-vibes/bmad.md +0 -196
  67. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +0 -77
  68. package/agentvibes.org/.claude/commands/agent-vibes/get.md +0 -9
  69. package/agentvibes.org/.claude/commands/agent-vibes/language.md +0 -23
  70. package/agentvibes.org/.claude/commands/agent-vibes/learn.md +0 -67
  71. package/agentvibes.org/.claude/commands/agent-vibes/list.md +0 -13
  72. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +0 -79
  73. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +0 -17
  74. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +0 -54
  75. package/agentvibes.org/.claude/commands/agent-vibes/replay-target.md +0 -14
  76. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +0 -19
  77. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +0 -12
  78. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +0 -52
  79. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +0 -47
  80. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +0 -65
  81. package/agentvibes.org/.claude/commands/agent-vibes/set-speed.md +0 -41
  82. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +0 -53
  83. package/agentvibes.org/.claude/commands/agent-vibes/target-voice.md +0 -26
  84. package/agentvibes.org/.claude/commands/agent-vibes/target.md +0 -30
  85. package/agentvibes.org/.claude/commands/agent-vibes/update.md +0 -20
  86. package/agentvibes.org/.claude/commands/agent-vibes/version.md +0 -10
  87. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +0 -7
  88. package/agentvibes.org/.claude/hooks/bmad-tts-injector.sh +0 -386
  89. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +0 -375
  90. package/agentvibes.org/.claude/hooks/check-output-style.sh +0 -60
  91. package/agentvibes.org/.claude/hooks/github-star-reminder.sh +0 -94
  92. package/agentvibes.org/.claude/hooks/language-manager.sh +0 -360
  93. package/agentvibes.org/.claude/hooks/learn-manager.sh +0 -443
  94. package/agentvibes.org/.claude/hooks/personality-manager.sh +0 -324
  95. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +0 -133
  96. package/agentvibes.org/.claude/hooks/piper-installer.sh +0 -144
  97. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +0 -227
  98. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +0 -376
  99. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +0 -281
  100. package/agentvibes.org/.claude/hooks/play-tts.sh +0 -69
  101. package/agentvibes.org/.claude/hooks/provider-commands.sh +0 -505
  102. package/agentvibes.org/.claude/hooks/provider-manager.sh +0 -248
  103. package/agentvibes.org/.claude/hooks/replay-target-audio.sh +0 -64
  104. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +0 -163
  105. package/agentvibes.org/.claude/hooks/speed-manager.sh +0 -259
  106. package/agentvibes.org/.claude/hooks/voice-manager.sh +0 -477
  107. package/agentvibes.org/.claude/hooks/voices-config.sh +0 -33
  108. package/agentvibes.org/.claude/journal/2025-10-07.html +0 -373
  109. package/agentvibes.org/.claude/journal/index.html +0 -91
  110. package/agentvibes.org/.claude/output-styles/agent-vibes.md +0 -203
  111. package/agentvibes.org/.claude/personalities/angry.md +0 -17
  112. package/agentvibes.org/.claude/personalities/annoying.md +0 -17
  113. package/agentvibes.org/.claude/personalities/crass.md +0 -17
  114. package/agentvibes.org/.claude/personalities/dramatic.md +0 -17
  115. package/agentvibes.org/.claude/personalities/dry-humor.md +0 -53
  116. package/agentvibes.org/.claude/personalities/flirty.md +0 -23
  117. package/agentvibes.org/.claude/personalities/funny.md +0 -17
  118. package/agentvibes.org/.claude/personalities/grandpa.md +0 -35
  119. package/agentvibes.org/.claude/personalities/millennial.md +0 -17
  120. package/agentvibes.org/.claude/personalities/moody.md +0 -17
  121. package/agentvibes.org/.claude/personalities/normal.md +0 -19
  122. package/agentvibes.org/.claude/personalities/pirate.md +0 -17
  123. package/agentvibes.org/.claude/personalities/poetic.md +0 -17
  124. package/agentvibes.org/.claude/personalities/professional.md +0 -17
  125. package/agentvibes.org/.claude/personalities/robot.md +0 -17
  126. package/agentvibes.org/.claude/personalities/sarcastic.md +0 -41
  127. package/agentvibes.org/.claude/personalities/sassy.md +0 -17
  128. package/agentvibes.org/.claude/personalities/surfer-dude.md +0 -17
  129. package/agentvibes.org/.claude/personalities/zen.md +0 -17
  130. package/agentvibes.org/.claude/piper-voices-dir.txt +0 -1
  131. package/agentvibes.org/.claude/plugins/bmad-voices.md +0 -42
  132. package/agentvibes.org/.claude/tts-provider.txt +0 -1
  133. package/agentvibes.org/.mcp-minimal.json +0 -60
  134. package/agentvibes.org/CHANGELOG.md +0 -56
  135. package/agentvibes.org/README.md +0 -93
  136. package/agentvibes.org/app/(auth)/layout.tsx +0 -15
  137. package/agentvibes.org/app/(auth)/reset-password/page.tsx +0 -45
  138. package/agentvibes.org/app/(auth)/signin/page.tsx +0 -82
  139. package/agentvibes.org/app/(auth)/signup/page.tsx +0 -104
  140. package/agentvibes.org/app/(default)/blog/[slug]/page.tsx +0 -128
  141. package/agentvibes.org/app/(default)/blog/page.tsx +0 -95
  142. package/agentvibes.org/app/(default)/layout.tsx +0 -31
  143. package/agentvibes.org/app/(default)/page.tsx +0 -20
  144. package/agentvibes.org/app/api/hello/route.ts +0 -3
  145. package/agentvibes.org/app/css/additional-styles/theme.css +0 -82
  146. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +0 -55
  147. package/agentvibes.org/app/css/style.css +0 -100
  148. package/agentvibes.org/app/layout.tsx +0 -63
  149. package/agentvibes.org/components/code-block.tsx +0 -27
  150. package/agentvibes.org/components/cta.tsx +0 -58
  151. package/agentvibes.org/components/features.tsx +0 -256
  152. package/agentvibes.org/components/hero-home.tsx +0 -133
  153. package/agentvibes.org/components/mdx-components.tsx +0 -128
  154. package/agentvibes.org/components/modal-video.tsx +0 -137
  155. package/agentvibes.org/components/page-illustration.tsx +0 -55
  156. package/agentvibes.org/components/spotlight.tsx +0 -77
  157. package/agentvibes.org/components/testimonials.tsx +0 -282
  158. package/agentvibes.org/components/ui/footer.tsx +0 -82
  159. package/agentvibes.org/components/ui/header.tsx +0 -68
  160. package/agentvibes.org/components/ui/logo.tsx +0 -10
  161. package/agentvibes.org/components/workflows.tsx +0 -176
  162. package/agentvibes.org/content/blog/discovering-new-piper-voices.mdx +0 -253
  163. package/agentvibes.org/content/blog/getting-started-agentvibes.mdx +0 -228
  164. package/agentvibes.org/content/blog/introducing-agentvibes-v2.mdx +0 -250
  165. package/agentvibes.org/content/blog/language-learning-with-agentvibes.mdx +0 -142
  166. package/agentvibes.org/content/blog/voice-personalities-guide.mdx +0 -119
  167. package/agentvibes.org/lib/blog.ts +0 -73
  168. package/agentvibes.org/next.config.js +0 -6
  169. package/agentvibes.org/package-lock.json +0 -4285
  170. package/agentvibes.org/package.json +0 -40
  171. package/agentvibes.org/pnpm-lock.yaml +0 -1141
  172. package/agentvibes.org/postcss.config.js +0 -5
  173. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  174. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  175. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  176. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  177. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  178. package/agentvibes.org/public/audio/piper-voices/speaker_0_Cori_Samuel.wav +0 -0
  179. package/agentvibes.org/public/audio/piper-voices/speaker_10_Steve_C.wav +0 -0
  180. package/agentvibes.org/public/audio/piper-voices/speaker_11_Owlivia.wav +0 -0
  181. package/agentvibes.org/public/audio/piper-voices/speaker_12_Paul_Hampton.wav +0 -0
  182. package/agentvibes.org/public/audio/piper-voices/speaker_13_Jennifer_Dorr.wav +0 -0
  183. package/agentvibes.org/public/audio/piper-voices/speaker_14_Emily_Cripps.wav +0 -0
  184. package/agentvibes.org/public/audio/piper-voices/speaker_15_Martin_Clifton.wav +0 -0
  185. package/agentvibes.org/public/audio/piper-voices/speaker_1_Kara_Shallenberg.wav +0 -0
  186. package/agentvibes.org/public/audio/piper-voices/speaker_2_Kristin_Hughes.wav +0 -0
  187. package/agentvibes.org/public/audio/piper-voices/speaker_3_Maria_Kasper.wav +0 -0
  188. package/agentvibes.org/public/audio/piper-voices/speaker_4_Mike_Pelton.wav +0 -0
  189. package/agentvibes.org/public/audio/piper-voices/speaker_5_Mark_Nelson.wav +0 -0
  190. package/agentvibes.org/public/audio/piper-voices/speaker_6_Michael_Scherer.wav +0 -0
  191. package/agentvibes.org/public/audio/piper-voices/speaker_7_James_K_White.wav +0 -0
  192. package/agentvibes.org/public/audio/piper-voices/speaker_8_Rose_Ibex.wav +0 -0
  193. package/agentvibes.org/public/audio/piper-voices/speaker_9_progressingamerica.wav +0 -0
  194. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  195. package/agentvibes.org/public/favicon.ico +0 -0
  196. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  197. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  198. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  199. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  200. package/agentvibes.org/public/images/blurred-shape-gray.svg +0 -1
  201. package/agentvibes.org/public/images/blurred-shape.svg +0 -1
  202. package/agentvibes.org/public/images/client-logo-01.svg +0 -1
  203. package/agentvibes.org/public/images/client-logo-02.svg +0 -1
  204. package/agentvibes.org/public/images/client-logo-03.svg +0 -1
  205. package/agentvibes.org/public/images/client-logo-04.svg +0 -1
  206. package/agentvibes.org/public/images/client-logo-05.svg +0 -1
  207. package/agentvibes.org/public/images/client-logo-06.svg +0 -1
  208. package/agentvibes.org/public/images/client-logo-07.svg +0 -1
  209. package/agentvibes.org/public/images/client-logo-08.svg +0 -1
  210. package/agentvibes.org/public/images/client-logo-09.svg +0 -1
  211. package/agentvibes.org/public/images/features.png +0 -0
  212. package/agentvibes.org/public/images/footer-illustration.svg +0 -1
  213. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  214. package/agentvibes.org/public/images/logo.svg +0 -1
  215. package/agentvibes.org/public/images/page-illustration.svg +0 -1
  216. package/agentvibes.org/public/images/secondary-illustration.svg +0 -1
  217. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  218. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  219. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  220. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  221. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  222. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  223. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  224. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  225. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  226. package/agentvibes.org/public/images/workflow-01.png +0 -0
  227. package/agentvibes.org/public/images/workflow-02.png +0 -0
  228. package/agentvibes.org/public/images/workflow-03.png +0 -0
  229. package/agentvibes.org/public/videos/video.mp4 +0 -0
  230. package/agentvibes.org/tsconfig.json +0 -28
  231. package/agentvibes.org/utils/useMasonry.tsx +0 -67
  232. package/agentvibes.org/utils/useMousePosition.tsx +0 -27
  233. 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:"