Skip to main content

GigaAM-Multilingual MLX

English · Русский

Fast, offline speech-to-text for Russian, Kazakh, Kyrgyz, and Uzbek on Apple Silicon. This is an independent native MLX port of GigaAM, based on the official GigaAM-Multilingual model.

PyPI · Hugging Face models · Latest release · Full benchmark

GigaAM MLX, Whisper, and Parakeet model decision matrix

The chart compares WER, five-minute transcription time, peak process memory, and model size. Filled pills mark column leaders, outlined pills mark runners-up, ◇ marks the Pareto frontier, and ★ the recommended default. Lower is better.

Quick start

Requires an Apple Silicon Mac, macOS 14+, Python 3.12 or 3.13, uv, and ffmpeg.

brew install uv ffmpeg
uv tool install gigaam-multilingual-mlx
gigaam-stt meeting.m4a --output transcript.txt

For a uv-managed Python project:

uv add gigaam-multilingual-mlx

pip install gigaam-multilingual-mlx and the long gigaam-multilingual-mlx transcribe ... command remain supported.

Local transcription server

Use GigaAM MLX with applications that support the OpenAI transcription API:

uv tool install 'gigaam-multilingual-mlx[server]'
gigaam-stt serve

The server is now available at http://127.0.0.1:8000/v1:

curl http://127.0.0.1:8000/v1/audio/transcriptions \
  -F model=whisper-1 \
  -F file=@meeting.m4a

The same endpoint works with the OpenAI Python client (uv add openai):

from pathlib import Path
from openai import OpenAI

client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="local")
with Path("meeting.m4a").open("rb") as audio:
    result = client.audio.transcriptions.create(model="whisper-1", file=audio)
print(result.text)

whisper-1 is a compatibility alias; the server still runs GigaAM Multilingual MLX. It is local-only by default. See the server guide for formats, model IDs, network access, configuration, and troubleshooting.

Why this port?

  • Native MLX inference without PyTorch, ONNX Runtime, Core ML, or a cloud API.
  • Strong measured quality for the four core GigaAM languages, especially Kazakh, Kyrgyz, and Uzbek.
  • A 699 MB default model that used 0.877 GB peak process memory in the published five-minute benchmark.
  • Local WAV, FLAC, MP3, M4A, and video transcription to TXT, JSON, SRT, or VTT.

On the tested Russian five-minute input, INT8 was 3.30× faster than Whisper v3 Turbo, 7.02× faster than Whisper large-v2, and 8.94× faster than Whisper large-v3. Whisper and Parakeet were better on the English appendix. These are single-machine public-corpus results, not a universal ASR leaderboard; see the full report for confidence intervals, commands, hashes, and limitations.

Model variants

Variant Recommended use Model size Peak RAM Hugging Face
INT8 g64 default balance 699 MB 0.88 GB ai-babai/...-int8-g64
FP16 fastest measured, reference port 1.17 GB 1.35 GB ai-babai/gigaam-multilingual-mlx
INT6 g64 smaller, near-INT8 quality 573 MB 0.76 GB ai-babai/...-int6-g64
INT4 g64 minimum memory and disk 447 MB 0.63 GB ai-babai/...-int4-g64

Choose a variant without remembering its repository name:

gigaam-stt speech.wav --variant fp16
gigaam-stt speech.wav --variant int6 --format json
gigaam-stt models

The runtime downloads immutable model revision v0.1.0 on first use and then reuses the standard Hugging Face cache.

Common commands

# Subtitles
gigaam-stt interview.mp3 --format srt --output interview.srt

# Output directory; creates transcripts/recording.vtt
gigaam-stt recording.mov --format vtt --output-dir transcripts/

# Machine-readable text, timestamps, revision, and metrics
gigaam-stt sample.flac --format json --output sample.json

# Reuse a downloaded snapshot without network access
gigaam-stt audio.wav --offline

# Move the Hugging Face cache
gigaam-stt audio.wav --cache-dir /Volumes/ML/huggingface

Long inputs are processed in deterministic overlapping chunks. CTC word timestamps are approximate emission times, suitable for navigation and subtitles but not forced alignment.

Python API

import mlx.core as mx
from gigaam_multilingual_mlx import load_model

model = load_model(variant="int8")
audio = mx.zeros((1, 16_000), dtype=mx.float32)
log_probs, lengths = model(audio)
text = model.greedy_decode(log_probs, lengths)[0]["text"]

Local portable model directories are also supported: load_model("/path/to/model").

Compatibility and limitations

  • Supported: Apple Silicon, native ARM Python, macOS 14+.
  • M1–M5 are expected to be runtime-compatible; published performance numbers come from one 14-inch MacBook Pro with Apple M4 Pro and 48 GB memory.
  • Not supported: Intel Mac, Linux, Windows, or iOS.
  • This release uses greedy CTC decoding. It does not provide diarization, training, microphone streaming, or realtime HTTP/WebSocket streaming.
  • Accuracy can degrade with noise, far-field speech, overlapping speakers, code-switching, or domains unlike the public evaluation data.

Reproducibility and development

The repository contains pinned public FLEURS manifests, compact benchmark results, and commands for GigaAM, MLX Whisper, and MLX Parakeet. No private audio, model weights, datasets, caches, or raw large benchmark outputs are stored in Git.

Developer-only conversion and evaluation tools use optional dependencies:

python -m pip install 'gigaam-multilingual-mlx[convert,quality]'
python -m gigaam_multilingual_mlx.dev_cli --help

Start with benchmarks/multilingual-v1/README.md for the protocol and docs/benchmark-multilingual-v1.md for the results.

Key numbers in text

This compact table is the text alternative to the GigaAM part of the image. Core macro WER averages Russian, Kazakh, Kyrgyz, and Uzbek; lower is better.

GigaAM MLX variant Core macro WER 5-min WAV Peak RAM Model size
FP16 5.066% 1.952s 1.350 GB 1.171 GB
INT8 g64 (default) 5.070% 2.036s 0.877 GB 0.699 GB
INT6 g64 5.069% 2.195s 0.755 GB 0.573 GB
INT4 g64 5.219% 2.563s 0.626 GB 0.447 GB

License and attribution

The MLX port is MIT-licensed. Upstream and dataset provenance is recorded in THIRD_PARTY_NOTICES.md. Please cite the original GigaAM-Multilingual work from the upstream model card and this project using CITATION.cff.

This project is not an official release of the GigaAM authors. Security reports and contributions are covered by SECURITY.md and CONTRIBUTING.md.

Metadata

Release files for gigaam-multilingual-mlx 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gigaam-multilingual-mlx 0.2.0
File Size Uploaded Provenance Actions
gigaam_multilingual_mlx-0.2.0.tar.gz 1.6 MB With provenance Details for gigaam_multilingual_mlx-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gigaam-multilingual-mlx 0.2.0
File Interpreter ABI Platform Actions
gigaam_multilingual_mlx-0.2.0-py3-none-any.whl Python 3 none any Details for gigaam_multilingual_mlx-0.2.0-py3-none-any.whl

Total release size: 1.7 MB

Release files / gigaam_multilingual_mlx-0.2.0.tar.gz

Download URL gigaam_multilingual_mlx-0.2.0.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
e77dbdcec4ae17e2ffe23af4b1e30ca2162189e996e959fd4d93a67de93b9270
BLAKE2b-256 checksum
How to use checksums
76832ea6b5fe9efcd55bd05b729a3e0e5c2588215e006e8d4f0a44c60d523d6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

Release files / gigaam_multilingual_mlx-0.2.0-py3-none-any.whl

Download URL gigaam_multilingual_mlx-0.2.0-py3-none-any.whl
Size 51.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fe7cf6ab28148d0843f6d179228bdaa0aa927b6d6d1d16509f395e14a164172
BLAKE2b-256 checksum
How to use checksums
d6cb1308f14ab1f37eccbf0daf60c0cc539e324a5e26fc133ecfb75e3761aac2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

Security for gigaam-multilingual-mlx 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gigaam_multilingual_mlx-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page