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.
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
| Models | OpenMOSS-Team/MOSS-Transcribe-Diarize (third-party Apache-2.0 model) |
|---|---|
| Hardware | nvidia-gpu / kubernetes |
| Operating systems | Linux |
| Interfaces | OpenAI-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
- Bind workers to a private network and put authentication, TLS, rate limits, and audio size/duration limits at the gateway
- Pin and audit the trust_remote_code model revision instead of executing a floating main revision
- Isolate model caches, upload directories, and generation logs; remove source audio according to retention policy
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