whatisgithub

What is dual-anchor-audio-sync?

zaepfchenman/dual-anchor-audio-sync — explained in plain English

Analysis updated 2026-05-18

0ShellAudience · generalLicense

In one sentence

A scripting toolkit that resyncs a foreign language dub onto a different frame rate original master using shared English audio as a timing anchor.

Mindmap

mindmap
  root((Dual Anchor Dub Sync))
    What it does
      Resyncs foreign dub audio
      Uses shared English track as anchor
      Corrects piecewise timing jumps
    Tech stack
      Shell scripts
      Python
      ffmpeg and mkvmerge
    Use cases
      Media restoration
      Multi language archiving
      Frame rate correction
    Audience
      Media hobbyists
      Archivists

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Resync a PAL speed foreign dub onto a higher quality original language master.

USE CASE 2

Detect and correct piecewise timing jumps caused by scene cut differences between video releases.

USE CASE 3

Combine synced audio and subtitle tracks into a single MKV file for personal archiving.

USE CASE 4

Adapt the same cross correlation technique to other shows with a shared original language audio track.

What is it built with?

ShellPythonffmpegmkvmerge

How does it compare?

zaepfchenman/dual-anchor-audio-sync123satyajeet123/bitnet-serveradeilsonrbrito/cross-model-consult
Stars000
LanguageShellShellShell
Setup difficultyeasymoderate
Complexity2/53/5
Audiencegeneraldeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

So what is it?

Dual Anchor Dub Sync Pipeline is a set of scripts, not a finished app, that solves a very specific video problem: lining up a foreign language dub of a TV show with a better quality original language master that runs at a different frame rate. It was built around Star Trek Deep Space Nine, matching a German DVD rip running at PAL speed to a higher quality English laserdisc upscale, but the technique itself is not tied to that show. The clever part of the approach is that both the German source and the English source usually contain an English audio track. Rather than trying to match German audio against English audio directly, which is unreliable, the pipeline matches English against English using sample accurate cross correlation, then applies that same timing correction to the German track. This timing correction is not just a simple constant speed adjustment for the frame rate difference, it also accounts for scene cuts that differ between versions, such as censorship changes or different intro and outro lengths, where the offset actually jumps rather than drifting smoothly. The pipeline detects these jumps and places the dubbed audio onto the timeline piece by piece, filling any gaps with silence. On a real ninety minute episode, this method found eight such edit points and brought the leftover timing drift down to sixteen milliseconds, compared to over five and a half seconds of drift beforehand. The toolkit is a shell script that calls out to smaller Python scripts and a few well known audio and video tools, and it produces a single combined video file with both audio tracks and subtitles included. German subtitles have one known limitation: because they only exist as bitmap images rather than text, only a simple linear timing correction can be applied to them rather than the more precise piecewise correction used for audio. This project would suit hobbyists working on personal media preservation or restoration projects who need to fix audio sync issues between mismatched language versions of the same recording, and it requires no copyrighted media of its own, only scripts and documentation. It is released under the MIT license.

Copy-paste prompts

Prompt 1
Walk me through how the English against English cross correlation timing trick works here.
Prompt 2
Help me adapt this pipeline's config file for a different show with similar dual language sources.
Prompt 3
Explain why the German subtitles can only get a linear timing correction instead of piecewise correction.
Prompt 4
Show me how to set up the required ffmpeg, mkvmerge, and Python dependencies for this script.

Frequently asked questions

What is dual-anchor-audio-sync?

A scripting toolkit that resyncs a foreign language dub onto a different frame rate original master using shared English audio as a timing anchor.

What language is dual-anchor-audio-sync written in?

Mainly Shell. The stack also includes Shell, Python, ffmpeg.

Who is dual-anchor-audio-sync for?

Mainly general.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.