Deployment contract

MOSS unified transcription and diarization

Use FunASR AutoModel or an OpenAI-compatible service with the third-party Apache-2.0 model published by OpenMOSS to produce long-form transcripts, timestamps, and speaker labels in one pass.

Maturity
Community verified
FunASR
AutoModel adapter@a3a2de0a; third-party model@e8681d68
Runtime
Transformers 5.16.1 + vLLM 0.23.1rc1.dev949+g68b4a1d58 / Torch 2.11.0+cu129 / H100 80GB
Verified
2026-08-29

Workload boundary

Decide whether it fits your production constraints

Good fit

  • Multi-speaker meetings, interviews, podcasts, and calls
  • One model output for text, timestamps, and speaker identifiers
  • NVIDIA GPU deployments that need an OpenAI-compatible audio transcription endpoint

Not a fit

  • Realtime streaming captions or low-latency endpoint detection
  • CPU, desktop-edge, or native Windows deployments
  • Projects that require FunASR-owned model weights
ModelsOpenMOSS-Team/MOSS-Transcribe-Diarize (third-party Apache-2.0 model)
Hardwarenvidia-gpu / kubernetes
Operating systemsLinux
InterfacesOpenAI-compatible HTTP / vLLM / SGLang Omni / Transformers

Run path

From installation to known-audio verification

These commands come from the current verification registry. Pin dependencies, model, and hardware before rollout.

Install

uv venv --python 3.12 .venv-moss && uv pip install --python .venv-moss/bin/python -U 'vllm[audio]' --torch-backend=auto --extra-index-url https://wheels.vllm.ai/68b4a1d582818e67adc903bf1b8fc5a5447da2fa/cu129
HF_HUB_ENABLE_HF_TRANSFER=1 hf download OpenMOSS-Team/MOSS-Transcribe-Diarize --revision e8681d68e7042738ffca8ac8212bc8fcb1131ab8 --local-dir .models/moss-transcribe-diarize

Launch

CUDA_VISIBLE_DEVICES=0 .venv-moss/bin/vllm serve OpenMOSS-Team/MOSS-Transcribe-Diarize --revision e8681d68e7042738ffca8ac8212bc8fcb1131ab8 --served-model-name moss-transcribe-diarize --trust-remote-code --host 127.0.0.1 --port 8898

Health check

curl -fsS http://127.0.0.1:8898/health
curl -fsS http://127.0.0.1:8898/v1/models

Smoke test

Minimum verification before promotion

curl -fsS http://127.0.0.1:8898/v1/audio/transcriptions -F file=@runtime/llama.cpp/tests/sample.wav -F model=moss-transcribe-diarize -F response_format=json -F temperature=0 | tee /tmp/moss-transcription.json
python - <<'PY'
import json

with open('/tmp/moss-transcription.json', encoding='utf-8') as stream:
    payload = json.load(stream)
text = payload.get('text', '')
assert text.strip(), payload
assert '[S01]' in text, text
print(text)
PY
python - <<'PY'
from funasr import AutoModel

model = AutoModel(model='OpenMOSS-Team/MOSS-Transcribe-Diarize', backend='vllm', vllm_base_url='http://127.0.0.1:8898/v1', vllm_model='moss-transcribe-diarize', disable_update=True)
result = model.generate('runtime/llama.cpp/tests/sample.wav')[0]
assert result['raw_text'] and result['sentence_info'], result
print(result['text'])
print(result['sentence_info'])
PY

Operations and capacity

Move from runnable to operable

Operational checks

  • Pin the model revision, FunASR adapter merge, vLLM nightly commit, CUDA/Torch stack, and trust_remote_code audit
  • Validate speaker consistency, overlap, long silence, timestamps, and generation limits on real meetings
  • FunASR AutoModel preserves raw_text and normalizes text, timestamp, and sentence_info with spk; direct vLLM json still returns raw [Sxx]-tagged text

Capacity variables

  • Audio duration, language, channels, and VAD segment distribution
  • Concurrency, queue time, warmup, and model-cache state
  • Exact hardware, driver, runtime, and thread configuration

Troubleshooting

  • Use the cu129 nightly source for CUDA 12 and the upstream cu130 source for CUDA 13
  • If long audio is truncated, raise max_completion_tokens while monitoring memory, latency, and output completeness
  • A direct vLLM json response without segments is the current API boundary; normalize it with FunASR AutoModel or use and separately validate SGLang Omni verbose_json

Security boundary

Treat production ingress as untrusted

Known limitation

This is an OpenMOSS third-party model, not a FunASR model; no external VAD requirement does not imply an absence of internal segmentation. The vLLM path pins a nightly commit and must be revalidated on real long multi-speaker audio before upgrades.

Public benchmarks are reproduction starting points, not substitutes for target-workload testing.

Evidence and feedback

Verify this contract against primary material