⚠️ DEPRECATED — This skill has been split into two separate skills for better modularity: **webchat-https-proxy** (HTTPS/WSS reverse proxy) and **webchat-voice-gui** (mic button, VU meter, i18n). Install those instead. Use **webchat-voice-full-stack** for one-step deployment of all components. Keywords: voice input, microphone, WebChat, Control UI, speech to text, STT, local transcription, MediaRecorder, HTTPS proxy, voice button, mic button, push-to-talk, PTT, keyboard shortcut, i18n, localization.
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
⚠️ DEPRECATED — This skill has been split into two separate skills for better modularity: **webchat-https-proxy** (HTTPS/WSS reverse proxy) and **webchat-voice-gui** (mic button, VU meter, i18n). Install those instead. Use **webchat-voice-full-stack** for one-step deployment of all components. Keywords: voice input, microphone, WebChat, Control UI, speech to text, STT, local transcription, MediaRecorder, HTTPS proxy, voice button, mic button, push-to-talk, PTT, keyboard shortcut, i18n, localization.
requires
{"config_paths":["~/.openclaw/openclaw.json (appends allowedOrigins entry)"],"modified_paths":["<npm-global>/openclaw/dist/control-ui/index.html (injects script tag)","<npm-global>/openclaw/dist/control-ui/assets/voice-input.js (copies asset)","~/.config/systemd/user/openclaw-voice-https.service (creates unit)","~/.openclaw/hooks/voice-input-inject/ (creates startup hook)","~/.openclaw/workspace/voice-input/ (copies runtime files)","~/.openclaw/workspace/voice-input/certs/ (generates self-signed TLS cert)"],"env":[{"VOICE_HTTPS_PORT (optional, default":"8443)"},{"VOICE_HOST (optional, default":"127.0.0.1 — set to a LAN IP to expose externally)"},{"VOICE_ALLOWED_ORIGIN (optional, default":"https://<VOICE_HOST>:<VOICE_HTTPS_PORT>)"},{"VOICE_LANG (optional, default":"auto — prompts interactively if not set)"}],"persistence":["User systemd service: openclaw-voice-https.service (HTTPS/WSS proxy)","Gateway startup hook: voice-input-inject (re-injects JS after updates)"],"privileges":"user-level only, no root/sudo required","dependencies":["python3 with aiohttp >= 3.9.0 (pip)","faster-whisper transcription service on port 18790","openssl (for self-signed cert generation)"]}
WebChat Voice Proxy
Set up a reboot-safe voice stack for OpenClaw WebChat (including the current polished mic/stop/hourglass UI states):
HTTPS Control UI on port 8443
/transcribe proxy to local faster-whisper service
WebSocket passthrough to gateway (ws://127.0.0.1:18789)
Voice button script injection into Control UI
Real-time VU meter: button shadow/scale reacts to voice level
Push-to-Talk: hold mic button to record, release to send (default mode)
Toggle mode: click to start, click to stop (switch via double-click on mic button)
webchat-voice-full-stack (meta-installer that deploys both backend + proxy)
Workflow
Ensure transcription service exists and is running (openclaw-transcribe.service).
Deploy voice-input.js to Control UI assets and inject script tag into index.html.
Configure gateway allowed origin for external HTTPS UI.
Run HTTPS+WSS proxy as persistent user systemd service (openclaw-voice-https.service).
Verify pairing/token/origin errors and resolve in order.
Security Notes
: The HTTPS proxy binds to only. It is reachable from other devices on your network unless you explicitly set to a LAN IP.
Localhost by default
127.0.0.1
not
VOICE_HOST
LAN exposure: Setting VOICE_HOST=<LAN-IP> exposes the proxy (and by extension the gateway WebSocket and transcription endpoint) to all devices on that network. Only do this on trusted networks.
Persistence: This skill installs a user systemd service (openclaw-voice-https.service) that starts automatically on boot, and a gateway hook that re-injects the UI script after updates. Use uninstall.sh to fully revert.
Self-signed TLS: The auto-generated certificate is not trusted by browsers. You will see a certificate warning on first access.
Deploy
Run (localhost only — default, most secure):
bash scripts/deploy.sh
Or expose on LAN (required to access from other devices):
Installs startup hook that re-injects JS after updates
Workspace files
~/.openclaw/workspace/voice-input/
Copies voice-input.js, https-server.py
TLS certs
~/.openclaw/workspace/voice-input/certs/
Auto-generated self-signed cert on first run
The injected JS (voice-input.js) runs inside the Control UI and interacts with the chat input. Review the source before deploying.
Mic Button Controls
Action
Effect
Hold (PTT mode)
Record while held, transcribe on release
Click (Toggle mode)
Start recording / stop and transcribe
Double-click
Switch between PTT and Toggle mode
Right-click
Toggle beep sound on/off
Ctrl+Space (hold)
Push-to-Talk via keyboard (works even with text field focused)
Ctrl+Shift+M
Start/stop recording (transcribes on stop)
Ctrl+Shift+B
Start/stop live transcription [beta] — text appears in real-time, auto-sends after 2s review, stops on 5s silence or "Stop Hugo" keyword
The current mode and available actions are shown in the button tooltip on hover.
Language / i18n
The UI automatically detects the browser language and shows tooltips, toasts, and placeholder text in the matching language.
Built-in languages: English (en), German (de), Chinese (zh)
Override language
Set a language override in the browser console:
localStorage.setItem('oc-voice-lang', 'de'); // force GermanlocalStorage.setItem('oc-voice-lang', 'zh'); // force ChineselocalStorage.removeItem('oc-voice-lang'); // back to auto-detect
Then reload the page.
Add a custom language
Edit voice-input.js and add a new entry to the I18N object. Use assets/i18n.json as a template — it contains all translation keys with the built-in translations.
After editing, redeploy with bash scripts/deploy.sh to copy the updated JS to the Control UI.
CORS Policy
The /transcribe proxy endpoint uses a configurable Access-Control-Allow-Origin header.
Set VOICE_ALLOWED_ORIGIN env var to restrict. Default: https://<VOICE_HOST>:<VOICE_HTTPS_PORT>.
Uninstall
To fully revert all changes:
bash scripts/uninstall.sh
This will:
Stop and remove openclaw-voice-https.service
Remove the gateway startup hook
Remove voice-input.js from Control UI and undo the index.html injection