[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6G4HX9PD615VMXBC0994WPE":3,"skill-same:01M6G4HX9PD615VMXBC0994WPE":97},{"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":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":60,"commitSha":61,"skillDirectory":62,"forksCount":63,"repositoryHtmlUrl":64,"repositoryHomepageUrl":6,"ownerHtmlUrl":65,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":66,"install":67,"resources":80},"01M6G4HX9PD615VMXBC0994WPE","voice-reply",null,"Local text-to-speech using Piper voices via sherpa-onnx. 100% offline, no API keys required.\nUse when user asks for a voice reply, audio response, spoken answer, or wants to hear something read aloud.\nSupports multiple languages including German (thorsten) and English (ryan) voices.\nOutputs Telegram-compatible voice notes with [[audio_as_voice]] tag.","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\u002Fstolot0mt0m\u002Fvoice-reply\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"reply","voice reply","voice","german","notes","piper","answer","text-to-speech","with","english","as","local","speech","linux","telegram","use","text","onnx","Audio","api","2026-11-10 10:12:30",false,"---\nname: voice-reply\nversion: 1.0.0\ndescription: |\n  Local text-to-speech using Piper voices via sherpa-onnx. 100% offline, no API keys required.\n  Use when user asks for a voice reply, audio response, spoken answer, or wants to hear something read aloud.\n  Supports multiple languages including German (thorsten) and English (ryan) voices.\n  Outputs Telegram-compatible voice notes with [[audio_as_voice]] tag.\nmetadata:\n  openclaw:\n    emoji: \"?\"\n    os: [\"linux\"]\n    requires:\n      bins: [\"ffmpeg\"]\n      env: [\"SHERPA_ONNX_DIR\", \"PIPER_VOICES_DIR\"]\n---\n\n# Voice Reply\n\nGenerate voice audio replies using local Piper TTS via sherpa-onnx. Completely offline, no cloud APIs needed.\n\n## Features\n\n- **100% Local** - No internet connection required after setup\n- **No API Keys** - Free to use, no accounts needed\n- **Multi-language** - German and English voices included\n- **Telegram Ready** - Outputs voice notes that display as bubbles\n- **Auto-detect Language** - Automatically selects voice based on text\n\n## Prerequisites\n\n1. **sherpa-onnx** runtime installed\n2. **Piper voice models** downloaded\n3. **ffmpeg** for audio conversion\n\n## Installation\n\n### Quick Install\n\n```bash\ncd scripts\nsudo .\u002Finstall.sh\n```\n\n### Manual Installation\n\n#### 1. Install sherpa-onnx\n\n```bash\nsudo mkdir -p \u002Fopt\u002Fsherpa-onnx\ncd \u002Fopt\u002Fsherpa-onnx\ncurl -L -o sherpa.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Fv1.12.23\u002Fsherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2\"\nsudo tar -xjf sherpa.tar.bz2 --strip-components=1\nrm sherpa.tar.bz2\n```\n\n#### 2. Download Voice Models\n\n```bash\nsudo mkdir -p \u002Fopt\u002Fpiper-voices\ncd \u002Fopt\u002Fpiper-voices\n\n# German - thorsten (medium quality, natural male voice)\ncurl -L -o thorsten.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Ftts-models\u002Fvits-piper-de_DE-thorsten-medium.tar.bz2\"\nsudo tar -xjf thorsten.tar.bz2 && rm thorsten.tar.bz2\n\n# English - ryan (high quality, clear US male voice)\ncurl -L -o ryan.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Ftts-models\u002Fvits-piper-en_US-ryan-high.tar.bz2\"\nsudo tar -xjf ryan.tar.bz2 && rm ryan.tar.bz2\n```\n\n#### 3. Install ffmpeg\n\n```bash\nsudo apt install -y ffmpeg\n```\n\n#### 4. Set Environment Variables\n\nAdd to your OpenClaw service or shell:\n\n```bash\nexport SHERPA_ONNX_DIR=\"\u002Fopt\u002Fsherpa-onnx\"\nexport PIPER_VOICES_DIR=\"\u002Fopt\u002Fpiper-voices\"\n```\n\n## Usage\n\n```bash\n{baseDir}\u002Fbin\u002Fvoice-reply \"Text to speak\" [language]\n```\n\n### Parameters\n\n| Parameter | Description | Default |\n|-----------|-------------|---------|\n| text | The text to convert to speech | (required) |\n| language | `de` for German, `en` for English | auto-detect |\n\n### Examples\n\n```bash\n# German (explicit)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Hallo, ich bin dein Assistent!\" de\n\n# English (explicit)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Hello, I am your assistant!\" en\n\n# Auto-detect (detects German from umlauts and common words)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Guten Tag, wie geht es dir?\"\n\n# Auto-detect (defaults to English)\n{baseDir}\u002Fbin\u002Fvoice-reply \"The weather is nice today.\"\n```\n\n## Output Format\n\nThe script outputs two lines that OpenClaw processes for Telegram:\n\n```\n[[audio_as_voice]]\nMEDIA:\u002Ftmp\u002Fvoice-reply-output.ogg\n```\n\n- `[[audio_as_voice]]` - Tag that tells Telegram to display as voice bubble\n- `MEDIA:path` - Path to the generated OGG Opus audio file\n\n## Available Voices\n\n| Language | Voice | Quality | Description |\n|----------|-------|---------|-------------|\n| German (de) | thorsten | medium | Natural male voice, clear pronunciation |\n| English (en) | ryan | high | Clear US male voice, professional tone |\n\n## Adding More Voices\n\nBrowse available Piper voices at:\n- https:\u002F\u002Frhasspy.github.io\u002Fpiper-samples\u002F\n- https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Ftag\u002Ftts-models\n\nDownload and extract to `$PIPER_VOICES_DIR`, then modify the script to include the new voice.\n\n## Troubleshooting\n\n### \"TTS binary not found\"\nEnsure `SHERPA_ONNX_DIR` is set and contains `bin\u002Fsherpa-onnx-offline-tts`.\n\n### \"Failed to generate audio\"\nCheck that voice model files exist: `*.onnx`, `tokens.txt`, `espeak-ng-data\u002F`\n\n### Audio plays as file instead of voice bubble\nEnsure the output includes `[[audio_as_voice]]` tag on its own line before the `MEDIA:` line.\n\n## Credits\n\n- [sherpa-onnx](https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx) - Offline speech processing\n- [Piper](https:\u002F\u002Fgithub.com\u002Frhasspy\u002Fpiper) - Fast local TTS voices\n- [Thorsten Voice](https:\u002F\u002Fgithub.com\u002FthorstenMueller\u002FThorsten-Voice) - German voice dataset\n","# Voice Reply\n\nGenerate voice audio replies using local Piper TTS via sherpa-onnx. Completely offline, no cloud APIs needed.\n\n## Features\n\n- **100% Local** - No internet connection required after setup\n- **No API Keys** - Free to use, no accounts needed\n- **Multi-language** - German and English voices included\n- **Telegram Ready** - Outputs voice notes that display as bubbles\n- **Auto-detect Language** - Automatically selects voice based on text\n\n## Prerequisites\n\n1. **sherpa-onnx** runtime installed\n2. **Piper voice models** downloaded\n3. **ffmpeg** for audio conversion\n\n## Installation\n\n### Quick Install\n\n```bash\ncd scripts\nsudo .\u002Finstall.sh\n```\n\n### Manual Installation\n\n#### 1. Install sherpa-onnx\n\n```bash\nsudo mkdir -p \u002Fopt\u002Fsherpa-onnx\ncd \u002Fopt\u002Fsherpa-onnx\ncurl -L -o sherpa.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Fv1.12.23\u002Fsherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2\"\nsudo tar -xjf sherpa.tar.bz2 --strip-components=1\nrm sherpa.tar.bz2\n```\n\n#### 2. Download Voice Models\n\n```bash\nsudo mkdir -p \u002Fopt\u002Fpiper-voices\ncd \u002Fopt\u002Fpiper-voices\n\n# German - thorsten (medium quality, natural male voice)\ncurl -L -o thorsten.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Ftts-models\u002Fvits-piper-de_DE-thorsten-medium.tar.bz2\"\nsudo tar -xjf thorsten.tar.bz2 && rm thorsten.tar.bz2\n\n# English - ryan (high quality, clear US male voice)\ncurl -L -o ryan.tar.bz2 \"https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Fdownload\u002Ftts-models\u002Fvits-piper-en_US-ryan-high.tar.bz2\"\nsudo tar -xjf ryan.tar.bz2 && rm ryan.tar.bz2\n```\n\n#### 3. Install ffmpeg\n\n```bash\nsudo apt install -y ffmpeg\n```\n\n#### 4. Set Environment Variables\n\nAdd to your OpenClaw service or shell:\n\n```bash\nexport SHERPA_ONNX_DIR=\"\u002Fopt\u002Fsherpa-onnx\"\nexport PIPER_VOICES_DIR=\"\u002Fopt\u002Fpiper-voices\"\n```\n\n## Usage\n\n```bash\n{baseDir}\u002Fbin\u002Fvoice-reply \"Text to speak\" [language]\n```\n\n### Parameters\n\n| Parameter | Description | Default |\n|-----------|-------------|---------|\n| text | The text to convert to speech | (required) |\n| language | `de` for German, `en` for English | auto-detect |\n\n### Examples\n\n```bash\n# German (explicit)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Hallo, ich bin dein Assistent!\" de\n\n# English (explicit)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Hello, I am your assistant!\" en\n\n# Auto-detect (detects German from umlauts and common words)\n{baseDir}\u002Fbin\u002Fvoice-reply \"Guten Tag, wie geht es dir?\"\n\n# Auto-detect (defaults to English)\n{baseDir}\u002Fbin\u002Fvoice-reply \"The weather is nice today.\"\n```\n\n## Output Format\n\nThe script outputs two lines that OpenClaw processes for Telegram:\n\n```\n[[audio_as_voice]]\nMEDIA:\u002Ftmp\u002Fvoice-reply-output.ogg\n```\n\n- `[[audio_as_voice]]` - Tag that tells Telegram to display as voice bubble\n- `MEDIA:path` - Path to the generated OGG Opus audio file\n\n## Available Voices\n\n| Language | Voice | Quality | Description |\n|----------|-------|---------|-------------|\n| German (de) | thorsten | medium | Natural male voice, clear pronunciation |\n| English (en) | ryan | high | Clear US male voice, professional tone |\n\n## Adding More Voices\n\nBrowse available Piper voices at:\n- https:\u002F\u002Frhasspy.github.io\u002Fpiper-samples\u002F\n- https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx\u002Freleases\u002Ftag\u002Ftts-models\n\nDownload and extract to `$PIPER_VOICES_DIR`, then modify the script to include the new voice.\n\n## Troubleshooting\n\n### \"TTS binary not found\"\nEnsure `SHERPA_ONNX_DIR` is set and contains `bin\u002Fsherpa-onnx-offline-tts`.\n\n### \"Failed to generate audio\"\nCheck that voice model files exist: `*.onnx`, `tokens.txt`, `espeak-ng-data\u002F`\n\n### Audio plays as file instead of voice bubble\nEnsure the output includes `[[audio_as_voice]]` tag on its own line before the `MEDIA:` line.\n\n## Credits\n\n- [sherpa-onnx](https:\u002F\u002Fgithub.com\u002Fk2-fsa\u002Fsherpa-onnx) - Offline speech processing\n- [Piper](https:\u002F\u002Fgithub.com\u002Frhasspy\u002Fpiper) - Fast local TTS voices\n- [Thorsten Voice](https:\u002F\u002Fgithub.com\u002FthorstenMueller\u002FThorsten-Voice) - German voice dataset\n",{"name":5,"version":48,"metadata":49,"description":59},"1.0.0",{"openclaw":50},{"os":51,"emoji":52,"requires":53},[36],"?",{"env":54,"bins":57},[55,56],"SHERPA_ONNX_DIR","PIPER_VOICES_DIR",[58],"ffmpeg","Local text-to-speech using Piper voices via sherpa-onnx. 100% offline, no API keys required.\nUse when user asks for a voice reply, audio response, spoken answer, or wants to hear something read aloud.\nSupports multiple languages including German (thorsten) and English (ryan) voices.\nOutputs Telegram-compatible voice notes with [[audio_as_voice]] tag.\n","main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fstolot0mt0m\u002Fvoice-reply",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":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add kbarbel640-del\u002Fskills --skill voice-reply",{"tool":73,"command":74},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill voice-reply",{"tool":76,"command":77},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill voice-reply","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fstolot0mt0m\u002Fvoice-reply\u002FSKILL.md",true,[81,87,91],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"_meta.json","REFERENCE","参考文档",279,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fstolot0mt0m\u002Fvoice-reply\u002F_meta.json",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"README.md",1960,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fstolot0mt0m\u002Fvoice-reply\u002FREADME.md",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Finstall.sh","SCRIPT","脚本",4007,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fstolot0mt0m\u002Fvoice-reply\u002Fscripts\u002Finstall.sh",[98,126,152,173,179,198],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":43},"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",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[110,111,42,31,112,113,114,115,116,117,39,118,119,120,121,122,123,124,125],"crowd prompting","prompting","tokens","domain","world","prompts","operations","instructions","tool","system","improve","productivity","marketplace","https","content","ai agents",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":135,"publishedAt":43},"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",[132],{"categoryNo":133,"categoryName":134,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[136,42,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,115,38],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":161,"publishedAt":43},"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",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[162,163,164,165,166,167,168,31,169,150,38,170,42,171,172],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":174,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":178,"publishedAt":43},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[177],{"categoryNo":159,"categoryName":160,"taxonomyType":20,"taxonomyTypeDesc":21},[165,164,163,162,172,167,168,31,166,150,38,169,170,42,171],{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":43},"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",[],[186,187,188,189,190,191,192,36,193,194,195,196,197],"git","summary","git summary","commits","repository","win32","status","contributors","true","quick","get","branches",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":208,"publishedAt":43},"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",[204,205],{"categoryNo":133,"categoryName":134,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":206,"categoryName":207,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000037","律师与法务",[209,210,211,212,31,213,214,60,215,170,216,217,218,219,220,123,221,222,223],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]