Prodular UI

Transcript

AIPro

A recording as speaker turns, with the word being played marked and the words the recognizer was unsure of underlined for a person to check.

npx prodular-ui add transcript

Part of Prodular UI Pro. Preview and read the docs freely, install with a license. See pricing

Follows the recording

Play the call or drag the waveform. The current turn and word follow, and a turn's time plays from its start.

Call with Tidewater Freight

0:19 / 0:43
  1. Maya Okafor
    Hi Daniel, it's Maya from Halcyon Labs. I'm calling about invoice INV-2047, (unclear) which was due on October 3.
  2. Daniel Reyes
    Right, we held it. The onboarding line came in at six thousand, and our purchase order says forty five hundred.
  3. Maya Okafor
    That's fair. Onboarding ran two weeks over, but the order caps it. I can reissue it at forty five hundred today.
  4. Daniel Reyes
    If it's reissued today, we can pay it in the Thursday (unclear) run. Send it to accounts payable.
  5. Maya Okafor
    Will do. You'll have the corrected invoice within the hour.

Unsure words

Words under the confidence threshold are underlined, and screen readers hear them marked as unclear. A turn can also take plain text.

  1. Priya Natarajan10:12
    We moved the Halden Analytics renewal to net 45, signed by Oskar (unclear) Lind (unclear) on Friday.
  2. Tom Brandt10:19
    Then the October forecast needs the $86,400 moved into November. I will update it before the close.

Anatomy

<Transcript>  <TranscriptTurn speaker="Maya Okafor" start={0} color="var(--chart-1)" active onSeek={seek}>    <TranscriptWords words={words} currentTime={currentTime} />  </TranscriptTurn></Transcript>

Guidance

Use it when

  • Use it next to a recording: call reviews, meeting notes, voicemail, interviews.
  • Underline unsure words wherever a wrong word costs something: names, amounts, dates.
  • Pair it with Waveform and give each speaker the same color in both.

Avoid

  • Live dictation. VoiceTranscript in Voice input shows interim words while someone speaks.
  • Marking every word below perfect confidence. Pick a threshold that flags a few words per minute.
  • Rewriting what people said. A transcript shows the words; a summary goes in its own place.

Rules for AI agents

Published in llms-full.txt, the registry and the MCP server, so coding agents follow them when they build with this component.

  • Render one TranscriptTurn per uninterrupted stretch of one speaker, in time order, with start in seconds from the start of the recording.
  • Use TranscriptWords when the recognizer returns word timings, and pass currentTime from the audio element so the current word is marked. Pass confidence when you have it.
  • Set active on the turn being played and scroll it into view with block: "nearest" only while the recording plays, never while the person is scrolling.
  • Pass onSeek to make each turn's time a button, and seek the audio element to the seconds it receives.
  • Reuse the speaker's Waveform color in color. Use chart tokens such as var(--chart-1), not raw hex.

API

TranscriptTurn

PropTypeDefaultDescription
speaker / startstring, numberWho spoke, and when the turn starts in seconds.
colorstringThe speaker's color. Shown as a dot before the name.
activebooleanfalseThe turn being played. Exposed as data-active and aria-current.
onSeek(seconds: number) => voidMakes the time a button that plays from the start of the turn.

TranscriptWords

PropTypeDefaultDescription
wordsTranscriptWordData[]{ text, start, end, confidence? }
currentTimenumberSeconds played. Marks the word being said.
unsureBelownumber0.7Confidence under which a word is underlined.

Installation

The Prodular UI CLI adds the source to components/ui with everything it depends on. In a project that already uses shadcn/ui, the shadcn CLI installs it from the Prodular registry too. See Installation for the first setup.

npx prodular-ui add transcript# or, with the registry in components.jsonnpx shadcn@latest add @prodular/transcript