Instructions to use leope/ark-asr-0.6B-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use leope/ark-asr-0.6B-mlx with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir ark-asr-0.6B-mlx leope/ark-asr-0.6B-mlx
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
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:
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
ark-asr-mlx transcribe /path/to/audio.wav --model .
To receive structured output:
ark-asr-mlx transcribe /path/to/audio.wav --model . --json
Python usage:
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.arrayvalues; - 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.weightand unused learned Whisper position embedding were intentionally omitted; - inference runs through Metal on Apple silicon without importing PyTorch.
Inspect the checkpoint directly:
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
| Field | Value |
|---|---|
| Source | Audio8/ARK-ASR-0.6B |
| Source revision | 45776b56d58cdfb2e2eb632f7e110f38684633e0 |
| Format | Native MLX Safetensors |
| Precision | BF16 |
| Parameter tensors | 780 |
| Checkpoint size | 2.1 GiB |
| Source SHA-256 | 57a86ce1c2f2c2d6ebb7ad9642c9e951a5109625122b48c9180126a28787673d |
| Output SHA-256 | 4f17d6fda7be51e489c1819c266ed946b2d3982368f0a231ceb0c1f211a3e56c |
To reproduce the conversion from the pinned upstream revision:
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:
pytest
ruff check .
PyTorch parity
The pinned original model and this MLX implementation were evaluated on the same public 12.1-second LibriSpeech sample:
| Check | Result |
|---|---|
| Prompt token IDs | Identical |
| BF16 input features, max absolute difference | 0.0 |
| Adapted audio feature cosine similarity | 0.9998097773 |
| Initial decoder logits cosine similarity | 0.9999750792 |
| Greedy output token IDs | Identical |
| Final transcription | Identical |
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:
| Measurement | Result |
|---|---|
| Model load | 0.362 s |
| Audio preprocessing | 0.396 s |
| First token | 0.110 s |
| 38-token generation | 0.384 s |
| Generation throughput | 98.94 tokens/s |
| MLX peak memory | 2.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:
@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}
}
- Downloads last month
- 310
Quantized
Model tree for leope/ark-asr-0.6B-mlx
Base model
Audio8/ARK-ASR-0.6B