在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
设计与多媒体
VoiceClaw
试用Local voice I/O for OpenClaw agents. Transcribe inbound audio/voice messages using local Whisper (whisper.cpp) and generate voice replies using local Piper T...
它能做什么
Local-only voice I/O for OpenClaw agents.
技能文档
VoiceClaw
Local-only voice I/O for OpenClaw agents.
- STT:
transcribe.sh— converts audio to text via local Whisper binary - TTS:
speak.sh— converts text to speech via local Piper binary - Network calls: none — both scripts run fully offline
- No cloud APIs, no API keys required
Prerequisites
The following must be installed on the system before using this skill:
| Requirement | Purpose |
|---|---|
whisper binary | Speech-to-text inference |
ggml-base.en.bin model file | Whisper STT model |
piper binary | Text-to-speech synthesis |
*.onnx voice model files | Piper TTS voices |
ffmpeg | Audio format conversion |
See README.md for installation and setup instructions.
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
WHISPER_BIN | auto-detected via which | Path to whisper binary |
WHISPER_MODEL | ~/.cache/whisper/ggml-base.en.bin | Path to Whisper model file |
PIPER_BIN | auto-detected via which | Path to piper binary |
VOICECLAW_VOICES_DIR | ~/.local/share/piper/voices | Directory containing .onnx voice model files |
Verify Setup
which whisper && echo "STT binary: OK"
which piper && echo "TTS binary: OK"
which ffmpeg && echo "ffmpeg: OK"
ls "${WHISPER_MODEL:-$HOME/.cache/whisper/ggml-base.en.bin}" && echo "STT model: OK"
ls "${VOICECLAW_VOICES_DIR:-$HOME/.local/share/piper/voices}"/*.onnx 2>/dev/null | head -1 && echo "TTS voices: OK"
Inbound Voice: Transcribe
# Transcribe audio → text (supports ogg, mp3, m4a, wav, flac)
TRANSCRIPT=$(bash scripts/transcribe.sh /path/to/audio.ogg)
Override model path:
WHISPER_MODEL=/path/to/ggml-base.en.bin bash scripts/transcribe.sh audio.ogg
Outbound Voice: Speak
# Step 1: Generate WAV (local Piper — no network)
WAV=$(bash scripts/speak.sh "Your response here." /tmp/reply.wav en_US-lessac-medium)
# Step 2: Convert to OGG Opus (Telegram voice requirement)
ffmpeg -i "$WAV" -c:a libopus -b:a 32k /tmp/reply.ogg -y -loglevel error
# Step 3: Send via message tool (filePath=/tmp/reply.ogg)
Override voice directory:
VOICECLAW_VOICES_DIR=/path/to/voices bash scripts/speak.sh "Hello." /tmp/reply.wav
Available Voices
| Voice | Style |
|---|---|
en_US-lessac-medium | Neutral American (default) |
en_US-amy-medium | Warm American female |
en_US-joe-medium | American male |
en_US-kusal-medium | Expressive American male |
en_US-danny-low | Deep American male (fast) |
en_GB-alba-medium | British female |
en_GB-northern_english_male-medium | Northern British male |
Agent Behavior Rules
- Voice in → Voice + Text out. Always respond with both a voice reply and a text reply when a voice message is received.
- Include the transcript. Show "🎙️ I heard: [transcript]" at the top of every text reply to a voice message.
- Keep voice responses concise. Piper TTS works best under ~200 words — summarize for audio, include full detail in text.
- Local only. Never use a cloud TTS/STT API. Only the local
whisperandpiperbinaries. - Send voice before text. Send the audio file first, then follow with the text reply.
Full Example
# 1. Transcribe inbound voice message
TRANSCRIPT=$(bash path/to/voiceclaw/scripts/transcribe.sh /path/to/voice.ogg)
# 2. Compose reply and generate audio
RESPONSE="Deployment complete. All checks passed."
WAV=$(bash path/to/voiceclaw/scripts/speak.sh "$RESPONSE" /tmp/reply_$$.wav)
ffmpeg -i "$WAV" -c:a libopus -b:a 32k /tmp/reply_$$.ogg -y -loglevel error
# 3. Send voice + text
# message(action=send, filePath=/tmp/reply_$$.ogg, ...)
# reply: "🎙️ I heard: $TRANSCRIPT\n\n$RESPONSE"
Troubleshooting
| Issue | Fix |
|---|---|
whisper: command not found | Ensure whisper binary is installed and in PATH |
| Whisper model not found | Set WHISPER_MODEL=/path/to/ggml-base.en.bin |
piper: command not found | Ensure piper binary is installed and in PATH |
| Voice model missing | Set VOICECLAW_VOICES_DIR=/path/to/voices/ |
| OGG won't play on Telegram | Ensure -c:a libopus flag in ffmpeg command |
相关技能
以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。
把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。
诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。
从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。
执行 Git 操作(提交、分支、合并、变基、冲突解决与恢复)时强制套用安全规则。
asif2bd 的更多技能
浏览全部技能为 OpenClaw 代理减少重复性的 token 消耗:按需加载上下文、Sonnet/Opus 分流、缓存感知的 heartbeat 调度。
自托管的 OpenCLAW AI 代理任务与会话管理面板。
为 xCloud 准备 Docker 项目,改文件前需用户确认,并自动修正端口冲突。
Publish content directly to WordPress sites via REST API with full Gutenberg block support. Create and publish posts/pages, auto-load and select categories from website, generate SEO-optimized tags, preview articles before publishing, and generate Gutenberg blocks for tables, images, lists, and rich formatting. Use when user wants to publish to WordPress, post to blog, create WordPress article, update WordPress post, or convert markdown to Gutenberg blocks.
Universal travel planning skill for OpenClaw agents. Plan itineraries, check weather, discover attractions, and estimate budgets — all through natural conver...
Install, authenticate, and use Claude Code CLI as a native coding tool for any OpenClaw agent system.