Skip to main content

duplexjev

Jev-style typed decisions about speech with zero decode steps. Give it audio and one or more option groups (has the user finished? which filler? which intent? speaker gender?); every group comes back as a probability over its options from a single forward pass. Many groups about many calls share one pass, with exact prefix sharing.

Quick start, no GPU — the default decisions about any clip through our trial API (rate-limited):

pip install duplexjev
duplexjev quick call.wav --api https://api.adventists.cn/duplexjev              # --lang zh for Chinese speech
from duplexjev import quick, Question
quick("call.wav", api="https://api.adventists.cn/duplexjev")                   # prints and returns the table
quick("call.wav", vllm="http://localhost:8000/v1",                              # your own `vllm serve adventists-ai/DuplexJev-4B-Para`
      questions=[Question("product", "Which product is the user asking about?", ["phone", "laptop", "other"])])

duplexjev gateway --vllm http://localhost:8000/v1 serves the same web demo and HTTP API in front of your own vLLM server. Web demo: https://api.adventists.cn/duplexjev/

Local PyTorch — the default model is DuplexJev-4B-Para (~10 GB GPU memory), which also hears laughter, breathing, coughs and sighs, speaking style (whisper, shouting) and stress; quick("call.wav") adds non-verbal sound and speaking style to the default table (ten decisions). Complete models and connector checkpoints both load with Decider.from_pretrained (one forward pass for many option groups and many clips):

pip install "duplexjev[speech]"      # add [all] for the HTTP server
from duplexjev import Decider, Question

d = Decider.from_pretrained("adventists-ai/DuplexJev-4B-Para")      # or DuplexJev-32B-Para with device="auto"
groups = [Question("turn", "Has the user finished the turn?", ["finished", "not finished"]),
          Question("gender", "What is the perceived gender of the speaker?", ["female", "male"]),
          Question("sound", "Besides speech, which sound can be heard in this audio?",
                   ["laughter", "breathing", "coughing", "a sigh", "None of these"])]

d.decide("call.wav", groups)
# {'turn': {'answer': 'finished', 'confidence': 0.97, 'probs': {...}}, 'gender': {...}}

# many clips: each option group names its clip(s) with audio=<id> | [ids] | "*"
d.decide_batch({"car1": "a.wav", "car2": "b.wav"},
               [Question("turn", "Has the user finished the turn?", ["finished", "not finished"], audio="*"),
                Question("gender", "Speaker gender", ["female", "male"], audio="car2")])
# {'car1': {'turn': ...}, 'car2': {'turn': ..., 'gender': ...}}

Ask in the language of the clip (Question(..., lang="zh") with Chinese options for Chinese speech): the DuplexJev connectors were trained with language-matched prompts. Released weights, results and licences: https://huggingface.co/adventists-ai. Local copies of the encoder and LLM: from_pretrained(..., text_model=..., audio_model=...), also offline.

Serve with tick batching: duplexjev serve --model <checkpoint> --tick-ms 160.

0.4.0: default model adventists-ai/DuplexJev-4B-Para; complete DuplexJev models (encoder + connector + LLM in one repo) load in PyTorch with vendored model code; default table gains non-verbal sound and speaking style (10 rows); examples/para_abilities.py.

0.3.0: quick / duplexjev quick with a default table of eight decisions; clients for vLLM servers and the DuplexJev HTTP API that need no torch (torch moved to the speech extra); duplexjev gateway (web demo + API).

0.2.1: audio is padded to whole audio tokens at the end instead of the start (start padding cost up to 6 points on emotion); text_model / audio_model overrides work offline.

Project: https://github.com/adventists-ai/duplexjev · License: Apache-2.0

Metadata

Release files for duplexjev 0.7.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 duplexjev 0.7.0
File Size Uploaded Provenance Actions
duplexjev-0.7.0.tar.gz 90.4 kB Without provenance Details for duplexjev-0.7.0.tar.gz

Built distribution (wheel)

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

Total release size: 166.4 kB

Release files / duplexjev-0.7.0.tar.gz

Download URL duplexjev-0.7.0.tar.gz
Size 90.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9fbeab2b25676da415c59da2a4b5e4f1e4b6511d747b0f2a8f2b65ec3017ab77
BLAKE2b-256 checksum
How to use checksums
21f78e9423d6683d4143ab674ade2b26b65755066f0d4df5fd5aeae26f05c9f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / duplexjev-0.7.0-py3-none-any.whl

Download URL duplexjev-0.7.0-py3-none-any.whl
Size 76.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c91b513e52d0fb37a31e35c53df8df75120461793644312d75e16e102983d8e7
BLAKE2b-256 checksum
How to use checksums
40cd4b2075359c43cad692b17b809af6b559dfc3dec6e9a992db911cb8e0c750
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for duplexjev 0.7.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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