OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  voice-reply:使用 Piper 语音进行的本地文本转语音回复

voice-reply:使用 Piper 语音进行的本地文本转语音回复

 
  orbit ·  2026-02-02 09:57:12 · 19 次点击  · 0 条评论  

名称: 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。

功能特性

  • 100% 本地化 - 设置完成后无需网络连接
  • 无需 API 密钥 - 免费使用,无需账户
  • 多语言支持 - 包含德语和英语语音
  • Telegram 就绪 - 输出显示为语音气泡的语音消息
  • 自动语言检测 - 根据文本内容自动选择语音

前置条件

  1. 已安装 sherpa-onnx 运行时
  2. 已下载 Piper 语音模型
  3. 已安装 ffmpeg(用于音频转换)

安装

快速安装

cd scripts
sudo ./install.sh

手动安装

1. 安装 sherpa-onnx

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

2. 下载语音模型

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

3. 安装 ffmpeg

sudo apt install -y ffmpeg

4. 设置环境变量

添加到你的 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 目录,然后修改脚本以包含新语音。

故障排除

"TTS 二进制文件未找到"

确保 SHERPA_ONNX_DIR 环境变量已设置,并且目录中包含 bin/sherpa-onnx-offline-tts 文件。

"音频生成失败"

检查语音模型文件是否存在:*.onnxtokens.txtespeak-ng-data/

音频以文件形式播放而非语音气泡

确保输出内容在 MEDIA: 行之前单独有一行 [[audio_as_voice]] 标签。

致谢

19 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 37 ms
Developed with Cursor