Bidirectional Voice Chat System

双向语音对话系统 - 语音识别转文字 + Edge TTS语音合成 + Cloudflare Tunnel公网访问

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Bidirectional Voice Chat System" with this command: npx skills add patrickgeek/voice-chat-bridge

Voice Chat Bridge Skill

让你的 OpenClaw 助手具备完整的双向语音对话能力。

功能特性

  • 🎤 语音识别: 接收语音消息,自动转文字
  • 🗣️ 语音合成: 用文字生成自然的中文语音(Edge TTS)
  • 🔊 本地播放: 无需域名,直接在电脑上播放语音
  • 🌐 公网访问: 通过 Cloudflare Tunnel 让语音文件全球可访问
  • 💻 Web界面: 内置简单的语音播放器界面
  • 📱 多平台: 支持 Telegram、Discord、Slack、Webhook 等多种集成方式
  • 🔗 灵活输出: 链接、本地文件路径、或直接播放

安装要求

必需

  1. ffmpeg - 音频格式转换

    brew install ffmpeg
    
  2. Python 依赖

    pip3 install edge-tts
    

可选(根据部署方式选择)

方案A:本地模式(最简单)

  • 无需额外工具,直接在本机播放语音

方案B:公网访问

  • Cloudflare Tunnel(推荐,免费稳定)
    brew install cloudflared
    
  • Ngrok(临时使用,随机域名)
    brew install ngrok
    
  • LocalTunnel(npm安装)
    npm install -g localtunnel
    

方案C:Web界面模式

  • 仅需要浏览器访问 http://localhost:8765
  1. 语音识别工具(二选一)
    • macOS 推荐: hear - 本地识别,无需联网
      curl -LO https://github.com/sveinbjornt/hear/releases/download/0.7/hear-0.7.zip
      unzip hear-0.7.zip && cp hear-0.7/hear ~/.local/bin/
      
    • 云端方案: 阿里云 DashScope(国内稳定)

部署方案对比

方案需要域名公网访问适用场景
本地模式❌ 不需要❌ 仅本机个人使用,电脑上直接听
Web界面❌ 不需要❌ 局域网同一WiFi下多设备访问
Ngrok❌ 不需要✅ 临时域名快速测试,分享给朋友
Cloudflare✅ 需要自有域名✅ 永久长期使用,生产环境
LocalTunnel❌ 不需要✅ 临时域名免费替代Ngrok

快速开始

方案1:本地模式(最简单,无需域名)

适合:只想在电脑上听语音回复

# 1. 初始化
bash skills/voice-chat-bridge/scripts/init.sh

# 2. 配置为本地模式
cat > ~/.openclaw/workspace/voice_config.json << 'EOF'
{
  "mode": "local",
  "tts_engine": "edge-tts",
  "voice": "zh-CN-XiaoxiaoNeural",
  "auto_play": true
}
EOF

# 3. 生成语音并自动播放
python3 skills/voice-chat-bridge/scripts/generate_voice.py "你好,这是本地模式测试"

AGENTS.md 配置:

## Voice Chat Bridge (本地模式)

当用户发送语音消息时:
1. 使用 `transcribe.py` 转文字
2. 生成回复后,使用 `generate_voice.py` 生成语音
3. **自动播放**: 调用 `afplay` (macOS) 或 `mpg123` (Linux) 播放语音
4. 回复文字内容: "[已播放语音] 回复内容..."

方案2:Web界面模式(局域网可用)

适合:同一WiFi下手机/平板也能访问

# 1. 配置为Web模式
cat > ~/.openclaw/workspace/voice_config.json << 'EOF'
{
  "mode": "web",
  "local_port": 8765,
  "tts_engine": "edge-tts",
  "voice": "zh-CN-XiaoxiaoNeural"
}
EOF

# 2. 启动Web服务器
python3 skills/voice-chat-bridge/scripts/voice_server.py --web

# 3. 浏览器访问 http://localhost:8765

内置Web界面包含:

  • 语音播放器
  • 历史记录
  • 二维码(方便手机扫描访问)

方案3:Ngrok模式(快速公网访问,无需域名)

适合:临时分享给朋友,或不想配置域名

# 1. 安装Ngrok
brew install ngrok

# 2. 注册获取token(免费)
ngrok config add-authtoken YOUR_TOKEN

# 3. 启动语音服务器
python3 skills/voice-chat-bridge/scripts/voice_server.py

# 4. 在另一个终端启动Ngrok
ngrok http 8765

# 5. 获取临时域名(如 https://abc123.ngrok.io)
# 6. 更新配置
cat > ~/.openclaw/workspace/voice_config.json << 'EOF'
{
  "mode": "ngrok",
  "domain": "https://abc123.ngrok.io",
  "local_port": 8765
}
EOF

方案4:Cloudflare Tunnel模式(完整方案)

适合:有域名,长期稳定使用

# 参考原教程...

多平台集成

Telegram(当前方案)

  • 生成语音 → 上传文件或发送链接

Discord

# 使用Discord的tts参数
await channel.send("回复内容", tts=True)  # 使用Discord内置TTS
# 或发送语音文件
await channel.send(file=discord.File("voice.mp3"))

Slack

# 使用Slack的音频附件
client.chat_postMessage(
    channel="#general",
    text="回复内容",
    attachments=[{
        "audio_url": voice_url
    }]
)

纯Webhook/API

# 返回JSON
{
    "text": "回复内容",
    "voice_url": "http://localhost:8765/voice.mp3",
    "voice_base64": "..."  # 可选
}

命令行/本地交互

# 直接对话模式
python3 skills/voice-chat-bridge/scripts/chat.py
# > 你说: [语音输入或文字]
# > AI回复: [文字]
# > [自动播放语音]

方案0: 完整本地语音对话循环(推荐)

适合:完整的本地化语音交互体验

# 启动完整对话循环
python3 skills/voice-chat-bridge/scripts/voice_chat_loop.py

完整流程

按住 Ctrl+T
    ↓
🎤 开始录音(听到提示音)
    ↓
说话...
    ↓
松开按键
    ↓
✅ 录音结束 → 自动转文字
    ↓
🤖 AI处理(写入.voice_trigger文件)
    ↓
💬 生成回复文字
    ↓
🔊 生成语音回复
    ↓
🔈 自动播放语音
    ↓
返回等待下一段录音

特点

  • 完全本地化,无需网络(除语音合成外)
  • 完整的闭环:说 → 识别 → 思考 → 回复 → 听
  • 支持连续对话

快捷键录音模式

适合:只想快速语音输入,不依赖完整对话循环

# 启动快捷键监听(后台运行)
python3 skills/voice-chat-bridge/scripts/hotkey_recorder.py

# 然后任何时候:
# 1. 按住 Ctrl+T(可配置)
# 2. 说话
# 3. 松开按键
# 4. 自动转文字并复制到剪贴板/发送给AI

快捷键配置(编辑 voice_config.json):

{
  "hotkey": {
    "enabled": true,
    "combination": ["ctrl", "t"],
    "on_release": "transcribe_and_send",
    "beep_on_start": true,
    "beep_on_end": true
  }
}

工作流程

按住 Ctrl+T
    ↓
🎤 开始录音(听到提示音)
    ↓
说话...
    ↓
松开按键
    ↓
✅ 录音结束 → 自动转文字
    ↓
📋 复制到剪贴板 或 直接发给AI

快速开始

1. 初始化

bash skills/voice-chat-bridge/scripts/init.sh

这会创建:

  • voice_output/ - 语音文件输出目录
  • voice_config.json - 配置文件

2. 配置域名

编辑 voice_config.json

{
  "domain": "https://your-domain.com",
  "local_port": 8765,
  "voice": "zh-CN-XiaoxiaoNeural"
}

3. 启动服务

# 启动语音服务器
python3 skills/voice-chat-bridge/scripts/voice_server.py

# 在另一个终端启动 Cloudflare Tunnel
cloudflared tunnel --config ~/.cloudflared/config.yml run

4. 配置 AGENTS.md

AGENTS.md 中添加:

## Voice Chat Bridge

当用户发送语音消息时:
1. 使用 `skills/voice-chat-bridge/scripts/transcribe.py` 转文字
2. 理解内容并生成回复
3. 使用 `skills/voice-chat-bridge/scripts/generate_voice.py` 生成语音
4. 回复文字内容 + 语音链接

### 情绪状态更新(每次语音交互)
- connection: +0.2(语音交流增强连接感)
- 记录语音交互频率到 habits.json

使用示例

转写语音

python3 skills/voice-chat-bridge/scripts/transcribe.py /path/to/audio.ogg

生成语音

python3 skills/voice-chat-bridge/scripts/generate_voice.py "要合成的文字内容"
# 输出: https://your-domain.com/abc123.mp3

完整对话流程(在 AGENTS.md 中配置)

# 伪代码示例
if user_message.is_voice:
    # 1. 转写
    text = transcribe(user_message.audio_path)
    
    # 2. 理解并回复
    reply = generate_reply(text)
    
    # 3. 生成语音
    voice_url = generate_voice(reply)
    
    # 4. 发送回复
    send_message(f"{reply}\n\n🎙️ {voice_url}")

文件结构

skills/voice-chat-bridge/
├── SKILL.md              # 本文件
├── scripts/
│   ├── init.sh           # 初始化脚本
│   ├── transcribe.py     # 语音转文字
│   ├── generate_voice.py # 文字转语音
│   └── voice_server.py   # HTTP服务器
└── templates/
    └── config.json       # 配置模板

多语言支持

本 Skill 默认使用 Edge TTS,支持 100+ 种语言和方言

中文

语音ID描述
zh-CN-XiaoxiaoNeural晓晓 - 自然女声(中国大陆推荐)
zh-CN-YunxiNeural云希 - 自然男声(中国大陆)
zh-TW-HsiaoChenNeural曉臻 - 台湾女声
zh-HK-HiuMaanNeural曉曼 - 香港粤语女声

英语

语音ID描述
en-US-AriaNeuralAria - 美式英语女声
en-US-GuyNeuralGuy - 美式英语男声
en-GB-SoniaNeuralSonia - 英式英语女声
en-AU-NatashaNeuralNatasha - 澳洲英语女声

日语

语音ID描述
ja-JP-NanamiNeural七海 - 日语女声
ja-JP-KeitaNeural圭太 - 日语男声

韩语

语音ID描述
ko-KR-SunHiNeural선희 - 韩语女声
ko-KR-InJoonNeural인준 - 韩语男声

法语/德语/西班牙语等

语音ID描述
fr-FR-DeniseNeuralDenise - 法语女声
de-DE-KatjaNeuralKatja - 德语女声
es-ES-ElviraNeuralElvira - 西班牙语女声
ru-RU-SvetlanaNeuralSvetlana - 俄语女声
ar-SA-ZariyahNeuralZariyah - 阿拉伯语女声
hi-IN-SwaraNeuralSwara - 印地语女声

完整列表: 运行 edge-tts --list-voices

配置语言

编辑 voice_config.json

{
  "domain": "https://your-domain.com",
  "local_port": 8765,
  "voice": "en-US-AriaNeural",  // 改成你想要的语音
  "language": "en-US"           // 用于语音识别
}

自动语言检测(进阶)

结合 inner-life skill,根据用户语言自动切换:

# 在 AGENTS.md 中添加
if user_message.language == "zh":
    voice_config["voice"] = "zh-CN-XiaoxiaoNeural"
elif user_message.language == "en":
    voice_config["voice"] = "en-US-AriaNeural"
elif user_message.language == "ja":
    voice_config["voice"] = "ja-JP-NanamiNeural"

备用 TTS 方案

如果 Edge TTS 在某些地区访问受限,支持以下备选:

1. macOS say(本地,免费)

# 修改 scripts/generate_voice.py 中的 TTS_ENGINE
TTS_ENGINE = "say"
say -v "Ting-Ting" "你好"  # 中文
say -v "Samantha" "Hello"  # 英文

2. Google Cloud TTS(需 API Key)

  • 支持更多语言
  • 音质更好
  • 需要付费(但有免费额度)

3. ElevenLabs(高质量)

  • 最自然的 AI 语音
  • 支持语音克隆
  • 每月 10k 字符免费

4. 阿里云/百度(国内稳定)

  • 国内访问快
  • 中文效果极好
  • 有免费额度

自定义配置

更换语音角色

修改 voice_config.json 中的 voice 字段:

调整音频质量

generate_voice.py 中修改:

# 默认 16kHz,可提高至 24kHz
"-ar", "16000"  # → "-ar", "24000"

故障排除

问题: 转写失败,提示 "No speech detected"

  • 解决: 音频文件太短(< 1秒)或格式不支持,尝试转换格式

问题: Cloudflare Tunnel 连接失败

  • 解决: 检查 ~/.cloudflared/config.yml 配置,确保域名和端口正确

问题: Edge TTS 生成语音失败

  • 解决: 检查网络连接,Edge TTS 需要访问微软服务器

进阶用法

情感化语音

结合 inner-life-core skill,根据情绪状态调整语音风格:

if inner_state.confidence > 0.8:
    voice_style = "cheerful"
elif inner_state.connection < 0.3:
    voice_style = "gentle"

语音日记

自动将每日日记转为语音:

python3 skills/voice-chat-bridge/scripts/diary_to_voice.py

成本估算

  • Edge TTS: 免费(微软 Azure 免费额度)
  • Cloudflare Tunnel: 免费
  • hear (macOS): 免费
  • 流量: 每个语音文件约 20-100KB

参考

License

MIT - 随便用,欢迎改进!

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Session-Memory Enhanced

Session-Memory Enhanced v4.0 - 统一增强版。融合 session-memory + memu-engine 核心功能。特性:结构化提取 + 向量检索 + 不可变分片 + 三位一体自动化 + 多代理隔离 + AI 摘要 + 零配置启动。

Registry SourceRecently Updated
General

PRISM-GEN-DEMO

English: Retrieve, filter, sort, merge, and visualize multiple CSV result files from PRISM-Gen molecular generation/screening. Provides portable query-based...

Registry SourceRecently Updated
General

Video Pro by cza999

专业AI视频生成器,支持文本转高质量短视频,批量处理、多模板和高级自定义语音功能,适合创作者和企业。

Registry SourceRecently Updated
0133
cza999