Skip to content

LocalFlow 0.1.1 — hands-free records the whole speech

Choose a tag to compare

@DatafyingTech DatafyingTech released this 11 Sep 20:38
· 11 commits to main since this release

Hands-free dictation used to paste text at every pause a voice detector found. The detector's loudness gate sat above a normal speaking level, so continuous speech from a quiet voice was classified as silence: chunks closed mid-sentence and the buffer trim discarded words. In 0.1.1, hands-free records the whole speech, transcribes it in one pass when you stop, and cleans it once.

  • Hands-free records everything until you stop it (audio.handsfree_mode: whole, the new default). Nothing is pasted while you talk. The result is cleaned at the new cleanup.handsfree_level (default high), the same enhanced pass the polish hotkey uses.
  • Segmented cleanup for long speech. A transcript is split at sentence boundaries into segments of about llm.segment_words (400), each cleaned with llm.handsfree_timeout_ms (60000), then joined. A segment whose cleanup fails or times out falls back to the rules-based Backtrack for that segment alone, so one slow request no longer throws a whole speech back to raw text.
  • Corrections stay with what they correct. A sentence opening with a spoken correction ("no, no, wait", "I meant to say", "scratch that") is glued to the sentence before it, so a segment boundary never splits the pair.
  • llm.num_ctx (new, default 8192) raises the cleanup model's context window so about 25 minutes of speech fits. That costs roughly 0.5 GB more VRAM for gemma3:4b; set it back to 4096 on 4 GB and 6 GB cards.
  • audio.handsfree_vad_threshold default lowered from 0.008 to 0.002, fixing chunked mode for quiet voices.
  • Fixed: a spoken "question mark" after a sentence the recogniser had already punctuated produced ??. Duplicate terminal punctuation is now collapsed, with ellipsis preserved.
  • A real-voice demo recording in the README.

Measured with the GPU idle: 88 words of continuous speech over 35 s transcribed in 524 ms with nothing dropped; a 215-word dictation cleaned in about 2.3 s.

Upgrading

Pull the repo or re-download it, then re-run install.bat — it is idempotent and safe to run over an existing install. The new configuration keys are added to your config.yaml automatically on next launch; any key you are missing is filled in from the defaults, and your existing settings are left alone.

If you preferred the old behaviour where hands-free pasted at each pause, set audio.handsfree_mode: chunked in config.yaml.