Discord Voice
Real-time voice conversations in Discord voice channels with Claude AI
Real-time voice conversations in Discord voice channels with Claude AI
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
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-native# Ubuntu/Debian sudo apt-get install ffmpeg build-essential python3Fedora/RHEL
sudo dnf install ffmpeg gcc-c++ make python3
macOS
brew install ffmpeg
clawdhub install discord-voice
Or manually:
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: [], // 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 |
|---|---|---|---|
| boolean | | Enable/disable the plugin |
| string | | , , or |
| boolean | | Use streaming STT (Deepgram only, ~1s faster) |
| string | | or |
| string | | Voice ID for TTS |
| string | | , , or |
| boolean | | Stop speaking when user talks |
| string[] | | User IDs allowed (empty = all) |
| number | | Silence before processing (ms) |
| number | | Max recording length (ms) |
| number | | Connection health check interval |
| string | | Channel ID to auto-join on startup |
{ openai: { apiKey: "sk-...", whisperModel: "whisper-1", ttsModel: "tts-1", }, }
{ elevenlabs: { apiKey: "...", voiceId: "21m00Tcm4TlvDq8ikWAM", // Rachel modelId: "eleven_multilingual_v2", }, }
{ deepgram: { apiKey: "...", model: "nova-2", }, }
Once registered with Discord, use these commands:
/discord_voice join <channel> - Join a voice channel/discord_voice leave - Leave the current voice channel/discord_voice status - Show voice connection status# Join a voice channel clawdbot discord_voice join <channelId>Leave voice
clawdbot discord_voice leave --guild <guildId>
Check status
clawdbot discord_voice status
The agent can use the
discord_voice tool:
Join voice channel 1234567890
The 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:
{ 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):
{ 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 successfully
Ensure the Discord channel is configured and the bot is connected before using voice.
Install build tools:
npm install -g node-gyp npm rebuild @discordjs/opus sodium-native
DEBUG=discord-voice clawdbot gateway start
| Variable | Description |
|---|---|
| Discord bot token (required) |
| OpenAI API key (Whisper + TTS) |
| ElevenLabs API key |
| Deepgram API key |
MIT
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.