A scene can fit its narration and still feel out of sync. If the rule assigns a ticket several seconds before the narrator names its destination, the viewer has to connect words and action from memory. Aligning the important phrase with the assignment makes that relationship easier to follow.
We establish the concept and visuals before writing narration, then produce the audio. The recorded take gives the animator the actual phrasing to work against. Revising local event times after recording preserves that authoring order; it does not require treating the first visual draft as an immutable timeline.
Identify the event each phrase explains
The fictional support product DispatchDesk routes an urgent checkout ticket to Payments. Its visual sequence establishes the ticket, shows the matching rule, and changes the assigned team while keeping priority visible. A draft line for that sequence is:
This rule sends checkout issues to Payments, with the urgency still attached.
The rule's condition explains why the ticket matches. The team field proves the assignment, and the priority field supports the final clause. Those are the useful synchronization points. Animating every word would add movement without adding another relationship to understand.
The visual beat map records each key phrase and its visible event. Keep the event name with its time so a later editor knows why the assignment belongs there.
Mark the phrases in the retained take
Open the exact audio file that the cut will use in an editor that supports playback and markers. Listen through the complete line once, then replay short sections around the important phrases. A waveform helps locate pauses, but listening determines which word a waveform peak belongs to.
Place markers relative to the start of the audio file. The following values are fictional examples for a 6.4-second take:
| Local audio interval | Spoken phrase | Visual evidence needed |
|---|---|---|
| 0.2 to 1.2 s | This rule | The Checkout condition is readable. |
| 1.2 to 3.0 s | sends checkout issues | The viewer can compare the ticket category with that condition. |
| 3.0 to 3.9 s | to Payments | The team field changes to Payments. |
| 4.1 to 6.2 s | with the urgency still attached | The assigned ticket retains its readable Urgent label. |
For the assignment, mark the part of “Payments” that you want the reveal to accompany. A phrase-start marker gives an initial position; the best event time may sit slightly later within the phrase. A player running at normal speed determines whether the pairing feels clear.
Label every marker with its source take. A marker named routing-v1 / Payments makes its dependency explicit. A replacement take requires another listening pass even when its total duration is also 6.4 seconds.
Convert audio markers into scene times
A marker measured from the audio file's start is not necessarily a scene time. If the scene begins with 0.2 seconds of silence before the take starts, add that lead-in. If the editor places audio on whole frames, use its actual rounded placement.
event time within scene = actual audio lead-in + marker time within audio
absolute event time = scene start + event time within scene
For a marker at 3.0 seconds, an actual lead-in of 0.2 seconds places the event at 3.2 seconds within the scene. At 30 frames per second, that is local frame 96. If the scene starts at 3.5 seconds, the absolute event sits at 6.7 seconds, or frame 201.
The lead-in here is an illustrative variation. The downloadable VO-sync fixtures start their audio at the beginning of each scene. Their generated timing file includes both local audio offsets and absolute starts, so an editor can use the coordinate system its timeline expects.
A useful code representation keeps the cue names and arithmetic together:
const fps = 30;
const sceneStartFrame = 105;
const audioOffsetFrames = 6;
const phraseSeconds = { payments: 3.0, urgency: 4.1 };
const localFrame = (seconds: number) =>
audioOffsetFrames + Math.round(seconds * fps);
const assignmentFrame = localFrame(phraseSeconds.payments); // 96
const absoluteAssignmentFrame = sceneStartFrame + assignmentFrame; // 201
This example rounds an authored event to its nearest frame. It does not detect speech or verify the marker. A duration calculation has a different job and rounds up so the scene cannot end before the required audio tail.
Move the event without stretching every action
The assignment event has a phrase anchor. The cursor's travel has its own duration. Moving the assignment 0.6 seconds later should not automatically turn a short pointer movement into a slow glide.
Suppose the rule runs when a click occurs at local time 3.2 seconds. The pointer could travel from 2.6 to 3.0 seconds, then settle until the click. A later phrase can move that window while preserving its 0.4-second travel. Adjust those trial timings when the distance or depicted product behavior requires it.
Keep other events tied to their purpose. Establishing the ticket belongs near the scene start. Reading the priority field belongs through the final clause. The transition out belongs after the viewer has inspected the result. Spreading every event proportionally across a longer scene would move all those relationships at once.
Repair a changed read
A replacement take might move “Payments” from 3.0 to 3.6 seconds. With the same 0.2-second lead-in, the assignment moves from local frame 96 to 114 at 30 fps. The difference is 18 frames.
Update the phrase marker from the new take, adjust the assignment and its dependent click timing, and regenerate scene duration from the measured audio. Then review how much time remains for the urgency clause and final result. If the new line adds a second explanation after routing finishes, a new scene or shorter sentence may solve the mismatch better than more timeline adjustments.
Diagnose mismatches in playback
| Symptom | What to inspect | Repair |
|---|---|---|
| Every event trails its spoken phrase. | The take's overall start and the coordinate system used for markers. | Correct the shared offset before editing each event. |
| Only the destination drifts. | The marker in the current take and the assignment event. | Update that local pairing. |
| The cursor moves slowly through silence. | Whether travel spans the whole interval between clicks. | Give travel a separate window and preserve a useful dwell. |
| The words describe a field outside the crop. | Framing during the relevant clause. | Keep the field visible or revise the visual sequence. |
| The narrator changes topic after the scene finishes. | Whether the line contains another independent explanation. | Split the scene or remove the additional claim. |
A muted pass checks whether the cause and result remain visually connected. Listening without the picture exposes unclear wording. The complete scene with sound, including adjacent cuts, tests the actual synchronization.
For a completed exercise, record a line against an existing visual beat and mark one phrase. Save its source take, audio-local time, corresponding event, and final scene-local frame in the beat map. The review scorecard should record what the final playback showed, including any remaining mismatch.
