← Back to Plugins
Voice

Oc Telegram Stt

RcvKai By RcvKai 👁 63 views ▲ 0 votes

Local faster-whisper STT plugin for OpenClaw β€” auto-transcribes Telegram voice notes (CPU, int8)

GitHub

Install

openclaw plugins install npm-pack://$(pwd)/local-oc-telegram-stt-1.0.0.tgz

Configuration Example

{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "models": [{ "provider": "oc-telegram-stt", "model": "whisper-small" }]
      }
    }
  }
}

README

# oc-telegram-stt

Local speech-to-text for OpenClaw using [faster-whisper](https://github.com/SYSTRAN/faster-whisper) (small model, CPU int8). Voice notes are automatically transcribed before the agent sees them.

**~855 MB RAM** when loaded (vs ~5.4 GB for NeMo/Parakeet). Warms up in ~3 seconds.

---

## Architecture

```
Voice note β†’ OpenClaw pipeline β†’ oc-telegram-stt plugin
                                        ↓
                              HTTP POST :52999/transcribe
                                        ↓
                              whisper_server.py (systemd)
                                        ↓
                              faster-whisper small β†’ transcript
```

The Python server runs as a persistent systemd service, keeping the model warm. The plugin is a thin HTTP client β€” zero gateway startup cost.

---

## Requirements

- Ubuntu 22.04+ (or similar systemd distro)
- Python 3.10+
- ffmpeg
- OpenClaw 2026.7.1+
- ~300 MB disk for model weights
- No GPU needed

---

## Installation

### Step 1 β€” Run the install script

```bash
chmod +x install.sh
./install.sh
```

This will:
- Install `ffmpeg` and Python venv
- Install `faster-whisper`
- Download the Whisper small model (~150 MB)
- Set up and start the `oc-telegram-stt` systemd service

### Step 2 β€” Install the OpenClaw plugin

```bash
npm pack
openclaw plugins install npm-pack://$(pwd)/local-oc-telegram-stt-1.0.0.tgz
```

### Step 3 β€” Configure OpenClaw

```bash
openclaw config set tools.media.audio.enabled true
openclaw config set tools.media.audio.models '[{"provider":"oc-telegram-stt","model":"whisper-small"}]'
```

Or edit the config directly:

```json
{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "models": [{ "provider": "oc-telegram-stt", "model": "whisper-small" }]
      }
    }
  }
}
```

### Step 4 β€” Restart the gateway

```bash
openclaw gateway restart
```

### Step 5 β€” Verify

```bash
systemctl status oc-telegram-stt
curl http://127.0.0.1:52999/health        # β†’ ok
openclaw plugins inspect oc-telegram-stt --runtime
```

Send a voice note β€” it should arrive as `[Audio transcript (machine-generated, untrusted)]: "..."`.

---

## Files

| File | Description |
|------|-------------|
| `index.js` | OpenClaw plugin (ESM) β€” HTTP client to the STT server |
| `package.json` | npm package manifest |
| `openclaw.plugin.json` | OpenClaw plugin manifest |
| `whisper_server.py` | Python HTTP server wrapping faster-whisper |
| `oc-telegram-stt.service` | systemd unit file |
| `install.sh` | One-shot setup script |

---

## Managing the service

```bash
systemctl status oc-telegram-stt
sudo systemctl restart oc-telegram-stt
journalctl -u oc-telegram-stt -f
sudo systemctl disable oc-telegram-stt
```

---

## Troubleshooting

**Transcription not triggering?**
```bash
openclaw config get tools.media.audio
# Expected: {"enabled":true,"models":[{"provider":"oc-telegram-stt","model":"whisper-small"}]}
```

**Plugin error?**
```bash
openclaw plugins inspect oc-telegram-stt --runtime
```

**Port conflict?** Edit `PORT` in both `whisper_server.py` and `index.js`.
voice

Comments

Sign in to leave a comment

Loading comments...