Install
openclaw skills install text-to-voice-localLocal text-to-voice generation for OpenClaw workspaces using a canonical txt-to-mp3 pipeline. Use when the user wants to turn any prepared text into voice, asks to set up or reuse a local text-to-speech workflow, wants one canonical output mp3 path, wants a reusable wrapper for Telegram voice delivery, or wants to replicate the same text-to-voice setup on another OpenClaw instance.
openclaw skills install text-to-voice-localUse the bundled scripts to create one stable local text-to-voice path.
Produce voice from any text file with:
Default input text:
tmp/text-to-voice-input.txtCanonical output:
tmp/voice-mode-latest.mp3State directory:
skills/text-to-voice-local/state/State pointer:
skills/text-to-voice-local/state/last-output.txtFor normal use, run:
scripts/text_to_voice.sh voice <text-file> [voice] [max_direct_chars]Useful helpers:
scripts/text_to_voice.sh statusscripts/text_to_voice.sh voicesstatus now also checks runtime dependencies and prints install hints when something is missing.
Examples:
scripts/text_to_voice.sh text
scripts/text_to_voice.sh voice ./tmp/text-to-voice-input.txt
scripts/text_to_voice.sh voice ./tmp/text.txt ru-RU-SvetlanaNeural 280
scripts/text_to_voice.sh
scripts/tts_from_file.sh
scripts/tts_from_file_chunked.sh
scripts/voice_reply.sh
scripts/voice_reply_latest.sh
state/text-to-voice.json
scripts/edge_tts.js
Ensure these dependencies exist on the target machine:
nodeffmpegnode-edge-ttsThe skill checks these at runtime and, if something is missing, prints suggested install commands instead of failing silently.
Verify:
node -v
ffmpeg -version
node -e "require('node-edge-tts'); console.log('node-edge-tts ok')"
If node-edge-tts is missing:
npm i -g node-edge-tts
tmp/ exists.Minimal setup:
chmod +x skills/text-to-voice-local/scripts/*.sh
mkdir -p tmp
skills/text-to-voice-local/scripts/text_to_voice.sh voice ./tmp/text-to-voice-input.txt
If the result is sent as Telegram voice, send only the canonical file:
./tmp/voice-mode-latest.mp3Prefer sending text and voice as separate messages.
Progress printed by shell scripts is useful in terminal diagnostics, but chat-side live progress editing depends on OpenClaw preview streaming, not shell stdout alone.
Use low-level scripts only for debugging or careful manual control. Default to the high-level wrapper unless there is a reason not to.