Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Real-time voice conversations in Discord voice channels with Claude AI
.claude/skills/sundial-org-discord-voice/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 13% | 0% |
Real-time voice conversations in Discord voice channels. Join a voice channel, speak, and have your words transcribed, processed by Claude, and spoken back.
ffmpeg (audio processing)@discordjs/opus and sodium-nativebash# Ubuntu/Debian sudo apt-get install ffmpeg build-essential python3 # Fedora/RHEL sudo dnf install ffmpeg gcc-c++ make python3 # macOS brew install ffmpeg
bashclawdhub install discord-voice
Or manually:
bashcd ~/.clawdbot/extensions git clone <repository-url> discord-voice cd discord-voice npm install
json5{ "plugins": { "entries": { "discord-voice": { "enabled": true, "config": { "sttProvider": "whisper", "ttsProvider": "openai", "ttsVoice": "nova", "vadSensitivity": "medium", "allowedUsers": [], // Empty = allow all users "silenceThresholdMs": 1500, "maxRecordingMs": 30000, "openai": { "apiKey": "sk-..." // Or use OPENAI_API_KEY env var } } } } } }
Ensure your Discord bot has these permissions:
Add these to your bot's OAuth2 URL or configure in Discord Developer Portal.
| Option | Type | Default | Description | |--------|------|---------|-------------| | enabled | boolean | true | Enable/disable the plugin | | sttProvider | string | "whisper" | "whisper" or "deepgram" | | streamingSTT | boolean | true | Use streaming STT (Deepgram only, ~1s faster) | | ttsProvider | string | "openai" | "openai" or "elevenlabs" | | ttsVoice | string | "nova" | Voice ID for TTS | | vadSensitivity | string | "medium" | "low", "medium", or "high" | | bargeIn | boolean | true | Stop speaking when user talks | | allowedUsers | string] | [] | User IDs allowed (empty = all) | | silenceThresholdMs | number | 1500 | Silence before processing (ms) | | maxRecordingMs | number | 30000 | Max recording length (ms) | | heartbeatIntervalMs | number | 30000 | Connection health check interval | | autoJoinChannel | string | undefined | Channel ID to auto-join on startup |
json5{ "openai": { "apiKey": "sk-...", "whisperModel": "whisper-1", "ttsModel": "tts-1" } }
json5{ "elevenlabs": { "apiKey": "...", "voiceId": "21m00Tcm4TlvDq8ikWAM", // Rachel "modelId": "eleven_multilingual_v2" } }
json5{ "deepgram": { "apiKey": "...", "model": "nova-2" } }
Once registered with Discord, use these commands:
/voice join <channel> - Join a voice channel/voice leave - Leave the current voice channel/voice status - Show voice connection statusbash# Join a voice channel clawdbot voice join <channelId> # Leave voice clawdbot voice leave --guild <guildId> # Check status clawdbot voice status
The agent can use the discord_voice tool:
Join voice channel 1234567890The tool supports actions:
join - Join a voice channel (requires channelId)leave - Leave voice channelspeak - Speak text in the voice channelstatus - Get current voice statusWhen using Deepgram as your STT provider, streaming mode is enabled by default. This provides:
To use streaming STT:
json5{ "sttProvider": "deepgram", "streamingSTT": true, // default "deepgram": { "apiKey": "...", "model": "nova-2" } }
When enabled (default), the bot will immediately stop speaking if a user starts talking. This creates a more natural conversational flow where you can interrupt the bot.
To disable (let the bot finish speaking):
json5{ "bargeIn": false }
The plugin includes automatic connection health monitoring:
If the connection drops, you'll see logs like:
[discord-voice] Disconnected from voice channel
[discord-voice] Reconnection attempt 1/3
[discord-voice] Reconnected successfullyEnsure the Discord channel is configured and the bot is connected before using voice.
Install build tools:
bashnpm install -g node-gyp npm rebuild @discordjs/opus sodium-native
bashDEBUG=discord-voice clawdbot gateway start
| Variable | Description | |----------|-------------| | DISCORD_TOKEN | Discord bot token (required) | | OPENAI_API_KEY | OpenAI API key (Whisper + TTS) | | ELEVENLABS_API_KEY | ElevenLabs API key | | DEEPGRAM_API_KEY | Deepgram API key |
MIT
Other measured skills in the registry, with their headline benchmark lift.