Voice
Oc Telegram Stt
Local faster-whisper STT plugin for OpenClaw β auto-transcribes Telegram voice notes (CPU, int8)
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