CoolFace
Modelpublic

adventists-ai/DuplexJev-B-Gender-Qwen3-ASR-0.6B-Qwen3-32B

sourceHugging Faceapache-2.0updated 3d agoView on Hugging Face
0likes11downloads
Model Card

DuplexJev-B · gender

DuplexJev reads typed, closed-set decisions from speech (is the turn over? which filler fits? who is speaking?) as a single-token distribution of a frozen LLM, with zero decode steps and many questions per forward pass. This repository holds one connector that joins a frozen ASR encoder to a frozen LLM, in Ultravox format.

ASR encoder (frozen)`adventists-ai/Qwen3-ASR-0.6B-Encoder` (from Qwen/Qwen3-ASR-0.6B)
LLM (frozen)`Qwen/Qwen3-32B`
ConnectorB (last layer): the final encoder layer (h18) goes straight into the projector (frame stacking ×2 + SwiGLU MLP). 17.8 M trainable parameters.
Audio tokens6.25 per second (stack factor 2)
This variantR2 connector + 6k steps of answer-token supervision on a gender pack (real speech only).

Quick start

bash
pip install "duplexjev[speech]>=0.2.1"
python
from duplexjev import Decider, Question

d = Decider.from_pretrained("adventists-ai/DuplexJev-B-Gender-Qwen3-ASR-0.6B-Qwen3-32B", device="auto")  # Qwen3-32B bf16: ~65 GB of GPU memory

# English clip
d.decide("utterance_en.wav", [
    Question("gender", "What is the perceived gender of the speaker?", ["female", "male"], lang="en"),
], lang="en")
# Chinese clip: ask in Chinese, with Chinese options
d.decide("utterance_zh.wav", [
    Question("gender", "说话人的性别是?", ["男性", "女性"], lang="zh"),
], lang="zh")
# -> {question_id: {"answer": ..., "confidence": ..., "probs": {option: p, ...}}}

Ask in the language of the clip, with options worded as in the examples: the connector was trained with language-matched prompts. Use duplexjev>=0.2.1; 0.2.0 padded audio at the start, which costs several points. Already have local copies of the encoder and LLM? Pass text_model="/path/Qwen3-32B" and audio_model="/path/Qwen3-ASR-0.6B-Encoder"; this works offline.

decide_batch answers question groups over many clips in one pass. See the GitHub repository for the batched pipeline, prefix sharing, the serving loop and evaluation scripts.

Results (paper, Tables 2–3)

EvaluationScore (%)
Gender, 800 real utterances87.9
ZJU gender benchmark (native / lettered prompt)60 / 57
qa10087 (−3 vs. R2)
ZJU-ML81 (+2 vs. R2)

qa100: 100 bilingual spoken multiple-choice questions (`adventists-ai/qa100`). ZJU-ML: main-language part of the ZJU audio benchmark v2.0.0 (50 real-speech factual + 50 TTS math/logic items). Numbers are single-token readouts with the paper's evaluation prompts.

Reproduced with duplexjev 0.2.1 and its default prompts (one option order, lang matched to the clip):

EvaluationScore (%)
Gender, 800 real utterances87.0
Emotion, 4-way, 800 utterances27.1
qa10088

Training

  • —Frozen: Qwen3-ASR-0.6B encoder and Qwen3-32B. Trained: the connector only.
  • —Content rounds (R1–R2): transcript distillation (token-level KL to the LLM's transcript-conditioned output, T = 2).
  • —Decision training: answer-token supervision, cross-entropy on the single option letter at the readout position. Transcript distillation alone cannot teach speaker cues, because its teacher never hears the voice.
  • —Data: R2 data + gender pack: 32k real utterances from AISHELL-1 and LibriSpeech with corpus-provided speaker gender.

Limitations

  • —Evaluated on read or acted speech and small test sets (100–800 items); not on streaming input.
  • —Paralinguistic training lowers accuracy on real spontaneous-style factual questions (see ZJU-ML above).
  • —Emotion labels come from acted corpora; do not use the outputs to make decisions about individuals.
  • —The connector only works with the encoder and LLM listed above.

License

Apache-2.0 for the connector weights and code in this repository. The frozen base models keep their own licences (Qwen3-32B and Qwen3-ASR-0.6B: Apache-2.0). The training corpora have their own terms, and some of them (e.g. WenetSpeech, CoVoST 2) are licensed for non-commercial use only; check them before commercial use.

Citation

bibtex
@inproceedings{jin2027duplexjev,
  title     = {Batched Speech Decisions Without Decoding: Single-Token Supervision Lets a Frozen {LLM} Hear Beyond the Transcript},
  author    = {Jin, Jie and Ma, Ziyin and Yin, Min and Chen, Jinyu and Song, Haigang and Pang, Zhikun and Zhang, Xiaowen},
  booktitle = {Submitted to IEEE ICASSP},
  year      = {2027}
}

Built by Adventists.ai. Claude (Anthropic) assisted with code.