| --- |
| license: apache-2.0 |
| base_model: OpenMOSS-Team/MOSS-Transcribe-preview-2B |
| tags: |
| - coreml |
| - asr |
| - speech-to-text |
| - audio |
| - moss |
| - fluidaudio |
| pipeline_tag: automatic-speech-recognition |
| --- |
| |
| # MOSS-Transcribe-preview-2B β CoreML bundle (experimental) |
|
|
| CoreML conversion of [`OpenMOSS-Team/MOSS-Transcribe-preview-2B`](https://huggingface.co/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](https://github.com/chikingsley/peacock-asr/tree/main/projects/moss-mlx-conversion) 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/MPSGraph `cpu-gpu` execution. 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 `.all` dispatch fails on ANE for the audio package β use `cpu-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`: |
|
|
| ```bash |
| 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. |
|
|