ClawSkills logoClawSkills

Voice Reply

通过 sherpa-onnx 使用 Piper 声音的本地文本转语音。100% 离线,无需 API 密钥。当用户要求语音回复、音频响应、口头回答时使用。

介绍

# Voice Reply

通过 sherpa-onnx 使用本地的 Piper TTS 生成语音音频回复。完全离线,无需云端 API。

## 功能特性

- **100% 本地化** - 设置完成后无需互联网连接 - **无需 API 密钥** - 免费使用,无需账户 - **多语言** - 包含德语和英语语音 - **适配 Telegram** - 输出以气泡形式显示的语音消息 - **自动检测语言** - 根据文本自动选择语音

## 前置条件

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

## 安装

### 快速安装

```bash cd scripts sudo ./install.sh ```

### 手动安装

#### 1. 安装 sherpa-onnx

```bash 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. 下载语音模型

```bash sudo mkdir -p /opt/piper-voices cd /opt/piper-voices

# German - thorsten (medium quality, natural male voice) 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

# English - ryan (high quality, clear US male voice) 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

```bash sudo apt install -y ffmpeg ```

#### 4. 设置环境变量

添加到您的 OpenClaw 服务或 shell 中:

```bash export SHERPA_ONNX_DIR="/opt/sherpa-onnx" export PIPER_VOICES_DIR="/opt/piper-voices" ```

## 使用方法

```bash {baseDir}/bin/voice-reply "Text to speak" [language] ```

### 参数

| 参数 | 描述 | 默认值 | |-----------|-------------|---------| | text | 要转换为语音的文本 | (必填) | | language | `de` 代表德语,`en` 代表英语 | 自动检测 |

### 示例

```bash # German (explicit) {baseDir}/bin/voice-reply "Hallo, ich bin dein Assistent!" de

# English (explicit) {baseDir}/bin/voice-reply "Hello, I am your assistant!" en

# Auto-detect (detects German from umlauts and common words) {baseDir}/bin/voice-reply "Guten Tag, wie geht es dir?"

# Auto-detect (defaults to English) {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:path` - 生成的 OGG Opus 音频文件的路径

## 可用语音

| 语言 | 语音 | 质量 | 描述 | |----------|-------|---------|-------------| | 德语 | thorsten | 中等 | 自然男声,发音清晰 | | 英语 | ryan | 高 | 清晰的美式男声,专业语调 |

## 添加更多语音

浏览可用的 Piper 语音: - https://rhasspy.github.io/piper-samples/ - https://github.com/k2-fsa/sherpa-onnx/releases/tag/tts-models

下载并解压到 `$PIPER_VOICES_DIR`,然后修改脚本以包含新语音。

## 故障排除

### "TTS binary not found" 确保已设置 `SHERPA_ONNX_DIR` 并且其中包含 `bin/sherpa-onnx-offline-tts`。

### "Failed to generate audio" 检查语音模型文件是否存在:`*.onnx`、`tokens.txt`、`espeak-ng-data/`。

### 音频作为文件播放而不是语音气泡 确保输出在 `MEDIA:` 行之前的单独一行包含 `[[audio_as_voice]]` 标记。

## 致谢

- [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx) - 离线语音处理 - [Piper](https://github.com/rhasspy/piper) - 快速的本地 TTS 语音 - [Thorsten Voice](https://github.com/thorstenMueller/Thorsten-Voice) - 德语语音数据集

更多产品