Audio Sync
Measure how far apart 2 to 6 recordings of one conversation are, from their sound, so a multicam edit lines up without typing offsets. Also reports clock drift.
The Audio Sync node measures how far apart the clocks of 2 to 6 recordings of one conversation are, from their sound. A podcast is often recorded several times over: one camera per guest, a wide shot and a main microphone, each started at its own moment. Audio Sync listens to all of them and reports how far each recording is shifted against one reference recording. A multicam edit then lines up without anyone typing offsets.
The node runs locally, with no AI model and no provider key, so it works on every edition.
When to use it
- Line up a multicam podcast, with one camera per guest and a main microphone, before you plan the edit.
- Find the offset of a separate audio recorder, such as a recorder on the table, against the camera sound.
- Check whether two recorders drift apart over a long session.
Quick start
Add the node
Press Tab on the canvas and choose Audio › Analyze › Audio Sync.
Wire every recording
Wire 2 to 6 recordings, audio or video, into the one Sources input. Wire the main microphone first, so that it becomes the reference.
Check the reference
Open the settings panel. Reorder the Recordings by dragging them, or choose one under Reference.
Run it
Click Run on the node. The offsets appear on the Offsets output as data.
Input and output
| Input | Accepts | What it does |
|---|---|---|
| Sources | Audio and video nodes, 2 to 6 | The recordings to line up. For a video, the node uses its sound track. |
Each recording is identified by the node it comes from. That node's id becomes the recording's sourceId in the result, and it is also the id an edit plan gives the same recording.
The output, Offsets, is data, not audio. Wire it into the Offsets (Audio Sync) input of Edit Plan, which lines up a multicam edit with it, or into another node that reads data, such as Extract Field.
Settings
| Setting | What it does |
|---|---|
| Recordings | The connected recordings, in order. Drag to reorder them. The first recording is the default reference, and the result lists the offsets in this order. |
| Reference | The recording that every offset is measured against. First recording (default), or any connected recording. If the chosen recording is disconnected later, the node uses the first recording again. |
How it measures
The node compares each recording with the reference in three passes:
- Coarse. It compares the loudness of the two whole recordings. This finds the shift at any distance, even for a camera started minutes before the microphone.
- Fine. It compares the waveforms around that first answer, on up to three 10-second windows of the stretch that both recordings share. Each frequency is weighed by its phase, so a camera across a room with echo is timed on the direct sound, not on the echo. Clean recordings land within about 1 millisecond, and recordings with echo usually within a few.
- Drift. Separate recorders' clocks run at slightly different speeds, commonly 20 to 100 parts per million. The node fits the windows' offsets to a line, and the slope of that line is the drift. It measures drift up to 200 parts per million.
Times are read on each file's own clock, the clock that edits are cut on. A video whose sound starts after its picture is measured with that gap in place.
Read the result
The Offsets output looks like this:
{
"version": 1,
"reference": "mic",
"offsets": [
{ "sourceId": "mic", "offsetMs": 0, "confidence": 1, "driftMsPerHour": 0 },
{ "sourceId": "camA", "offsetMs": 7500, "confidence": 0.94, "driftMsPerHour": 1.2 },
{ "sourceId": "camB", "offsetMs": -40000, "confidence": 0.91, "driftMsPerHour": null }
],
"notes": []
}| Field | What it means |
|---|---|
reference | The recording that every offset is measured against. Its own offset is always 0. |
offsetMs | Where the recording sits on the reference's clock, in whole milliseconds. |
confidence | From 0 to 1. How sure the node is of the offset. |
driftMsPerHour | The measured drift against the reference, in milliseconds per hour. null when the shared stretch was too short to measure drift. |
notes | Warnings in plain language. |
The offset rule
Reference time = recording time + offset. This is the same sign rule an edit decision list uses. When the reference is your main recording, each offset is exactly the value that recording takes in the edit.
- A camera started 7.5 seconds after the microphone has an offset of
+7500: its second 0 is the microphone's second 7.5. - A camera started 40 seconds before the microphone has an offset of
-40000.
Confidence
- With a shared stretch of 6 minutes or more, the node measures three windows. When they agree within a millisecond, the offset is trusted, with a confidence of at least 0.6, even for a camera across a room with echo. A sharp match raises it to 1. Windows that disagree by 5 ms or more score 0.
- A shorter shared stretch has a single window, so both that match and the overall alignment must be clear.
- Low confidence is a result, not a failure. A camera whose microphone was off has nothing to align, and the run still completes.
Notes
| Note | When it appears |
|---|---|
| A weak match | Confidence below 0.5. Check that offset by ear. |
| No clear match | Confidence below 0.2. The offset is a guess. |
| Drift | The drift over the shared stretch is more than one frame at 30 fps, which is 33 ms. The note gives the total drift and the worst error at the ends, which is half of it. |
| No shared sound | The recording shares no stretch with the reference. Its confidence is 0. |
| No audio track | The recording, for example a picture-only camera file, has no sound. It gets a row with confidence 0, and the other recordings are still aligned. |
Credits
Audio Sync costs 11 credits for each recording aligned to the reference. The reference itself is not aligned against anything, so it costs nothing. The length of the recordings does not change the price.
| Recordings | Credits |
|---|---|
| 2 | 11 |
| 3 | 22 |
| 4 | 33 |
| 5 | 44 |
| 6 | 55 |
On the canvas, the price follows the number of recordings wired into Sources. An estimate made without the workflow's connections quotes the 6-recording price, 55 credits, so that it never quotes too little. Self-hosted Community and Business editions use no credits.
Examples
A microphone and one camera. The camera started 7.5 seconds after the microphone. The result is mic at 0, the reference, and cam at +7500. The run costs 11 credits.
A microphone and three cameras. Camera A started 7.5 seconds after the microphone, camera B 40 seconds before it, and camera C, recording at 44.1 kHz, 3.25 seconds after it. The result is mic at 0, camA at +7500, camB at -40000 and camC at +3250. The run costs 33 credits.
Six recordings, with camera A as the reference. The same offsets are measured on camera A's clock instead. Every value shifts by camera A's own offset, and camA is at 0. The run costs 55 credits.
Drift. Two recorders whose clocks differ by 100 parts per million move 360 ms apart per hour. Over a 40-minute shared stretch that is 240 ms, well over the 33 ms threshold. driftMsPerHour is about 360 in size, with a sign that says which way the recording slides. A note warns that the ends are off by up to 120 ms. Nothing is corrected.
Limits
- 2 to 6 recordings per run. With fewer or more, the run is refused before it starts, and no credits are held.
- Shared sound. Recordings must share at least 2 seconds of sound. A recording with none gets a note and a confidence of 0.
- The reference needs sound. It is the clock that everything is measured on. A reference without a sound track fails the run with a message that names it. Any other recording without sound only gets its own row with a confidence of 0.
- Drift is reported, not corrected.
- Long files. On its first run, a recording is fetched in full. The file can be up to 64 GB, and the download can take up to one hour. A file whose size is known must arrive within its size at 2 MB/s (16 Mbit/s), at least two minutes and at most one hour. After the first two minutes, the download must keep arriving at about 2 Mbit/s or faster. If it is slower than that for a whole minute, the fetch is abandoned. Later runs reuse the prepared audio.
Tips
- Make the main microphone the reference. Wire it first or choose it under Reference. The numbers are then easy to read: its offsets are exactly the values that the edit takes.
- Check low confidence by ear. It usually means the recording barely heard the conversation, such as a muted camera or a distant wide shot in a loud room.
- Read the drift notes on long episodes. More than a frame of drift means the lip sync slides over the episode, even when the start lines up.
- Line up the edit. Wire the Offsets output into the Offsets (Audio Sync) input of Edit Plan, with the same recordings wired into its Sources. Edit Plan moves each offset onto its own master's clock, so any recording can be the reference here. It stops before charging when a recording it uses was not measured or matched weakly. See Multicam recordings.
- Start from the Multicam Cut template. The Multicam Cut template in the template marketplace comes wired this way, with the master audio as the reference. It continues through Camera Switch to Apply EDL, which renders the cut.
From the API
POST /v1/audio-sync takes sources, a list of 2 to 6 objects with a unique id and a url, and an optional reference that must be one of the ids. A repeated id, or a reference that is not one of the ids, is refused with a 400 validation_error that names it. The finished run's output_data.json is the result above. The SDK method is client.edit.audioSync, the CLI command is nodaro edit audio-sync, and the MCP tool is audio_sync. See Voice and media.
Frequently asked questions
How many recordings can Audio Sync line up?
From 2 to 6 recordings per run, in any mix of audio and video. For a video, the node listens to its sound track.
What does a positive offset mean?
The recording started after the reference. An offset of +7500 means that second 0 of the recording is second 7.5 of the reference. The rule is reference time = recording time + offset.
Does Audio Sync correct clock drift?
No. It measures the drift and warns you in the notes when it is larger than one video frame, but it never changes the recordings. The offset is measured in the middle of the shared stretch, which halves the worst error at either end.
How many credits does Audio Sync cost?
11 credits for each recording aligned to the reference, which is every recording but the reference. Two recordings cost 11 credits and six cost 55. The length of the recordings does not change the price.
What happens if one camera did not record sound?
That recording gets a confidence of 0 and a note, and the other recordings are still aligned. Only the reference must have sound, because every offset is measured on its clock.
Related
Silence Detect
Edit Plan
Transcribe
Extract Field
Last updated on
Silence Detect
Find the silent spans in a recording or a video and get them as time ranges, ready to cut dead air in an edit. A flat 11 credits per run, with no AI model.
Speaker Map
Work out which camera each speaker is on, from the cameras' own microphones, so a multicam edit switches to the right person without a hand-filled table.