Bidirectional Voice Chat System

👤 patrickgeek 📦 v1.1.0 ⭐ 4.2 ⬇️ 1.1K 下載
🤖 AI-Agent 免費

📖 技能介紹


skill_id: voice-chat-bridge version: 1.1.0 author: laoxu description: 雙向語音對話系統 - 語音識別轉文字 + Edge TTS語音合成 + Cloudflare Tunnel公網訪問 categories: [voice, speech, communication] requires: [ffmpeg] optional: [cloudflared, ngrok]


Voice Chat Bridge Skill

讓你的 OpenClaw 助手具備完整的雙向語音對話能力。

功能特性

  • 🎤 語音識別: 接收語音訊息,自動轉文字
  • 🗣️ 語音合成: 用文字生成自然的中文語音(Edge TTS)
  • 🔊 本地播放: 無需域名,直接在電腦上播放語音
  • 🌐 公網訪問: 通過 Cloudflare Tunnel 讓語音檔案全球可訪問
  • 💻 Web介面: 內建簡單的語音播放器介面
  • 📱 多平臺: 支援 Telegram、Discord、Slack、Webhook 等多種整合方式
  • 🔗 靈活輸出: 連結、本地檔案路徑、或直接播放

安裝要求

必需

  1. ffmpeg - 音訊格式轉換 bash brew install ffmpeg

  2. Python 依賴 bash pip3 install edge-tts

可選(根據部署方式選擇)

方案A:本地模式(最簡單) - 無需額外工具,直接在本機播放語音

方案B:公網訪問 - Cloudflare Tunnel(推薦,免費穩定) bash brew install cloudflared - Ngrok(臨時使用,隨機域名) bash brew install ngrok - LocalTunnel(npm安裝) bash npm install -g localtunnel

方案C:Web介面模式 - 僅需要瀏覽器訪問 http://localhost:8765

  1. 語音識別工具(二選一)
  2. macOS 推薦: hear - 本地識別,無需聯網 bash 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/
  3. 雲端方案: 阿里雲 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. 啟動服務

7w4.net有更好的技能外掛。

# 啟動語音伺服器
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-AriaNeural Aria - 美式英語女聲
en-US-GuyNeural Guy - 美式英語男聲
en-GB-SoniaNeural Sonia - 英式英語女聲
en-AU-NatashaNeural Natasha - 澳洲英語女聲

日語

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

韓語

語音ID 描述
ko-KR-SunHiNeural 선희 - 韓語女聲
ko-KR-InJoonNeural 인준 - 韓語男聲

法語/德語/西班牙語等

語音ID 描述
fr-FR-DeniseNeural Denise - 法語女聲
de-DE-KatjaNeural Katja - 德語女聲
es-ES-ElviraNeural Elvira - 西班牙語女聲
ru-RU-SvetlanaNeural Svetlana - 俄語女聲
ar-SA-ZariyahNeural Zariyah - 阿拉伯語女聲
hi-IN-SwaraNeural Swara - 印地語女聲

完整列表: 執行 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 - 隨便用,歡迎改進!

🤖 AI 評測

這個 Skill 功能豐富,支援語音對話、本地播放和公網分享,文件寫得非常詳細。但實際程式碼質量一般,有些文件提到的功能缺少對應的指令碼檔案,安裝配置稍顯複雜,對新手不太友好。如果是技術使用者可以考慮,普通使用者建議等待更穩定的版本。

📊 多維度評分

適應性4
規範性4.2
有效性4.3
可靠性4.3
可信度4.4

📁 包含檔案 (8 個)

📄 SKILL.md 12.8 KB
📄 _meta.json 136 B
📄 scripts/daily_monitor.py 2.5 KB
📄 scripts/generate_voice.py 2.8 KB
📄 scripts/init.sh 1.6 KB
📄 scripts/transcribe.py 2.1 KB
📄 scripts/voice_server.py 1.1 KB
📄 skill-card.md 2.5 KB