OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  discord-voice:Discord 语音频道的实时语音对话功能

discord-voice:Discord 语音频道的实时语音对话功能

 
  unittest ·  2026-02-05 13:53:33 · 3 次点击  · 0 条评论  

名称: discord-voice
描述: 在 Discord 语音频道中与 Claude AI 进行实时语音对话
元数据:
clawdbot:
config:
requiredConfig:
- discord.token
optionalEnv:
- OPENAI_API_KEY
- ELEVENLABS_API_KEY
- DEEPGRAM_API_KEY
systemDependencies:
- ffmpeg
- build-essential
example: |
{
"plugins": {
"entries": {
"discord-voice": {
"enabled": true,
"config": {
"sttProvider": "local-whisper",
"ttsProvider": "openai",
"ttsVoice": "nova",
"vadSensitivity": "medium",
"streamingSTT": true,
"bargeIn": true,
"allowedUsers": []
}
}
}
}
}


Clawdbot Discord 语音插件

在 Discord 语音频道中进行实时语音对话。加入语音频道,说话,你的语音将被转录,由 Claude 处理,并语音回复。

功能特性

  • 加入/离开语音频道:通过斜杠命令、CLI 或智能体工具
  • 语音活动检测 (VAD):自动检测用户何时开始说话
  • 语音转文字 (STT):支持 Whisper API (OpenAI)、Deepgram 或本地 Whisper (离线)
  • 流式 STT:通过 Deepgram WebSocket 实现实时转录 (延迟降低约 1 秒)
  • 智能体集成:转录文本会路由到 Clawdbot 智能体处理
  • 文字转语音 (TTS):支持 OpenAI TTS、ElevenLabs 或 Kokoro (本地/离线)
  • 音频播放:在语音频道中语音回复
  • 打断支持:用户开始说话时,机器人立即停止发言
  • 自动重连:心跳监控,断开连接时自动重连

前置要求

  • 拥有语音权限的 Discord 机器人 (连接、发言、使用语音活动)
  • STT 和 TTS 服务提供商的 API 密钥
  • 语音处理所需的系统依赖:
  • ffmpeg (音频处理)
  • 用于构建 @discordjs/opussodium-native 的原生构建工具

安装指南

1. 安装系统依赖

# Ubuntu/Debian
sudo apt-get install ffmpeg build-essential python3

# Fedora/RHEL
sudo dnf install ffmpeg gcc-c++ make python3

# macOS
brew install ffmpeg

2. 通过 ClawdHub 安装

clawdhub install discord-voice

或手动安装:

cd ~/.clawdbot/extensions
git clone <repository-url> discord-voice
cd discord-voice
npm install

3. 在 clawdbot.json 中配置

{
  plugins: {
    entries: {
      "discord-voice": {
        enabled: true,
        config: {
          sttProvider: "local-whisper",
          ttsProvider: "openai",
          ttsVoice: "nova",
          vadSensitivity: "medium",
          allowedUsers: [], // 空数组 = 允许所有用户
          silenceThresholdMs: 1500,
          maxRecordingMs: 30000,
          openai: {
            apiKey: "sk-...", // 也可使用 OPENAI_API_KEY 环境变量
          },
        },
      },
    },
  },
}

4. Discord 机器人设置

确保你的 Discord 机器人拥有以下权限:

  • 连接 - 加入语音频道
  • 发言 - 播放音频
  • 使用语音活动 - 检测用户何时说话

在机器人的 OAuth2 URL 中添加这些权限,或在 Discord 开发者门户中配置。

配置选项

选项 类型 默认值 描述
enabled boolean true 启用/禁用插件
sttProvider string "local-whisper" "whisper""deepgram""local-whisper"
streamingSTT boolean true 使用流式 STT (仅 Deepgram,约快 1 秒)
ttsProvider string "openai" "openai""elevenlabs"
ttsVoice string "nova" TTS 语音 ID
vadSensitivity string "medium" "low""medium""high"
bargeIn boolean true 用户说话时停止机器人发言
allowedUsers string[] [] 允许的用户 ID 列表 (空数组 = 允许所有用户)
silenceThresholdMs number 1500 处理前的静音时长 (毫秒)
maxRecordingMs number 30000 最大录音时长 (毫秒)
heartbeatIntervalMs number 30000 连接健康检查间隔
autoJoinChannel string undefined 启动时自动加入的频道 ID

服务商配置

OpenAI (Whisper + TTS)

{
  openai: {
    apiKey: "sk-...",
    whisperModel: "whisper-1",
    ttsModel: "tts-1",
  },
}

ElevenLabs (仅 TTS)

{
  elevenlabs: {
    apiKey: "...",
    voiceId: "21m00Tcm4TlvDq8ikWAM", // Rachel
    modelId: "eleven_multilingual_v2",
  },
}

Deepgram (仅 STT)

{
  deepgram: {
    apiKey: "...",
    model: "nova-2",
  },
}

使用方法

斜杠命令 (Discord)

在 Discord 中注册后,可使用以下命令:

  • /discord_voice join <channel> - 加入语音频道
  • /discord_voice leave - 离开当前语音频道
  • /discord_voice status - 显示语音连接状态

CLI 命令

# 加入语音频道
clawdbot discord_voice join <channelId>

# 离开语音频道
clawdbot discord_voice leave --guild <guildId>

# 检查状态
clawdbot discord_voice status

智能体工具

智能体可以使用 discord_voice 工具:

加入语音频道 1234567890

该工具支持以下操作:

  • join - 加入语音频道 (需要 channelId)
  • leave - 离开语音频道
  • speak - 在语音频道中说出文本
  • status - 获取当前语音状态

工作原理

  1. 加入:机器人加入指定的语音频道
  2. 监听:VAD 检测用户开始/停止说话
  3. 录音:用户说话时缓冲音频
  4. 转录:静音时,音频发送至 STT 服务商
  5. 处理:转录文本发送给 Clawdbot 智能体
  6. 合成:智能体回复通过 TTS 转换为音频
  7. 播放:音频在语音频道中播放

流式 STT (Deepgram)

使用 Deepgram 作为 STT 服务商时,默认启用流式模式。这提供了:

  • 约 1 秒更快的端到端延迟
  • 实时反馈,包含中间转录结果
  • 自动保活,防止连接超时
  • 降级方案,流式失败时回退到批量转录

启用流式 STT:

{
  sttProvider: "deepgram",
  streamingSTT: true, // 默认
  deepgram: {
    apiKey: "...",
    model: "nova-2",
  },
}

打断支持

启用后 (默认),如果用户开始说话,机器人会立即停止发言。这创造了更自然的对话流,允许你打断机器人。

禁用 (让机器人说完):

{
  bargeIn: false,
}

自动重连

插件包含自动连接健康监控:

  • 心跳检查 每 30 秒一次 (可配置)
  • 自动重连,断开时使用指数退避策略
  • 最多尝试 3 次,然后放弃

如果连接断开,你将看到类似日志:

[discord-voice] 已从语音频道断开连接
[discord-voice] 重连尝试 1/3
[discord-voice] 重连成功

VAD 灵敏度

  • low:拾取轻声说话,可能被背景噪音触发
  • medium:平衡 (推荐)
  • high:需要更大声、更清晰的语音

故障排除

"Discord 客户端不可用"

确保在使用语音功能前,已配置 Discord 频道且机器人已连接。

Opus/Sodium 构建错误

安装构建工具:

npm install -g node-gyp
npm rebuild @discordjs/opus sodium-native

听不到音频

  1. 检查机器人拥有连接和发言权限
  2. 检查机器人未被服务器静音
  3. 验证 TTS API 密钥有效

转录不工作

  1. 检查 STT API 密钥有效
  2. 检查音频是否正在录制 (查看调试日志)
  3. 尝试调整 VAD 灵敏度

启用调试日志

DEBUG=discord-voice clawdbot gateway start

环境变量

变量 描述
DISCORD_TOKEN Discord 机器人令牌 (必需)
OPENAI_API_KEY OpenAI API 密钥 (Whisper + TTS)
ELEVENLABS_API_KEY ElevenLabs API 密钥
DEEPGRAM_API_KEY Deepgram API 密钥

限制

  • 每个服务器同时只能在一个语音频道
  • 最大录音时长:30 秒 (可配置)
  • 实时音频需要稳定网络
  • TTS 输出可能因合成有轻微延迟

许可证

MIT

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor