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
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
# @fileoverview Speech Speed Manager for Multi-Provider TTS
|
|
4
|
-
# @context Manage speech rate for main and target language voices
|
|
5
|
-
# @architecture Simple config file manager supporting both Piper and ElevenLabs
|
|
6
|
-
# @providers Piper (length-scale), ElevenLabs (speed API parameter)
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
# Get script directory
|
|
10
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
-
|
|
12
|
-
# Determine config directory (project-local first, then global)
|
|
13
|
-
if [[ -n "$CLAUDE_PROJECT_DIR" ]] && [[ -d "$CLAUDE_PROJECT_DIR/.claude" ]]; then
|
|
14
|
-
CONFIG_DIR="$CLAUDE_PROJECT_DIR/.claude/config"
|
|
15
|
-
else
|
|
16
|
-
# Try to find .claude in current path
|
|
17
|
-
CURRENT_DIR="$PWD"
|
|
18
|
-
while [[ "$CURRENT_DIR" != "/" ]]; do
|
|
19
|
-
if [[ -d "$CURRENT_DIR/.claude" ]]; then
|
|
20
|
-
CONFIG_DIR="$CURRENT_DIR/.claude/config"
|
|
21
|
-
break
|
|
22
|
-
fi
|
|
23
|
-
CURRENT_DIR=$(dirname "$CURRENT_DIR")
|
|
24
|
-
done
|
|
25
|
-
# Fallback to global
|
|
26
|
-
if [[ -z "$CONFIG_DIR" ]]; then
|
|
27
|
-
CONFIG_DIR="$HOME/.claude/config"
|
|
28
|
-
fi
|
|
29
|
-
fi
|
|
30
|
-
|
|
31
|
-
mkdir -p "$CONFIG_DIR"
|
|
32
|
-
|
|
33
|
-
MAIN_SPEED_FILE="$CONFIG_DIR/tts-speech-rate.txt"
|
|
34
|
-
TARGET_SPEED_FILE="$CONFIG_DIR/tts-target-speech-rate.txt"
|
|
35
|
-
|
|
36
|
-
# Legacy file paths for backward compatibility (Piper-specific naming)
|
|
37
|
-
LEGACY_MAIN_SPEED_FILE="$CONFIG_DIR/piper-speech-rate.txt"
|
|
38
|
-
LEGACY_TARGET_SPEED_FILE="$CONFIG_DIR/piper-target-speech-rate.txt"
|
|
39
|
-
|
|
40
|
-
# @function parse_speed_value
|
|
41
|
-
# @intent Convert user-friendly speed notation to normalized speed multiplier
|
|
42
|
-
# @param $1 Speed string (e.g., "2x", "0.5x", "normal")
|
|
43
|
-
# @returns Numeric speed value (0.5=slower, 1.0=normal, 2.0=faster, 3.0=very fast)
|
|
44
|
-
# @note This is the user-facing scale - provider scripts will convert as needed
|
|
45
|
-
parse_speed_value() {
|
|
46
|
-
local input="$1"
|
|
47
|
-
|
|
48
|
-
# Handle special cases
|
|
49
|
-
case "$input" in
|
|
50
|
-
normal|1x|1.0)
|
|
51
|
-
echo "1.0"
|
|
52
|
-
return
|
|
53
|
-
;;
|
|
54
|
-
slow|slower|0.5x)
|
|
55
|
-
echo "0.5"
|
|
56
|
-
return
|
|
57
|
-
;;
|
|
58
|
-
fast|2x|2.0)
|
|
59
|
-
echo "2.0"
|
|
60
|
-
return
|
|
61
|
-
;;
|
|
62
|
-
faster|3x|3.0)
|
|
63
|
-
echo "3.0"
|
|
64
|
-
return
|
|
65
|
-
;;
|
|
66
|
-
esac
|
|
67
|
-
|
|
68
|
-
# Strip leading '+' or '-' if present
|
|
69
|
-
input="${input#+}"
|
|
70
|
-
input="${input#-}"
|
|
71
|
-
|
|
72
|
-
# Strip trailing 'x' if present
|
|
73
|
-
input="${input%x}"
|
|
74
|
-
|
|
75
|
-
# Validate it's a number
|
|
76
|
-
if [[ "$input" =~ ^[0-9]+\.?[0-9]*$ ]]; then
|
|
77
|
-
echo "$input"
|
|
78
|
-
else
|
|
79
|
-
echo "ERROR"
|
|
80
|
-
fi
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
# @function set_speed
|
|
84
|
-
# @intent Set speech speed for main or target voice
|
|
85
|
-
# @param $1 Target ("target" or empty for main)
|
|
86
|
-
# @param $2 Speed value
|
|
87
|
-
set_speed() {
|
|
88
|
-
local is_target=false
|
|
89
|
-
local speed_input=""
|
|
90
|
-
|
|
91
|
-
# Parse arguments
|
|
92
|
-
if [[ "$1" == "target" ]]; then
|
|
93
|
-
is_target=true
|
|
94
|
-
speed_input="$2"
|
|
95
|
-
else
|
|
96
|
-
speed_input="$1"
|
|
97
|
-
fi
|
|
98
|
-
|
|
99
|
-
if [[ -z "$speed_input" ]]; then
|
|
100
|
-
echo "❌ Error: Speed value required"
|
|
101
|
-
echo "Usage: /agent-vibes:set-speed [target] <speed>"
|
|
102
|
-
echo "Examples: 2x, 0.5x, normal, +3x"
|
|
103
|
-
return 1
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# Parse speed value
|
|
107
|
-
local speed_value
|
|
108
|
-
speed_value=$(parse_speed_value "$speed_input")
|
|
109
|
-
|
|
110
|
-
if [[ "$speed_value" == "ERROR" ]]; then
|
|
111
|
-
echo "❌ Invalid speed value: $speed_input"
|
|
112
|
-
echo "Valid values: normal, 0.5x, 1x, 2x, 3x, +2x, -2x"
|
|
113
|
-
return 1
|
|
114
|
-
fi
|
|
115
|
-
|
|
116
|
-
# Determine which file to write to
|
|
117
|
-
local config_file
|
|
118
|
-
local voice_type
|
|
119
|
-
if [[ "$is_target" == true ]]; then
|
|
120
|
-
config_file="$TARGET_SPEED_FILE"
|
|
121
|
-
voice_type="target language"
|
|
122
|
-
else
|
|
123
|
-
config_file="$MAIN_SPEED_FILE"
|
|
124
|
-
voice_type="main voice"
|
|
125
|
-
fi
|
|
126
|
-
|
|
127
|
-
# Write speed value
|
|
128
|
-
echo "$speed_value" > "$config_file"
|
|
129
|
-
|
|
130
|
-
# Show confirmation
|
|
131
|
-
echo "✓ Speech speed set for $voice_type"
|
|
132
|
-
echo ""
|
|
133
|
-
echo "Speed: ${speed_value}x"
|
|
134
|
-
|
|
135
|
-
case "$speed_value" in
|
|
136
|
-
0.5)
|
|
137
|
-
echo "Effect: Half speed (slower)"
|
|
138
|
-
;;
|
|
139
|
-
1.0)
|
|
140
|
-
echo "Effect: Normal speed"
|
|
141
|
-
;;
|
|
142
|
-
2.0)
|
|
143
|
-
echo "Effect: Double speed (faster)"
|
|
144
|
-
;;
|
|
145
|
-
3.0)
|
|
146
|
-
echo "Effect: Triple speed (very fast)"
|
|
147
|
-
;;
|
|
148
|
-
*)
|
|
149
|
-
if (( $(echo "$speed_value > 1.0" | bc -l) )); then
|
|
150
|
-
echo "Effect: Faster speech"
|
|
151
|
-
else
|
|
152
|
-
echo "Effect: Slower speech"
|
|
153
|
-
fi
|
|
154
|
-
;;
|
|
155
|
-
esac
|
|
156
|
-
|
|
157
|
-
echo ""
|
|
158
|
-
echo "Note: Speed control works with both Piper and ElevenLabs providers"
|
|
159
|
-
|
|
160
|
-
# Array of tongue twisters to demonstrate speed
|
|
161
|
-
local tongue_twisters=(
|
|
162
|
-
"Peter Piper picked a peck of pickled peppers"
|
|
163
|
-
"She sells seashells by the seashore"
|
|
164
|
-
"How much wood would a woodchuck chuck if a woodchuck could chuck wood"
|
|
165
|
-
"Fuzzy Wuzzy was a bear, Fuzzy Wuzzy had no hair"
|
|
166
|
-
"I scream, you scream, we all scream for ice cream"
|
|
167
|
-
"Red lorry, yellow lorry, red lorry, yellow lorry"
|
|
168
|
-
"Six slippery snails slid slowly seaward"
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
# Pick a random tongue twister
|
|
172
|
-
local random_index=$((RANDOM % ${#tongue_twisters[@]}))
|
|
173
|
-
local test_msg="${tongue_twisters[$random_index]}"
|
|
174
|
-
|
|
175
|
-
echo ""
|
|
176
|
-
echo "🔊 Testing new speed with: \"$test_msg\""
|
|
177
|
-
"$SCRIPT_DIR/play-tts.sh" "$test_msg" &
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
# @function migrate_legacy_files
|
|
181
|
-
# @intent Migrate from old piper-specific files to provider-agnostic files
|
|
182
|
-
# @why Ensure backward compatibility when upgrading from Piper-only to multi-provider
|
|
183
|
-
migrate_legacy_files() {
|
|
184
|
-
# Migrate main speed file
|
|
185
|
-
if [[ -f "$LEGACY_MAIN_SPEED_FILE" ]] && [[ ! -f "$MAIN_SPEED_FILE" ]]; then
|
|
186
|
-
cp "$LEGACY_MAIN_SPEED_FILE" "$MAIN_SPEED_FILE"
|
|
187
|
-
fi
|
|
188
|
-
|
|
189
|
-
# Migrate target speed file
|
|
190
|
-
if [[ -f "$LEGACY_TARGET_SPEED_FILE" ]] && [[ ! -f "$TARGET_SPEED_FILE" ]]; then
|
|
191
|
-
cp "$LEGACY_TARGET_SPEED_FILE" "$TARGET_SPEED_FILE"
|
|
192
|
-
fi
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
# @function get_speed
|
|
196
|
-
# @intent Display current speech speed settings
|
|
197
|
-
get_speed() {
|
|
198
|
-
# Migrate legacy files if needed
|
|
199
|
-
migrate_legacy_files
|
|
200
|
-
|
|
201
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
202
|
-
echo " Current Speech Speed Settings"
|
|
203
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
204
|
-
echo ""
|
|
205
|
-
|
|
206
|
-
# Main voice speed
|
|
207
|
-
if [[ -f "$MAIN_SPEED_FILE" ]]; then
|
|
208
|
-
local main_speed=$(grep -v '^#' "$MAIN_SPEED_FILE" 2>/dev/null | grep -v '^$' | tail -1)
|
|
209
|
-
echo "Main voice: ${main_speed}x"
|
|
210
|
-
else
|
|
211
|
-
echo "Main voice: 1.0x (default, normal speed)"
|
|
212
|
-
fi
|
|
213
|
-
|
|
214
|
-
# Target voice speed
|
|
215
|
-
if [[ -f "$TARGET_SPEED_FILE" ]]; then
|
|
216
|
-
local target_speed=$(cat "$TARGET_SPEED_FILE" 2>/dev/null)
|
|
217
|
-
echo "Target language: ${target_speed}x"
|
|
218
|
-
else
|
|
219
|
-
echo "Target language: 0.5x (default, slower for learning)"
|
|
220
|
-
fi
|
|
221
|
-
|
|
222
|
-
echo ""
|
|
223
|
-
echo "Scale: 0.5x=slower, 1.0x=normal, 2.0x=faster, 3.0x=very fast"
|
|
224
|
-
echo "Works with: Piper TTS and ElevenLabs"
|
|
225
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
# Main command handler
|
|
229
|
-
case "${1:-}" in
|
|
230
|
-
target)
|
|
231
|
-
set_speed "target" "$2"
|
|
232
|
-
;;
|
|
233
|
-
get|status)
|
|
234
|
-
get_speed
|
|
235
|
-
;;
|
|
236
|
-
normal|fast|slow|slower|*x|*.*|+*|-*)
|
|
237
|
-
set_speed "$1"
|
|
238
|
-
;;
|
|
239
|
-
*)
|
|
240
|
-
echo "Speech Speed Manager"
|
|
241
|
-
echo ""
|
|
242
|
-
echo "Usage:"
|
|
243
|
-
echo " /agent-vibes:set-speed <speed> Set main voice speed"
|
|
244
|
-
echo " /agent-vibes:set-speed target <speed> Set target language speed"
|
|
245
|
-
echo " /agent-vibes:set-speed get Show current speeds"
|
|
246
|
-
echo ""
|
|
247
|
-
echo "Speed values:"
|
|
248
|
-
echo " 0.5x or slow/slower = Half speed (slower)"
|
|
249
|
-
echo " 1x or normal = Normal speed"
|
|
250
|
-
echo " 2x or fast = Double speed (faster)"
|
|
251
|
-
echo " 3x or faster = Triple speed (very fast)"
|
|
252
|
-
echo ""
|
|
253
|
-
echo "Examples:"
|
|
254
|
-
echo " /agent-vibes:set-speed 2x # Make voice faster"
|
|
255
|
-
echo " /agent-vibes:set-speed 0.5x # Make voice slower"
|
|
256
|
-
echo " /agent-vibes:set-speed target 0.5x # Slow down target language for learning"
|
|
257
|
-
echo " /agent-vibes:set-speed normal # Reset to normal"
|
|
258
|
-
;;
|
|
259
|
-
esac
|