Charan Tej Mandali

Voice Assistant

AI 智能体v0.1.0
作者:Charan Tej Mandali更新于 2026-05-11voice-assistant@clawhub_charantejmandali18/voice-assistant
Agent 框架任务自动化工具调用#Audio

据 AlphaMoat 统计,截至 2026-09,Voice Assistant 累计下载 3,020 次、获 4 个星标,在全部 5,078 个 AI 技能中排名第 3,718 位,在「AI 智能体」分类(969 个)中排名第 751 位。

累计安装
160
累计下载
3,020
星标
4
全站排名
#3,718
全站前 74% · 「AI 智能体」前 78%
平台累计安装累计下载星标评论
ClawHub ↗902,9014-
SkillHub ↗1603,0204—

各平台的计数口径不同,统计时间不一致。

这个技能是做什么的

浏览器语音界面连接 OpenClaw 网关,可配置语音识别和合成。音频、转写和生成文本可能发送至第三方并写入日志;使用可信网络、限制网关权限,避免传输未获批准的敏感内容。 需要Python/uv、已配置运行的OpenClaw网关、麦克风权限及所选STT/TTS分支的Deepgram或ElevenLabs凭据。服务无认证,绑定localhost,对外暴露前加认证和Origin检查;审查日志,不发送未获准敏感语音。

资料发布于 2026-10-27

可以用来做什么

  • 为获准OpenClaw代理配置浏览器语音界面

什么时候用

  • 语音服务处理及网关工具访问已获准时

示例提示词

以下是根据技能文档生成的示例,不代表实际运行结果。

启动前审核语音服务商、localhost绑定与网关权限,暂不录音或发送音频。

月度数据趋势

累计下载3,020
1,7192,4183,1162026-03 · 累计下载 1,8152026-05 · 累计下载 2,2802026-07 · 累计下载 2,6772026-08 · 累计下载 2,7972026-09 · 累计下载 3,02026-0326-09
星标4
3452026-03 · 星标 42026-05 · 星标 42026-07 · 星标 42026-08 · 星标 42026-09 · 星标 426-0326-09

2026-09 起统计方法调整:同名技能按作者分别统计,并覆盖全部技能。图中虚线为调整前的月份,与之后的数据不直接比较,也不计算跨越调整的增长。

月份累计下载环比星标
2026-093,020—4
2026-082,797+4.5%4
2026-072,677—4
2026-052,280—4
2026-031,815—4

SKILL.md 原文

以下是作者发布的原始文件,按纯文本显示,本站未做修改或审核;其中的链接不可点击,命令请核实后再运行。抓取于 2026-10-23。

5.6 KB · ClawHub v0.1.0
---
name: voice-assistant
description: Real-time voice assistant for OpenClaw. Streams mic audio through configurable STT (Deepgram or ElevenLabs) into your OpenClaw agent, then speaks the response via configurable TTS (Deepgram Aura or ElevenLabs). Sub-2s time-to-first-audio with full streaming at every stage.
metadata:
  openclaw:
    emoji: "🎙️"
    requires:
      bins: ["uv"]
      env: []
    primaryEnv: "VOICE_STT_PROVIDER"
展开全部(共 141 行)
    install:
      - id: "uv"
        kind: "brew"
        formula: "uv"
        bins: ["uv"]
        label: "Install uv (brew)"
---

# Voice Assistant

Real-time voice interface for your OpenClaw agent. Talk to your agent and hear it respond — with configurable STT and TTS providers, full streaming at every stage, and sub-2 second time-to-first-audio.

## Architecture

```
Browser Mic → WebSocket → STT (Deepgram / ElevenLabs) → Text
  → OpenClaw Gateway (/v1/chat/completions, streaming) → Response Text
  → TTS (Deepgram Aura / ElevenLabs) → Audio chunks → Browser Speaker
```

The voice interface connects to your running OpenClaw gateway's OpenAI-compatible endpoint. It's the same agent with all its context, tools, and memory — just with a voice.

## Quick Start

```bash
cd {baseDir}
cp .env.example .env
# Fill in your API keys and gateway URL
uv run scripts/server.py
# Open http://localhost:7860 and click the mic
```

## Supported Providers

### STT (Speech-to-Text)
| Provider   | Model            | Latency  | Notes                        |
|-----------|------------------|----------|------------------------------|
| Deepgram  | nova-2 (streaming) | ~200-300ms | WebSocket streaming, best accuracy/speed |
| ElevenLabs | Scribe v1        | ~300-500ms | REST-based, good multilingual |

### TTS (Text-to-Speech)
| Provider    | Model        | Latency  | Notes                          |
|------------|--------------|----------|--------------------------------|
| Deepgram   | aura-2       | ~200ms   | WebSocket streaming, low cost  |
| ElevenLabs | Turbo v2.5   | ~300ms   | Best voice quality, streaming   |

## Configuration

All configuration is via environment variables in `.env`:

```bash
# === Required ===
OPENCLAW_GATEWAY_URL=http://localhost:4141/v1    # Your OpenClaw gateway
OPENCLAW_MODEL=claude-sonnet-4-5-20250929        # Model your gateway routes to

# === STT Provider (pick one) ===
VOICE_STT_PROVIDER=deepgram                      # "deepgram" or "elevenlabs"
DEEPGRAM_API_KEY=your-key-here                   # Required if STT=deepgram
ELEVENLABS_API_KEY=your-key-here                 # Required if STT=elevenlabs

# === TTS Provider (pick one) ===
VOICE_TTS_PROVIDER=elevenlabs                    # "deepgram" or "elevenlabs"
# Uses the same API keys as above

# === Optional Tuning ===
VOICE_TTS_VOICE=rachel                           # ElevenLabs voice name/ID
VOICE_TTS_VOICE_DG=aura-2-theia-en              # Deepgram Aura voice
VOICE_VAD_SILENCE_MS=400                         # Silence before end-of-turn (ms)
VOICE_SAMPLE_RATE=16000                          # Audio sample rate
VOICE_SERVER_PORT=7860                           # Server port
VOICE_SYSTEM_PROMPT=""                           # Optional system prompt override
```

## Provider Combinations

| Setup                              | Best For                        |
|------------------------------------|---------------------------------|
| Deepgram STT + ElevenLabs TTS     | Best quality voice output        |
| Deepgram STT + Deepgram TTS       | Lowest latency, single vendor    |
| ElevenLabs STT + ElevenLabs TTS   | Best multilingual support        |

## How It Works

1. **Browser captures mic audio** via Web Audio API and streams raw PCM over a WebSocket
2. **Server receives audio** and pipes it to the configured STT provider's streaming endpoint
3. **STT returns partial transcripts** in real-time; on end-of-utterance the full text is sent to the OpenClaw gateway
4. **OpenClaw gateway streams** the LLM response token-by-token via SSE (Server-Sent Events)
5. **Tokens are accumulated** into sentence-sized chunks and streamed to the TTS provider
6. **TTS returns audio chunks** that are immediately forwarded to the browser over the same WebSocket
7. **Browser plays audio** using the Web Audio API with a jitter buffer for smooth playback

## Interruption Handling (Barge-In)

When the user starts speaking while the agent is still talking:
- Current TTS audio is immediately cancelled
- The agent stops its current response
- New STT session begins capturing the user's interruption

## Usage Examples

```
User: "Hey, set up my voice assistant"
→ OpenClaw runs: cd {baseDir} && cp .env.example .env
→ Opens .env for the user to fill in API keys
→ Runs: uv run scripts/server.py

User: "Start a voice chat"
→ Opens http://localhost:7860 in the browser

User: "Switch TTS to Deepgram"
→ Updates VOICE_TTS_PROVIDER=deepgram in .env
→ Restarts the server
```

## Troubleshooting

- **No audio output?** Check that your TTS API key is valid and the provider is set correctly
- **High latency?** Use Deepgram for both STT and TTS; ensure your gateway is on the same network
- **Cuts off speech?** Increase `VOICE_VAD_SILENCE_MS` to 600-800ms
- **Echo/feedback?** Use headphones, or enable the built-in echo cancellation in the browser UI

## Latency Budget

| Stage                    | Target    | Actual (typical) |
|-------------------------|-----------|------------------|
| Audio capture + VAD     | <200ms    | ~100-150ms       |
| STT transcription       | <400ms    | ~200-400ms       |
| OpenClaw LLM first token| <1500ms   | ~500-1500ms      |
| TTS first audio chunk   | <400ms    | ~200-400ms       |
| **Total first audio**   | **<2.5s** | **~1.0-2.5s**    |

「AI 智能体」分类下的热门技能

数据月份:2026-09 · 下载/星标/安装数聚合自公开技能注册库(ClawHub、SkillHub),按月更新。口径说明见数据方法。