Voice Chat Skill

👤 fangkelvin 📦 v1.0.0 ⭐ 3.9 ⬇️ 860 下載
🤖 AI-Agent 免費 🔑 需 API Key

📖 技能介紹


name: voice-chat description: "語音對話整合技能,支援雙向語音交流。使用TTS和STT實現完整的語音對話功能。" homepage: https://docs.openclaw.ai metadata: { "openclaw": { "emoji": "🎤", "requires": { "bins": ["python"] } } }


語音對話技能

實現完整的雙向語音對話功能,支援語音輸入和語音輸出。

功能特性

✅ 已實現功能

  1. 文本轉語音(TTS)
  2. 使用OpenClaw內建tts工具
  3. 支援中英文混合
  4. 即時音訊生成

  5. 語音轉文本(STT)

  6. 使用Python speech_recognition庫
  7. 支援麥克風輸入
  8. 多引擎支援(Google、Whisper等)

  9. 對話管理

  10. 自動語音檢測
  11. 對話上下文保持
  12. 中斷處理

🔧 技術架構

語音輸入 → STT轉換 → 文本處理 → AI響應 → TTS轉換 → 語音輸出

想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。

安裝要求

必需元件

  1. Python 3.8+
  2. speech_recognition庫
  3. pyaudio庫(Windows需要額外安裝)

可選元件

  1. Whisper - 更準確的本地STT
  2. ElevenLabs API - 高質量TTS
  3. OpenAI API - 雲端STT

快速開始

1. 安裝依賴

# 安裝Python庫
pip install SpeechRecognition pyaudio

# Windows pyaudio安裝(如果失敗)
pip install pipwin
pipwin install pyaudio

2. 基礎語音對話指令碼

# voice_chat.py
import speech_recognition as sr
import subprocess
import tempfile
import os

class VoiceChat:
    def __init__(self):
        self.recognizer = sr.Recognizer()
        self.microphone = sr.Microphone()

    def listen(self):
        """監聽語音輸入並轉換為文本"""
        with self.microphone as source:
            print("🎤 請說話...")
            audio = self.recognizer.listen(source)

        try:
            text = self.recognizer.recognize_google(audio, language='zh-CN')
            print(f"📝 識別結果: {text}")
            return text
        except sr.UnknownValueError:
            return "無法識別語音"
        except sr.RequestError:
            return "語音識別服務不可用"

    def speak(self, text):
        """使用OpenClaw TTS朗讀文本"""
        # 呼叫OpenClaw tts工具
        print(f"🗣️ 正在朗讀: {text}")
        # 這裡可以整合OpenClaw tts工具

    def conversation_loop(self):
        """對話迴圈"""
        print("🎧 語音對話已啟動,按Ctrl+C退出")
        while True:
            # 監聽語音
            user_input = self.listen()

            if user_input and "退出" not in user_input:
                # 生成響應(這裡可以整合AI模型)
                response = f"我聽到你說: {user_input}"

                # 語音輸出
                self.speak(response)

if __name__ == "__main__":
    chat = VoiceChat()
    chat.conversation_loop()

3. 整合OpenClaw TTS

def openclaw_tts(text, output_file="output.mp3"):
    """呼叫OpenClaw TTS工具"""
    import subprocess
    import json

    # 建立臨時檔案
    with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
        tts_request = {
            "text": text,
            "channel": "webchat"
        }
        json.dump(tts_request, f)
        request_file = f.name

    try:
        # 呼叫tts工具(需要OpenClaw環境)
        result = subprocess.run([
            "node", "path/to/openclaw/tts-tool.js",
            "--input", request_file,
            "--output", output_file
        ], capture_output=True, text=True)

        if result.returncode == 0:
            print(f"✅ 語音檔案已生成: {output_file}")
            # 播放音訊
            subprocess.run(["start", output_file], shell=True)
        else:
            print(f"❌ TTS失敗: {result.stderr}")
    finally:
        os.unlink(request_file)

高階配置

使用Whisper進行本地STT

def whisper_stt(audio_file):
    """使用Whisper進行語音識別"""
    import whisper

    model = whisper.load_model("base")
    result = model.transcribe(audio_file, language="zh")
    return result["text"]

使用ElevenLabs高質量TTS

def elevenlabs_tts(text, voice_id="21m00Tcm4TlvDq8ikWAM", api_key=None):
    """使用ElevenLabs TTS"""
    import requests

    url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
    headers = {
        "xi-api-key": api_key or os.environ.get("ELEVENLABS_API_KEY"),
        "Content-Type": "application/json"
    }

    data = {
        "text": text,
        "model_id": "eleven_multilingual_v2",
        "voice_settings": {
            "stability": 0.5,
            "similarity_boost": 0.5
        }
    }

    response = requests.post(url, json=data, headers=headers)
    if response.status_code == 200:
        with open("output.mp3", "wb") as f:
            f.write(response.content)
        return "output.mp3"
    else:
        raise Exception(f"ElevenLabs TTS失敗: {response.text}")

故障排除

常見問題

  1. 麥克風無法識別
  2. 檢查麥克風許可權
  3. 嘗試指定麥克風裝置索引

  4. pyaudio安裝失敗

  5. Windows: 使用pipwin install pyaudio
  6. macOS: brew install portaudio

  7. 語音識別準確率低

  8. 調整環境噪音
  9. 使用更準確的模型(Whisper large)
  10. 新增語音訓練

效能最佳化

  1. 快取模型:預載入Whisper模型
  2. 流式處理:即時語音處理
  3. 降噪處理:改善語音質量

安全注意事項

  1. API金鑰保護:不要硬編碼API金鑰
  2. 隱私保護:語音資料本地處理
  3. 許可權管理:麥克風訪問許可權控制

擴充套件功能

計劃中的功能

  1. 多語言支援:自動檢測語言
  2. 語音命令:特定語音指令識別
  3. 情緒識別:從語音中識別情緒
  4. 即時翻譯:跨語言語音對話

技能版本: 1.0.0 最後更新: 2026-02-28

🤖 AI 評測

這個語音對話技能質量中等偏下。文件說明詳細,介面友好,但核心功能存在明顯缺陷:TTS語音輸出功能只是模擬顯示並不能真正播放語音,AI對話也只是簡單的關鍵詞匹配,沒有真正智慧的對話能力。主要適合學習參考,實際使用價值有限,需要進一步開發完善才能達到可用水平。

📊 多維度評分

適應性3.9
規範性4
有效性3.7
可靠性3.9
可信度4.3

📁 包含檔案 (9 個)

📄 README.md 5.2 KB
📄 SKILL.md 5.9 KB
📄 _meta.json 135 B
📄 auto_start.py 1.8 KB
📄 offline_test.py 3.4 KB
📄 simple_voice_test.py 7 KB
📄 skill-card.md 2.5 KB
📄 voice_chat.py 11.7 KB
📄 voice_chat_enhanced.py 15.9 KB