Model · ASR post-processing
Gemma 3 270M ASR Paragraph Breaks: paragraphs for dictated text
Adds paragraph breaks to flat speech-to-text output and changes nothing else. Small enough to run on a phone after the speech model.
About the model
Speech recognition, such as a Parakeet fine-tune, returns punctuated, cased text as one block. This model returns the same text with paragraphs separated by blank lines. It is a full fine-tune of Gemma 3 270M, the smallest Gemma, so it can run on-device after the ASR pass.
It must not change a word. Because it is generative it retypes the whole text, so every call is checked: if anything other than whitespace changed, the input is used instead. On the test set that fallback fired on 2 of 26 memos.
The paragraphing style is mine: short paragraphs, with the opening line and each sign-off line on their own.
Which file should I download?
safetensors (Transformers) 536 MB
Python on CPU or GPU, at full precision. Use the prompt and fallback check from the model card.
Run with Hugging Face Transformers Download safetensors (Transformers) →ONNX fp32 1.66 GB
ONNX Runtime, on the same runtime as an ONNX speech model. Matched the PyTorch output on 6 of 6 test memos.
Run with ONNX Runtime / Optimum Download ONNX fp32 →ONNX int8 417 MB
Experimental: about twice as fast on CPU, but matched PyTorch on only 2 of 6 memos and changed the text in one.
Run with ONNX Runtime / Optimum Download ONNX int8 →Results
r2, run asr-paragraph-r2-gemma270m, evaluated 20 October 2026. Scored on 26 held-out synthetic voice memos whose paragraph breaks were reviewed by hand, as break-position precision and recall. Higher is better. A fallback is an output that changed a non-whitespace character, so the input is returned unchanged.
| Test set | Untrained Gemma 3 270M | Fine-tune r2 |
|---|---|---|
| Break precision | 0.00 | 0.84 |
| Break recall | 0.00 | 0.72 |
| F1 | 0.00 | 0.78 |
| Fallbacks (fewer is better) | 26 of 26 | 2 of 26 |
- A longer run (r3: 804 pairs, 6 epochs) scored the same F1 with 1 fallback and was not published.
- The rule-based labeller that made most of the training data starts from an already-paragraphed draft, so it is a ceiling in the chart, not a like-for-like baseline.

Training
- Full fine-tune of google/gemma-3-270m-it with TRL SFT on prompt/completion pairs (completion-only loss): 505 training pairs, 3 epochs, learning rate 5e-05, bf16, one NVIDIA L4 on Modal.
- Synthetic voice-memo transcripts written by Claude Haiku 5.5. A minority were paragraphed by hand; the rest were labelled by rules derived from those hand edits.
Training data
Checkpoints and roadmap
Where the model is now and the checkpoints still to come. Planned stages are the current plan, not promises.
- r2 Done 20 October 2026
First release: 505 pairs, 3 epochs. F1 0.78.
- ONNX export Done 20 October 2026
fp32 and int8 for ONNX Runtime, checked against the PyTorch model.
Limitations
- English only, and trained on synthetic memos rather than real ASR output.
- Memos longer than about 700 words were not in training: split longer transcripts first.
- It retypes the whole text, so keep the fallback check. Generation on a CPU is slow for long memos.