MOSS-Transcribe-preview-2B β CoreML bundle (experimental)
CoreML conversion of OpenMOSS-Team/MOSS-Transcribe-preview-2B, an English speech-to-text model pairing a Qwen3-1.7B-base decoder with a Qwen3-Omni-MoE audio encoder and a gated-MLP adapter (~2.4B parameters, Apache-2.0 upstream).
Produced by the peacock-asr moss-mlx-conversion project as compiled .mlmodelc components, packaged as a FluidAudio-style model bundle.
Experimental β read before use. This is a correctness-validated research bundle, not a production FluidAudio backend. It is single-window (30-second padded static audio input), decode is autoregressive with explicit KV-cache tensors moved through CoreML every token, and it is far slower than FluidAudio Parakeet-class ASR. Only 20 LibriSpeech clean-test rows were validated through the FluidAudio-shaped runtime. No production parity is claimed.
Contents
| Path | Component | Size |
|---|---|---|
compiled/moss_token_embedding.mlmodelc |
Token embedding | 594 MB |
compiled_audio_30s/moss_audio_encoder_adapter_30s_padded.mlmodelc |
Audio encoder + adapter, padded 30 s mel input [128, 3000] with masked invalid audio tokens |
1.4 GB |
compiled_prefill_cache_512/moss_decoder_prefill_cache_512.mlmodelc |
Full decoder prefill, 512-token padded cache | 3.3 GB |
compiled_step_padded/moss_decoder_step_padded_fixture.mlmodelc |
Padded external-cache decoder step (768-slot cache) | 3.3 GB |
compiled_step_padded_512/moss_decoder_step_padded_512.mlmodelc |
Padded external-cache decoder step (512-slot cache) | 3.3 GB |
compiled_prefill_cache_768/ |
Matched 768-token prefill β experimental, crashes in CoreML/MPSGraph cpu-gpu execution | 3.3 GB |
moss_bundle_manifest.json |
Bundle metadata: package paths, tokenizer/runtime paths, cache presets | β |
moss_runtime_manifest.json |
Prompt template and model constants | β |
moss_tokenizer.json |
Qwen ByteLevel tokenizer | β |
Cache presets (from moss_bundle_manifest.json)
short-512: 512-prefill + 512-cache step. Validated on the 20-row short gate.compat-768(default): 512-prefill + 768-cache step. Validated on the 20-row compat gate.matched-768: experimental; Torch-validates but fails in CoreML/MPSGraphcpu-gpuexecution. Do not use.
Validation
- 20-row LibriSpeech clean-test gate through the FluidAudio-shaped Swift runtime: WER 0.0158, CER 0.00418, 0.69β0.77 RTFx (single row: WER/CER 0.0 on
6930-75918-0001). - All exported packages were validated against PyTorch fixture tensors and compiled with
xcrun coremlcompiler. - The padded 30 s audio package matches fixture generated IDs exactly under
--compute-units cpu-gpu; default.alldispatch fails on ANE for the audio package β usecpu-gpu.
Known limitations
- Single-window only: capped by the 30-second static audio package; no long-audio chunking/stitching.
- English-only ASR (upstream limitation).
- Prompt length + decode budget must fit the selected cache bucket or the run fails.
- ~0.7 RTFx at best β usable for evaluation and teacher/reference work, not for production transcription.
Usage
These compiled packages are consumed by a Swift/CoreML runtime (see the conversion project's swift/ runner and the private FluidAudio scaffold patch). A runner must load the .mlmodelc bundles with MLModel, drive prefill and the padded decoder step with explicit KV-cache arrays, and apply the prompt template from moss_runtime_manifest.json:
fluidaudiocli moss-benchmark --model-dir <this-bundle> --cache-preset short-512 ...
License
Apache-2.0, matching the upstream model. Please cite the upstream model (OpenMOSS Team, 2025) when using these weights.
Model tree for Peacockery/MOSS-Transcribe-preview-2B-CoreML
Base model
OpenMOSS-Team/MOSS-Transcribe-preview-2B