CoolFace
Modelpublic

adventists-ai/DuplexJev-A-Para-Qwen3-ASR-0.6B-Qwen3-32B

sourceHugging Facecc-by-nc-4.0updated 3d agoView on Hugging Face
0likes12downloads
Model Card

DuplexJev-A · gender + emotion, mixed objective (research only)

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-XAttn` (from Qwen/Qwen3-ASR-0.6B)
LLM (frozen)`Qwen/Qwen3-32B`
ConnectorA (cross-attention fusion): a fusion block (queries from encoder layer 18, keys from layer 14, values from layer 9; zero-initialised, added residually) followed by the projector. 21.1 M trainable parameters (fusion 3.2 M + projector 17.8 M).
Audio tokens6.25 per second (stack factor 2)
This variantR2 connector + 4k steps of the four-task mixture (transcription, continuation, gender, emotion) under the mixed objective: transcript distillation for content samples, answer-token cross-entropy for decision samples. The paper's MIX-KD row; the best paralinguistic connector.

Quick start

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

d = Decider.from_pretrained("adventists-ai/DuplexJev-A-Para-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"),
    Question("emotion", "What is the speaker's emotional state?", ["neutral", "happy", "angry", "sad"], lang="en"),
], lang="en")
# Chinese clip: ask in Chinese, with Chinese options
d.decide("utterance_zh.wav", [
    Question("gender", "说话人的性别是?", ["男性", "女性"], lang="zh"),
    Question("emotion", "说话人当时的情绪状态是?", ["中性", "高兴", "生气", "伤心"], 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-XAttn"; 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 utterances89.9
ZJU gender benchmark (native / lettered prompt)90 / 86
Emotion, 4-way, 800 utterances90.0
qa10082 (−1 vs. R2)
ZJU-ML61 (−16 vs. R2; the drop falls almost entirely on its real-speech factual half)

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.2
Emotion, 4-way, 800 utterances88.2
qa10079

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 (AISHELL-1, LibriSpeech) + emotion pack (ESD, CREMA-D).

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

CC BY-NC 4.0, research use only. This connector was trained on the ESD emotional speech corpus, which is licensed for research purposes only, and on CREMA-D (ODbL). Do not use it for commercial purposes. The frozen base models keep their own licences (Qwen3-32B and Qwen3-ASR-0.6B: Apache-2.0).

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.