by @kirkraman
Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables from PDFs, combining or merging...
Slash Commands (Discord)
Once registered with Discord, use these commands:
/discord_voice join - Join a voice channel/discord_voice leave - Leave the current voice channel/discord_voice status - Show voice connection statusCLI Commands
# Join a voice channel
clawdbot discord_voice join Leave voice
clawdbot discord_voice leave --guild Check status
clawdbot discord_voice status
Agent Tool
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 status| Option | Type | Default | Description |
| --------------------- | -------- | ----------------- | ----------------------------------------------- |
| enabled | boolean | true | Enable/disable the plugin |
| sttProvider | string | "local-whisper" | "whisper", "deepgram", or "local-whisper" |
| 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 |
Provider Configuration
#### OpenAI (Whisper + TTS)
{
openai: {
apiKey: "sk-...",
whisperModel: "whisper-1",
ttsModel: "tts-1",
},
}
#### ElevenLabs (TTS only)
{
elevenlabs: {
apiKey: "...",
voiceId: "21m00Tcm4TlvDq8ikWAM", // Rachel
modelId: "eleven_multilingual_v2",
},
}
#### Deepgram (STT only)
{
deepgram: {
apiKey: "...",
model: "nova-2",
},
}
"Discord client not available"
Ensure the Discord channel is configured and the bot is connected before using voice.
Opus/Sodium build errors
Install build tools:
npm install -g node-gyp
npm rebuild @discordjs/opus sodium-native
No audio heard
1. Check bot has Connect + Speak permissions 2. Check bot isn't server muted 3. Verify TTS API key is valid
Transcription not working
1. Check STT API key is valid 2. Check audio is being recorded (see debug logs) 3. Try adjusting VAD sensitivity
Enable debug logging
DEBUG=discord-voice clawdbot gateway start
clawhub install martin-pdf