Drop mic-track echoes of system audio at transcript merge - #25
Open
jpsrobertson wants to merge 1 commit into
Open
Drop mic-track echoes of system audio at transcript merge#25jpsrobertson wants to merge 1 commit into
jpsrobertson wants to merge 1 commit into
Conversation
A meeting played through the speakers reaches a raw (non-voice-processed) mic louder than the speaker's own voice, so every far-end sentence is transcribed twice: once as "them" from the system tap, again as "me" from the mic. Filter the mic-side copies out at merge time: a me segment whose words are >=70% contained, in order, in the them speech it overlaps (+/-400ms) is echo; 1-2 word segments need an exact hit so genuine backchannels survive. Configurable via transcript_echo_filter (default on); drops are counted in transcribe.log. Validated against a real 42-min echoed session: 477/641 mic segments dropped, all spot-checked as echo; all genuine cross-talk kept. Also corrects the MicRecorder header claiming voice processing defaults on (Config defaults it off) and documents the new key in the README. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jpsrobertson
force-pushed
the
echo-filter
branch
from
July 31, 2026 01:42
be2a0f8 to
0e9622b
Compare
FernandoGomes83
added a commit
to FernandoGomes83/quill
that referenced
this pull request
Jul 31, 2026
…at transcript merge
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Recording a meeting played through the speakers with the default raw mic (
mic_voice_processingoff), the mic hears the speakers. In my test session the leaked far-end audio reached the mic louder than my own voice (-33.9 vs -37.6 dBFS), so Parakeet transcribes it cleanly and every far-end sentence lands twice — once as "them" from the system tap, again as "me" from the mic:In a real 42-minute meeting, 477 of 641 "me" segments were echo copies of "them" speech.
Fix
Filter the mic-side copies out at transcript-merge time. A me segment whose words are ≥70% contained, in order (word-level LCS on normalized words), in the them speech it overlaps (±400ms pad for the room-path lag and loose VAD boundaries) is the speakers heard twice, not the user talking over them. One/two-word segments ("um", "yeah") only drop on an exact hit so genuine backchannels survive.
transcript_echo_filter, default on — costs nothing when there's no echo;falserestores raw merge output.transcribe.log, so nothing disappears silently.mic_voice_processingstill prevents the echo at capture when enabled — this pass is the guard for sessions recorded raw (the default) or where the voice unit fell back.Also corrects the MicRecorder header comment claiming voice processing is on by default (Config defaults it off) and documents the new key in the README.
Validation
echo filter dropped 477 mic segment(s) duplicating system audioin transcribe.log.🤖 Generated with Claude Code