名称: voice-reply
版本: 1.0.0
描述: |
通过 sherpa-onnx 使用 Piper 语音模型进行本地文本转语音。100% 离线,无需 API 密钥。
当用户请求语音回复、音频响应、语音回答或希望听到文本朗读时使用。
支持多种语言,包括德语(thorsten)和英语(ryan)语音。
输出兼容 Telegram 的语音消息,并附带 [[audio_as_voice]] 标签。
元数据:
openclaw:
emoji: "🎤"
os: ["linux"]
requires:
bins: ["ffmpeg"]
env: ["SHERPA_ONNX_DIR", "PIPER_VOICES_DIR"]
使用本地 Piper TTS(通过 sherpa-onnx)生成语音音频回复。完全离线,无需云端 API。
cd scripts
sudo ./install.sh
sudo mkdir -p /opt/sherpa-onnx
cd /opt/sherpa-onnx
curl -L -o sherpa.tar.bz2 "https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.12.23/sherpa-onnx-v1.12.23-linux-x64-shared.tar.bz2"
sudo tar -xjf sherpa.tar.bz2 --strip-components=1
rm sherpa.tar.bz2
sudo mkdir -p /opt/piper-voices
cd /opt/piper-voices
# 德语 - thorsten(中等质量,自然的男声)
curl -L -o thorsten.tar.bz2 "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-de_DE-thorsten-medium.tar.bz2"
sudo tar -xjf thorsten.tar.bz2 && rm thorsten.tar.bz2
# 英语 - ryan(高质量,清晰的美式男声)
curl -L -o ryan.tar.bz2 "https://github.com/k2-fsa/sherpa-onnx/releases/download/tts-models/vits-piper-en_US-ryan-high.tar.bz2"
sudo tar -xjf ryan.tar.bz2 && rm ryan.tar.bz2
sudo apt install -y ffmpeg
添加到你的 OpenClaw 服务或 shell 配置中:
export SHERPA_ONNX_DIR="/opt/sherpa-onnx"
export PIPER_VOICES_DIR="/opt/piper-voices"
{baseDir}/bin/voice-reply "要朗读的文本" [语言]
| 参数 | 描述 | 默认值 |
|---|---|---|
| text | 要转换为语音的文本 | (必需) |
| language | de 表示德语,en 表示英语 |
自动检测 |
# 德语(显式指定)
{baseDir}/bin/voice-reply "Hallo, ich bin dein Assistent!" de
# 英语(显式指定)
{baseDir}/bin/voice-reply "Hello, I am your assistant!" en
# 自动检测(通过变音符号和常见词检测为德语)
{baseDir}/bin/voice-reply "Guten Tag, wie geht es dir?"
# 自动检测(默认使用英语)
{baseDir}/bin/voice-reply "The weather is nice today."
脚本输出两行内容,供 OpenClaw 处理并发送到 Telegram:
[[audio_as_voice]]
MEDIA:/tmp/voice-reply-output.ogg
[[audio_as_voice]] - 指示 Telegram 将音频显示为语音气泡的标签MEDIA:路径 - 生成的 OGG Opus 音频文件路径| 语言 | 语音 | 质量 | 描述 |
|---|---|---|---|
| 德语 (de) | thorsten | 中等 | 自然的男声,发音清晰 |
| 英语 (en) | ryan | 高 | 清晰的美式男声,专业语调 |
在以下位置浏览可用的 Piper 语音模型:
- https://rhasspy.github.io/piper-samples/
- https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models
下载并解压到 $PIPER_VOICES_DIR 目录,然后修改脚本以包含新语音。
确保 SHERPA_ONNX_DIR 环境变量已设置,并且目录中包含 bin/sherpa-onnx-offline-tts 文件。
检查语音模型文件是否存在:*.onnx、tokens.txt、espeak-ng-data/。
确保输出内容在 MEDIA: 行之前单独有一行 [[audio_as_voice]] 标签。