AI Video & Audio Synthesis Series

4 posts
1
Code-Generated Promo Videos (1): Tech Stack Overview & Remotion Footage
· 10 min read

This article is based on hands-on experience from the MiBee NVR open-source 45-second promo video project. You will learn how to generate video footage by code (Remotion), produce AI voiceovers (edge-tts), synthesize BGM offline (numpy), and mux everything into a final video with ffmpeg. All steps are ready to follow.

What This Technology Does

A multilingual promo project consists of three independent production stages, finally muxed by ffmpeg:

StageToolOutput
FootageRemotion (React-based video)Silent MP4
Voiceoveredge-tts (Microsoft free TTS)MP3 per clip
BGMnumpy offline synthesisWAV file
Muxingffmpeg filter_complexFinal MP4 (video + voice + BGM)

The overall pipeline looks like this:

2
Code-Generated Promo Videos (2): edge-tts Voiceover & Multilingual Batch Rendering
· 5 min read

edge-tts in Practice

This is Part 2 of the series, focusing on Text-to-Speech (TTS) — using edge-tts (Microsoft Azure’s free neural TTS interface) to batch-generate multilingual, multi-voice voiceover files. All code comes from a real project (MiBee NVR 45-second promo) and is ready to reuse.

Installation

edge-tts is a Python async library. Install it inside a virtual environment:

bash
1
2
python -m venv .venv
.venv\Scripts\pip install edge-tts numpy

numpy is not a dependency of edge-tts, but it will be needed for BGM synthesis (Part 3 of this series), so installing it here saves a step.

3
Code-Generated Promo Videos (3): numpy Offline Ethereal BGM Synthesis
· 9 min read

Offline BGM Synthesis with numpy

The third challenge is background music. This project uses numpy to synthesize a 45-second ethereal BGM on the fly — zero copyright risk, fully controllable style.

Why Not a Music Library

Stock music libraries have three problems:

  • Copyright ambiguity: Free tracks come with varying licenses; commercial use may be risky.
  • Style mismatch: Finding a 45-second ethereal track that doesn’t compete with voiceover and can be trimmed to any length is nearly impossible.
  • No batch tweaking: Need to adjust volume, change reverb, or switch keys? A fixed recording gives you no control.

Code generation flips this: tweak a few parameters, re-run, and you get a new version instantly.

4
Code-Generated Promo Videos (4): ffmpeg Muxing, End-to-End Workflow & Pitfall Cookbook
· 17 min read

Overview

This is the final installment of the series. The previous three parts covered generating footage with Remotion, batch voiceover with edge-tts, and offline BGM synthesis with numpy. This part brings everything together: using ffmpeg filter_complex to mux the silent video, 7 voice clips, and one BGM into the final export — along with the end-to-end workflow, a pitfall cookbook, and the underlying principles.

After reading, you will understand:

  • Why -c:v copy is much faster and lossless compared to re-encoding
  • How to arrange multiple voice clips on a sequential timeline to avoid overlap
  • The mathematical meaning of each filter in filter_complex
  • How to batch-produce 6 language variants with one command

ffmpeg Muxing

Overall Approach

The muxing stage has a simple job: pack three things into one MP4.