CoolFace
Modelpublic

leope/ark-asr-0.6B-mlx

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes23downloads
Model Card

ARK-ASR-0.6B MLX

Native Apple MLX conversion of `Audio8/ARK-ASR-0.6B`, an automatic speech recognition model supporting 19 languages.

This repository includes the BF16 checkpoint, tokenizer and feature extractor, native MLX Python inference implementation, conversion code, tests, validation results, and licensing information. A separate native MLX Swift implementation is available for macOS apps. Neither runtime requires PyTorch for inference.

This is a community conversion. It is not affiliated with or endorsed by the original ARK-ASR authors or Apple.

Requirements

  • —A Mac with Apple silicon
  • —macOS with Metal support
  • —Conda
  • —Approximately 2.7 GB of available unified memory during inference
  • —Audio clips no longer than 30 seconds

The Python runtime currently performs single-clip greedy transcription. It is a custom MLX architecture and is not compatible with mlx-lm, mlx-audio, or Transformers AutoModel.

MLX Swift

The `Whisper` macOS implementation loads this checkpoint directly with MLX Swift 0.31.6 and Swift Transformers 1.3.3. It includes the Whisper-style audio encoder, adapter, Qwen2 decoder, grouped-query attention, KV caching, tokenizer handling, greedy generation, and native 16 kHz log-mel preprocessing.

The Swift port strictly loads all 780 tensors. On the same public LibriSpeech fixture used for Python validation, its prompt token IDs, generated token IDs, and final transcription match the Python implementation exactly; preprocessing maximum absolute error is at most 1e-4, and initial-logit cosine similarity is at least 0.9999.

The example app downloads this pinned model from Hugging Face, verifies its SHA-256 before use, chunks recordings longer than 30 seconds at quiet boundaries, and unloads the model after two idle minutes.

Installation

Download this repository with the Hugging Face CLI:

bash
hf download leope/ark-asr-0.6B-mlx --local-dir ark-asr-0.6B-mlx
cd ark-asr-0.6B-mlx
conda env create -f environment.yml
conda activate ark-asr-mlx

The Conda environment installs this repository as an editable Python package. Inference dependencies are pinned in pyproject.toml.

Transcription

bash
ark-asr-mlx transcribe /path/to/audio.wav --model .

To receive structured output:

bash
ark-asr-mlx transcribe /path/to/audio.wav --model . --json

Python usage:

python
from ark_asr_mlx import ArkASR

asr = ArkASR.from_pretrained(".")
result = asr.transcribe("/path/to/audio.wav")
print(result.text)

Audio is converted to mono and resampled to 16 kHz. Files longer than 30 seconds are rejected instead of silently truncated.

MLX

  • —all 780 retained tensors load as native mlx.core.array values;
  • —weights are stored as BF16;
  • —Conv1d tensors were transposed from PyTorch [out, in, kernel] layout to MLX [out, kernel, in] layout;
  • —the tied lm_head.weight and unused learned Whisper position embedding were intentionally omitted;
  • —inference runs through Metal on Apple silicon without importing PyTorch.

Inspect the checkpoint directly:

bash
python - <<'PY'
import mlx.core as mx

weights = mx.load("model.safetensors")
conv = weights["audio_encoder.whisper.conv1.weight"]
print(type(conv))       # <class 'mlx.core.array'>
print(conv.dtype)       # mlx.core.bfloat16
print(conv.shape)       # (1280, 3, 128), native MLX Conv1d layout
print(len(weights))     # 780
print(mx.metal.is_available())
PY

The complete provenance and checksums are recorded in conversion.json.

Conversion provenance

FieldValue
SourceAudio8/ARK-ASR-0.6B
Source revision45776b56d58cdfb2e2eb632f7e110f38684633e0
FormatNative MLX Safetensors
PrecisionBF16
Parameter tensors780
Checkpoint size2.1 GiB
Source SHA-25657a86ce1c2f2c2d6ebb7ad9642c9e951a5109625122b48c9180126a28787673d
Output SHA-2564f17d6fda7be51e489c1819c266ed946b2d3982368f0a231ceb0c1f211a3e56c

To reproduce the conversion from the pinned upstream revision:

bash
pip install -e '.[dev]'
ark-asr-mlx convert --output ./converted-model

PyTorch is only included in the dev extra because it is needed to load and validate the upstream checkpoint, not to run the converted MLX model.

Run the included unit tests and lint checks with:

bash
pytest
ruff check .

PyTorch parity

The pinned original model and this MLX implementation were evaluated on the same public 12.1-second LibriSpeech sample:

CheckResult
Prompt token IDsIdentical
BF16 input features, max absolute difference0.0
Adapted audio feature cosine similarity0.9998097773
Initial decoder logits cosine similarity0.9999750792
Greedy output token IDsIdentical
Final transcriptionIdentical

See `VALIDATION.md` for the full transcription and benchmark conditions.

Reference benchmark

Measured on an Apple M5 Pro with 24 GB unified memory, macOS 26.6, Python 3.12.13, and MLX 0.32.0:

MeasurementResult
Model load0.362 s
Audio preprocessing0.396 s
First token0.110 s
38-token generation0.384 s
Generation throughput98.94 tokens/s
MLX peak memory2.620 GB

These figures describe one machine and one sample; they are not performance guarantees.

Supported languages

Chinese, English, German, Japanese, French, Korean, Spanish, Polish, Italian, Romanian, Hungarian, Czech, Dutch, Finnish, Croatian, Slovak, Slovene, Estonian, and Lithuanian.

Model details and limitations

The base model combines a Whisper-style RoPE audio encoder, an MLP adapter, and a Qwen2 decoder. It was trained by the original authors using teacher-data adaptation and on-policy distillation.

The quality characteristics and limitations of the original checkpoint remain applicable. Transcriptions may contain errors, especially for noisy audio, unseen accents, domain-specific terminology, overlapping speakers, or underrepresented languages. Do not use transcripts as the sole basis for high-impact decisions. Users are responsible for obtaining permission to process recordings and complying with applicable privacy law.

Original model card, evaluation results, and training information: `Audio8/ARK-ASR-0.6B`.

License and attribution

The converted weights and MLX implementation are distributed under the Apache License 2.0. See LICENSE and NOTICE. ARK-ASR attribution and upstream links are retained. The checkpoint was converted without retraining.

Citation

If you use the model, cite the original ARK-ASR work:

bibtex
@misc{lin2026dataefficientopd,
  title={Data-Efficient On-Policy Distillation for Automatic Speech Recognition},
  author={Lin, Yu and Wang, Yiming and Cai, Runyuan and Zeng, Xiaodong},
  year={2026},
  eprint={2605.28139},
  archivePrefix={arXiv},
  primaryClass={cs.AI},
  url={https://arxiv.org/abs/2605.28139}
}