uttrflow / uttrflow/uttrflow-swift

Skipping the on-device model's tidy for longer dictations would halve the wait, but needs real recordings to judge

Open
#480 0 comments 0 reactions 0 assignees View on GitHub
area:dictation enhancement help wanted needs-info P2 performance
Dominant language
Swift
Stars
4
Forks
17
Avg merge
3h 32m
Merged PRs (30d)
277

Description

## What happens

For a longer dictation, most of the one-shot wait is the tidy by Apple's on-device model, after recognition. On 120 synthetic English clips, the tidied result was identical to the rules-only result on 117 of them (`Docs/performance.md`, "Measured and not taken", around line 1288), so skipping the model past some length would roughly halve the wait.

It was not taken, because synthetic speech has none of the pauses, fillers, restarts and slips of real speech, which are exactly what the model is there to clean. Equal results on synthetic clips are not evidence about real dictation.

## Why it matters

A halved wait on long dictations is one of the largest latency wins available. Getting it wrong would make long dictations noticeably messier for everyone.

## What is needed

- A corpus of real recorded dictations of varying length, recorded with consent and containing no personal content (`uttrflow-eval record-corpus` exists for this), including natural fillers and self-corrections.
- A comparison of rules-only and model-tidied output against reference text, by length.

## Acceptance criteria

- Results by dictation length are recorded in `Docs/performance.md`.
- A decision is written down: a length threshold (or none), and what "identical enough" means.
- If adopted, the threshold is a named constant with tests on both sides of it.

`help wanted` for recordings; `needs-info` for the threshold decision.

Contributor guide

Open the contributing guide

Research direction

Start with the measured results around line 1288 of Docs/performance.md and review the uttrflow-eval record-corpus workflow. Collect consented, non-personal real dictations of varying lengths, compare rules-only and model-tidied output against reference text, and record results by length. Document the threshold decision and definition of “identical enough”; if adopted, add tests on both sides of the named threshold constant.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, swift
Domain
accessibility, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.