{
  "schemaVersion": "1.0",
  "item": {
    "slug": "voiceclaw",
    "name": "VoiceClaw",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/Asif2BD/voiceclaw",
    "canonicalUrl": "https://clawhub.ai/Asif2BD/voiceclaw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/voiceclaw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=voiceclaw",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "LICENSE",
      "SECURITY.md",
      ".clawhubsafe",
      "SKILL.md",
      "scripts/transcribe.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/voiceclaw"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/voiceclaw",
    "agentPageUrl": "https://openagent3.xyz/skills/voiceclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/voiceclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/voiceclaw/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "VoiceClaw",
        "body": "Local-only voice I/O for OpenClaw agents.\n\nSTT: transcribe.sh — converts audio to text via local Whisper binary\nTTS: speak.sh — converts text to speech via local Piper binary\nNetwork calls: none — both scripts run fully offline\nNo cloud APIs, no API keys required"
      },
      {
        "title": "Prerequisites",
        "body": "The following must be installed on the system before using this skill:\n\nRequirementPurposewhisper binarySpeech-to-text inferenceggml-base.en.bin model fileWhisper STT modelpiper binaryText-to-speech synthesis*.onnx voice model filesPiper TTS voicesffmpegAudio format conversion\n\nSee README.md for installation and setup instructions."
      },
      {
        "title": "Environment Variables",
        "body": "VariableDefaultPurposeWHISPER_BINauto-detected via whichPath to whisper binaryWHISPER_MODEL~/.cache/whisper/ggml-base.en.binPath to Whisper model filePIPER_BINauto-detected via whichPath to piper binaryVOICECLAW_VOICES_DIR~/.local/share/piper/voicesDirectory containing .onnx voice model files"
      },
      {
        "title": "Verify Setup",
        "body": "which whisper && echo \"STT binary: OK\"\nwhich piper   && echo \"TTS binary: OK\"\nwhich ffmpeg  && echo \"ffmpeg: OK\"\nls \"${WHISPER_MODEL:-$HOME/.cache/whisper/ggml-base.en.bin}\" && echo \"STT model: OK\"\nls \"${VOICECLAW_VOICES_DIR:-$HOME/.local/share/piper/voices}\"/*.onnx 2>/dev/null | head -1 && echo \"TTS voices: OK\""
      },
      {
        "title": "Inbound Voice: Transcribe",
        "body": "# Transcribe audio → text (supports ogg, mp3, m4a, wav, flac)\nTRANSCRIPT=$(bash scripts/transcribe.sh /path/to/audio.ogg)\n\nOverride model path:\n\nWHISPER_MODEL=/path/to/ggml-base.en.bin bash scripts/transcribe.sh audio.ogg"
      },
      {
        "title": "Outbound Voice: Speak",
        "body": "# Step 1: Generate WAV (local Piper — no network)\nWAV=$(bash scripts/speak.sh \"Your response here.\" /tmp/reply.wav en_US-lessac-medium)\n\n# Step 2: Convert to OGG Opus (Telegram voice requirement)\nffmpeg -i \"$WAV\" -c:a libopus -b:a 32k /tmp/reply.ogg -y -loglevel error\n\n# Step 3: Send via message tool (filePath=/tmp/reply.ogg)\n\nOverride voice directory:\n\nVOICECLAW_VOICES_DIR=/path/to/voices bash scripts/speak.sh \"Hello.\" /tmp/reply.wav"
      },
      {
        "title": "Available Voices",
        "body": "VoiceStyleen_US-lessac-mediumNeutral American (default)en_US-amy-mediumWarm American femaleen_US-joe-mediumAmerican maleen_US-kusal-mediumExpressive American maleen_US-danny-lowDeep American male (fast)en_GB-alba-mediumBritish femaleen_GB-northern_english_male-mediumNorthern British male"
      },
      {
        "title": "Agent Behavior Rules",
        "body": "Voice in → Voice + Text out. Always respond with both a voice reply and a text reply when a voice message is received.\nInclude the transcript. Show \"🎙️ I heard: [transcript]\" at the top of every text reply to a voice message.\nKeep voice responses concise. Piper TTS works best under ~200 words — summarize for audio, include full detail in text.\nLocal only. Never use a cloud TTS/STT API. Only the local whisper and piper binaries.\nSend voice before text. Send the audio file first, then follow with the text reply."
      },
      {
        "title": "Full Example",
        "body": "# 1. Transcribe inbound voice message\nTRANSCRIPT=$(bash path/to/voiceclaw/scripts/transcribe.sh /path/to/voice.ogg)\n\n# 2. Compose reply and generate audio\nRESPONSE=\"Deployment complete. All checks passed.\"\nWAV=$(bash path/to/voiceclaw/scripts/speak.sh \"$RESPONSE\" /tmp/reply_$$.wav)\nffmpeg -i \"$WAV\" -c:a libopus -b:a 32k /tmp/reply_$$.ogg -y -loglevel error\n\n# 3. Send voice + text\n# message(action=send, filePath=/tmp/reply_$$.ogg, ...)\n# reply: \"🎙️ I heard: $TRANSCRIPT\\n\\n$RESPONSE\""
      },
      {
        "title": "Troubleshooting",
        "body": "IssueFixwhisper: command not foundEnsure whisper binary is installed and in PATHWhisper model not foundSet WHISPER_MODEL=/path/to/ggml-base.en.binpiper: command not foundEnsure piper binary is installed and in PATHVoice model missingSet VOICECLAW_VOICES_DIR=/path/to/voices/OGG won't play on TelegramEnsure -c:a libopus flag in ffmpeg command"
      }
    ],
    "body": "VoiceClaw\n\nLocal-only voice I/O for OpenClaw agents.\n\nSTT: transcribe.sh — converts audio to text via local Whisper binary\nTTS: speak.sh — converts text to speech via local Piper binary\nNetwork calls: none — both scripts run fully offline\nNo cloud APIs, no API keys required\nPrerequisites\n\nThe following must be installed on the system before using this skill:\n\nRequirement\tPurpose\nwhisper binary\tSpeech-to-text inference\nggml-base.en.bin model file\tWhisper STT model\npiper binary\tText-to-speech synthesis\n*.onnx voice model files\tPiper TTS voices\nffmpeg\tAudio format conversion\n\nSee README.md for installation and setup instructions.\n\nEnvironment Variables\nVariable\tDefault\tPurpose\nWHISPER_BIN\tauto-detected via which\tPath to whisper binary\nWHISPER_MODEL\t~/.cache/whisper/ggml-base.en.bin\tPath to Whisper model file\nPIPER_BIN\tauto-detected via which\tPath to piper binary\nVOICECLAW_VOICES_DIR\t~/.local/share/piper/voices\tDirectory containing .onnx voice model files\nVerify Setup\nwhich whisper && echo \"STT binary: OK\"\nwhich piper   && echo \"TTS binary: OK\"\nwhich ffmpeg  && echo \"ffmpeg: OK\"\nls \"${WHISPER_MODEL:-$HOME/.cache/whisper/ggml-base.en.bin}\" && echo \"STT model: OK\"\nls \"${VOICECLAW_VOICES_DIR:-$HOME/.local/share/piper/voices}\"/*.onnx 2>/dev/null | head -1 && echo \"TTS voices: OK\"\n\nInbound Voice: Transcribe\n# Transcribe audio → text (supports ogg, mp3, m4a, wav, flac)\nTRANSCRIPT=$(bash scripts/transcribe.sh /path/to/audio.ogg)\n\n\nOverride model path:\n\nWHISPER_MODEL=/path/to/ggml-base.en.bin bash scripts/transcribe.sh audio.ogg\n\nOutbound Voice: Speak\n# Step 1: Generate WAV (local Piper — no network)\nWAV=$(bash scripts/speak.sh \"Your response here.\" /tmp/reply.wav en_US-lessac-medium)\n\n# Step 2: Convert to OGG Opus (Telegram voice requirement)\nffmpeg -i \"$WAV\" -c:a libopus -b:a 32k /tmp/reply.ogg -y -loglevel error\n\n# Step 3: Send via message tool (filePath=/tmp/reply.ogg)\n\n\nOverride voice directory:\n\nVOICECLAW_VOICES_DIR=/path/to/voices bash scripts/speak.sh \"Hello.\" /tmp/reply.wav\n\nAvailable Voices\nVoice\tStyle\nen_US-lessac-medium\tNeutral American (default)\nen_US-amy-medium\tWarm American female\nen_US-joe-medium\tAmerican male\nen_US-kusal-medium\tExpressive American male\nen_US-danny-low\tDeep American male (fast)\nen_GB-alba-medium\tBritish female\nen_GB-northern_english_male-medium\tNorthern British male\nAgent Behavior Rules\nVoice in → Voice + Text out. Always respond with both a voice reply and a text reply when a voice message is received.\nInclude the transcript. Show \"🎙️ I heard: [transcript]\" at the top of every text reply to a voice message.\nKeep voice responses concise. Piper TTS works best under ~200 words — summarize for audio, include full detail in text.\nLocal only. Never use a cloud TTS/STT API. Only the local whisper and piper binaries.\nSend voice before text. Send the audio file first, then follow with the text reply.\nFull Example\n# 1. Transcribe inbound voice message\nTRANSCRIPT=$(bash path/to/voiceclaw/scripts/transcribe.sh /path/to/voice.ogg)\n\n# 2. Compose reply and generate audio\nRESPONSE=\"Deployment complete. All checks passed.\"\nWAV=$(bash path/to/voiceclaw/scripts/speak.sh \"$RESPONSE\" /tmp/reply_$$.wav)\nffmpeg -i \"$WAV\" -c:a libopus -b:a 32k /tmp/reply_$$.ogg -y -loglevel error\n\n# 3. Send voice + text\n# message(action=send, filePath=/tmp/reply_$$.ogg, ...)\n# reply: \"🎙️ I heard: $TRANSCRIPT\\n\\n$RESPONSE\"\n\nTroubleshooting\nIssue\tFix\nwhisper: command not found\tEnsure whisper binary is installed and in PATH\nWhisper model not found\tSet WHISPER_MODEL=/path/to/ggml-base.en.bin\npiper: command not found\tEnsure piper binary is installed and in PATH\nVoice model missing\tSet VOICECLAW_VOICES_DIR=/path/to/voices/\nOGG won't play on Telegram\tEnsure -c:a libopus flag in ffmpeg command"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Asif2BD/voiceclaw",
    "publisherUrl": "https://clawhub.ai/Asif2BD/voiceclaw",
    "owner": "Asif2BD",
    "version": "1.0.6",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/voiceclaw",
    "downloadUrl": "https://openagent3.xyz/downloads/voiceclaw",
    "agentUrl": "https://openagent3.xyz/skills/voiceclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/voiceclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/voiceclaw/agent.md"
  }
}