Retry transcription for a memo that has audio and no transcript #57
Labels
No labels
area/agent
area/capture
area/editor
area/geo
area/security
area/sync
area/transcription
area/ui
area/vault
area/voice-memos
blocked
milestone/M1
milestone/M2
milestone/M3
milestone/M4
needs-decision
needs-hardware
p0
p1
p2
type/bug
type/enhancement
type/feature
type/idea
type/infrastructure
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Stash/stash-ios#57
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A memo with audio and no transcript is currently a dead end. The detail screen explains the situation and offers no way out of it. Add a way to run the audio back through the speech engine.
Where it goes
MemoDetailView.swift:299— the.absentcase, which renders "No Transcript" with awaveform.slashsymbol and one of two explanatory messages. Below that description, a control to retry transcription.Both
.absentbranches want it, for different reasons:Worth considering whether
.unreadableshould offer it too — a transcript that fails to parse is also a memo whose audio is intact.Why now
Filed after issue #56, where a 62-minute recording produced audio and a track but no
.vtt. That memo had to be recovered by pulling the.m4aoff the phone and running it through the retired whisper-cpp pipeline on a Mac. The words were recoverable the whole time — the app just had no way to ask for them again.Once retry exists, the recovery for a bug like #56 is one tap instead of a cable and an hour of CPU.
What it has to do
Transcription today runs live off the capture stream:
LiveTranscriberreceives buffers as the recording happens,RecordingTranscription.begin()sets up the writer and parts directory, cues arrive overtranscriber.cues, and assembly runs atend(). There is no path that transcribes an existing file. That is the substance of this issue — reading the.m4aback and driving the speech engine from it is new capability, not a button wired to something that already exists.Requirements:
.vttbeside it, in the same format the live path produces, with the same cue timing semantics. A retried transcript and a live one must be indistinguishable to every reader — the detail screen, the seek-from-cue behaviour, and the vault..m4a, the.gpxand any existing parts folder.Related