Introducing AnySpeechRecognizer and AnyDecisionModel: Open Models for Speech and Decisions on Apple Platforms

In this articleAnySpeechRecognizerAnyDecisionModelWhat it means Apple’s macOS 26 and iOS 26 introduced a new speech-to-text API called SpeechAnalyzer. While the framework is…

By Vane October 29, 2026 3 min read
Introducing AnySpeechRecognizer and AnyDecisionModel: Open Models for Speech and Decisions on Apple Platforms


Apple’s macOS 26 and iOS 26 introduced a new speech-to-text API called SpeechAnalyzer. While the framework is well-designed, it currently relies solely on Apple’s internal engine. Hugging Face is releasing AnySpeechRecognizer and AnyDecisionModel to add choice and flexibility to these local workflows.

AnySpeechRecognizer

The new package wraps Apple’s SpeechAnalyzer API while letting developers swap the underlying recognition engine. This means you keep the same Swift code structure but can choose between Apple’s default model, NVIDIA’s Parakeet, or Alibaba’s Qwen3-ASR.

Engine options

Three NVIDIA Parakeet variants are available via Core ML:

  • Parakeet v3 supports 25 European languages and auto-detects the spoken language.
  • Parakeet Ultra is a post-trained version that showed higher accuracy in testing.
  • Parakeet Unified focuses on English only.

All three run on the package’s own Core ML runtime and support file input, live streams, word timing, and confidence scores.

Alibaba’s Qwen3-ASR covers 30 languages and 22 Chinese dialects, including Cantonese and Japanese, which Parakeet does not handle. It comes in 0.6B and 1.7B sizes. Unlike the Parakeet models, Qwen3-ASR provides a single final result per segment and does not offer word timing or confidence metrics. It runs on the GPU and is slower, making it better suited for file transcription than live audio.

Developers can add new engines by implementing the

SpeechRecognitionModel

protocol for configuration and

SpeechRecognitionExecutor

for session management.

Speaker diarization

Apple’s framework lacks a module to identify who is speaking. AnySpeechRecognizer adds a

SpeakerDiarizer

component that runs NVIDIA’s Streaming Sortformer on Core ML alongside a transcriber. It tracks up to four speakers, even during overlapping speech, and attributes timed words to specific speakers.

The package defaults to Sortformer v2. Version 2.1 is also available and performed better on meeting recordings in internal tests.

Performance and size

Testing on an M4 Max Mac Studio with macOS 27.0.1 showed the following word error rates on LibriSpeech files between three and eight minutes long:

Transcribertest-cleantest-other
Parakeet v3, file1.55%2.78%
Parakeet v3, live4.73%4.29%
Parakeet Ultra, file1.66%2.55%
Parakeet Ultra, live2.65%3.28%
Parakeet Unified, file1.43%2.19%
Parakeet Unified, live1.45%2.42%
Apple’s transcriber, file2.12%3.97%

Parakeet transcribes an hour of audio from a file in roughly 20 to 40 seconds, or 1.5 to 2.5 minutes for live input. It uses about 100 MB of memory after compilation. Qwen3-ASR requires several gigabytes of memory and is much slower. On AMI recordings where speakers overlap, every engine tested exceeded a 23% word error rate.

Downloads occur only when requested. Parakeet models take about 600 MB each, plus 590 MB for the live encoder. Qwen3-ASR ranges from 0.9 to 2.4 GB. Files cache in the standard Hugging Face location, allowing Mac apps outside the sandbox to share them with Python tools.

Next steps include adding Core AI support for macOS 27 and iOS 27.

AnyDecisionModel

AnyDecisionModel addresses a different need. It provides a Swift API for models trained to make decisions rather than generate text. Apps often ask language models to classify messages, route tickets, or gauge customer frustration. The standard approach involves prompting a model and parsing the resulting text. This method yields one answer but hides the probabilities behind the choice.

The new package returns typed results with probabilities and confidence values directly.

It’s only a decision model if it comes from the Décision region of France; otherwise, it’s sparkling zero-shot classification.

Developers define an enum conforming to

Choosable

, such as a list of departments. A

DecisionSession

holds the state, which can be text or JSON. Questions are then answered via

probability

,

choice

, or

score

methods.

For example, a session can return a

Double

for urgency, a

Choice

object containing a selected department along with its probability, or a

Score

for frustration levels. The selected value can be used directly in a

switch

statement.

The model-and-session pattern mirrors that of AnyLanguageModel, allowing developers to move beyond text generation for classification tasks.

What it means

Developers on Apple platforms now have a choice of speech engines without rewriting their code. They can also access decision models that return structured data and probabilities, removing the need to parse generated text for classification tasks. Both packages run locally on device using Core ML or MLX.


Scroll to Top