名称: 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": []
}
}
}
}
}
在 Discord 语音频道中进行实时语音对话。加入语音频道,说话,你的语音将被转录,由 Claude 处理,并语音回复。
ffmpeg (音频处理)@discordjs/opus 和 sodium-native 的原生构建工具# Ubuntu/Debian
sudo apt-get install ffmpeg build-essential python3
# Fedora/RHEL
sudo dnf install ffmpeg gcc-c++ make python3
# macOS
brew install ffmpeg
clawdhub install discord-voice
或手动安装:
cd ~/.clawdbot/extensions
git clone <repository-url> discord-voice
cd discord-voice
npm install
{
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 环境变量
},
},
},
},
},
}
确保你的 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: {
apiKey: "sk-...",
whisperModel: "whisper-1",
ttsModel: "tts-1",
},
}
{
elevenlabs: {
apiKey: "...",
voiceId: "21m00Tcm4TlvDq8ikWAM", // Rachel
modelId: "eleven_multilingual_v2",
},
}
{
deepgram: {
apiKey: "...",
model: "nova-2",
},
}
在 Discord 中注册后,可使用以下命令:
/discord_voice join <channel> - 加入语音频道/discord_voice leave - 离开当前语音频道/discord_voice status - 显示语音连接状态# 加入语音频道
clawdbot discord_voice join <channelId>
# 离开语音频道
clawdbot discord_voice leave --guild <guildId>
# 检查状态
clawdbot discord_voice status
智能体可以使用 discord_voice 工具:
加入语音频道 1234567890
该工具支持以下操作:
join - 加入语音频道 (需要 channelId)leave - 离开语音频道speak - 在语音频道中说出文本status - 获取当前语音状态使用 Deepgram 作为 STT 服务商时,默认启用流式模式。这提供了:
启用流式 STT:
{
sttProvider: "deepgram",
streamingSTT: true, // 默认
deepgram: {
apiKey: "...",
model: "nova-2",
},
}
启用后 (默认),如果用户开始说话,机器人会立即停止发言。这创造了更自然的对话流,允许你打断机器人。
禁用 (让机器人说完):
{
bargeIn: false,
}
插件包含自动连接健康监控:
如果连接断开,你将看到类似日志:
[discord-voice] 已从语音频道断开连接
[discord-voice] 重连尝试 1/3
[discord-voice] 重连成功
确保在使用语音功能前,已配置 Discord 频道且机器人已连接。
安装构建工具:
npm install -g node-gyp
npm rebuild @discordjs/opus sodium-native
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 密钥 |
MIT