# AI documentary production on one RTX 4090

Source: https://slash-digital.io/en/case-studies/ai-documentary-studio/

Slash AI Lab · 13 Vendémiaire We built a local studio that takes a history subject to a finished cut on one RTX 4090, with no cloud generation service. It produced 13 Vendémiaire, on Bonaparte and the royalist insurrection of 5 October 1795, in French, Spanish and English.

Start a project
Watch the video

Opening of the French 5-minute film: the street at Saint-Roch, the lit match, the title and the two-thirds decrees. Subtitles in English, Spanish and French.

In short
13 Vendémiaire tells how a 26-year-old general with no command had the cannon fire on the royalists of Paris on 5 October 1795. Picture, voice and music were generated on one PC with an RTX 4090: keyframes with Qwen-Image 2.1, shots with native sound from FastH3, narration with Qwen3-TTS and the score with MiniMax Music 3. The studio delivered a 5-minute and a 30-minute film in each language, plus 103 vertical episodes.

Client: Slash AI Lab · 13 Vendémiaire

Sector: Film production · R&D

Year: 2026

Deliverables:
- Local studio, 62 Python modules
- 5- and 30-minute films in 3 languages
- 103 9:16 episodes
- Subtitles, thumbnails and upload text
- Historical accuracy and QA method

Services:
- Slash AI Lab
- Artificial intelligence
- Interactive experiences

29.8 h, of logged GPU time for 13 Vendémiaire

84.5 s, median per 5-second video take

6 + 103, 16:9 films and 9:16 episodes

0–4%, word error rate, French narration

01 The context

## One day in 1795, told from sources

The subject is a single day: 13 Vendémiaire, Year IV, when the Convention turned artillery on the Paris sections that rejected its decrees and Bonaparte stepped out of obscurity. A documentary like this needs scenes no archive holds, a narrator whose voice stays the same for 30 minutes, and figures that hold up.

The studio runs on one machine: an RTX 4090 with 24 GB, a Ryzen 9 9900X, 94 GB of RAM and Windows 11. The network was used for research and to download models and public-domain images. Generation, editing and mixing happen locally, and ComfyUI 0.42 listens on 127.0.0.1 only.

02 Design and build

## From script to shot, with a review at every step

Research agents build a fact sheet in which every point is marked confirmed, uncertain or contested: 72 sourced claims, verbatim quotes from public-domain editions, and a visual bible for uniforms, flags and architecture. Every figure in the script maps to a claim. Contested points are narrated as contested, and "whiff of grapeshot" is credited to Carlyle, who wrote it in 1837.

For each shot, Qwen-Image 2.1 offers 3 keyframes in about 4 seconds each. We review them on boards and reject the anachronisms the model keeps producing: 19th-century lamp posts, Union-Jack-like flags, Haussmann façades, a full moon on a last-quarter night. When the composition works, a Qwen edit repairs only the faulty area. FastH3 then animates the approved keyframe into 5 seconds of video with native audio, and every take goes through a 4-frame sheet, plus Whisper when someone speaks.

Maps, titles, subtitles and the mix come from our own CPU code built on numpy, PIL, OpenCV and ffmpeg. The whole studio is 62 Python modules and 26,828 lines. The master is delivered at -14 LUFS, then cut into episodes of about 60 seconds with karaoke captions.

Episode 3 of 5 in 9:16, cut from the French film: karaoke captions, the map re-framed square and an end card pointing to part 4.

-
01

### A Bonaparte who is more than one portrait

His face starts from the public-domain portrait Gros painted in 1796, turned into an identity image with Qwen-Image. An audit showed that 27 of the 37 shots made from that image copied its three-quarter-right head, so we re-staged 16 shots with a new angle, framing and gaze. The next film uses one anchor portrait per era, from age 27 to 35, with 8 poses each.

-
02

### Synthetic voice, measured with Whisper

Each narrator is a Qwen3-TTS voice designed from a written description and cloned only from that synthetic sample. Whisper picks the best take of each section: a 0–4% word error rate in French and 0–9% in Spanish. Kyutai TTS was dropped at 6–23%.

-
03

### One GPU, one job at a time

A queue runs one GPU job at a time, since TTS next to Qwen-Image once took 438 s for a 70 s take. Eight stalled takes cost 1.9 h of a 7.8 h run, so ComfyUI now restarts itself when a take passes 420 s. A compositor change made renders 1.65 times faster with byte-identical frames.

-
04

### Reviewing the master in segments

Three subagents reviewed the 28-minute English cut in 10-minute segments and found 24 major and 70 minor issues the take reviews had missed: a radio mast, fezzes, motor boats, electric lamps. Every finding from an outside reviewer is checked on the frame, and about a third turned out wrong.

03 Gallery

## The project in pictures

11 images · Open any image to see it full size.

A generated shot: a lit match next to a bronze cannon, in a Paris street at dusk.

An animated map over Verniquet's 1790 plan of Paris, rendered on the CPU: the Le Peletier section, Palais-Égalité and the Tuileries.

A public-domain archive card: Antoine-Jean Gros, Bonaparte at the Pont d'Arcole, 1796, with author and date on screen.

Bonaparte in profile beside two guns. The face comes from an identity image built from the Gros portrait.

The steps of Saint-Roch in artillery smoke, from the 5-minute film.

Toulon harbour and its sailing ships, from the 30-minute film.

8 of the 16 Bonaparte shots we re-staged: on top the keyframe made from a single portrait, below the new one, with another angle and head direction.

Bonaparte at different ages: the 1795 reference from 13 Vendémiaire and one anchor portrait per era for the next film, from age 27 to 35.

A take review board: 4 frames per shot and the costume or architecture note the reviewer has to check.

The FastH3 image-to-video ComfyUI workflow: 22 nodes, 8 steps, video and native audio at 24 fps.

Logged GPU time by job type: 3,640 generations and 41.7 h from 26 to 29 October, of which 29.8 h went to 13 Vendémiaire and the rest to a second film.

04 Outcomes

## Six films and 103 episodes delivered

The final folder holds 6 16:9 films (the 5-minute cut runs 5:12 to 5:27 depending on the language, the 30-minute cut 28:35 to 30:29) and 103 9:16 episodes, with .srt files, three thumbnail variants and the upload text, which declares the synthetic content and lists the disputed points and sources. Generated shots carry a "Reconstitution IA" label on screen. The log counts 3,640 generations and 41.7 GPU hours between 26 and 29 October 2026; 29.8 h went to 13 Vendémiaire and the rest to a second film.

Archive cards use public-domain works and CC0 museum scans (the Gros at the Louvre, Paris Musées, the Rijksmuseum). Maps are drawn over Verniquet's 1790 plan of Paris with the Seine from OpenStreetMap (ODbL), attributed in the credits. The voices were designed from text and the score is generated instrumental music.

- 184 shots generated for the two films
- A median of 84.5 s per 5-second video take on the RTX 4090
- -14.1 LUFS and a -1.4 dBTP true peak on the 30-minute English master
- French, Spanish and English built on the same visuals

Frequently asked questions

## The questions we hear often

**Can you produce an AI documentary without cloud services?**
Yes, if you can spend the GPU time. For 13 Vendémiaire the images, video with sound, voice and music were generated on a 24 GB RTX 4090; the network was used for research and to download models and public-domain images. A 30-minute film takes 7 to 9 GPU hours.

**How long does a 5-minute AI documentary take?**
Our planning table gives about 3 GPU hours for 27 shots, narration, 4 music cues and upscales, redos included, plus about 8 minutes of rendering on 8 CPU workers. Research and human review come on top.

**How do you stop the AI from inventing history?**
Every figure and date in the script maps to one of 72 checked claims, and contested points are narrated as contested. A catalogue of anachronisms guides the review of every keyframe and take, and generated shots are labelled as reconstructions.
