[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FP6G9QC0ASQYH6M3MAM1BC":3,"skill-same:01M6FP6G9QC0ASQYH6M3MAM1BC":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M6FP6G9QC0ASQYH6M3MAM1BC","voice-ai-tts",null,"High-quality voice synthesis with 9 personas, 11 languages, streaming, and voice cloning using Voice.ai API.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28],"tts","voice","voice ai tts","streaming","api","quality","Synthesis","cloning","personas","ai api","with","2026-11-10 10:12:30",false,"---\nname: voice-ai-tts\ndescription: >\n  High-quality voice synthesis with 9 personas, 11 languages, streaming, and voice cloning using Voice.ai API.\nversion: 1.0.0\n---\n\n# Voice.ai Voices\n\n## ✨ Features\n\n- **9 Voice Personas** - Carefully curated voices for different use cases\n- **11 Languages** - Multi-language synthesis with multilingual model\n- **Streaming Mode** - Real-time audio output as it generates\n- **Voice Cloning** - Clone voices from audio samples\n- **Voice Design** - Customize with temperature and top_p parameters\n- **OpenClaw Integration** - Works with OpenClaw's built-in TTS\n\n---\n\n## ⚙️ Configuration\n\nThe scripts look for your API key in this order:\n\n1. `VOICE_AI_API_KEY` environment variable\n2. OpenClaw config (`~\u002F.openclaw\u002Fopenclaw.json`)\n3. Skill-local `.env` file\n\n**Get your API key:** [Voice.ai Dashboard](https:\u002F\u002Fvoice.ai\u002Fdashboard)\n\n### Create `.env` file (Recommended)\n\n```bash\necho 'VOICE_AI_API_KEY=your-key-here' > .env\n```\n\n### Or export directly\n\n```bash\nexport VOICE_AI_API_KEY=\"your-api-key\"\n```\n\n---\n\n## ? OpenClaw Integration\n\nAdd this skill to your OpenClaw configuration at `~\u002F.openclaw\u002Fopenclaw.json`:\n\n```json\n{\n  \"skills\": {\n    \"voice-ai-tts\": {\n      \"enabled\": true,\n      \"api_key\": \"your-voice-ai-api-key\",\n      \"default_voice\": \"ellie\",\n      \"default_format\": \"mp3\"\n    }\n  },\n  \"tts\": {\n    \"skill\": \"voice-ai-tts\",\n    \"voice_id\": \"d1bf0f33-8e0e-4fbf-acf8-45c3c6262513\",\n    \"streaming\": true\n  }\n}\n```\n\n### YAML config alternative\n\n```yaml\ntts:\n  skill: voice-ai-tts\n  voice_id: d1bf0f33-8e0e-4fbf-acf8-45c3c6262513\n  streaming: true\n```\n\n---\n\n## ? Triggers\n\nThese chat commands work with OpenClaw:\n\n| Command | Description |\n|---------|-------------|\n| `\u002Ftts \u003Ctext>` | Generate speech with default voice |\n| `\u002Ftts --voice ellie \u003Ctext>` | Generate speech with specific voice |\n| `\u002Ftts --stream \u003Ctext>` | Generate with streaming mode |\n| `\u002Fvoices` | List available voices |\n| `\u002Fclone \u003Caudio_url>` | Clone a voice from audio |\n\n**Examples:**\n\n```\n\u002Ftts Hello, welcome to Voice.ai!\n\u002Ftts --voice oliver Good morning, everyone.\n\u002Ftts --voice lilith --stream This is a long story that will stream as it generates...\n```\n\n---\n\n## ?️ Available Voices\n\n| Voice   | ID | Gender | Persona     | Best For                   |\n|---------|-----|--------|-------------|----------------------------|\n| ellie   | `d1bf0f33-8e0e-4fbf-acf8-45c3c6262513` | female | youthful    | Vlogs, social content      |\n| oliver  | `f9e6a5eb-a7fd-4525-9e92-75125249c933` | male   | british     | Narration, tutorials       |\n| lilith  | `4388040c-8812-42f4-a264-f457a6b2b5b9` | female | soft        | ASMR, calm content         |\n| smooth  | `dbb271df-db25-4225-abb0-5200ba1426bc` | male   | deep        | Documentaries, audiobooks  |\n| corpse  | `72d2a864-b236-402e-a166-a838ccc2c273` | male   | distinctive | Gaming, entertainment      |\n| skadi   | `559d3b72-3e79-4f11-9b62-9ec702a6c057` | female | anime       | Character voices           |\n| zhongli | `ed751d4d-e633-4bb0-8f5e-b5c8ddb04402` | male   | deep        | Gaming, dramatic content   |\n| flora   | `a931a6af-fb01-42f0-a8c0-bd14bc302bb1` | female | cheerful    | Kids content, upbeat       |\n| chief   | `bd35e4e6-6283-46b9-86b6-7cfa3dd409b9` | male   | heroic      | Gaming, action content     |\n\n---\n\n## ? Supported Languages\n\n| Code | Language   |\n|------|------------|\n| `en` | English    |\n| `es` | Spanish    |\n| `fr` | French     |\n| `de` | German     |\n| `it` | Italian    |\n| `pt` | Portuguese |\n| `pl` | Polish     |\n| `ru` | Russian    |\n| `nl` | Dutch      |\n| `sv` | Swedish    |\n| `ca` | Catalan    |\n\nUse the multilingual model for non-English languages:\n\n```javascript\nconst audio = await client.generateSpeech({\n  text: 'Bonjour le monde!',\n  voice_id: 'ellie-voice-id',\n  model: 'voiceai-tts-multilingual-v1-latest',\n  language: 'fr'\n});\n```\n\n---\n\n## ? Voice Design\n\nCustomize voice output with these parameters:\n\n| Parameter | Range | Default | Description |\n|-----------|-------|---------|-------------|\n| `temperature` | 0-2 | 1.0 | Higher = more expressive, lower = more consistent |\n| `top_p` | 0-1 | 0.8 | Controls randomness in speech generation |\n\n**Example:**\n\n```javascript\nconst audio = await client.generateSpeech({\n  text: 'This will sound very expressive!',\n  voice_id: 'ellie-voice-id',\n  temperature: 1.8,\n  top_p: 0.9\n});\n```\n\n---\n\n## ? Streaming Mode\n\nGenerate audio with real-time streaming (recommended for long texts):\n\n```bash\n# Stream audio as it generates\nnode scripts\u002Ftts.js --text \"This is a long story...\" --voice ellie --stream\n\n# Streaming with custom output\nnode scripts\u002Ftts.js --text \"Chapter one...\" --voice oliver --stream --output chapter1.mp3\n```\n\n**SDK streaming:**\n\n```javascript\nconst stream = await client.streamSpeech({\n  text: 'Long text here...',\n  voice_id: 'ellie-voice-id'\n});\n\n\u002F\u002F Pipe to file\nstream.pipe(fs.createWriteStream('output.mp3'));\n\n\u002F\u002F Or handle chunks\nstream.on('data', chunk => {\n  \u002F\u002F Process audio chunk\n});\n```\n\n---\n\n## ? Audio Formats\n\n| Format | Description | Use Case |\n|--------|-------------|----------|\n| `mp3` | Standard MP3 (32kHz) | General use |\n| `wav` | Uncompressed WAV | High quality |\n| `pcm` | Raw PCM audio | Processing |\n| `opus_48000_128` | Opus 128kbps | Streaming |\n| `mp3_44100_192` | High-quality MP3 | Professional |\n\nSee `voice-ai-tts-sdk.js` for all format options.\n\n---\n\n## ? CLI Usage\n\n```bash\n# Set API key\necho 'VOICE_AI_API_KEY=your-key-here' > .env\n\n# Generate speech\nnode scripts\u002Ftts.js --text \"Hello world!\" --voice ellie\n\n# Choose different voice\nnode scripts\u002Ftts.js --text \"Good morning!\" --voice oliver --output morning.mp3\n\n# Use streaming for long texts\nnode scripts\u002Ftts.js --text \"Once upon a time...\" --voice lilith --stream\n\n# Show help\nnode scripts\u002Ftts.js --help\n```\n\n---\n\n## ? Voice Cloning\n\nClone any voice from an audio sample:\n\n```javascript\nconst VoiceAI = require('.\u002Fvoice-ai-tts-sdk');\nconst client = new VoiceAI(process.env.VOICE_AI_API_KEY);\n\n\u002F\u002F Clone from file\nconst result = await client.cloneVoice({\n  file: '.\u002Fmy-voice-sample.mp3',\n  name: 'My Custom Voice',\n  visibility: 'PRIVATE',\n  language: 'en'\n});\n\nconsole.log('Voice ID:', result.voice_id);\nconsole.log('Status:', result.status);\n\n\u002F\u002F Wait for voice to be ready\nconst voice = await client.waitForVoice(result.voice_id);\nconsole.log('Voice ready!', voice);\n```\n\n**Requirements:**\n- Audio sample: 10-30 seconds recommended\n- Clear speech, minimal background noise\n- Supported formats: MP3, WAV, M4A\n\n---\n\n## ? Files\n\n```\nvoice-ai-tts\u002F\n├── SKILL.md              # This documentation\n├── voice-ai-tts.yaml     # OpenAPI specification\n├── voice-ai-tts-sdk.js   # JavaScript\u002FNode.js SDK\n├── scripts\u002F\n│   └── tts.js            # CLI tool\n└── .env                  # API key (create this)\n```\n\n---\n\n## ? Cost & Usage\n\nVoice.ai uses a credit-based system. Check your usage:\n\n```javascript\n\u002F\u002F The SDK tracks usage via API responses\nconst voices = await client.listVoices();\n\u002F\u002F Check response headers for rate limit info\n```\n\n**Tips to reduce costs:**\n- Use streaming for long texts (more efficient)\n- Cache generated audio when possible\n- Use appropriate audio quality for your use case\n\n---\n\n## ? Links\n\n- **[Get API Key](https:\u002F\u002Fvoice.ai\u002Fdashboard)** - Sign up and get your key\n- **[API Documentation](https:\u002F\u002Fvoice.ai\u002Fdocs)** - Full API reference\n- **[Voice Library](https:\u002F\u002Fvoice.ai\u002Fvoices)** - Browse all voices\n- **[API Reference](https:\u002F\u002Fvoice.ai\u002Fdocs\u002Fapi-reference\u002Ftext-to-speech\u002Fgenerate-speech)** - Endpoint details\n- **[Pricing](https:\u002F\u002Fvoice.ai\u002Fpricing)** - Plans and credits\n\n---\n\n## ? Changelog\n\n### v1.0.0 (2025-01-31)\n- Initial release\n- 9 curated voice personas\n- 11 language support\n- Streaming mode\n- Voice cloning\n- Voice design parameters\n- Full SDK with error handling\n- CLI tool\n\n---\n\n## ?️ SDK Quick Reference\n\n```javascript\nconst VoiceAI = require('.\u002Fvoice-ai-tts-sdk');\nconst client = new VoiceAI(process.env.VOICE_AI_API_KEY);\n\n\u002F\u002F List voices\nconst voices = await client.listVoices({ limit: 10 });\n\n\u002F\u002F Get voice details\nconst voice = await client.getVoice('voice-id');\n\n\u002F\u002F Generate speech\nconst audio = await client.generateSpeech({\n  text: 'Hello, world!',\n  voice_id: 'voice-id',\n  audio_format: 'mp3'\n});\n\n\u002F\u002F Generate to file\nawait client.generateSpeechToFile(\n  { text: 'Hello!', voice_id: 'voice-id' },\n  'output.mp3'\n);\n\n\u002F\u002F Stream speech\nconst stream = await client.streamSpeech({\n  text: 'Long text...',\n  voice_id: 'voice-id'\n});\n\n\u002F\u002F Clone voice\nconst clone = await client.cloneVoice({\n  file: '.\u002Fsample.mp3',\n  name: 'My Voice'\n});\n\n\u002F\u002F Delete voice\nawait client.deleteVoice('voice-id');\n```\n\n---\n\n## ❓ Troubleshooting\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `AuthenticationError` | Invalid API key | Check your `VOICE_AI_API_KEY` |\n| `PaymentRequiredError` | Out of credits | Add credits at voice.ai\u002Fdashboard |\n| `RateLimitError` | Too many requests | Wait and retry, or upgrade plan |\n| `ValidationError` | Invalid parameters | Check text length and voice_id |\n\n---\n\nMade with ❤️ by [Nick Gill](https:\u002F\u002Fgithub.com\u002FgizmoGremlin)\n","# Voice.ai Voices\n\n## ✨ Features\n\n- **9 Voice Personas** - Carefully curated voices for different use cases\n- **11 Languages** - Multi-language synthesis with multilingual model\n- **Streaming Mode** - Real-time audio output as it generates\n- **Voice Cloning** - Clone voices from audio samples\n- **Voice Design** - Customize with temperature and top_p parameters\n- **OpenClaw Integration** - Works with OpenClaw's built-in TTS\n\n---\n\n## ⚙️ Configuration\n\nThe scripts look for your API key in this order:\n\n1. `VOICE_AI_API_KEY` environment variable\n2. OpenClaw config (`~\u002F.openclaw\u002Fopenclaw.json`)\n3. Skill-local `.env` file\n\n**Get your API key:** [Voice.ai Dashboard](https:\u002F\u002Fvoice.ai\u002Fdashboard)\n\n### Create `.env` file (Recommended)\n\n```bash\necho 'VOICE_AI_API_KEY=your-key-here' > .env\n```\n\n### Or export directly\n\n```bash\nexport VOICE_AI_API_KEY=\"your-api-key\"\n```\n\n---\n\n## ? OpenClaw Integration\n\nAdd this skill to your OpenClaw configuration at `~\u002F.openclaw\u002Fopenclaw.json`:\n\n```json\n{\n  \"skills\": {\n    \"voice-ai-tts\": {\n      \"enabled\": true,\n      \"api_key\": \"your-voice-ai-api-key\",\n      \"default_voice\": \"ellie\",\n      \"default_format\": \"mp3\"\n    }\n  },\n  \"tts\": {\n    \"skill\": \"voice-ai-tts\",\n    \"voice_id\": \"d1bf0f33-8e0e-4fbf-acf8-45c3c6262513\",\n    \"streaming\": true\n  }\n}\n```\n\n### YAML config alternative\n\n```yaml\ntts:\n  skill: voice-ai-tts\n  voice_id: d1bf0f33-8e0e-4fbf-acf8-45c3c6262513\n  streaming: true\n```\n\n---\n\n## ? Triggers\n\nThese chat commands work with OpenClaw:\n\n| Command | Description |\n|---------|-------------|\n| `\u002Ftts \u003Ctext>` | Generate speech with default voice |\n| `\u002Ftts --voice ellie \u003Ctext>` | Generate speech with specific voice |\n| `\u002Ftts --stream \u003Ctext>` | Generate with streaming mode |\n| `\u002Fvoices` | List available voices |\n| `\u002Fclone \u003Caudio_url>` | Clone a voice from audio |\n\n**Examples:**\n\n```\n\u002Ftts Hello, welcome to Voice.ai!\n\u002Ftts --voice oliver Good morning, everyone.\n\u002Ftts --voice lilith --stream This is a long story that will stream as it generates...\n```\n\n---\n\n## ?️ Available Voices\n\n| Voice   | ID | Gender | Persona     | Best For                   |\n|---------|-----|--------|-------------|----------------------------|\n| ellie   | `d1bf0f33-8e0e-4fbf-acf8-45c3c6262513` | female | youthful    | Vlogs, social content      |\n| oliver  | `f9e6a5eb-a7fd-4525-9e92-75125249c933` | male   | british     | Narration, tutorials       |\n| lilith  | `4388040c-8812-42f4-a264-f457a6b2b5b9` | female | soft        | ASMR, calm content         |\n| smooth  | `dbb271df-db25-4225-abb0-5200ba1426bc` | male   | deep        | Documentaries, audiobooks  |\n| corpse  | `72d2a864-b236-402e-a166-a838ccc2c273` | male   | distinctive | Gaming, entertainment      |\n| skadi   | `559d3b72-3e79-4f11-9b62-9ec702a6c057` | female | anime       | Character voices           |\n| zhongli | `ed751d4d-e633-4bb0-8f5e-b5c8ddb04402` | male   | deep        | Gaming, dramatic content   |\n| flora   | `a931a6af-fb01-42f0-a8c0-bd14bc302bb1` | female | cheerful    | Kids content, upbeat       |\n| chief   | `bd35e4e6-6283-46b9-86b6-7cfa3dd409b9` | male   | heroic      | Gaming, action content     |\n\n---\n\n## ? Supported Languages\n\n| Code | Language   |\n|------|------------|\n| `en` | English    |\n| `es` | Spanish    |\n| `fr` | French     |\n| `de` | German     |\n| `it` | Italian    |\n| `pt` | Portuguese |\n| `pl` | Polish     |\n| `ru` | Russian    |\n| `nl` | Dutch      |\n| `sv` | Swedish    |\n| `ca` | Catalan    |\n\nUse the multilingual model for non-English languages:\n\n```javascript\nconst audio = await client.generateSpeech({\n  text: 'Bonjour le monde!',\n  voice_id: 'ellie-voice-id',\n  model: 'voiceai-tts-multilingual-v1-latest',\n  language: 'fr'\n});\n```\n\n---\n\n## ? Voice Design\n\nCustomize voice output with these parameters:\n\n| Parameter | Range | Default | Description |\n|-----------|-------|---------|-------------|\n| `temperature` | 0-2 | 1.0 | Higher = more expressive, lower = more consistent |\n| `top_p` | 0-1 | 0.8 | Controls randomness in speech generation |\n\n**Example:**\n\n```javascript\nconst audio = await client.generateSpeech({\n  text: 'This will sound very expressive!',\n  voice_id: 'ellie-voice-id',\n  temperature: 1.8,\n  top_p: 0.9\n});\n```\n\n---\n\n## ? Streaming Mode\n\nGenerate audio with real-time streaming (recommended for long texts):\n\n```bash\n# Stream audio as it generates\nnode scripts\u002Ftts.js --text \"This is a long story...\" --voice ellie --stream\n\n# Streaming with custom output\nnode scripts\u002Ftts.js --text \"Chapter one...\" --voice oliver --stream --output chapter1.mp3\n```\n\n**SDK streaming:**\n\n```javascript\nconst stream = await client.streamSpeech({\n  text: 'Long text here...',\n  voice_id: 'ellie-voice-id'\n});\n\n\u002F\u002F Pipe to file\nstream.pipe(fs.createWriteStream('output.mp3'));\n\n\u002F\u002F Or handle chunks\nstream.on('data', chunk => {\n  \u002F\u002F Process audio chunk\n});\n```\n\n---\n\n## ? Audio Formats\n\n| Format | Description | Use Case |\n|--------|-------------|----------|\n| `mp3` | Standard MP3 (32kHz) | General use |\n| `wav` | Uncompressed WAV | High quality |\n| `pcm` | Raw PCM audio | Processing |\n| `opus_48000_128` | Opus 128kbps | Streaming |\n| `mp3_44100_192` | High-quality MP3 | Professional |\n\nSee `voice-ai-tts-sdk.js` for all format options.\n\n---\n\n## ? CLI Usage\n\n```bash\n# Set API key\necho 'VOICE_AI_API_KEY=your-key-here' > .env\n\n# Generate speech\nnode scripts\u002Ftts.js --text \"Hello world!\" --voice ellie\n\n# Choose different voice\nnode scripts\u002Ftts.js --text \"Good morning!\" --voice oliver --output morning.mp3\n\n# Use streaming for long texts\nnode scripts\u002Ftts.js --text \"Once upon a time...\" --voice lilith --stream\n\n# Show help\nnode scripts\u002Ftts.js --help\n```\n\n---\n\n## ? Voice Cloning\n\nClone any voice from an audio sample:\n\n```javascript\nconst VoiceAI = require('.\u002Fvoice-ai-tts-sdk');\nconst client = new VoiceAI(process.env.VOICE_AI_API_KEY);\n\n\u002F\u002F Clone from file\nconst result = await client.cloneVoice({\n  file: '.\u002Fmy-voice-sample.mp3',\n  name: 'My Custom Voice',\n  visibility: 'PRIVATE',\n  language: 'en'\n});\n\nconsole.log('Voice ID:', result.voice_id);\nconsole.log('Status:', result.status);\n\n\u002F\u002F Wait for voice to be ready\nconst voice = await client.waitForVoice(result.voice_id);\nconsole.log('Voice ready!', voice);\n```\n\n**Requirements:**\n- Audio sample: 10-30 seconds recommended\n- Clear speech, minimal background noise\n- Supported formats: MP3, WAV, M4A\n\n---\n\n## ? Files\n\n```\nvoice-ai-tts\u002F\n├── SKILL.md              # This documentation\n├── voice-ai-tts.yaml     # OpenAPI specification\n├── voice-ai-tts-sdk.js   # JavaScript\u002FNode.js SDK\n├── scripts\u002F\n│   └── tts.js            # CLI tool\n└── .env                  # API key (create this)\n```\n\n---\n\n## ? Cost & Usage\n\nVoice.ai uses a credit-based system. Check your usage:\n\n```javascript\n\u002F\u002F The SDK tracks usage via API responses\nconst voices = await client.listVoices();\n\u002F\u002F Check response headers for rate limit info\n```\n\n**Tips to reduce costs:**\n- Use streaming for long texts (more efficient)\n- Cache generated audio when possible\n- Use appropriate audio quality for your use case\n\n---\n\n## ? Links\n\n- **[Get API Key](https:\u002F\u002Fvoice.ai\u002Fdashboard)** - Sign up and get your key\n- **[API Documentation](https:\u002F\u002Fvoice.ai\u002Fdocs)** - Full API reference\n- **[Voice Library](https:\u002F\u002Fvoice.ai\u002Fvoices)** - Browse all voices\n- **[API Reference](https:\u002F\u002Fvoice.ai\u002Fdocs\u002Fapi-reference\u002Ftext-to-speech\u002Fgenerate-speech)** - Endpoint details\n- **[Pricing](https:\u002F\u002Fvoice.ai\u002Fpricing)** - Plans and credits\n\n---\n\n## ? Changelog\n\n### v1.0.0 (2025-01-31)\n- Initial release\n- 9 curated voice personas\n- 11 language support\n- Streaming mode\n- Voice cloning\n- Voice design parameters\n- Full SDK with error handling\n- CLI tool\n\n---\n\n## ?️ SDK Quick Reference\n\n```javascript\nconst VoiceAI = require('.\u002Fvoice-ai-tts-sdk');\nconst client = new VoiceAI(process.env.VOICE_AI_API_KEY);\n\n\u002F\u002F List voices\nconst voices = await client.listVoices({ limit: 10 });\n\n\u002F\u002F Get voice details\nconst voice = await client.getVoice('voice-id');\n\n\u002F\u002F Generate speech\nconst audio = await client.generateSpeech({\n  text: 'Hello, world!',\n  voice_id: 'voice-id',\n  audio_format: 'mp3'\n});\n\n\u002F\u002F Generate to file\nawait client.generateSpeechToFile(\n  { text: 'Hello!', voice_id: 'voice-id' },\n  'output.mp3'\n);\n\n\u002F\u002F Stream speech\nconst stream = await client.streamSpeech({\n  text: 'Long text...',\n  voice_id: 'voice-id'\n});\n\n\u002F\u002F Clone voice\nconst clone = await client.cloneVoice({\n  file: '.\u002Fsample.mp3',\n  name: 'My Voice'\n});\n\n\u002F\u002F Delete voice\nawait client.deleteVoice('voice-id');\n```\n\n---\n\n## ❓ Troubleshooting\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `AuthenticationError` | Invalid API key | Check your `VOICE_AI_API_KEY` |\n| `PaymentRequiredError` | Out of credits | Add credits at voice.ai\u002Fdashboard |\n| `RateLimitError` | Too many requests | Wait and retry, or upgrade plan |\n| `ValidationError` | Invalid parameters | Check text length and voice_id |\n\n---\n\nMade with ❤️ by [Nick Gill](https:\u002F\u002Fgithub.com\u002FgizmoGremlin)\n",{"name":5,"version":34,"description":35},"1.0.0","High-quality voice synthesis with 9 personas, 11 languages, streaming, and voice cloning using Voice.ai API.\n","main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add kbarbel640-del\u002Fskills --skill voice-ai-tts",{"tool":49,"command":50},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill voice-ai-tts",{"tool":52,"command":53},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill voice-ai-tts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002FSKILL.md",true,[57,63,69,73],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"_meta.json","REFERENCE","参考文档",304,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002F_meta.json",{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Ftts.js","SCRIPT","脚本",2611,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002Fscripts\u002Ftts.js",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"voice-ai-tts-sdk.js",19441,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002Fvoice-ai-tts-sdk.js",{"path":74,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":75,"sourceHtmlUrl":76},"voice-ai-tts.yaml",25389,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fgizmogremlin\u002Fopenclaw-skill-voice-ai-voices\u002Fvoice-ai-tts.yaml",[78,107,136,157,163,183],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":29},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[90,91,22,28,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106],"crowd prompting","prompting","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":118,"publishedAt":29},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[119,22,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,95,135],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking","use",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":145,"publishedAt":29},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[142],{"categoryNo":143,"categoryName":144,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000021","资料检索与研究",[146,147,148,149,150,151,152,28,153,133,135,154,22,155,156],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":158,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":162,"publishedAt":29},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[161],{"categoryNo":143,"categoryName":144,"taxonomyType":116,"taxonomyTypeDesc":117},[149,148,147,146,156,151,152,28,150,133,135,153,154,22,155],{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":29},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[170,171,172,173,174,175,176,177,178,179,180,181,182],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":193,"publishedAt":29},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[189,190],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},{"categoryNo":191,"categoryName":192,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000037","律师与法务",[194,195,196,197,28,198,199,36,200,154,201,202,203,204,205,104,206,207,208],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]