Spokenly Cleanup 1: a small on-device model that cleans up dictated text

Docs โ€ข Spokenly app โ€ข Main page โ€ข GGUF version โ€ข License

Spokenly Cleanup 1

This repository has the Core ML version of Spokenly Cleanup 1, a small language model that cleans up dictated text on the device. Spokenly, a dictation app, runs it for Local Model Cleanup on the Mac. On Windows and Linux the app runs the GGUF version: spokenly/cleanup-1-gguf.

The model turns um so i think we should uh meet on friday at three pm into I think we should meet on Friday at 3 pm. More examples, the prompt format, the languages and the training data are on the main page.

Files

File Contents
CleanupNeuralEngine.mlmodelc The compiled Core ML model, 757 MB
CleanupMacOS15.mlmodelc The same model for macOS 15, 602 MB
tokenizer.json Base model tokenizer

Model details

Property Value
Base model Qwen3-0.6B-Base, 0.6 B parameters
Fine-tuning LoRA on all layers (rank 32), merged into the weights
Format Core ML ML Program for the Neural Engine. It has one function for each attention window: window512, window2048 and window4096. The key and value caches are a state that the model reads; each call returns the cache rows of its tokens, and the caller writes them into the state. The layer weights have 8 bits (linear quantization per output channel), the token table and the computation are Float16. In CleanupMacOS15.mlmodelc the token table has 8 bits too, and the computation is Float32
Context 4,096 tokens for the prompt and the answer together
Decoding Greedy
Speed About 210 tokens per second on an M4 Pro for short texts and 120 for texts of several hundred words. A dictation of one or two sentences takes 0.1 to 0.2 seconds
Memory About 0.6 GB while the model is loaded for short texts, up to 1 GB for the longest texts

Run the model on the Neural Engine (cpuAndNeuralEngine). The first load of a function compiles it for the Neural Engine, which takes about 8 seconds on an M4 Pro. macOS keeps the result, and later loads take about 0.2 seconds. On the CPU alone the model gives about 110 tokens per second.

Core ML on macOS 15 and Core ML 26.3 compute RMSNorm in Float16 as written. The squares of the largest activations overflow there: the export before 2026-10-26 gave no answer on macOS 15 and ! instead of the text with Core ML 26.3. Since then CleanupNeuralEngine.mlmodelc divides each row by its largest absolute value before the square, so no square is above 1, at the same speed on an M4 Pro. CleanupMacOS15.mlmodelc has the same layer weights and computes in Float32. Spokenly runs it on the CPU on macOS 15, only in the window512 function, at about 40 tokens per second on 8 CPU cores of an M4 Pro.

How to use

The model works inside Spokenly on a Mac with Apple silicon and macOS 15 or later. Open Settings > Local Model Cleanup and switch on Clean up text with local model. Spokenly downloads the model once. See the documentation.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for spokenly/cleanup-1-coreml

Quantized
(2)
this model