Voice Transcribe
Transcribe audio files using OpenAI's gpt-4o-mini-transcribe model with vocabulary hints and text replacements. Requires uv (https://docs.astral.sh/uv/).
clawhub install voice-transcribePhone Voice Agent enables automated voice calling and response functionality for telephone interactions
# Install Skill (downloads SKILL.md to .claude/skills/) clawhub install phone-agent # Then just tell Claude: "use Phone Voice Agent to help me..."
# Same install command — works with all SKILL.md-compatible AI coding tools clawhub install phone-agent
This Skill is compatible with the OpenClaw standard. After installation, a SKILL.md file is auto-generated, usable by any OpenClaw-compatible AI Agent (Claude Code, Cursor, Windsurf, etc.).
Twilio (Phone) <--> WebSocket (Audio) <--> [Local Server] <--> Deepgram (STT)
|
+--> OpenAI (LLM)
+--> ElevenLabs (TTS)
pip install -r scripts/requirements.txt
~/.moltbot/.env, ~/.clawdbot/.env, or export): export DEEPGRAM_API_KEY="your_key"
export OPENAI_API_KEY="your_key"
export ELEVENLABS_API_KEY="your_key"
export TWILIO_ACCOUNT_SID="your_sid"
export TWILIO_AUTH_TOKEN="your_token"
export PORT=8080
python3 scripts/server.py
ngrok http 8080
https://<your-ngrok-url>.ngrok.io/incoming
- Method: POSTSYSTEM_PROMPT in scripts/server.py to change the persona.ELEVENLABS_VOICE_ID to use different voices.gpt-4o-mini to gpt-4 for smarter (but slower) responses.#!/usr/bin/env python3
# 电话语音智能体完整示例
import requests
import json
from datetime import datetime
API_KEY = "your_phone_agent_api_key"
BASE_URL = "https://api.clawhub.ai/phone-agent"
headers = {"Authorization": f"Bearer {API_KEY}"}
# 智能体配置
agent_config = {
"agent_name": "智能客服机器人",
"voice": "female",
"language": "zh-CN",
"max_duration": 300,
"retry_count": 2,
"responses": {
"greeting": "您好,欢迎致电我们的服务热线",
"menu": "请按1咨询订单,按2了解产品,按3联系人工客服",
"closing": "感谢来电,再见"
}
}
# 创建智能体
response = requests.post(
f"{BASE_URL}/create",
json=agent_config,
headers=headers
)
agent_id = response.json()["agent_id"]
print(f"✓ 智能体创建成功: {agent_id}")
# 发起多个通话
phone_numbers = [
"+86-10-12345678",
"+86-20-87654321",
"+86-21-11223344"
]
for phone in phone_numbers:
call_payload = {
"phone_number": phone,
"agent_id": agent_id,
"purpose": "订单确认",
"custom_data": {"order_id": "ORD123456", "amount": 999.99},
"webhook_url": "https://yourserver.com/phone-callback"
}
response = requests.post(
f"{BASE_URL}/call",
json=call_payload,
headers=headers
)
call_id = response.json()["call_id"]
print(f"✓ 通话已发起: {phone} (Call ID: {call_id})")
print("\n所有通话已排队,请等待回调通知")Create chapters, highlights, and show notes from podcast audio or transcripts. Use when a user wants chapter markers, highlight clips, or show-note drafts without publishing or distribution actions.
clawhub install podcast-chaptering-highlights