Two new Swift packages let Mac and iPhone apps run open speech and decision models on the device. AnySpeechRecognizer mirrors Apple's speech API and lets an app swap in other transcription engines, including NVIDIA's Parakeet and Alibaba's Qwen3-ASR. AnyDecisionModel answers yes-or-no, multiple-choice and rating questions with probabilities instead of generated text. Both were announced on the Hugging Face blog on October 29, 2026, in a post by the developer Mattt. Both packages live on his own GitHub account, not under the Hugging Face organization.
The release matters for developers who want speech and decision features to run on Apple devices. It also makes a point the post states directly: language models are only a small part of what machine learning can do, and for jobs such as speech recognition and decisions there are models built for each that are better, faster and less expensive.
What AnySpeechRecognizer does
macOS 26 and iOS 26 introduced SpeechAnalyzer, Apple's speech-to-text API. The post calls it well designed, but the only engine behind it is Apple's. AnySpeechRecognizer mirrors that API, with Apple's Speech framework as the default engine. If an app already uses the shared API, changing the import line is enough. To use another engine, the developer changes only how the transcriber is created.
The supported open models are:
- Parakeet v3, NVIDIA's Parakeet TDT 0.6B v3. It recognizes 25 European languages and detects which one it hears.
- Parakeet Ultra, a post-trained version of v3 from Moondream. The post says it was more accurate in most of the author's measurements.
- Parakeet Unified, NVIDIA's English-only Parakeet.
- Qwen3-ASR from Alibaba, in 0.6B and 1.7B sizes. It recognizes 30 languages and 22 Chinese dialects, including Mandarin, Cantonese, Japanese and Korean, which Parakeet does not cover.
The author converted each model to Core ML, Apple's on-device model format, and published the conversions under his own account on the Hugging Face Hub. Each conversion carries the license of its original checkpoint. The Qwen3-ASR conversions are Apache 2.0, most Parakeet and Sortformer conversions are CC BY 4.0, and Parakeet Unified and Sortformer v2.1 use the NVIDIA Open Model License. Downloads happen only when an app asks: about 600 MB for each Parakeet, about 590 MB more for a live-input encoder, 0.9 to 2.4 GB for Qwen3-ASR, and about 250 MB for the diarization model.

Who said what
Apple's Speech framework has no module for speaker diarization, the job of labeling who speaks when. AnySpeechRecognizer adds one. It runs NVIDIA's Streaming Sortformer on Core ML next to an Apple or Parakeet transcriber. It tracks up to four speakers, even when they talk over each other. A separate SpeakerTimeline type then attributes each timed word to a speaker.
NVIDIA's newer open speech model also labels speakers; see our report on Nemotron 3.5 Transcribe.
How accurate it is
The author measured word error rates with the package's hear command-line tool on LibriSpeech files of 3 to 8 minutes, on an M4 Max Mac Studio running macOS 27.0.1. Lower is better. On the cleaner test set:
- Parakeet Unified from a file: 1.43%
- Parakeet v3 from a file: 1.55%
- Parakeet Ultra from a file: 1.66%
- Apple's own transcriber from a file: 2.12%

Parakeet transcribes an hour of audio in about 20 to 40 seconds from a file, or about 1.5 to 2.5 minutes live, using about 100 MB of memory once Core ML has compiled the model. Qwen3-ASR is much slower and needs a few gigabytes of memory. The post says it runs on the GPU and is slower than Parakeet, so it is better suited to files than to live input.
The post adds two caveats. Meetings are hard for every engine: on AMI meeting recordings, every engine tested had a word error rate above 23%. And the package has so far been tested only on macOS 27, not on an iPhone.
What AnyDecisionModel does
Apps often ask a language model to make a decision. Is this message urgent? Which team should handle this ticket? The usual method is to prompt the model and parse the text it writes. That gives one answer, but it hides how likely the model thought the other answers were.
AnyDecisionModel reads the decision from the model's probabilities instead. A developer asks a typed question about a piece of text or JSON, and gets back the chosen answer, a probability for each option and a confidence value. With the MLX backend, the package gives each allowed answer a one-token label and reads the probability of each label from one forward pass.
For a hosted model built only for this job, see our explainer on Articul8's Bivia decision model.
It has six backends: MLX on Apple silicon, MLX with a trained decision head, Core AI on macOS 27 and iOS 27, llama.cpp with a local GGUF file, TypeSafe's hosted Jev, and Ollama.
The decision-head backend runs Cloudflare's Clef-Flash, a 9B multimodal model that turns a state and a schema of typed questions into decisions. Clef can read images and video, but this backend accepts only text and JSON states. Its 4-bit MLX build is a 6.2 GB download, and its model card recommends a Mac with at least 16 GB of memory.
The demo app, Emoji Magnet, shows the idea. You type a phrase such as "things you wear," and matching emoji rise out of a pile of 343. The app has no keyword rules. Without a TypeSafe API key, it runs Qwen3 4B locally with MLX and answers 16 yes-or-no questions per forward pass, and a full pass over all 343 emoji takes about 10 seconds on an M4 Max.
The post also lists limits. Raw probabilities from language models are often overconfident, so the local backends support calibration. Models can favor an option because of its place in a list, so the MLX, Core AI and llama.cpp backends have an option to ask a choice question once for each rotation of the options and average the results. The confidence value measures how concentrated the probabilities are, not whether the answer is right.
Why it matters
The release targets two jobs that many apps need: turning speech into text, and sorting inputs into fixed categories. For both, the post argues that models built for each job are better, faster and less expensive than a general language model.
For developers on Apple platforms, the practical gain is choice without a rewrite. Code written for Apple's speech API can switch to Parakeet or Qwen3-ASR by changing one import and one constructor. AnySpeechRecognizer stores models in the standard Hugging Face cache, so a Mac app outside the sandbox can share them with Python and other Hugging Face tools.
For ready-made transcription apps and APIs, see our comparison of AI transcription tools.
Both packages need Swift 6.2 or later and macOS 26 or iOS 26 or later. The Parakeet and Sortformer runtimes and the MLX backend need Apple silicon. AnyDecisionModel's core library and its Jev and Ollama backends also build on Linux. Both packages are released under the Apache 2.0 license. The post asks developers to report what works and what does not on the GitHub repositories.
Sources
- Introducing AnySpeechRecognizer and AnyDecisionModel (Hugging Face blog)
- AnySpeechRecognizer on GitHub
- AnySpeechRecognizer LICENSE (Apache 2.0)
- AnyDecisionModel on GitHub
- AnyDecisionModel LICENSE (Apache 2.0)
- NVIDIA Parakeet TDT 0.6B v3 model card
- Qwen3-ASR 1.7B model card
- Cloudflare Clef-Flash model card
- Clef-Flash 4-bit MLX model card
