feat(transcription): implement retranscribe_meeting (Track-B step 7)#15
Open
farce1 wants to merge 1 commit into
Open
feat(transcription): implement retranscribe_meeting (Track-B step 7)#15farce1 wants to merge 1 commit into
farce1 wants to merge 1 commit into
Conversation
d52e8ec to
d332d95
Compare
Re-run ASR on a meeting's saved recording and replace its transcript. transcribe_samples_48k drives the existing streaming worker over the decoded file (reusing the proven VAD/resampler/engine pipeline); retranscribe_audio_file resolves the engine, checks readiness via the shared model::check_engine_ready helper (also used by the live worker), decodes the Ogg/Opus recording, and refuses to wipe an existing transcript when no speech is found. The command replaces transcript rows transactionally and reindexes FTS.
d332d95 to
ee8fb25
Compare
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.
Track-B step 7 — implement
retranscribe_meetingReplaces the stub that returned "not yet available" with a working re-transcription
of a meeting's saved recording. Invoked today from the Library view's re-transcribe
action (
invoke('retranscribe_meeting', { meetingId })).Stacked on
feat/asr-gpu-provider(#14):#9 ← #10 ← #11 ← #12 ← #13 ← #14 ← this.How it works
transcribe_samples_48k(worker.rs) drives the existingrun_workerover the decoded file via its channels — reusing the proven VAD/resampler/engine streaming pipeline verbatim, so batch and live transcription can't drift. Audio uses a bounded channel (backpressure → bounded memory); results use an unbounded channel; closing the audio channel triggers the worker's final flush and clean exit.retranscribe_audio_file(mod.rs) resolves the engine (resolve_asr_engine), checks model readiness, decodes the Ogg/Opus recording with the existingdiarization::decode::decode_ogg_opus_to_f32, and refuses to wipe an existing transcript when no speech is found (returns an error, leaving the old transcript intact) — guarding against destructive data loss.transcriptsrows in a transaction (DELETE+INSERT) and reindexes FTS viafts_upsert.transcript_rows(pure, unit-tested) builds rows with sequential indices and padded end times.Tests / gate
TDD:
transcript_rows_assigns_sequential_indices_and_padded_end_times. BE: clippy clean,cargo build✓,cargo test --lib13 passed (only the 3 inherited maintainer-ownedREPLACE_WITH_SHA256 release-gate failures remain). FE unchanged on this branch.Not runtime-verified here
End-to-end re-transcription needs downloaded models + a real recording, which this environment lacks; correctness rests on reusing the already-proven streaming worker and decode paths, with the empty-result guard preventing data loss. Recommend manual QA on a real meeting after
mainis unblocked.Merges once
main's vendor +REPLACE_WITH_blockers are cleared and the chain rebases.