Image Filter Tutorial Voiceover
Small helper scripts for creating a timed tutorial voiceover from an SRT file, then replacing the original video audio with the generated voiceover.
Files
subtitles/Image_Filter_Tutorial_Subtitles.srt— timed narration textscripts/make_voiceover_macos.py— createsvoiceover.wavandvoiceover.mp3on macOSscripts/make_voiceover_windows.py— createsvoiceover.wavandvoiceover.mp3on Windowsscripts/combine_video_audio.py— mutes/replaces video audio and exports final MP4
Install
macOS
brew install ffmpeg
Python is already available on most Macs. If needed, install it from python.org.
Windows
winget install Gyan.FFmpeg
Install Python from python.org or Microsoft Store, then reopen PowerShell and check:
ffmpeg -version
python --version
Create voiceover
Run from the scripts folder.
macOS
python3 make_voiceover_macos.py --voice "Daniel" --rate 185
Windows
python make_voiceover_windows.py --voice "Microsoft David Desktop" --rate 0
Outputs are saved in ../output/voiceover.wav and ../output/voiceover.mp3.
Combine video + audio
Put the original video in the project folder or pass its path directly:
python scripts/combine_video_audio.py --video "Image_Filter_Tutorial_Narrated.mp4" --audio "output/voiceover.wav" --output "output/Image_Filter_Tutorial_Final.mp4"
This removes the original video audio and uses the new voiceover.
Voice and speed options
macOS voice list
say -v '?'
Good tutorial voices: Daniel, Reed (English (US)), Eddy (English (UK)).
Speed example:
python3 make_voiceover_macos.py --voice "Daniel" --rate 190
Windows voice list
Add-Type -AssemblyName System.Speech
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer
$synth.GetInstalledVoices() | ForEach-Object { $_.VoiceInfo.Name }
Good tutorial voices: Microsoft David Desktop, Microsoft Mark if available.
Windows speed uses -10 to 10:
python make_voiceover_windows.py --voice "Microsoft David Desktop" --rate 2
To add voices: Settings > Time & language > Speech > Manage voices > Add voices.
Notes
If a caption has too much text for its time slot, the script keeps the SRT timing and trims the speech. Fix that by increasing the subtitle duration, shortening the sentence, or increasing speed.