为 OpenClaw 添加完整的语音聊天功能,核心在于集成 TTSSTT实时对话三大模块,并确保它们与 OpenClaw 的网关和节点架构协同工作 。

一、语音聊天核心架构与配置

语音聊天功能的实现依赖于 OpenClaw 的节点-网关分离架构。节点负责执行具体的 AI 任务(如调用大模型、执行工具),而网关则负责管理音频管道、处理用户输入输出,并协调节点工作 。以下是核心配置步骤:

1. 基础环境与 OpenClaw 部署

首先,确保系统已安装 Python 3.8+,然后通过以下任一方式部署 OpenClaw:

# 方式一:一键安装(推荐新手)
curl -sSL https://raw.githubusercontent.com/openclaw-ai/openclaw/main/install.sh | bash

# 方式二:使用 pip 安装
pip install openclaw

# 方式三:源码安装(适合开发者)
git clone https://github.com/openclaw-ai/openclaw.git
cd openclaw
pip install -e .

安装完成后,运行初始化配置向导 :

claw init

该向导会引导你配置大模型 API 密钥(如 OpenAI、国产大模型)、选择默认技能等。

2. 启用并配置语音模块

语音功能在 OpenClaw 中主要通过配置文件 ~/.openclaw/config.yaml 进行管理。以下是关键配置项:

# ~/.openclaw/config.yaml 部分配置示例
voice:
  enabled: true # 启用语音功能
  default_mode: “push_to_talk” # 或 “wake_word”, 定义默认交互模式
  
  tts:
    provider: “edge” # TTS 引擎提供商,可选:edge, openai, elevenlabs, iflytek
    api_key: “your_api_key_here” # 对应提供商的 API 密钥
    voice: “zh-CN-XiaoxiaoNeural” # 语音角色,Edge TTS 支持晓晓、小艺等 
    rate: “+0%” # 语速调整
    pitch: “+0Hz” # 音调调整
  
  stt:
    provider: “openai” # STT 引擎提供商,可选:openai, vosk (离线)
    api_key: “your_openai_api_key”
    language: “zh” # 识别语言
    # 若使用 Vosk 离线方案,需额外配置模型路径 
    # model_path: “/path/to/vosk-model-small-cn-0.22”

  realtime:
    enabled: true # 启用实时对话模式
    gateway_host: “localhost” # 网关地址
    gateway_port: 18789 # 网关 HTTP API 端口 
    audio_chunk_duration: 0.5 # 音频流分块时长(秒)
    vad_threshold: 0.5 # 语音活动检测灵敏度

二、TTS (文本转语音) 功能详解与配置

TTS 模块负责将 AI 的文本回复转换为语音。OpenClaw 支持多引擎,具备容灾和路由能力 。

引擎提供商 特点 适用场景 配置关键
Microsoft Edge TTS 免费、高质量、支持多语言及中文方言(晓晓、小艺等) 个人使用、成本敏感项目 无需 API Key, 选择 voice 参数即可
OpenAI TTS 音质优秀、稳定性高、需付费 商用、对语音质量要求高 需配置 api_key, 支持 tts-1tts-1-hd 模型
ElevenLabs 拟人度极高、情感丰富、价格昂贵 追求极致拟人化体验 需配置 api_keyvoice_id
讯飞超拟人 中文自然度顶尖、需商用授权 中文产品、对中文表现要求高 需配置 appid, api_secret, api_key

配置示例:在会话中动态切换 TTS 引擎和语音参数。

# 在 OpenClaw 节点脚本或插件中动态调整 TTS
from openclaw.voice.tts import TTSClient

tts_client = TTSClient()
# 切换到 Edge TTS 并使用“晓晓”语音,加快语速
response_audio = tts_client.synthesize(
    text=“你好,我是 OpenClaw 助手。”,
    provider=“edge”,
    voice=“zh-CN-XiaoxiaoNeural”,
    rate=“+10%” # 语速提高 10%
)

三、STT (语音转文本) 功能详解与配置

STT 模块用于将用户的语音输入转换为文本。OpenClaw 支持云端和本地离线两种方案 。

1. 云端方案(如 OpenAI Whisper API)

优势是准确率高、支持语言多,但需要网络和 API 调用费用。

# config.yaml 配置
stt:
  provider: “openai”
  api_key: “sk-...” 
  model: “whisper-1” # 可选模型

2. 本地离线方案(如 Vosk)

优势是零延迟、完全隐私、无网络依赖,适合边缘设备或高安全要求场景 。

# config.yaml 配置
stt:
  provider: “vosk”
  model_path: “./models/vosk-model-small-cn-0.22” # 需提前下载模型
  grammar: [“打开文件”, “发送邮件”, “查询天气”] # 可选:限制识别词汇,提高准确率

部署 Vosk 的步骤:

# 安装 Vosk Python 库
pip install vosk

# 下载小型中文模型(约 40MB)
wget https://alphacephei.com/vosk/models/vosk-model-small-cn-0.22.zip
unzip vosk-model-small-cn-0.22.zip

使用 Vosk 进行实时麦克风识别的核心代码逻辑如下 :

import vosk, pyaudio, json

model = vosk.Model(“vosk-model-small-cn-0.22”)
rec = vosk.KaldiRecognizer(model, 16000)

p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)

print(“请开始说话...”)
while True:
    data = stream.read(4000)
    if rec.AcceptWaveform(data):
        result = json.loads(rec.Result())
        text = result.get(‘text’, ‘’)
        if text:
            print(f“识别结果: {text}”)
            # 将 text 发送给 OpenClaw 网关进行处理

四、实现实时语音对话

实时对话模式允许用户像打电话一样与 AI 连续交谈,其核心是低延迟的音频管道语音活动检测

1. 启动网关服务

实时对话依赖于网关服务。确保网关已启动并监听正确端口 。

# 启动 OpenClaw 网关,默认 HTTP API 端口为 18789
claw gateway start --port 18789

2. 使用现成语音聊天界面

  • Claw-Voice-Chat:这是一个集成了 faster-whisper(本地 STT)、多种 TTS 和 WebSocket 的实时语音聊天项目。它通过 OpenClaw 网关连接,支持 Telegram、Discord 等平台 。
    # 克隆并运行 Claw-Voice-Chat
    git clone https://github.com/your-repo/Claw-Voice-Chat.git
    cd Claw-Voice-Chat
    # 根据其 README 配置 .env 文件(指向 OpenClaw 网关地址)
    python main.py
    
  • Tkinter GUI:一个基于 Python Tkinter 的图形界面,支持 Markdown 渲染和 Edge TTS 语音播报 。需确保 OpenClaw 网关 (localhost:18789) 正在运行,然后启动该 UI 即可进行带语音输出的文本聊天。

3. 核心交互流程

实时语音聊天的数据流遵循以下顺序 :

  1. 用户语音输入:麦克风采集音频,通过 VAD 检测到语音开始。
  2. STT 转换:音频流被发送到配置的 STT 引擎(如 Vosk 或 OpenAI)转换为文本。
  3. 文本请求网关:识别出的文本通过 HTTP API (http://localhost:18789/chat) 发送给 OpenClaw 网关。
  4. 节点处理:网关将请求路由给一个空闲的 OpenClaw 节点,节点调用大模型并执行必要技能后,生成文本回复。
  5. TTS 合成语音:网关收到节点返回的文本后,调用配置的 TTS 引擎合成语音音频。
  6. 音频播放:合成的音频流返回给客户端(如 Claw-Voice-Chat 或 Tkinter UI)并播放给用户。

五、高级配置与优化建议

  1. 性能与成本平衡:对于 STT,可将常用命令(如“打开”、“关闭”)配置为本地 Vosk 识别以降低延迟和成本,复杂长句则回退到更准确的云端 Whisper API 。对于 TTS,可将常用提示音或简短响应使用免费的 Edge TTS,而重要的长内容使用高质量的付费引擎。
  2. 安全与防滥用:在网关配置中设置rate_limit规则,限制单个 IP 的语音请求频率,防止 API 被滥用 。
  3. 故障诊断:如果语音功能不工作,首先检查网关日志 (claw gateway logs),确认端口 18789 是否被占用,并验证 TTS/STT 的 API 密钥是否正确 。
  4. 离线部署:若需完全离线环境,STT 选择 Vosk,TTS 可选择完全离线的本地 TTS 引擎(如 pyttsx3),但音质会有所下降。需确保所有模型文件已下载至本地。

参考来源

 

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐