odin-voice
Python bindings for the 4Players ODIN Voice SDK - a cross-platform solution for integrating real-time voice chat into your applications.
What is ODIN?
ODIN is a cross-platform SDK that integrates real-time voice chat into multiplayer games, applications and websites. It supports both managed cloud hosting through 4Players and self-hosted deployments, giving developers flexibility in their deployment strategy.
Key Features
- Real-Time Voice Chat - Low-latency audio transmission with Opus codec compression and automatic sample rate conversion
- Audio Processing - Voice Activity Detection (VAD), echo cancellation, noise suppression, automatic gain control and AI-powered voice isolation
- Channels & Proximity Chat - Up to 64 logical channels per room with per-channel 3D positions; the server only forwards what a peer wants to hear and what is in range
- End-to-End Encryption - Secure voice communication with customizable room passwords
- Sockets - Reliable and unreliable data channels between peers, alongside the voice stream
- Connection Pooling - Efficient multi-room management for complex applications
- Flexible Pipeline - Extensible audio pipeline architecture supporting custom effects
Installation
pip install odin-voice
Quick Start
import asyncio
import json
import time
from odin_voice import (
OdinConnectionPool,
OdinTokenGenerator,
OdinEncoder,
OdinDecoder,
OdinAudioEncoderConfig,
OdinAudioDecoderConfig,
)
async def main():
# Generate a token (in production, do this server-side)
generator = OdinTokenGenerator.from_access_key("your-access-key")
nbf = int(time.time())
token = generator.sign(json.dumps({
"rid": "my-room",
"uid": "user-123",
"aud": "gateway",
"nbf": nbf,
"exp": nbf + 300,
}))
async with OdinConnectionPool() as pool:
room = pool.join_room(
gateway="gateway.odin.4players.io",
token=token,
user_data={"name": "user-123"},
)
# Wait for the join to complete
own_peer_id, room_id, customer = await room.joined()
print(f"Joined {room_id} as peer {own_peer_id}")
# Encoder for outgoing audio; the room stamps our peer id into each datagram
encoder = OdinEncoder(OdinAudioEncoderConfig(sample_rate=48000))
# One decoder per remote peer
decoders: dict[int, OdinDecoder] = {}
async def handle_events():
async for rpc in room.rpcs():
match rpc:
case {"PeerJoined": {"peer_id": peer_id}}:
decoders[peer_id] = OdinDecoder(OdinAudioDecoderConfig(sample_rate=48000))
case {"PeerLeft": {"peer_id": peer_id}}:
decoders.pop(peer_id, None)
case _:
print(f"Event: {rpc}")
async def handle_audio():
async for datagram in room.datagrams():
if decoder := decoders.get(datagram.peer_id):
decoder.push(datagram.data)
samples, is_silent = decoder.pop(960) # 20ms at 48kHz mono
# Process samples...
await asyncio.gather(handle_events(), handle_audio())
asyncio.run(main())
Events arrive as dicts with the event name as their only key: Joined, Left, PeerJoined, PeerLeft, PeerChanged, MessageReceived, NewReconnectToken, Error, plus a locally generated RoomStatusChanged whenever the connection state moves between joining, joined and closed. Commands go out the same way via room.send_rpc({...}).
Channels and Positions
Every voice datagram travels on one or more of 64 logical channels, each with a 3D position. Which channels you send on is decided by the positions set on your encoder; which channels of which peers you receive is decided by channel masks on the room.
# Transmit on channel 3 from position (10, 0, 5); a fresh encoder sends on channel 0 at the origin
encoder.set_position(10.0, 0.0, 5.0, channel=3)
encoder.clear_position(0)
# Only hear peer 7 on channels 1, 3 and 5; peer id 0 sets the default for everybody
room.set_channel_masks({7: 0b10101, 0: 0xFFFF_FFFF_FFFF_FFFF})
# Decoders report what they last received
print(hex(decoder.active_channels), decoder.positions)
The server culls audio whose sender is further than one unit away on that channel, so positions double as a proximity filter. Coordinates are fixed point with 1/16 resolution.
Sockets
Besides voice, two peers can exchange arbitrary data over the room's connection. A socket is opened towards one peer and shows up on the other side with its first message.
from odin_voice import OdinSocketType
# Open a socket to peer 7; reliable is ordered and retransmitted, unreliable is fire-and-forget
sock = room.create_socket(7, kind=OdinSocketType.Reliable, label=1)
sock.send(b"hello")
# Messages from sockets opened on either side arrive on one stream
async for message in room.sockets():
print(message.socket.remote_peer_id, message.socket.info.label, message.data)
if message.socket.info.is_inbound:
message.socket.send(b"got it") # answer on the socket the peer opened
Sockets are bound to the connection they were opened on and stop working after a reconnect. An unreliable message has to fit into a single datagram together with its header, so its size is bounded by the connection's path MTU, typically a little under 1.5 KB; sending more raises OdinError naming the exact limit. Reliable sockets have no such bound.
Token Generation
Tokens authenticate users and grant access to rooms. Generate tokens server-side only - never embed access keys in client code.
import json
import time
from odin_voice import OdinTokenGenerator
# Create from your access key
generator = OdinTokenGenerator.from_access_key("your-access-key")
# Or generate a new key pair (share public_key with 4Players)
generator = OdinTokenGenerator.generate()
print(f"Access Key: {generator.access_key}") # Keep secret!
print(f"Public Key: {generator.public_key}") # Share with 4Players
# Create a token
nbf = int(time.time())
token = generator.sign(json.dumps({
"rid": "my-room", # Room ID
"uid": "user-id", # User ID
"aud": "gateway", # Audience: "gateway" or "sfu"
"nbf": nbf, # Not before (Unix timestamp)
"exp": nbf + 300, # Expiration (Unix timestamp)
}))
End-to-End Encryption
Enable E2EE by creating a cipher with a shared password. All peers must use the same password. A cipher serves exactly one room.
from odin_voice import OdinCipher, OdinCryptoPeerStatus
# Create cipher with password
cipher = OdinCipher("shared-secret")
# Join room with encryption
room = pool.join_room(gateway=gateway, token=token, cipher=cipher)
# Check peer encryption status
status = cipher.peer_status(peer_id)
match status:
case OdinCryptoPeerStatus.Encrypted:
print("Peer is using the same password - secure!")
case OdinCryptoPeerStatus.PasswordMismatch:
print("Peer is using a different password")
case OdinCryptoPeerStatus.Unencrypted:
print("Peer is not using encryption")
# Change password at runtime
cipher.set_password("new-password")
Audio Processing Pipeline
Add effects like VAD, noise suppression and voice isolation to encoders and decoders:
from odin_voice import (
OdinEncoder,
OdinAudioEncoderConfig,
OdinVadConfig,
OdinApmConfig,
OdinViConfig,
OdinNoiseSuppressionLevel,
OdinGainControllerVersion
)
encoder = OdinEncoder(OdinAudioEncoderConfig())
pipeline = encoder.pipeline
# Add Voice Activity Detection with default settings
vad_id = pipeline.insert_vad(0, OdinVadConfig())
# Add automatic gain control, noise suppression and echo cancellation
apm_config = OdinApmConfig(
gain_controller_version=OdinGainControllerVersion.V2,
noise_suppression_level=OdinNoiseSuppressionLevel.High,
echo_canceller=True,
)
apm_id = pipeline.insert_apm(1, 48000, False, apm_config)
# Echo cancellation needs to know what is being played back
pipeline.update_apm_playback(apm_id, playback_samples, delay_ms=10)
# Add AI-powered voice isolation
vi_id = pipeline.insert_vi(2, OdinViConfig(enabled=True, attenuation_limit_db=100.0))
# Reconfigure or remove effects at any time
pipeline.set_vad_config(vad_id, OdinVadConfig.disabled())
pipeline.remove_effect(vi_id)
Connection Statistics
Monitor connection quality:
stats = room.stats
if stats:
print(f"RTT: {stats.rtt:.1f}ms")
print(f"Packet Loss: {stats.udp_tx_loss:.1f}%")
print(f"RX Datagrams: {stats.udp_rx_datagrams}")
print(f"TX Datagrams: {stats.udp_tx_datagrams}")
# Encoders, decoders and rooms expose their internals for debugging
print(decoder.dump()["decoder"]["jitter_buffer"])
print(room.dump()) # join state, gateway, own peer id, join parameters with the token redacted
Documentation
For full documentation, visit docs.4players.io.
Metadata
Release files for odin-voice 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 977.2 MB
Release files / odin_voice-2.0.1-cp314-cp314t-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e75b7f5c725a28643b5c8a10fd13264589a443e1874c03b36211ebc14cb9e1b2
|
|
BLAKE2b-256 checksum How to use checksums |
5854fda04663baaea803f409c23e6ac1bfa49c3f6626fa407ffa2091d52bbf57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
18502494a4064dc1830bf08960b687d6525c6ee1bc790ad0b1b87090c61f214b
|
|
BLAKE2b-256 checksum How to use checksums |
f38e443714e8a1441d74020c07d57c9c7ea79447bc559effbe23adcec3925931
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 24.5 MB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
7309ca2d8d0f184a6e06a320078cb30cbcf011eda9306b254e94bacc304c30d0
|
|
BLAKE2b-256 checksum How to use checksums |
d6a2dbe3625b5b633bdd9cc5e0989fa7bfc2724849be7de9e85ffbb7fc680928
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-musllinux_1_2_aarch64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.14 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
f32c6e036043a39611addba560d2fdd6a02af1036f5c9ddf6a2adf62dcff8fdb
|
|
BLAKE2b-256 checksum How to use checksums |
69a4763cc86a7e18993e8a6a55e58bb2f4ace3ae4c40ef65da39e5263777e869
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 22.6 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
10cb2ea166fd5e056ae7e13b1d7ca4299e0bf6cbc56459a98105838b2807bb9d
|
|
BLAKE2b-256 checksum How to use checksums |
c4ea6878fbdeb246c699bfcc16d4f32bd52f08f091b50eaaa36cb4c854d9873d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
1b342ff0a8470a31468dd97253f3b22e2201e7b2e1f39dc2f896b4df94846bca
|
|
BLAKE2b-256 checksum How to use checksums |
8ada2c177c8abe5fa3f967ff39cc7a968cc16508c6fc080c55296a23ef999845
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
73762556021c3d43e7a7b6685bc6d73ac568985c13c2c0018a969eb8576b6a5c
|
|
BLAKE2b-256 checksum How to use checksums |
4ced7292142fdb5820e4a175313c770d96be8a29597b09165d69a5dce3d78503
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
53d01efae3402536420fa34803273ee7811409e3fe85e5eed3de0c71880256c4
|
|
BLAKE2b-256 checksum How to use checksums |
5019d4b8ef92689b1f28c28143c27e020e361c922452a96bfc16faa054136978
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 42.1 MB |
| Tags | CPython 3.14 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
de9e14210fe0d4ee0ee0ecb1f06d5e7d79e92bbdab2d4b67ddaca5dfaf4848cd
|
|
BLAKE2b-256 checksum How to use checksums |
4a290510af8f073a5667587f36848e213986434dbeafa7627a60a479fedc0795
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1d0cbe865fda523dc913972e2f8cf0414329203ee06e539bd47d23d2d7fb66cc
|
|
BLAKE2b-256 checksum How to use checksums |
159d058143eee1678cea1437c4caa0b878a33124dfed8dbd1f826b02a162c3fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 24.5 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
a3a4a9ad54c2e98a2dfb54648f85bad47fb3e2babf244088f27421d96a0a695a
|
|
BLAKE2b-256 checksum How to use checksums |
589abdb55806ecb01f5b04ed79667cb67f0f5d33cf2e074dd02ddd10ce23c507
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
bd5e3ee970e27e22bb4af7f4c61afb81eac60dd3b69f3dd0bd2f6ad372c6c5fc
|
|
BLAKE2b-256 checksum How to use checksums |
bc3f6172fad81e05803370d87575b198cfe557321310d5f5480b286c5a6eeed9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 22.6 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
03ea764c85cb2b833b106974b23382aadff74392efbc37da262cae2d939e53fa
|
|
BLAKE2b-256 checksum How to use checksums |
758466def218dec177a250ad4bd7b5c6184ccc64808301c50c8cb0c56aa80bde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
d76c8f18344232b69b78ebd82d97496a1c051d10173e0f6889226196b38f6d99
|
|
BLAKE2b-256 checksum How to use checksums |
ab6c5d7f38384a8c3094a8a3241190ba57c4ba114edf14082de320b3fe0662f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e264000b050adc412182051aa8c14b956373c0b938b7562c3d72f14744a5920d
|
|
BLAKE2b-256 checksum How to use checksums |
265c1216e8eed2eced464d80c02d0c83235e725d64b2face1a76ad2583bf07fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ff6e859bf5123ab841b7e6412711378a636c1f828ae6cb386b77b99ecec7992b
|
|
BLAKE2b-256 checksum How to use checksums |
98e555b059c2716740c8c2de7e625c947d3dc32d85c5b1691a1bb9430ac54fef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 42.1 MB |
| Tags | CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2fd3b75522090fe50816fd57e32177ea695138525b02eecc1005692997a84b48
|
|
BLAKE2b-256 checksum How to use checksums |
4c8bccb18a4fae779af456c010479e38d4407161bb5f1c3aa38d73d53675e604
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2dedf12bbf1f67f699bc7925bfc0243ee8fde7d71217ece47c58784f7008ad40
|
|
BLAKE2b-256 checksum How to use checksums |
86ba7088ac16e63cb3dc92c70ef597b23ad7a3cc617cf40e49468068c450c8b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 24.5 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
4b769a9bdb29b776c9a56893f7c8501a8d291834a1bcb5cdbe34bcc667882749
|
|
BLAKE2b-256 checksum How to use checksums |
33cc6eda18bb4b003efe04c8c540bcae299d5efc1d2120d1e4849e3f88724d17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd479592b97610ec3d6d078965719d4af26e5eafe0e1597c19ed7aab2a09fa92
|
|
BLAKE2b-256 checksum How to use checksums |
f7939b17190ce6ea11c71a3a63718e5264fe25a7a66bec8c83484b3c21d8122f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 22.6 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
23b6013e8aaf871fe5a733f696094a55ebc56cacef44eb95948c1c37cadda2c5
|
|
BLAKE2b-256 checksum How to use checksums |
c756450e8312757bcd9ea9788fe7f9894e738d046ddb4b1b1d094bcc477b2bcb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
d04696384ab5abdfd1fd57dc3b3f0c14b8cc00e2825fac04db5f35e41f7b4277
|
|
BLAKE2b-256 checksum How to use checksums |
2e33b8b9ad26d582bad1002aa438715686bd039a1570a5288f84d08c7bfe60e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e4c9290a9b0fc6af53d283c6d7ba36d2878124f608f67be9bbcd13a0e8dfb422
|
|
BLAKE2b-256 checksum How to use checksums |
089f92ad656a7efa3e957b0a3a48872209cae3c112bf075195d97577c82506c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a51f80a36a740181d60a7ad08b8a357f73fee4d6f9d85985851fd1409830794a
|
|
BLAKE2b-256 checksum How to use checksums |
217810055e61499807cfeae46c01ccf4a6ac93c99a021e1b2bd8aee67d3d27bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 42.1 MB |
| Tags | CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
581dd9f013822629f9522c0e3d6a289ec3b6b4a7ef3ff583703a8695f6e54e16
|
|
BLAKE2b-256 checksum How to use checksums |
6fa5568f517ece9033ff8a7b9701c8b5097efc468603674f0adbc9b5cbd39a62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8e276a643477a770014f5568ca8401e528a087948583f6bb99b3753a37bdfcab
|
|
BLAKE2b-256 checksum How to use checksums |
66248fb38fbbaed04dba8cf63eb0c64f19f4025e240df75c7583913d543601ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 24.5 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
eee7e2f13c5dfc984108de696503a9ba113c6c5518a4a2a9512b86603ebf5e21
|
|
BLAKE2b-256 checksum How to use checksums |
afebf8b61ba1c4fac00c2365a565c1a451cdc29750e69a09168d5c3866422299
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
1b4de37fe06a3ac5636d015a110bc8b851f38185cc5de16ab2ee3a8bef70f4fd
|
|
BLAKE2b-256 checksum How to use checksums |
4076128945ca8462cacb08657a3a8151a83f24a37528188d4643008908f7d0ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 22.6 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e024781551903bbfbda1e868308512af60249181bd0edb01a28ffa65baf55e6f
|
|
BLAKE2b-256 checksum How to use checksums |
2a0f0635c9283f17223ddb8ee007472d058f31889c32db54a3f08f63579b795c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
607758c097138c759c85abc4bd0b1e19123c491903bfa14b1415cc90bd1f6134
|
|
BLAKE2b-256 checksum How to use checksums |
6ab408abdba231340502de9ff927e13510e9af034f27c9a2206f86be7e167ac6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e00083ec04fdf573bc5ed3f5acd7b400c29b9860b4e846ec692130ef94644cad
|
|
BLAKE2b-256 checksum How to use checksums |
fb9d6983506ecaa8e190f1db60d255ed3720f832c8a6b422d8d18906aa3439db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
806db89f2daa59eb752a1d9c983826dcf6ab5883d3ee093474c1fa20c43adf03
|
|
BLAKE2b-256 checksum How to use checksums |
8abedad68a43510bd3dbba40795a857a50e71627169daf329aa3a9bcc98cfb5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 42.1 MB |
| Tags | CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
61e806b906f1e45ff984db2e1b89a74cbd864f284aaa30648faee95962549e70
|
|
BLAKE2b-256 checksum How to use checksums |
8bb937714f823cda40a85f32638f955ece792f47efbe42e56a4e0a16159a34d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-win_amd64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 20.4 MB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
adc13f189046725f29b998a6a4808cdb26e633dc8e84278a327df0414b7b0ece
|
|
BLAKE2b-256 checksum How to use checksums |
167c15aae243107b391188ab29a0206d454d463f648ee1bba0cbdcbdd975a1eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 24.5 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
980b58e6802befb830681b0bc56cc2eb573eb2ad335b19980d0cfd6f11a4c640
|
|
BLAKE2b-256 checksum How to use checksums |
0ce6760f7f7b70e5d6b352c4cb5279fc679134e26ed0592236dd8519ee5d71eb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
f8376bc1495943411f47e1e866c608b5b6ed43fa4561748ba2a3d0add4a181f1
|
|
BLAKE2b-256 checksum How to use checksums |
4abccb5749acbd2bbd194074efd871150ac1ad251d194dc9395cdf358799eb53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 22.6 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
fe7c853ffb5715ced0040352513c136369e45cff3fcc0f10ac3014f53031b8d0
|
|
BLAKE2b-256 checksum How to use checksums |
7476c9c2fdb9a0ad6d951409200561bf511dc7629d8bb8d2f61c931880396398
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 19.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
af7b773f1292aa2aab8cf946661770e7b70d3f0ecfe793e9ab51a7500e147e6f
|
|
BLAKE2b-256 checksum How to use checksums |
1dda84af6811937dfc6ebcce79a6c495320e23c89f731353d86dec18934c75ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 20.5 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
819faa39cdc7e11e72609167c8933ca359b13bb92d97c6a8ed2fb96a08f60f2f
|
|
BLAKE2b-256 checksum How to use checksums |
2e7d922214ed61857a90b2faf8568dea9ae37ccf77c1c2725d1384e2b87de96a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.whl |
|---|---|
| Size | 21.6 MB |
| Tags | CPython 3.10 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
4669ec95aac9983ec04839749737cf4164d5ed51c6e730b62a387ac093db545d
|
|
BLAKE2b-256 checksum How to use checksums |
0857938ec089fec55cc7f8d6ded32948a4e607dff0c15e6d1ef47d4bf80a2930
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|
Release files / odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 42.1 MB |
| Tags | CPython 3.10 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
14999730731cebb62c8ff6e2b3dc25c7c14df42d927903cf402c0a3ca911e4c7
|
|
BLAKE2b-256 checksum How to use checksums |
9a01d3c7a12ce007f6be64945c8ae505b890ffb117dbc4263732378b3cff414f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.14.4
|