• christian released this 2026-09-24 13:24:22 -04:00 | 11 commits to main since this release

    Fixes a machine that falls behind and never recovers.

    What was happening

    A campus Mac mini (M4 Pro, 24 GB) went red within about 90 seconds of starting, with nobody listening and no language being translated — so this was transcription alone, not translation load. Measured over SSH on the machine itself:

    sentences   4.2 – 4.7 s each, against roughly 4–5 s of audio
    queue       46 and growing
    lag         152 s and still climbing
    input       real speech, transcribed accurately
    

    The app has a mechanism for precisely this: three slow sentences in a row and it steps down the speech model. It could not fire. It triggers past 8 seconds, on the reasoning that 8 s means slower than people talk — true when a chunk could be 8 s long, but chunks are capped at 5.5 s (HARD_CUT_MAX). A 4.4 s sentence is already losing ground and never comes near 8 s, so the ladder never stepped down and the backlog grew without bound.

    What changed

    It now compares the time taken against the audio the chunk actually held, rather than against a constant.

    Two numbers in that test are measured rather than picked:

    • 0.85 margin. The Mini's 4.4 s against 4.5 s of audio was nominally faster than real time while still losing badly — the work outside that timer (segmenting, the preview model sharing the GPU, the scheduler) is enough to lose on its own.
    • A backlog of five. Direct evidence the machine is actually losing, so one slow sentence on a healthy Mac touches nothing.

    Checked against eight cases including the Mini's real numbers and a healthy M2 Max. The old absolute rule stays for a model that is genuinely hung.

    When it fires, the log now names the arithmetic: transcription is slower than people are speaking (4400 ms for 4500 ms of audio, 46 waiting) — stepping down to a lighter model.

    Downloads