discord-native-voice
A native voice extension for discord.py-self.
This package plugs into discord.py-self's normal voice connection flow and adds
voice receive, video, and Go Live stream support. It is meant to feel like a
drop-in replacement for the existing VoiceClient.
Key Features
- Native voice send and receive
- Video send and receive for all Discord video codecs: AV1, H265, H264, VP8, and VP9
- Go Live stream creation, watching, sending, and receiving
- Media sources for FFmpeg files, desktop capture, raw audio, and raw video
- Media sinks for callbacks, queues, WAV output, FFmpeg output, and muxed audio/video recordings
- Codec advertisement based on local FFmpeg support
- RTX/NACK support for video packet recovery
- Video simulcast support
- End-to-end encryption support with DAVE
- Compatible with nearly all existing voice sinks
Installing
Python 3.10 or higher is required.
Install discord.py-self first, then install this extension:
# Linux/macOS
python3 -m pip install -U discord.py-self <todo>
# Windows
py -3 -m pip install -U discord.py-self <todo>
Note that PyNaCl is not required when using this extension.
A Rust toolchain is required when building from source. FFmpeg is also recommended, since the built-in file, desktop, and recording helpers use it.
For development tools:
python3 -m pip install -U .[dev]
Quick Example
Connect with the native voice client:
from discord.ext.native_voice import VoiceClient
voice = await channel.connect(cls=VoiceClient, self_video=True)
Play a media file with audio and video:
from discord.ext.native_voice import FFmpegMediaSource, VoiceClient
voice = await channel.connect(cls=VoiceClient, self_video=True)
source = FFmpegMediaSource.from_file(
'clip.mp4',
'H264',
width=1280,
height=720,
fps=30,
bitrate=4_000_000,
)
voice.play(source)
Receive media with a callback:
from discord.ext.native_voice import MediaPacket, VoiceClient
voice = await channel.connect(cls=VoiceClient)
def on_packet(packet: MediaPacket) -> None:
print(packet.media_type, packet.codec, packet.user_id)
voice.listen(on_packet)
Go Live Streams
Streams use a separate StreamClient, created from an existing native voice
connection.
from discord.ext.native_voice import FFmpegMediaSource, StreamClient, VoiceClient
voice = await channel.connect(cls=VoiceClient)
stream = await voice.create_stream(cls=StreamClient)
# Simplified example, reality is slightly more complicated
source = FFmpegMediaSource.from_desktop(
'H264',
width=1920,
height=1080,
fps=30,
bitrate=6_000_000,
)
stream.play(source)
To watch another user's stream:
stream = voice.streams[0]
stream_client = await stream.watch(cls=StreamClient)
Configuration
Options that affect Discord's voice negotiation should be set before connecting.
Use with_config() to create a configured client class:
from discord.ext.native_voice import VoiceClient
ConfiguredVoiceClient = VoiceClient.with_config(
rtx=False,
udp_qos=True,
enable_debug_stats=True,
)
voice = await channel.connect(cls=ConfiguredVoiceClient, self_video=True)
Media Helpers
The extension includes source and sink helpers for common media tasks:
FFmpegMediaSourceandFFmpegVideoSourcefor files, pipes, and desktop capture.PCMMediaSource,AudioFrameSource, andVideoFrameSourcefor already produced audio or video.QueueSinkandAsyncQueueSinkfor application-managed receive loops.WaveSink,MixedWaveSink,FFmpegSink, andFFmpegMuxSinkfor recording.MultiSink,PerUserSink, and filter sinks for routing packets.
For advanced integrations, received media is exposed as MediaPacket objects
with RTP metadata and parsed RTP extensions.
Docs
Docs are available at https://discord-native-voice.readthedocs.io/en/latest/index.html. Credits to discord.py for the theme.
Issues
For now, issues should be opened under this repository. Eventually, they will be migrated to the discord.py-self repository.
Links
Metadata
Release files for discord-native-voice 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| discord_native_voice-0.1.1.tar.gz | 126.5 kB | Details |
Built distributions (wheels)
Total release size: 6.9 MB
Release files / discord_native_voice-0.1.1.tar.gz
| Download URL | discord_native_voice-0.1.1.tar.gz |
|---|---|
| Size | 126.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1581f29798b543d19845bd55efeee739df28f038d1656635088dff1d6dfe10b4
|
|
BLAKE2b-256 checksum How to use checksums |
b37ac95278781f76ad7033e70f124a8e5dc7b53cf68add7b82daa9095d8c65dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-win_arm64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 399.6 kB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
81e30eb9e7b8f71fdaea5d8800f444d8b67a8aad79136302e88c8b50d38ae31f
|
|
BLAKE2b-256 checksum How to use checksums |
05b8c8f907f58672b075917283ef697dbef187089301dbf1862a489fe27c9e01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-win_amd64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 419.1 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
95b435f52690ca031fff0cecf317ee13ccd75a7f57a9c7ffacf0fec0b2abe98e
|
|
BLAKE2b-256 checksum How to use checksums |
d9ac17f736177ce26197949144d66711ab49f25fc3e1f239a923ea0bbe0af96b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-win32.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-win32.whl |
|---|---|
| Size | 405.4 kB |
| Tags | CPython 3.10 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
4d9e977148c62f6624c3577a17c43be73f362b3ed698dd5954d08b451846ccfd
|
|
BLAKE2b-256 checksum How to use checksums |
aae176b12d731eb1124cf6cdc8c02c85a6c127c7b4573c57aabc41d5d5734e7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 630.1 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
41b8044904c3a60d85ed8b750b8a2e5b0ffce91cc5cb9d43fc854e188c68ff31
|
|
BLAKE2b-256 checksum How to use checksums |
af9c60a3d1784c4aacb7feaf914c58d66bf7e55bf016bf0dfb3ffc03f317ccd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 604.3 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
21152886523787465a6cb12ee4af65217a53713a046c5f97325ccf038f255ac6
|
|
BLAKE2b-256 checksum How to use checksums |
010d7774105f29e36c01345bba9eb2ac28caf8e4ae77590d99714215e0cf625b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-manylinux_2_31_armv7l.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-manylinux_2_31_armv7l.whl |
|---|---|
| Size | 542.5 kB |
| Tags | CPython 3.10 Linux glibc 2.31+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
c00d5218cd8d6a73790bdc920d0c3f4809ee289a2c38ea6e3623747321404059
|
|
BLAKE2b-256 checksum How to use checksums |
8c4b3cd7c460ca42f8b0083a901672cf7f04d61d72f52a1e3844de863d93513d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 553.4 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
221e3952025ce52d09a44212a0904c540a241f109acd5621e39612ba12303aa0
|
|
BLAKE2b-256 checksum How to use checksums |
ad4e9f51087d500417f7f4f33ab5b72d9cad5c66ee20f23e4569dc4131f5f313
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_i686.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_i686.whl |
|---|---|
| Size | 595.2 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
a154e62fd902c77ba1adbdd92cd9c2391d8ad09827a8b9fe39d29d5813fea500
|
|
BLAKE2b-256 checksum How to use checksums |
7133550d146a5292fb3dbe442fa855e3976a74d6aecd9c3aedafb7b30adbeb76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_aarch64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 540.0 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
e2b2fbbf24ce6036231472f89155a55de16a18ab0068520437ff1e7a030775a6
|
|
BLAKE2b-256 checksum How to use checksums |
998db43dbe0158d5828c8bc9176a832e281a964222a18842a30e68f22eaad4fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 496.1 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1cba18f1aef6f1d2be3e7907d7df685314993f13dc60d6943a8d5c73200e4df0
|
|
BLAKE2b-256 checksum How to use checksums |
22bb716aa8adfa97c11342d51bff786738ac75ffca6980793b261d82139dc6a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 512.8 kB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ed3f39dda4c970a2d8652dd682036df630f6cfbe2b16af25b1cd28d2cb787b45
|
|
BLAKE2b-256 checksum How to use checksums |
6a7314f109bd6f813fb3cd406aa5554c4644d80f93278313b8e9e18a474bf04b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-android_24_x86_64.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-android_24_x86_64.whl |
|---|---|
| Size | 558.2 kB |
| Tags | Android API level 24+ x86-64 CPython 3.10 abi3 |
|
SHA-256 checksum How to use checksums |
ed302b6c124757a90e7017f54db9d8c80e5fa5cfb50e869fb33068b7d12c8cc6
|
|
BLAKE2b-256 checksum How to use checksums |
fa568920828ecd27073621f55ff3802069da2361b456f63f856ef77e4ef9e0ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency logRelease files / discord_native_voice-0.1.1-cp310-abi3-android_24_arm64_v8a.whl
| Download URL | discord_native_voice-0.1.1-cp310-abi3-android_24_arm64_v8a.whl |
|---|---|
| Size | 552.1 kB |
| Tags | Android API level 24+ ARM64 v8a CPython 3.10 abi3 |
|
SHA-256 checksum How to use checksums |
8faf9fc2ed21ba2155537459f4e6d42d96819f01bc30d2d6b3f47463f32fee6a
|
|
BLAKE2b-256 checksum How to use checksums |
97482fe4cbe3280d76bbcb83fcfb6d4ed6c5d8833f11bb09bf7e00041fe6593a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 23, 2026.
Transparency log