MOSS Transcribe Diarize 0.9B
MOSS Transcribe Diarize 0.9B jointly generates transcript text, timestamps, and anonymous speaker labels. speech-swift now provides a native 128K MLX runtime for long recordings alongside the existing short-form CoreML backend.
The complete recording must be available before generation begins. No streaming checkpoint is published for this MOSS model, and it emits no partial transcript while recording.
At a Glance
| Model | MOSS Transcribe Diarize 0.9B |
|---|---|
| Role | Offline joint transcription and diarization with model-generated speaker labels and timestamps |
| Backends | MLX with 131,072 dynamic context tokens; CoreML with a fixed 1,024-token state |
| Output | Plain transcript plus timestamped speaker segments |
| Languages | Upstream claims 50+ languages; its model card does not publish an exhaustive list |
| License | Apache License 2.0 |
| Status | Available through speech transcribe --engine moss and the MossTranscribe Swift product |
| Source | OpenMOSS-Team/MOSS-Transcribe-Diarize |
| Swift product | MossTranscribe |
| CLI / runtime | speech transcribe --engine moss |
Use
CoreML INT8 remains the compatibility default. Select MLX for the upstream long-context behavior; INT5 is the MLX default.
# CoreML INT8: short-form default.
.build/release/speech transcribe recording.wav --engine moss
# MLX INT5: dynamic 128K context.
.build/release/speech transcribe meeting.wav --engine moss --backend mlx
# MLX INT8 quality reference, with an optional lower-memory KV cache.
.build/release/speech transcribe meeting.wav --engine moss --backend mlx --model int8 --kv-cache int8
Model Links
- MLX INT5 bundle
- MLX INT8 bundle
- CoreML INT8 bundle
- CoreML FP16 bundle
- speech-swift model docs
- speech-swift inference docs
- MLX INT5 / INT8 benchmark
- Technical report
How the 128K path works
The encoder still processes Whisper-sized 30-second chunks. The runtime concatenates every resulting audio embedding into one prompt before decoding, so speaker labels can use the complete recording context. Transcript tokens are then generated autoregressively; “single pass” does not mean simultaneous token generation.
INT5 vs INT8
| Variant | ASR WER / CER | ASR RTF | ASR peak RSS | Diarization DER / JER | Diarization RTF |
|---|---|---|---|---|---|
| MLX INT5 | 8.55% / 6.36% | 0.028 | 1,196 MiB | 28.05% / 26.56% | 0.065 |
| MLX INT8 | 8.27% / 5.98% | 0.032 | 1,407 MiB | 28.02% / 25.79% | 0.085 |
INT5 is the recommended MLX default: its two weight files total 987.0 MiB instead of 1,200.1 MiB, with a 0.28-point English WER cost and effectively equal DER on this five-file slice. The benchmark used identical FP16 audio weights, greedy decoding, and FP16 KV caches.
The ASR fixture is the first 80 English-US test clips from google/fleurs. The diarization files are from the CC-BY-4.0 VoxConverse test mirror; they are not the Community-1 development slice used by the separate CoreML benchmark.
Limits and memory
- Audio consumes 12.5 context tokens per second, so 90 minutes is about 67,500 audio tokens before instructions and transcript output.
- At that audio-token count, the analytical KV-cache estimate is 7.74 GB FP16 or 4.11 GB INT8, before weights and temporary tensors.
- INT8 cache preserved the exact structured short-fixture transcript. INT4 cache dropped timestamps and repeated a word on that quality gate, so it is not exposed.
- The upstream model claims 50+ languages and up to about 90 minutes. The matched speech-swift comparison currently covers English ASR and five English VoxConverse recordings.
- Speaker labels are anonymous within each file and are not persistent speaker identities.