为什么选择 Matrix 做语音交互?

Matrix 是一个开放的、去中心化的通信协议。相比 Discord、Telegram 等封闭平台,Matrix 的优势在于:

在 2026 年 6 月的更新中,OpenClaw 正式支持了 Matrix 协议的语音消息收发,让 AI Agent 在 Matrix 平台上实现了"能听会说"。

架构概览

用户语音消息 → Matrix Server → OpenClaw Gateway
                                                   ↓
                                      STT (语音转文字)
                                                   ↓
                                  Agent 处理(LLM 推理)
                                                   ↓
                                  TTS (文字转语音)
                                                   ↓
语音回复 ← Matrix Server ← OpenClaw Gateway

配置步骤

第一步:Matrix 服务器配置

# openclaw.json - Matrix 频道配置
{
  "channels": {
    "matrix": {
      "enabled": true,
      "homeserver": "https://matrix.your-domain.com",
      "userId": "@bot:your-domain.com",
      "accessToken": "syt_xxxxxxxxxxxx",
      "deviceId": "OPENCLAW_BOT",
      "voice": {
        "enabled": true,
        "receiveVoiceMessages": true,
        "sendVoiceMessages": true,
        "maxDurationSeconds": 300
      }
    }
  }
}

第二步:STT 语音识别配置

# 语音转文字配置
{
  "stt": {
    "provider": "whisper",  // whisper | google | azure
    "model": "whisper-1",
    "language": "zh",
    "apiKey": "your-api-key",
    "fallback": {
      "enabled": true,
      "provider": "local-whisper"
    }
  }
}

第三步:TTS 语音合成配置

# 文字转语音配置
{
  "tts": {
    "provider": "openai",  // openai | elevenlabs | edge-tts
    "voice": "alloy",
    "speed": 1.0,
    "format": "ogg",  // Matrix 原生支持 ogg
    "fallback": {
      "enabled": true,
      "provider": "edge-tts"
    }
  }
}

语音消息处理流程

接收语音消息

# Agent 收到语音消息时的处理流程
1. 下载音频文件 (.ogg / .m4a / .wav)
2. 调用 STT 服务转录为文字
3. 将文字作为用户消息传递给 Agent
4. Agent 生成文字回复
5. 调用 TTS 服务合成为语音
6. 通过 Matrix 发送语音消息

在 Agent 中感知语音上下文

# 当消息来自语音时,Agent 会收到额外上下文
{
  "message_type": "voice",
  "transcript": "帮我查一下明天的天气",
  "confidence": 0.95,
  "duration_seconds": 3.2,
  "language": "zh-CN"
}

高级功能

语音+文字双回复

# 配置同时发送语音和文字回复
{
  "voice": {
    "replyMode": "both",  // voice-only | text-only | both
    "textFirst": true     // 先发文字,再发语音
  }
}

多语言语音切换

# 根据用户语言自动切换语音
{
  "tts": {
    "languageMapping": {
      "zh": { "provider": "edge-tts", "voice": "zh-CN-XiaoxiaoNeural" },
      "en": { "provider": "openai", "voice": "alloy" },
      "ja": { "provider": "edge-tts", "voice": "ja-JP-NanamiNeural" }
    }
  }
}

语音消息的情感控制

# TTS 情感参数(部分 TTS 引擎支持)
{
  "tts": {
    "emotion": "friendly",  // friendly | professional | excited
    "emphasis": "moderate"
  }
}

最佳实践

💡 语音集成优化建议:
  • STT 降噪:在嘈杂环境中,先做音频降噪再转录
  • 超时处理:STT/TTS 调用设置合理超时,避免用户等待过久
  • 缓存 TTS:相同文本的语音合成结果可缓存复用
  • 渐进式回复:先发文字"正在思考...",再发语音回复
  • 音量标准化:统一输出音量,避免忽大忽小
⚠️ 注意事项:
  • Matrix 语音消息需要客户端支持(Element、FluffyChat 等)
  • STT/TTS API 调用会产生额外费用,注意监控用量
  • 端到端加密频道中的语音消息需要 Bot 有解密权限
  • 大文件语音消息可能导致延迟,建议设置最大时长限制