$npx -y skills add wells1137/media-skills --skill audiomindTired of juggling multiple audio APIs? This skill gives you one-command access to TTS, music generation, sound effects, and voice cloning. Use when you want to generate any audio without managing multiple API keys.
| 1 | # 🎙️ AudioMind |
| 2 | |
| 3 | **Use when:** User asks to generate speech, narrate text, create a voice-over, compose music, or produce a sound effect. |
| 4 | |
| 5 | AudioMind is a smart audio dispatcher. It analyzes your request and routes it to the best available model — ElevenLabs for speech and music, fal.ai for fast SFX — and returns a ready-to-use audio URL. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Quick Reference |
| 10 | |
| 11 | | Request Type | Best Model | Latency | |
| 12 | |---|---|---| |
| 13 | | Narrate text / Voice-over | `elevenlabs-tts-v3` | ~3s | |
| 14 | | Low-latency TTS (real-time) | `elevenlabs-tts-turbo` | <1s | |
| 15 | | Background music | `cassetteai-music` | ~15s | |
| 16 | | Sound effect | `elevenlabs-sfx` | ~5s | |
| 17 | | Clone a voice from audio | `elevenlabs-voice-clone` | ~10s | |
| 18 | |
| 19 | --- |
| 20 | |
| 21 | ## How to Use |
| 22 | |
| 23 | ### 1. Start the AudioMind server (once per session) |
| 24 | |
| 25 | ```bash |
| 26 | bash {baseDir}/tools/start_server.sh |
| 27 | ``` |
| 28 | |
| 29 | This starts the ElevenLabs MCP server on port 8124. The skill uses it for all audio generation. |
| 30 | |
| 31 | ### 2. Route the request |
| 32 | |
| 33 | Analyze the user's request and call the appropriate tool via the MCP server: |
| 34 | |
| 35 | **Text-to-Speech (TTS)** |
| 36 | |
| 37 | When user asks to "narrate", "read aloud", "say", or "create a voice-over": |
| 38 | |
| 39 | ``` |
| 40 | Use MCP tool: text_to_speech |
| 41 | text: "<the text to narrate>" |
| 42 | voice_id: "JBFqnCBsd6RMkjVDRZzb" # Default: "George" (professional, neutral) |
| 43 | model_id: "eleven_multilingual_v2" # Use "eleven_turbo_v2_5" for low latency |
| 44 | ``` |
| 45 | |
| 46 | **Music Generation** |
| 47 | |
| 48 | When user asks to "compose", "create background music", or "make a soundtrack": |
| 49 | |
| 50 | ``` |
| 51 | Use MCP tool: text_to_sound_effects (via cassetteai-music on fal.ai) |
| 52 | prompt: "<music description, e.g. 'upbeat lo-fi hip hop, 90 seconds'>" |
| 53 | duration_seconds: <duration> |
| 54 | ``` |
| 55 | |
| 56 | **Sound Effect (SFX)** |
| 57 | |
| 58 | When user asks for a specific sound (e.g., "a door creaking", "rain on a window"): |
| 59 | |
| 60 | ``` |
| 61 | Use MCP tool: text_to_sound_effects |
| 62 | text: "<sound description>" |
| 63 | duration_seconds: <1-22> |
| 64 | ``` |
| 65 | |
| 66 | **Voice Cloning** |
| 67 | |
| 68 | When user provides an audio sample and wants to clone the voice: |
| 69 | |
| 70 | ``` |
| 71 | Use MCP tool: voice_add |
| 72 | name: "<voice name>" |
| 73 | files: ["<audio_file_url>"] |
| 74 | ``` |
| 75 | |
| 76 | --- |
| 77 | |
| 78 | ## Example Conversations |
| 79 | |
| 80 | **User:** "帮我把这段文字配音:欢迎来到我们的产品发布会" |
| 81 | |
| 82 | ``` |
| 83 | → Route to: text_to_speech |
| 84 | text: "欢迎来到我们的产品发布会" |
| 85 | voice_id: "JBFqnCBsd6RMkjVDRZzb" |
| 86 | model_id: "eleven_multilingual_v2" |
| 87 | ``` |
| 88 | |
| 89 | > 🎙️ 配音完成 |
| 90 | |
| 91 | --- |
| 92 | |
| 93 | **User:** "给我生成一段 60 秒的轻松背景音乐,适合播客" |
| 94 | |
| 95 | ``` |
| 96 | → Route to: cassetteai-music (fal.ai) |
| 97 | prompt: "relaxing lo-fi background music for a podcast, gentle piano and soft beats, 60 seconds" |
| 98 | duration_seconds: 60 |
| 99 | ``` |
| 100 | |
| 101 | > 🎵 背景音乐生成完成 |
| 102 | |
| 103 | --- |
| 104 | |
| 105 | **User:** "生成一个科幻风格的门开启音效" |
| 106 | |
| 107 | ``` |
| 108 | → Route to: text_to_sound_effects |
| 109 | text: "a futuristic sci-fi door sliding open with a hydraulic hiss" |
| 110 | duration_seconds: 3 |
| 111 | ``` |
| 112 | |
| 113 | --- |
| 114 | |
| 115 | ## Setup |
| 116 | |
| 117 | ### Required |
| 118 | |
| 119 | Set `ELEVENLABS_API_KEY` in `~/.openclaw/openclaw.json`: |
| 120 | |
| 121 | ```json |
| 122 | { |
| 123 | "skills": { |
| 124 | "entries": { |
| 125 | "audiomind": { |
| 126 | "enabled": true, |
| 127 | "env": { |
| 128 | "ELEVENLABS_API_KEY": "your_elevenlabs_key_here" |
| 129 | } |
| 130 | } |
| 131 | } |
| 132 | } |
| 133 | } |
| 134 | ``` |
| 135 | |
| 136 | Get your key at [elevenlabs.io/app/settings/api-keys](https://elevenlabs.io/app/settings/api-keys). |
| 137 | |
| 138 | ### Optional (for fal.ai music & SFX models) |
| 139 | |
| 140 | ```json |
| 141 | "FAL_KEY": "your_fal_key_here" |
| 142 | ``` |
| 143 | |
| 144 | Get your key at [fal.ai/dashboard/keys](https://fal.ai/dashboard/keys). |
| 145 | |
| 146 | --- |
| 147 | |
| 148 | ## Self-Hosting the Proxy |
| 149 | |
| 150 | The `cli.js` connects to a hosted proxy by default. If you want full control — or need to serve users in regions where `vercel.app` is blocked — you can deploy your own instance from the `proxy/` directory. |
| 151 | |
| 152 | ### Quick Deploy (Vercel) |
| 153 | |
| 154 | ```bash |
| 155 | cd proxy |
| 156 | npm install |
| 157 | vercel --prod |
| 158 | ``` |
| 159 | |
| 160 | ### Environment Variables |
| 161 | |
| 162 | Set these in your Vercel project (Dashboard → Settings → Environment Variables): |
| 163 | |
| 164 | | Variable | Required For | Where to Get | |
| 165 | |---|---|---| |
| 166 | | `ELEVENLABS_API_KEY` | TTS, SFX, Voice Clone | [elevenlabs.io/app/settings/api-keys](https://elevenlabs.io/app/settings/api-keys) | |
| 167 | | `FAL_KEY` | Music generation | [fal.ai/dashboard/keys](https://fal.ai/dashboard/keys) | |
| 168 | | `VALID_PRO_KEYS` | (Optional) Restrict access | Comma-separated list of allowed client keys | |
| 169 | |
| 170 | ### Point cli.js to Your Proxy |
| 171 | |
| 172 | ```bash |
| 173 | export AUDIOMIND_PROXY_URL="https://your-domain.com/api/audio" |
| 174 | ``` |
| 175 | |
| 176 | Or set it in `~/.openclaw/openclaw.json`: |
| 177 | |
| 178 | ```json |
| 179 | { |
| 180 | "skills": { |
| 181 | "entries": { |
| 182 | "audiomind": { |
| 183 | "env": { |
| 184 | "AUDIOMIND_PROXY_URL": "https://your-doma |