
This is a wrapper around sherpa-onnx that gives you fully offline text-to-speech with no cloud dependencies. It handles the messy parts: downloads the right runtime binary for your OS, pulls down a Piper voice model (defaults to en_US lessac), and wraps the CLI so you can generate speech files locally. You'll need to set a couple environment variables pointing to where the runtime and models live, but after that it's just a simple command line call to turn text into WAV files. Useful if you're building something that needs TTS but can't rely on network calls, or if you just don't want to send your text to someone else's API.
$ npx -y skills add steipete/clawdis --skill sherpa-onnx-tts --agent claude-codeInstalls into .claude/skills of the current project.
Local TTS using the sherpa-onnx offline CLI.
$OPENCLAW_STATE_DIR/tools/sherpa-onnx-tts/runtime, default ~/.openclaw/tools/sherpa-onnx-tts/runtime)$OPENCLAW_STATE_DIR/tools/sherpa-onnx-tts/models, default ~/.openclaw/tools/sherpa-onnx-tts/models)Resolve the active state directory first:
STATE_DIR="${OPENCLAW_STATE_DIR:-$HOME/.openclaw}"
Then write those resolved paths into the active OpenClaw config file ($OPENCLAW_CONFIG_PATH, default ~/.openclaw/openclaw.json):
{
skills: {
entries: {
"sherpa-onnx-tts": {
env: {
SHERPA_ONNX_RUNTIME_DIR: "/path/to/your/state-dir/tools/sherpa-onnx-tts/runtime",
SHERPA_ONNX_MODEL_DIR: "/path/to/your/state-dir/tools/sherpa-onnx-tts/models/vits-piper-en_US-lessac-high",
},
},
},
},
}
The wrapper lives in this skill folder. Run it directly, or add the wrapper to PATH:
export PATH="{baseDir}/bin:$PATH"
{baseDir}/bin/sherpa-onnx-tts -o ./tts.wav "Hello from local TTS."
Notes:
tts-models release if you want another voice..onnx files, set SHERPA_ONNX_MODEL_FILE or pass --model-file.--tokens-file or --data-dir to override the defaults.node {baseDir}\\bin\\sherpa-onnx-tts -o tts.wav "Hello from local TTS."Sponsors