{
  "schemaVersion": "1.0",
  "item": {
    "slug": "macos-local-voice",
    "name": "macOS Local Voice",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/STRRL/macos-local-voice",
    "canonicalUrl": "https://clawhub.ai/STRRL/macos-local-voice",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/macos-local-voice",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=macos-local-voice",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/stt.mjs",
      "scripts/tts.mjs",
      "scripts/voices.mjs"
    ],
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/macos-local-voice"
    },
    "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/macos-local-voice",
    "agentPageUrl": "https://openagent3.xyz/skills/macos-local-voice/agent",
    "manifestUrl": "https://openagent3.xyz/skills/macos-local-voice/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/macos-local-voice/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": "macOS Local Voice",
        "body": "Fully local speech-to-text (STT) and text-to-speech (TTS) on macOS. No API keys, no network, no cloud. All processing happens on-device."
      },
      {
        "title": "Requirements",
        "body": "macOS (Apple Silicon recommended, Intel works too)\nyap CLI in PATH — install via brew install finnvoor/tools/yap\nffmpeg in PATH (optional, needed for ogg/opus output) — brew install ffmpeg\nsay and osascript are macOS built-in"
      },
      {
        "title": "Speech-to-Text (STT)",
        "body": "Transcribe an audio file to text using Apple's on-device speech recognition.\n\nnode {baseDir}/scripts/stt.mjs <audio_file> [locale]\n\naudio_file: path to audio (ogg, m4a, mp3, wav, etc.)\nlocale: optional, e.g. zh_CN, en_US, ja_JP. If omitted, uses system default.\nOutputs transcribed text to stdout."
      },
      {
        "title": "Supported STT locales",
        "body": "Use node {baseDir}/scripts/stt.mjs --locales to list all supported locales.\n\nKey locales: en_US, en_GB, zh_CN, zh_TW, zh_HK, ja_JP, ko_KR, fr_FR, de_DE, es_ES, pt_BR, ru_RU, vi_VN, th_TH."
      },
      {
        "title": "Language detection tips",
        "body": "If the user's recent messages are in Chinese → use zh_CN\nIf in English → use en_US\nIf mixed or unclear → try without locale (system default)"
      },
      {
        "title": "Text-to-Speech (TTS)",
        "body": "Convert text to an audio file using macOS native TTS.\n\nnode {baseDir}/scripts/tts.mjs \"<text>\" [voice_name] [output_path]\n\ntext: the text to speak\nvoice_name: optional, e.g. Yue (Premium), Tingting, Ava (Premium). If omitted, auto-selects the best available voice based on text language.\noutput_path: optional, defaults to a timestamped file in ~/.openclaw/media/outbound/\nOutputs the generated audio file path to stdout.\nIf ffmpeg is available, output is ogg/opus (ideal for messaging platforms). Otherwise aiff."
      },
      {
        "title": "Sending as voice note",
        "body": "After generating the audio file, send it using the message tool:\n\nmessage action=send media=<path_from_tts.sh> asVoice=true"
      },
      {
        "title": "Voice Management",
        "body": "List available voices, check readiness, or find the best voice for a language:\n\nnode {baseDir}/scripts/voices.mjs list [locale]     # List voices, optionally filter by locale\nnode {baseDir}/scripts/voices.mjs check \"<name>\"     # Check if a specific voice is downloaded and ready\nnode {baseDir}/scripts/voices.mjs best <locale>       # Get the highest quality voice for a locale"
      },
      {
        "title": "Quality levels",
        "body": "1 = compact (low quality, always available)\n2 = enhanced (mid quality, may need download)\n3 = premium (highest quality, needs download from System Settings)"
      },
      {
        "title": "If a voice is not available",
        "body": "Tell the user: \"Voice X is not downloaded. Go to System Settings → Accessibility → Spoken Content → System Voice → Manage Voices to download it.\""
      },
      {
        "title": "Notes",
        "body": "The say command silently falls back to a default voice if the requested voice is not available (exit code 0, no error). Always use voices.mjs check before calling tts.mjs with a specific voice name.\nPremium voices (e.g. Yue (Premium), Ava (Premium)) sound significantly better but must be manually downloaded by the user.\nSiri voices are not accessible via the speech synthesis API."
      }
    ],
    "body": "macOS Local Voice\n\nFully local speech-to-text (STT) and text-to-speech (TTS) on macOS. No API keys, no network, no cloud. All processing happens on-device.\n\nRequirements\nmacOS (Apple Silicon recommended, Intel works too)\nyap CLI in PATH — install via brew install finnvoor/tools/yap\nffmpeg in PATH (optional, needed for ogg/opus output) — brew install ffmpeg\nsay and osascript are macOS built-in\nSpeech-to-Text (STT)\n\nTranscribe an audio file to text using Apple's on-device speech recognition.\n\nnode {baseDir}/scripts/stt.mjs <audio_file> [locale]\n\naudio_file: path to audio (ogg, m4a, mp3, wav, etc.)\nlocale: optional, e.g. zh_CN, en_US, ja_JP. If omitted, uses system default.\nOutputs transcribed text to stdout.\nSupported STT locales\n\nUse node {baseDir}/scripts/stt.mjs --locales to list all supported locales.\n\nKey locales: en_US, en_GB, zh_CN, zh_TW, zh_HK, ja_JP, ko_KR, fr_FR, de_DE, es_ES, pt_BR, ru_RU, vi_VN, th_TH.\n\nLanguage detection tips\nIf the user's recent messages are in Chinese → use zh_CN\nIf in English → use en_US\nIf mixed or unclear → try without locale (system default)\nText-to-Speech (TTS)\n\nConvert text to an audio file using macOS native TTS.\n\nnode {baseDir}/scripts/tts.mjs \"<text>\" [voice_name] [output_path]\n\ntext: the text to speak\nvoice_name: optional, e.g. Yue (Premium), Tingting, Ava (Premium). If omitted, auto-selects the best available voice based on text language.\noutput_path: optional, defaults to a timestamped file in ~/.openclaw/media/outbound/\nOutputs the generated audio file path to stdout.\nIf ffmpeg is available, output is ogg/opus (ideal for messaging platforms). Otherwise aiff.\nSending as voice note\n\nAfter generating the audio file, send it using the message tool:\n\nmessage action=send media=<path_from_tts.sh> asVoice=true\n\nVoice Management\n\nList available voices, check readiness, or find the best voice for a language:\n\nnode {baseDir}/scripts/voices.mjs list [locale]     # List voices, optionally filter by locale\nnode {baseDir}/scripts/voices.mjs check \"<name>\"     # Check if a specific voice is downloaded and ready\nnode {baseDir}/scripts/voices.mjs best <locale>       # Get the highest quality voice for a locale\n\nQuality levels\n1 = compact (low quality, always available)\n2 = enhanced (mid quality, may need download)\n3 = premium (highest quality, needs download from System Settings)\nIf a voice is not available\n\nTell the user: \"Voice X is not downloaded. Go to System Settings → Accessibility → Spoken Content → System Voice → Manage Voices to download it.\"\n\nNotes\nThe say command silently falls back to a default voice if the requested voice is not available (exit code 0, no error). Always use voices.mjs check before calling tts.mjs with a specific voice name.\nPremium voices (e.g. Yue (Premium), Ava (Premium)) sound significantly better but must be manually downloaded by the user.\nSiri voices are not accessible via the speech synthesis API."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/STRRL/macos-local-voice",
    "publisherUrl": "https://clawhub.ai/STRRL/macos-local-voice",
    "owner": "STRRL",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/macos-local-voice",
    "downloadUrl": "https://openagent3.xyz/downloads/macos-local-voice",
    "agentUrl": "https://openagent3.xyz/skills/macos-local-voice/agent",
    "manifestUrl": "https://openagent3.xyz/skills/macos-local-voice/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/macos-local-voice/agent.md"
  }
}