Skip to main content

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)

Table of built distributions (wheels) for odin-voice 2.0.1
File
odin_voice-2.0.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
odin_voice-2.0.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
odin_voice-2.0.1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
odin_voice-2.0.1-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
odin_voice-2.0.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
odin_voice-2.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
odin_voice-2.0.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details
odin_voice-2.0.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
odin_voice-2.0.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
odin_voice-2.0.1-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
odin_voice-2.0.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
odin_voice-2.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
odin_voice-2.0.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.13 CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64, macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
odin_voice-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
odin_voice-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
odin_voice-2.0.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
odin_voice-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
odin_voice-2.0.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details
odin_voice-2.0.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
odin_voice-2.0.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
odin_voice-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
odin_voice-2.0.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
odin_voice-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
odin_voice-2.0.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
odin_voice-2.0.1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
odin_voice-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
odin_voice-2.0.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
odin_voice-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
odin_voice-2.0.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details
odin_voice-2.0.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details

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

Release history Release notifications | RSS feed

This release

2.0.1 This release

41 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page