Ported from upstream commit
d7231bb,
pinned 2026-07-12.
Validated against the MOSS author repo (OpenMOSS/MOSS-Transcribe-Diarize) reference at transcribe.cpp commit
3f5e15c
on 2026-07-12.
Offline English/Chinese speech-to-text with speaker diarization. A 0.9B
audio-LLM: a Whisper-Medium encoder (24 layers, d_model=1024) feeds a
4x temporal merge + VQAdaptor bridge into a Qwen3-0.6B decoder (28 layers)
via audio-token injection. Takes a 16 kHz mono WAV and emits transcript
text in the canonical diarized format [start][Sxx]text[end], where the
speaker tags and segment timestamps are generated text, not special
tokens. Not a streaming model.
WER measured on the full LibriSpeech test-clean split (2620 English
utterances) with the Whisper-style English text normalizer and jiwer
3.x. MOSS emits the diarized format [start][Sxx]text[end]; the bracket
spans are metadata and are de-diarized to a space (for both hypothesis
and reference) before scoring, matching the author-repo reference runner.
The same-manifest MOSS author-repo reference (bf16, greedy) lands at
2.07% with 95% bootstrap CI [1.82%, 2.40%]. The BF16 port lands at
2.08% (within +0.01 of the reference, well inside the CI band); the
lower-bit presets sit between 1.93% and 1.99% (statistical noise) except
Q4_K_M at 2.59%, whose excess is a handful of 4-bit tail failures
(6 empty outputs, 5 English->Chinese language-drift utterances, 1
timestamp-token repetition loop) rather than broad degradation. Prefer
Q5_K_M or higher if those tail failures matter. Reproduce with
scripts/wer/run.py + scripts/wer/score.py.
If your audio isn't already 16 kHz mono WAV, convert it first:
ffmpeg -i input.mp3 -ar 16000 -ac 1 output.wav
See the transcribe.cpp model page for performance
numbers, numerical validation, and reproduction steps.
License
Inherited from the base model: Apache-2.0. See the
upstream model card for full terms.
Original Model Card
The section below is reproduced from
OpenMOSS-Team/MOSS-Transcribe-Diarize at commit
d7231bb for offline reference. The upstream card is the
authoritative source.
MOSS-Transcribe-Diarize
MOSS-Transcribe-Diarize 0.9B is an end-to-end audio understanding model for long-form multi-speaker transcription, diarization, timestamps, and acoustic event awareness.
Given an audio or video file, the model generates a compact speaker-aware transcript in one pass, including timestamps and anonymous speaker labels such as [S01], [S02], and beyond.
News
2026-07-09: Released MOSS-Transcribe-Diarize 0.9B.
MOSS-Transcribe-Diarize 0.9B turns real-world long-form audio into structured, speaker-aware transcripts in one pass. Instead of stitching together separate ASR and diarization systems, it jointly performs speech transcription and speaker diarization, producing time-aligned text with consistent speaker labels.
The model is built for meetings, calls, podcasts, interviews, lectures, videos, and other long or messy multi-speaker recordings. It can also emit acoustic event annotations, giving downstream systems a richer view of what happened, who spoke, and when.
Core capabilities:
Long-form transcription: Converts long audio or video recordings into timestamped text.
Speaker-aware diarization: Assigns anonymous speaker labels such as [S01] and [S02] without a separate diarization pipeline.
WhisperFeatureExtractor, 16 kHz, 80 mel bins, 30 s chunks
Audio-text bridge
4x temporal merge + MLP adaptor
Fusion
Audio features replace <|audio_pad|> embeddings via masked_scatter
Output format
Compact [start][Sxx]text[end] transcript with speaker tags such as [S01]
This Hugging Face repository includes the custom Transformers remote code required to load the model with trust_remote_code=True.
Evaluation
We evaluate MOSS-Transcribe-Diarize using three objective metrics: Character Error Rate (CER), concatenated minimum-permutation Character Error Rate (cpCER), and Delta-cp. Lower is better for all metrics. A dash (-) indicates that the result is unavailable.
Model
AISHELL‑4
Alimeeting
Podcast
Movies
CER↓
cpCER↓
Δcp↓
CER↓
cpCER↓
Δcp↓
CER↓
cpCER↓
Δcp↓
CER↓
cpCER↓
Δcp↓
Doubao
18.18
27.86
9.68
25.25
37.57
12.31
7.93
10.54
2.61
9.94
30.88
20.94
ElevenLabs
19.58
37.95
18.36
25.70
36.69
10.99
8.50
11.34
2.85
11.49
17.85
6.37
GPT-4o
-
-
-
-
-
-
-
-
-
14.37
23.67
9.31
Gemini 2.5 Pro
42.70
53.42
10.72
27.43
41.64
14.21
7.38
10.23
2.85
15.46
24.15
8.69
Gemini 3 Pro
22.75
27.43
4.68
26.75
32.84
6.09
-
-
-
8.62
14.73
6.11
VIBEVOICE ASR
21.40
24.99
3.59
27.40
29.33
1.93
27.94
48.30
20.36
14.59
42.54
27.94
MOSS Transcribe Diarize 0.9B
14.84
15.83
0.99
24.86
22.17
-2.69
5.97
7.37
1.40
6.36
12.76
6.40
MOSS Transcribe Diarize Pro
13.78
14.02
0.24
18.22
13.94
-4.27
4.46
6.97
2.51
5.86
11.78
5.92
Quickstart
Environment Setup
Use a clean Python environment. The model uses custom Transformers code, so load the model and processor with trust_remote_code=True.
The GitHub package provides helper utilities such as audio/video loading, transcription message construction, transcript parsing, CLI inference, and the subtitle web app. The model weights and remote-code model files are loaded from this Hugging Face repository.
MOSS-Transcribe-Diarize supports vLLM serving through the OpenAI-compatible transcription API. Use a pinned vLLM nightly build that includes the MOSS-Transcribe-Diarize model registration. Choose one of the following commands: for CUDA 12 environments, use cu129; for CUDA 13 environments, use cu130.
The recommended way to serve MOSS-Transcribe-Diarize is SGLang Omni through the OpenAI-compatible /v1/audio/transcriptions endpoint. Install sglang-omni by following the installation guide, then download the model:
Max generated tokens; raise for long audio, for example 65536
prompt
string
unset
Optional instruction override; omit to use the built-in transcribe+diarize prompt
For benchmarking, performance numbers, and implementation details, see the SGLang Omni cookbook. The following single-H100 results are reported for short- and long-sequence multi-speaker ASR tasks.
movies short-sequence ASR:
Concurrency
Throughput (req/s)
Mean latency (s)
RTF mean
audio_s/s
1
2.57
0.388
0.0612
29.76
2
4.89
0.409
0.0659
56.55
4
6.62
0.513
0.0790
76.64
8
6.80
0.533
0.0810
78.70
16
7.08
0.659
0.0922
81.98
aishell4_long long-sequence ASR:
Concurrency
Throughput (req/s)
Mean latency (s)
RTF mean
audio_s/s
1
0.022
45.2
0.0197
50.64
2
0.032
60.7
0.0265
74.25
4
0.036
105.6
0.0461
81.64
8
0.040
172.6
0.0754
90.62
16
0.043
282.8
0.1237
98.83
Subtitle Web App
The source package includes a local subtitle workflow for upload, review, subtitle export, and optional FFmpeg burn-in:
Open http://127.0.0.1:7860, upload an audio/video file, review the parsed subtitle segments, then download JSON/SRT/ASS or burn an MP4 if ffmpeg and ffprobe are available on PATH.
[0.48][S01]Welcome everyone[1.66][12.26][S02]The new transcription pipeline is ready for evaluation[13.81][14.36][S01]Great, include the diarization results in the report[18.76]
In this format:
start_time and end_time are timestamps in seconds.
[S01], [S02], and similar labels are anonymous model-generated speaker labels.
Speaker labels are relative labels within the input audio and should not be interpreted as real speaker identities.