name: voice-chat description: "語音對話整合技能,支援雙向語音交流。使用TTS和STT實現完整的語音對話功能。" homepage: https://docs.openclaw.ai metadata: { "openclaw": { "emoji": "🎤", "requires": { "bins": ["python"] } } }
實現完整的雙向語音對話功能,支援語音輸入和語音輸出。
即時音訊生成
語音轉文本(STT)
多引擎支援(Google、Whisper等)
對話管理
語音輸入 → STT轉換 → 文本處理 → AI響應 → TTS轉換 → 語音輸出想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。
# 安裝Python庫
pip install SpeechRecognition pyaudio
# Windows pyaudio安裝(如果失敗)
pip install pipwin
pipwin install pyaudio
# 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()
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)
def whisper_stt(audio_file):
"""使用Whisper進行語音識別"""
import whisper
model = whisper.load_model("base")
result = model.transcribe(audio_file, language="zh")
return result["text"]
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}")
嘗試指定麥克風裝置索引
pyaudio安裝失敗
pipwin install pyaudiomacOS: brew install portaudio
語音識別準確率低
技能版本: 1.0.0 最後更新: 2026-02-28
這個語音對話技能質量中等偏下。文件說明詳細,介面友好,但核心功能存在明顯缺陷:TTS語音輸出功能只是模擬顯示並不能真正播放語音,AI對話也只是簡單的關鍵詞匹配,沒有真正智慧的對話能力。主要適合學習參考,實際使用價值有限,需要進一步開發完善才能達到可用水平。