Sophea-Canary-ASR โ€” MLX (bf16)

Greek ๐Ÿ‡ฌ๐Ÿ‡ท / English ๐Ÿ‡ฌ๐Ÿ‡ง speech recognition & translation on Apple Silicon.

MLX conversion of KIEFERSA/Sophea-Canary-ASR โ€” a bilingual fine-tune of NVIDIA's canary-1b-v2 (978M params: FastConformer encoder + Transformer attention decoder). This repo runs natively on Apple Silicon via mlx-audio, no PyTorch or NeMo required.

Capabilities

Task source_lang โ†’ target_lang
Greek ASR el โ†’ el
English ASR en โ†’ en
Greek โ†’ English translation el โ†’ en
  • Weights: bfloat16, ~1.9 GB
  • Sample rate: 16 kHz mono (auto-resampled from any input)
  • Speed: faster than real-time on M-series (RTF โ‰ˆ 0.11, bf16)

Quickstart

pip install mlx-audio soundfile
import re
import mlx_audio.stt as stt

model = stt.load("KIEFERSA/Sophea-Canary-ASR-mlx")

# Greek orthography helper (see note below)
def denormalize_greek(text: str) -> str:
    return re.sub(r"ฯƒ\b", "ฯ‚", text)   # word-final ฯƒ -> ฯ‚

# Greek ASR
out = model.generate("audio.wav", source_lang="el", target_lang="el")
print(denormalize_greek(out.text))

# Greek โ†’ English translation
print(model.generate("audio.wav", source_lang="el", target_lang="en").text)

# English ASR
print(model.generate("audio.wav", source_lang="en", target_lang="en").text)

Greek final sigma

Canary's tokenizer represents final sigma as the medial form ฯƒ, so Greek output comes out as e.g. ฮตฯ€ฮฟฯ‡ฮฎฯƒ. Restore standard orthography with the one-line denormalize_greek helper above โ€” a deterministic, lossless rule, since in Greek ฯƒ never appears word-finally: ฮตฯ€ฮฟฯ‡ฮฎฯƒ โ†’ ฮตฯ€ฮฟฯ‡ฮฎฯ‚. Apply it to Greek (target_lang="el") output only; English and translation output need nothing.

Performance

Full FLEURS test set (Greek n=650, English n=647; greedy, bf16):

Language WER CER
Greek (el_gr) 9.4% 3.95%
English (en_us) 7.3% 3.60%

Greek WER measured after the word-final ฯƒโ†’ฯ‚ step above.

NeMo vs MLX

Full FLEURS test WER, NeMo (.nemo) checkpoint vs this MLX (bf16) build:

FLEURS test NeMo MLX (bf16)
Greek (el_gr) 12.69 9.4
English (en_us) 12.9 7.3

MLX figures measured over the full FLEURS test split (lowercase, punctuation-stripped).

Model details

Architecture FastConformer encoder (32 layers) + Transformer AED decoder (8 layers)
Parameters ~978M
Tokenizer Unified SentencePiece, 16,384 tokens
Base model nvidia/canary-1b-v2
Fine-tune KIEFERSA/Sophea-Canary-ASR
Runtime mlx-audio (Apple MLX)
Precision bfloat16

Also available

An int8-quantized variant (~1.1 GB, smaller & faster with a small accuracy trade-off) can be produced with mlx-audio's quantization, or loaded the same way.

License & credits

Released under CC-BY-4.0, inheriting the license of nvidia/canary-1b-v2. Fine-tune by KIEFERSA; MLX packaging for Apple Silicon via mlx-audio (Blaizzy).

@model{sophea_canary_asr_mlx,
  title  = {Sophea-Canary-ASR โ€” MLX},
  author = {KIEFERSA},
  note   = {MLX conversion of a Greek/English canary-1b-v2 fine-tune},
  year   = {2026}
}
Downloads last month
27
Safetensors
Model size
1.0B params
Tensor type
BF16
ยท
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for KIEFERSA/Sophea-Canary-ASR-mlx

Finetuned
(1)
this model

Dataset used to train KIEFERSA/Sophea-Canary-ASR-mlx

Evaluation results