Skip to main content

voxsheild

Client for the VoxVerify voice-authenticity API — batch file analysis, the pre-action risk gate, and live-call scoring over a WebSocket.

The classes keep the service's name, because that is what they are a client of: the API paths, the environment variables and the OpenAPI document all say VoxVerify. voxsheild is what you install and import.

pip install voxsheild

Python 3.11 or newer, httpx and websockets>=14.0. The floor on websockets is real: the stream client passes additional_headers=, which 14.0 renamed from extra_headers.

Analyse a recording

from voxsheild import VoxVerify

with VoxVerify("http://127.0.0.1:8000", api_key=KEY) as vx:
    verdict = vx.analyze("call.wav", segments=True)
    print(verdict["verdict"], verdict["ai_score"])   # LIKELY_AI 0.91

Three verdicts, never two: LIKELY_HUMAN, LIKELY_AI, INCONCLUSIVE. The service abstains rather than guessing when the fused score does not clear a validation-selected threshold, or when the fusion weight behind it is split. Treat the estimate as evidence, not proof — the absence of a synthesis cue is not evidence of human origin.

Score a live call

import asyncio
from voxsheild import LiveCall

async def main():
    async with LiveCall("http://127.0.0.1:8000", api_key=KEY,
                        sample_rate=8000, codec="pcm_mulaw") as call:
        asyncio.create_task(pump_audio(call))   # your RTP / device loop
        async for event in call.events():
            if event["type"] == "risk":
                print(event["state"], event["confidence"])
        print(await call.stop())

send() and events() are meant to run in different tasks: audio arrives continuously while events come back on their own schedule. Do not iterate events() from two tasks at once.

Frames are capped at 1,048,576 bytes, and both clients split at the cap rather than let an oversized frame close the socket and cost the call every window it had accumulated. The caps are generated from the document, so a deployment that tunes them does not need this package patched.

Auth

Keys are per-tenant and scoped, and the tenant comes off the key — no request body may name one. 10 of the 18 documented operations require a scope; the batch forensic routes are open by design. A 403 carrying scope means the key is real but provisioned for a different surface, which is a different fix from a bad key.

Version

1.0.0, which is the API document's version rather than a number this package maintains separately. The request methods are generated from that document; the live-call client is hand-written, because OpenAPI 3.1 has no vocabulary for a socket.

Prototype for research and evaluation. Do not present any output of the service as proof of origin, and do not use it as the sole basis for an accusation.

Release files for voxsheild 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for voxsheild 1.0.0
File Size Uploaded
voxsheild-1.0.0.tar.gz 16.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for voxsheild 1.0.0
File Interpreter ABI Platform
voxsheild-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.4 kB

Release files / voxsheild-1.0.0.tar.gz

Download URL voxsheild-1.0.0.tar.gz
Size 16.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e5d41adef75d3d7f8558d976abf5b7d47c1ff2c7dcc5cea624b4e8456893aaec
BLAKE2b-256 checksum
How to use checksums
7b692c8ac52b86aa5447fb3f0c5d528ac8248df10f15381c49fded0431d22da3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / voxsheild-1.0.0-py3-none-any.whl

Download URL voxsheild-1.0.0-py3-none-any.whl
Size 17.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1be1f22938bf178bd570a5fa33a7080c369f413e228790a7a0fbe3fdeea4cfa6
BLAKE2b-256 checksum
How to use checksums
c97a474b9461f6d6622ae3d28a43ca49aa6ece20e5d8f79684ac580e1b64f07b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 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