webui: show the segments, speaker turns and word timings the server returns - #412
Closed
CryptVenture wants to merge 1 commit into
Closed
webui: show the segments, speaker turns and word timings the server returns#412CryptVenture wants to merge 1 commit into
CryptVenture wants to merge 1 commit into
Conversation
…eturns ASR, diarization, VAD and forced alignment already returned timed detail and the UI dropped all of it on the floor: the result pane showed the flat transcript only, so word timings a user could have exported as subtitles were computed and discarded on every run. The result pane now renders whichever detail array came back -- speaker turns, word timings or segments, in that order of specificity -- as a scrollable table of start, end and content, with Save SRT and Save VTT buttons beside it. Spans arrive as sample offsets, so they are divided by the sample_rate the response carries; without that field no row is rendered rather than a wrong timestamp being shown. Timecodes are formatted once and shared by the table and both subtitle formats, which differ only in the millisecond separator and the WEBVTT header. Rows need the server to report sample_rate beside the detail arrays, which is the companion server change; a response without it renders no rows rather than a table of zeros. Validation: npx svelte-check --tsconfig ./tsconfig.json # 153 files, 0 errors The three functions were extracted and run against a real Parakeet-TDT response (12 s clip): 24 word rows, first cue 00:00:00,080 --> 00:00:00,533, SRT and VTT headers correct, and 0 rows when sample_rate is removed.
CryptVenture
force-pushed
the
pr/webui-transcript-display
branch
from
September 3, 2026 00:50
fe7a3c9 to
2f87d46
Compare
Contributor
Author
|
Closing for now to stay inside the 3-concurrent-PR policy (see the discussion on #422). Nothing is wrong with the change and CI is green on it; I will reopen it as review slots free. |
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.
Split out of #373 as requested. This PR is the transcript detail display only; the package resolver, the catalog entries, the request wiring and the UI text fixes are separate PRs.
The problem
ASR, diarization, VAD and forced alignment already return timed detail — segments, speaker turns, word timings — and the result pane showed the flat transcript only. Word timings a user could have exported as subtitles were computed and thrown away on every run.
The change
The result pane renders whichever detail array came back — speaker turns, word timings or segments, in that order of specificity — as a scrollable table of start, end and content, with Save SRT and Save VTT beside it.
Spans arrive as sample offsets, so they are divided by the
sample_ratethe response carries. A response without that field renders no rows rather than a table of zeros; timecodes are formatted once and shared by the table and both subtitle formats, which differ only in the millisecond separator and theWEBVTTheader.Dependency: rows appear once the server reports
sample_ratealongside the detail arrays, which is the companion server PR in this series. Without it this PR is inert rather than wrong.Validation
The three functions were extracted and executed against a real Parakeet-TDT response (12 s clip, Metal, Apple M4 Max):
Scope
+page.svelte(state, three helpers, one markup block), nine English strings ini18n.ts, and the table rules inapp.css. No request behaviour changes. The generated bundle is deliberately excluded — it is not byte-reproducible, so regenerating it in each PR of this split would make the PRs conflict; happy to send one bundle-regeneration PR once the series lands.