Godddam
This commit is contained in:
100
VOICE_SETUP.md
Normal file
100
VOICE_SETUP.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Voice Receiving Setup Guide
|
||||
|
||||
## discord.py vs py-cord
|
||||
|
||||
Both **discord.py 2.0+** and **py-cord** support voice receiving through `discord.sinks`. Your bot now uses discord.py.
|
||||
|
||||
## Key Changes Made
|
||||
|
||||
1. **Switched to discord.py** - More actively maintained, better voice support
|
||||
2. **Added opuslib** - Required for voice receiving on Windows
|
||||
3. **Simplified connection logic** - Let the library handle reconnection internally
|
||||
|
||||
## Installation Steps
|
||||
|
||||
### 1. Install Opus (Windows)
|
||||
|
||||
```powershell
|
||||
# Using Chocolatey (recommended)
|
||||
choco install opus-tools -y
|
||||
|
||||
# Or download manually from:
|
||||
# https://opus-codec.org/downloads/
|
||||
```
|
||||
|
||||
### 2. Reinstall Python dependencies
|
||||
|
||||
```bash
|
||||
pip uninstall py-cord discord.py -y
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. Set Opus path (if needed)
|
||||
|
||||
If Opus still doesn't load, add to your `.env`:
|
||||
|
||||
```
|
||||
OPUS_LIB=C:\path\to\opus.dll
|
||||
```
|
||||
|
||||
Common locations:
|
||||
- `C:\ProgramData\chocolatey\lib\opus-tools\tools\opus.dll`
|
||||
- `C:\Windows\System32\opus.dll`
|
||||
|
||||
## How Voice Receiving Works
|
||||
|
||||
### Recording Audio
|
||||
|
||||
```python
|
||||
# Start recording (already in your bot)
|
||||
voice_client.start_recording(sink, callback)
|
||||
|
||||
# Stop recording
|
||||
voice_client.stop_recording()
|
||||
```
|
||||
|
||||
### The Sink Pattern
|
||||
|
||||
Your `HotwordStreamSink` receives PCM audio data:
|
||||
- **48kHz sample rate**
|
||||
- **2 channels (stereo)**
|
||||
- **16-bit PCM**
|
||||
|
||||
The sink's `write()` method is called continuously with audio chunks from each user.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Error 4006 (Session Invalid)
|
||||
|
||||
This happens when Discord thinks you're already connected. Fixed by:
|
||||
- Proper cleanup before reconnecting
|
||||
- Using `reconnect=True` in `channel.connect()`
|
||||
- Waiting 1 second after disconnect
|
||||
|
||||
### No Audio Received
|
||||
|
||||
1. Check Opus is loaded: Look for "Loaded opus library" in logs
|
||||
2. Verify bot has "Use Voice Activity" permission
|
||||
3. Ensure users aren't muted
|
||||
|
||||
### High CPU Usage
|
||||
|
||||
The continuous transcription can be heavy. Consider:
|
||||
- Increasing `min_chunk_seconds` in HotwordStreamSink
|
||||
- Using a lighter STT model
|
||||
- Only transcribing when volume threshold is met
|
||||
|
||||
## Testing
|
||||
|
||||
1. Start the bot: `python bot.py`
|
||||
2. Join a voice channel
|
||||
3. Say "hey bashar join" in text chat
|
||||
4. Bot should join and start listening
|
||||
5. Speak in voice - bot transcribes in real-time
|
||||
|
||||
## Alternative: discord.py Voice Recv
|
||||
|
||||
If you want even more control, check out:
|
||||
https://github.com/imayhaveborkedit/discord-ext-voice-recv
|
||||
|
||||
This is a discord.py extension specifically for voice receiving.
|
||||
Reference in New Issue
Block a user