This code is based on Miles McCoo's cross-correlation implementation. It calculates a delay between two audios and produces a shifted audio.
Paths with spaces and weird characters are unsupported.
They depend on how SoX and FFmpeg were built for your OS (more details). If it didn't work with some format for you — try WAV as experiment.
Make sure these dependences are installed:
- bash (tested with 4.4.23)
- bc (tested with 1.06.95)
- ffmpeg (tested with 4.1.3)
- fftw (tested with 3.3.6_p2)
- libsndfile (tested with 1.0.28)
- python3 (tested with 3.6.10)
- sox (tested with 14.4.2)
On Debian some packages may need to be installed together with -dev
packages (for instance fftw
with fftw-dev
).
Now compile it with
make -j
./sync-audio-tracks.sh good_audio_from_recorder.wav bad_audio_from_camera.wav out.wav 900
In this example
out.wav
is a shifted version ofgood_audio_from_recorder.wav
900
is sound duration limit for analysis (in seconds)
This project is much simpler: it just computes and applies the shift (lossless, without re-encoding) without stretching/spreading parts of audio.
However something like that might will help to implement it.
Have a look at AudioAlign, it seems it supports these scenarios.
I'm currently investing all my time in FOSS projects.
If you found this repo useful and you want to support me, please
- ⭐ it
- check ⚡ here
Your support keeps me going ❤️ (◕‿◕)
Copyright (C) 2018—2020 Alexander Lopatin