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.
These commands come from the current verification registry. Pin dependencies, model, and hardware before rollout.
FunASR OpenAI-compatible service
Load the pinned HF backend directly with funasr-server and return verbose_json with anonymous speaker labels; dedicated Docker Compose and Kubernetes GPU recipes are included.
python - <<'PY'
import json
with open('/tmp/moss-transcription.json', encoding='utf-8') as stream:
payload = json.load(stream)
text = payload.get('text', '')
segments = payload.get('segments', [])
assert text.strip() and segments, payload
assert all(isinstance(item.get('speaker'), str) and item.get('text') and item.get('start') <= item.get('end') for item in segments), payload
print(text, sorted({item['speaker'] for item in segments}))
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', vllm_response_format='diarized_json', 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
SGLang Omni + FunASR AutoModel
Use the merged native MOSS pipeline and OpenAI-compatible verbose_json endpoint, then validate [Sxx] prefixes and normalize them into sentence_info through FunASR AutoModel.
python - <<'PY'
import json
import re
with open('/tmp/moss-sglang-transcription.json', encoding='utf-8') as stream:
payload = json.load(stream)
segments = payload.get('segments', [])
assert payload.get('text', '').strip() and segments, payload
assert all(item.get('start') <= item.get('end') and re.match(r'^\[S\d{2,}\]', item.get('text', '')) for item in segments), payload
print(payload['text'])
print([(item['start'], item['end'], item['text'][:5]) for item in segments])
PY
python - <<'PY'
from funasr import AutoModel
model = AutoModel(model='OpenMOSS-Team/MOSS-Transcribe-Diarize', backend='sglang', sglang_base_url='http://127.0.0.1:8898/v1', sglang_model='OpenMOSS-Team/MOSS-Transcribe-Diarize', max_new_tokens=65536, disable_update=True)
result = model.generate('moss-sample.wav', max_new_tokens=65536)[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 0.27.1, SGLang Omni 3f819f9c, CUDA/Torch stack, and trust_remote_code audit
Validate speaker consistency, overlap, long silence, timestamps, and generation limits on real meetings
The 1088-clip SGLang Omni #914 single-speaker English benchmark does not cover diarization or timestamp accuracy; validate both independently before production
For LocalAI, pin the third-party C++ backend and GGUF revision, then validate CPU/GPU backends, quantization accuracy, and the OpenAI response independently
FunASR AutoModel maps both vLLM diarized_json and SGLang Omni verbose_json into text, timestamp, and sentence_info with spk; SGLang segments must be backed by raw_text so an upstream synthesized S01 fallback is not accepted
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
For CUDA 12, use the SHA256-verified vLLM 0.27.1 cu129 wheel; the SGLang Omni path currently pins its CUDA 13 installation contract and 3f819f9c
If long audio is truncated, raise max_completion_tokens for vLLM or max_new_tokens for SGLang Omni while monitoring memory, latency, and output completeness
vLLM diarized_json returns a separate speaker field; SGLang Omni verbose_json currently keeps the speaker identifier in the [Sxx] prefix of segments[].text
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 0.27.1 and the SGLang Omni path pins 3f819f9c; revalidate real long multi-speaker audio before upgrades. SGLang Omni verbose_json keeps the speaker identifier in the [Sxx] prefix of segments[].text, which the FunASR adapter parses only after validating that the segment is backed by raw_text. LocalAI / moss-transcribe.cpp is another independent third-party reimplementation.
Public benchmarks are reproduction starting points, not substitutes for target-workload testing.