DuplexJev-B-Para-MOSS-Transcribe-SmolLM3-3B
A small DuplexJev connector: the MOSS-Transcribe-Diarize audio encoder (Whisper architecture, 24 layers, 307 M) (frozen) feeds a frozen SmolLM3-3B, and every typed question is read as a single-token distribution over its options, with zero decode steps and many questions per forward pass. Trained with the same recipe as the Qwen3-32B connectors released with the paper.
| Audio encoder (frozen) | adventists-ai/MOSS-Transcribe-Diarize-Whisper-Encoder |
| LLM (frozen) | HuggingFaceTB/SmolLM3-3B |
| Connector | last encoder layer → frame stacking + SwiGLU projector (B), 37.8 M trainable parameters |
| Audio tokens | 50 Hz encoder frames, 8 stacked → 6.25 audio tokens/s |
| Total parameters | 3420 M (encoder + LLM + connector) |
| This variant | R2 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 recipe). Hears speaker gender and four-way emotion. |
Quick start
pip install "duplexjev[speech]>=0.2.2"
from duplexjev import Decider, Question
d = Decider.from_pretrained("adventists-ai/DuplexJev-B-Para-MOSS-Transcribe-SmolLM3-3B")
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")
d.decide("utterance_zh.wav", [ # Chinese speech: Chinese question and options
Question("gender", "说话人的性别是?", ["男性", "女性"], lang="zh"),
Question("emotion", "说话人当时的情绪状态是?", ["中性", "高兴", "生气", "伤心"], lang="zh"),
], lang="zh")
The connector was trained with SmolLM3's no-think format (an empty <think></think> block before the answer). The tokenizer in this repository carries that chat template; SmolLM3's default template adds a long system prompt with today's date and would not match.
The encoder is the audio encoder of MOSS-Transcribe-Diarize (Apache-2.0), repackaged as a standard Whisper encoder in adventists-ai/MOSS-Transcribe-Diarize-Whisper-Encoder.
Results
| Evaluation (%) | paper protocol | duplexjev 0.2.2 defaults |
|---|---|---|
| qa100 (spoken QA) | 33 | 41 |
| qa100, SmolLM3-3B reading the transcript | 77 | – |
| ZJU-ML (spoken QA, real + TTS) | 41 | – |
| Easy-Turn (4-way turn state, 800 clips) | 46.1 | – |
| Gender, 800 real utterances | 97.9 | 97.8 |
| Emotion, 4-way, 800 utterances | 84.6 | 85.9 |
Leaderboard scores (see the GitHub README): main language (mean of qa100, ZJU-ML, Easy-Turn) 40.0, paralinguistics (mean of gender, emotion) 91.2.
Paper protocol: the evaluation prompts of the paper (single option order, one H200). duplexjev defaults: the package's
own prompts with lang matched to the clip. Spoken QA with a small LLM is bounded by the LLM itself (see the
transcript-reading row); use these connectors for short decisions and speaker cues rather than open knowledge questions.
Latency of one decision event (10 questions, one 4.5 s clip, duplexjev 0.2.2, plain PyTorch): 5.8 s on 8 CPU threads (Xeon Platinum 8558, fp32, not quantized); about 156 ms on one H200 (bf16, measured while the GPU was shared with a training job).
Training
Frozen encoder and LLM; only the connector is trained: R1 and R2 transcript distillation on two disjoint 0.5 M-utterance packs of the Ultravox v0.6 mixture (32k steps each, global batch 16), then 4k steps of MIX-KD on content + gender (AISHELL-1, LibriSpeech) + emotion (ESD, CREMA-D). Code and scripts: https://github.com/adventists-ai/duplexjev.
Limitations
- Evaluated on read or acted speech and small test sets (100–800 items); not on streaming input.
- Small LLMs answer knowledge questions poorly even from the transcript.
- 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 for the connector weights: trained on the ESD emotional speech corpus, which is licensed for research only, and on CREMA-D. Do not use it for commercial purposes. The frozen models keep their own licences: SmolLM3-3B (Apache-2.0) and the encoder (Apache-2.0).
Citation
@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.