LAB TEST · LOCAL VIDEO
waoowaoo AI video pipeline: from text to a voiced video
A single attractive frame does not prove that an AI video pipeline works. The real test is whether one character remains recognizable across several scenes, actions form a coherent sequence, speech fits the edit, and a failed scene can be replaced without regenerating the entire project.
This guide provides a repeatable test protocol rather than claiming results for a waoowaoo installation that has not been measured. You will prepare a controlled script, define two characters, create six scenes, produce a storyboard, generate short clips, add text-to-speech, export a final file, and record only the limitations you actually reproduce.
What this test must establish
The practical question is whether a local waoowaoo installation can carry one small project through the complete production path:
- accept a short narrative script;
- identify its characters, locations, props, and actions;
- split the narrative into an ordered scene list;
- produce usable reference frames for every scene;
- turn the approved frames or descriptions into short video clips;
- generate and position two spoken lines;
- assemble a playable video with both video and audio streams;
- replace one failed scene without discarding every other accepted asset.
This is a functional pipeline test, not a competition for maximum visual detail. Resolution is less important than causality, recognizable characters, stable props, understandable movement, and recoverability after a failed generation.
Define acceptance criteria before generating anything
Do not decide that the experiment succeeded merely because it produced an MP4. Record the conditions first, then judge the output against them.
| Area | Minimum condition | Evidence to record |
|---|---|---|
| Structure | All six scenes appear in the specified order | Scene numbers and timecodes |
| Characters | Lena and the robot remain recognizable in every required scene | Pass, partial, or fail for each scene |
| Continuity | The box, badge, clothing, and direction of movement do not change without a reason | Continuity errors with timecodes |
| Voice | Both lines are audible, complete, and attached to the correct scenes | Listening notes and audio durations |
| Edit | No empty frames, black gaps, or accidental format changes | Full playback and technical inspection |
| Recoverability | One scene can be regenerated and replaced independently | Files changed during the replacement test |
For this lab, treat five of the six criteria as the minimum passing threshold, provided that no continuity error changes the meaning of the story. This is a test rule for this exercise, not a universal measure of video quality.
Concrete case: “The Last Delivery”
Use a story of approximately 35–45 seconds. It has two characters, two locations, one persistent object, a simple reveal, and two short spoken lines. That is enough complexity to expose continuity failures without making diagnosis unmanageable.
At dusk, an engineer named Lena closes her small workshop. Outside, she notices a courier robot holding a dented cardboard box. The robot says that the recipient’s address has disappeared from its database. Lena recognizes an old workshop emblem on the box, unlocks the door, and invites the robot inside. On the workbench, the box opens and a miniature satellite lights up. Lena smiles and says, “So you found your way after all.”
The constraints are deliberate. Do not add a crowd, a car chase, complicated physics, several costume changes, or a long conversation. Every extra entity creates another possible failure source.
Character sheets
Keep these descriptions fixed across scenes. If the platform supports character references, create and approve one neutral reference image per character before producing the storyboard.
LENA
Age: approximately 30
Appearance: short dark hair, round glasses
Clothing: dark green work jacket, gray scarf
Identifier: metal star-shaped badge
Behavior: calm and attentive
Voice: adult female, restrained delivery, medium pace
COURIER ROBOT
Height: approximately Lena's shoulder height
Body: matte white metal with orange inserts
Head: rectangular, with one blue status light
Arms: two thin mechanical arms
Prop: one dented cardboard box
Voice: neutral synthetic voice, no comic intonation
World rules
- Everything happens during the same rainy evening.
- The street uses cool exterior light; the workshop uses warm desk-lamp light.
- The box remains dented until it is opened.
- The robot holds the box until Lena places it on the workbench.
- Lena’s badge, jacket color, hair, and glasses remain unchanged.
- The robot’s head shape, status light, and orange inserts remain unchanged.
- The satellite appears only after the box opens.
1. Prepare an independent workspace
Keep source material, generated frames, clips, audio, and exports separate. Even if waoowaoo stores projects internally, an independent directory makes versions comparable and preserves evidence if the application state is lost.
waoowaoo-test/
├── input/
│ ├── script.txt
│ ├── characters.txt
│ └── style.txt
├── storyboard/
├── frames/
├── clips/
├── audio/
├── export/
└── run-log.md
On Linux or macOS:
mkdir -p waoowaoo-test/{input,storyboard,frames,clips,audio,export}
cd waoowaoo-test
touch input/script.txt input/characters.txt input/style.txt run-log.md
On Windows PowerShell:
$folders = "input","storyboard","frames","clips","audio","export"
New-Item -ItemType Directory -Path "waoowaoo-test" -Force
$folders | ForEach-Object {
New-Item -ItemType Directory -Path "waoowaoo-test/$_" -Force
}
These commands only create the test structure. They do not install waoowaoo and make no assumptions about its installation method.
2. Freeze and document the environment
Record the installation method, source revision or image version, operating system, GPU, video memory, selected models, and available disk space. If your installation uses Docker, save:
docker compose ps
docker compose images
docker version
For a local Git checkout, also save:
git rev-parse HEAD
git status --short
Do not update the application, drivers, model files, or generation parameters halfway through the experiment. If a change is required, end the current run and create another run identifier.
run_id: run-001
date: YYYY-MM-DD
waoowaoo_version: fill_in
install_method: fill_in
operating_system: fill_in
gpu: fill_in
vram_gb: fill_in
image_model: fill_in
video_model: fill_in
voice_model: fill_in
width: 1280
height: 720
fps: 24
target_duration_sec: 40
notes: first controlled run
This manifest is a laboratory record, not a claimed waoowaoo import format. Copy values into the controls that actually exist in your installed version. If a field is unavailable, write not_exposed rather than guessing.
3. Create the reference scene breakdown
Split the story manually before asking the platform to interpret it. The manual version becomes the reference against which automatic script decomposition can be checked.
| ID | Duration | Shot | Action | Sound |
|---|---|---|---|---|
| S01 | 5 s | Wide | Lena turns off the workshop light and locks the door | Rain and lock click |
| S02 | 6 s | Medium | Lena notices the robot holding the box | Rain, footsteps, quiet servo |
| S03 | 7 s | Two-shot | The robot explains the delivery problem | Robot line |
| S04 | 6 s | Close-up | Lena recognizes the workshop emblem on the box | Quieter rain and a pause |
| S05 | 8 s | Interior medium | The box opens and the satellite model lights up | Cardboard movement and soft electronic tone |
| S06 | 6 s | Close-up on Lena | Lena smiles and speaks the final line | Lena’s line and rain outside |
The scene durations total 38 seconds. Transitions and pauses may change the final duration, so accept 35–45 seconds for this test.
4. Build consistent scene instructions
Construct each prompt from four blocks: persistent style, unchanged character sheet, current scene state, and one specific camera or subject movement. Do not paraphrase permanent facts differently in every scene.
PERSISTENT STYLE
Cinematic near-future science fiction.
Realistic materials, restrained colors, calm pacing.
Aspect ratio 16:9. Rainy evening.
No captions, logos, or text inside the image.
SCENE S02
Outside a small workshop.
Lena wears a dark green work jacket and gray scarf.
She turns toward one short matte-white courier robot
with orange inserts. The robot holds one dented cardboard
box in both hands. Medium shot, slow camera push-in.
Cool street light and wet asphalt.
If the installed version provides a negative prompt, start with a short list of observable defects:
extra characters, extra arms, duplicated box, changed clothing,
text in frame, logo, violent camera shake, distorted face,
sudden lighting change
Avoid a long list of abstract prohibitions. It makes failures harder to diagnose and may contradict the positive description.
5. Approve the storyboard before generating video
Create one key frame for each scene. Do not spend time animating a frame whose composition or continuity is already wrong.
- Save candidates as
S01_v01.pngthroughS06_v01.png. - Place all six frames in story order.
- Check clothing, faces, robot geometry, box ownership, lighting, and gaze direction.
- Describe rejected frames with observable facts, such as “two boxes,” rather than “looks strange.”
- Regenerate only the rejected frame.
If the platform exposes a generation seed, record it beside every frame. A matching seed does not guarantee an identical result after a model or parameter change, but it improves reproducibility within an unchanged environment.
| Scene | Version | Seed | Accepted | Rejection reason |
| S01 | v01 | ... | yes | — |
| S02 | v01 | ... | no | two boxes |
| S02 | v02 | ... | yes | — |
Continuity gate
Do not proceed until you can answer “yes” to these questions:
- Does Lena look like the same person in every scene?
- Does the robot retain the same head shape and orange inserts?
- Is there exactly one box, of the same size, held by the correct character?
- Is the move from the street into the workshop understandable?
- Does the satellite appear only after the box opens?
Animation usually amplifies a key-frame problem rather than concealing it.
6. Generate short clips independently
Use image-to-video when the installed version supports it: the approved frame then becomes the visual anchor for the scene. If only text-to-video is available, reuse the same character sheets, style block, references, and recorded parameters.
Start with restrained movement. Fast camera turns, multiple gestures, and detailed hand interactions increase the number of variables that can fail.
| Scene | Main movement | Must remain stable |
|---|---|---|
| S01 | Lena turns the key; the light goes out | Door, clothing, hands |
| S02 | Slow camera push-in | Robot and box |
| S03 | Small robot head movement | Box position |
| S04 | Lena touches the emblem | Hand, emblem, box shape |
| S05 | Lid opens; satellite light turns on | Table, satellite, hands |
| S06 | Lena gives a slight smile | Face, glasses, background |
Preserve every source clip. Do not overwrite S04_v01.mp4; save the next attempt as S04_v02.mp4. Versioned assets show how many attempts were required and whether a parameter change actually helped.
7. Generate the voice tracks
The test contains two lines:
S03, ROBOT:
"The recipient address is missing. Delivery cannot be completed."
S06, LENA:
"So you found your way after all."
Generate clean voice files before adding music or effects. Save them as S03_robot_v01.wav and S06_lena_v01.wav. Use the same sample rate for both tracks when the voice component permits it, and record the actual value instead of assuming one.
Check each file for:
- a clipped first or last syllable;
- unexpected pronunciation or emphasis;
- a duration longer than the assigned scene;
- a voice that changes within one line;
- unwanted silence before or after speech.
If lip synchronization is available, first export a version without it. Then apply it only to S06 and compare the face before and after. This separates video-generation defects from lip-sync artifacts.
8. Assemble the edit
If waoowaoo has a working timeline, arrange S01–S06, add the two voice tracks, verify scene durations, and export one control version. Avoid using elaborate transitions to hide continuity defects.
If built-in assembly is unavailable or unstable, normalize the intermediate clips with FFmpeg. This command shows a neutral fallback for one clip:
ffmpeg -i clips/S01_v01.mp4 \
-vf "scale=1280:720,fps=24,format=yuv420p" \
-an -c:v libx264 -crf 20 -preset medium \
clips/S01_normalized.mp4
Create clips/clips.txt:
file 'S01_normalized.mp4'
file 'S02_normalized.mp4'
file 'S03_normalized.mp4'
file 'S04_normalized.mp4'
file 'S05_normalized.mp4'
file 'S06_normalized.mp4'
Concatenate the normalized clips:
ffmpeg -f concat -safe 0 -i clips/clips.txt \
-c copy export/video_without_audio.mp4
If concatenation fails, compare the codec, dimensions, frame rate, pixel format, and time base of every clip. Identify the mismatched file before re-encoding the whole project.
Once you have prepared a final audio mix of the correct duration, attach it:
ffmpeg -i export/video_without_audio.mp4 \
-i audio/final_mix.wav \
-c:v copy -c:a aac -b:a 192k -shortest \
export/last_delivery_run-001.mp4
These commands are an external assembly option, not a description of waoowaoo’s internal implementation.
9. Verify the exported file technically
Do more than open the video in one player. Inspect its streams with ffprobe:
ffprobe -v error \
-show_entries format=duration,size:stream=index,codec_type,codec_name,width,height,r_frame_rate,sample_rate,channels \
-of json \
export/last_delivery_run-001.mp4
The JSON output should show both a video stream and an audio stream. Record the measured duration, file size, dimensions, frame rate, video codec, audio codec, sample rate, and channel count.
Run a decoding check:
ffmpeg -v error \
-i export/last_delivery_run-001.mp4 \
-f null -
An empty error output after successful completion means FFmpeg did not detect a decoding problem. It does not prove that the narrative, visuals, or voice are correct.
10. Perform three separate review passes
Pass one: story only
Watch without pausing. Then summarize the story in one sentence. If you cannot explain why Lena returns to the workshop or where the satellite came from, the structure failed.
Pass two: picture without sound
Mute the video and inspect character identity, actions, lighting, and props. Record every defect with a timecode:
00:08 — robot head changes shape
00:17 — box disappears for one frame
00:25 — Lena's jacket changes from green to blue
Pass three: sound without picture
Hide the screen or look away. Both lines should remain intelligible, pauses should sound intentional, and voice levels should be comparable. Record whether a line starts too early, ends too late, or is assigned to the wrong scene.
Control experiment: replace one scene
Regenerate S04 while changing exactly one condition: instead of touching the emblem, Lena wipes a drop of rain from it. Keep the model, character references, style, dimensions, and every other parameter unchanged.
The replacement test passes when:
- S01–S03 and S05–S06 do not need to be generated again;
- the replacement preserves both characters and the box;
- other scenes retain their voice tracks;
- the new export uses the same technical format;
- the log identifies the changed prompt, parameters, and asset files.
Rebuilding the final media container is acceptable. Re-running every expensive generative stage is a separate limitation and should be recorded.
Record results, attempts, and failures
Observability matters in a local experiment too. Complete the table after each operation. Do not prefill it with expected results.
| Stage | Input | Expected output | Measured time | Status | Observed issue |
|---|---|---|---|---|---|
| Script analysis | script.txt |
Six ordered scenes | Fill in | Fill in | What was omitted or added? |
| Storyboard | Six descriptions | Six accepted frames | Fill in | Fill in | How many attempts were rejected? |
| Video | Six frames or prompts | Six clips | Fill in | Fill in | Which movements failed? |
| Voice | Two lines | Two WAV files | Fill in | Fill in | Pronunciation, pauses, or clipping |
| Export | Clips and audio | One MP4 | Fill in | Fill in | Format and assembly errors |
| S04 replacement | One changed action | Revised MP4 | Fill in | Fill in | Which stages were recalculated? |
Also count rejected variants per accepted scene:
retry_rate = rejected_variants / accepted_scenes
The formula is a logging method, not a claimed result. Populate it only with counts from your run.
Common failure cases and how to isolate them
The result is a collection of unrelated illustrations
Each scene probably received an independent visual description without an explicit world state. Add input and output states: who holds the box at the beginning, where each character is at the end, and what must carry into the next scene.
A character changes between scenes
Confirm that the same character sheet, reference, model, and settings were used. Remove contradictions before adding more adjectives. “Short hair” in one prompt and “hair flowing in the wind” in another can destabilize identity.
Extra characters or duplicate objects appear
Simplify the composition and state exact counts: one Lena, one robot, one box. If the problem repeats, divide the action into two shots rather than forcing several interactions into one generation.
Hands break during contact with the box
Reduce the movement, use a wider shot, or move the moment of contact behind a cut. This test does not require one generated shot to solve a difficult finger manipulation perfectly.
A spoken line is longer than its scene
Shorten the line or adjust delivery within acceptable limits. Do not stretch the video automatically until you know that its motion remains stable at the longer duration.
The voice is present but mouth movement is wrong
Decide whether visible articulation is part of this baseline. A robot without a visible mouth avoids a false requirement in S03. Evaluate lip synchronization separately if it is a specific target.
Changing one scene restarts the entire project
Determine whether the application is only rebuilding the final container or regenerating frames, video, and voice. Full generative recomputation indicates weak caching or overly broad stage dependencies.
Generation stops because of GPU memory
Record the exact stage and system error. Reduce one variable at a time: dimensions, clip duration, or frames per request. Close other GPU workloads and run scenes sequentially. Do not label memory pressure as the cause without observing it.
The file exists but does not play
Inspect its size, streams, duration, codecs, and container with ffprobe. A zero-size file or missing duration usually indicates an incomplete export rather than a player problem.
Early-version limitations to investigate
The following list is a risk checklist, not a claim that every waoowaoo installation has these defects. Include an item in your final limitations report only if you observe it, reproduce it, and preserve the relevant settings or error output.
- Unstable character identity. Text alone may not preserve faces, clothing, proportions, or robot geometry between scenes.
- Weak prop continuity. The box, badge, or light source may disappear, duplicate, or change shape.
- Limited motion control. A slow camera move may work more reliably than a precise sequence of gestures.
- Model dependence. Changing a model checkpoint may alter style and identity even when the text remains unchanged.
- Expensive iteration in time. An accepted scene may require several candidates, making retry counts essential.
- Uneven speech quality. Names, abbreviations, pauses, and emphasis require direct listening checks.
- Duration mismatch. Generated video, speech, transitions, and timeline slots may use incompatible durations.
- Opaque recomputation. The interface may not reveal which assets came from cache and which were generated again.
- Limited reproducibility. Prompts are insufficient when versions, references, seeds, and parameters are missing.
- Fragile recovery. An interrupted job may leave a partial asset or require a scene to restart.
- Preview/export differences. Frame rate, color, audio, or duration may change during final export.
- Manual finishing remains necessary. A working pipeline still requires selection, editing decisions, voice review, and final quality control.
Separate platform limitations from test errors
| Observation | Control check | Interpretation |
|---|---|---|
| Lena’s face changed | Repeat with the same reference, model, and parameters | Call it a limitation only if it repeats |
| The box disappeared | Simplify motion without changing composition | Separate motion complexity from prop retention |
| The export has no sound | Check the source WAV and exported streams | Distinguish generation, timeline, and container failures |
| The GPU job failed | Record memory use and retry at a lower resolution | Separate hardware limits from project logic |
| A repeated frame looks different | Compare model version, reference, seed, and all settings | Exclude environment drift first |
Minimum deliverable after 90 minutes
Your test directory should contain:
- the unchanged source script;
- character sheets for Lena and the robot;
- the six-scene reference table;
- six accepted storyboard frames;
- source clips and their selected versions;
- two clean voice tracks;
- the final MP4, if export completed;
- the technical inspection output;
- a log of timings, retries, settings, and failures;
- a list containing only reproduced limitations;
- a second export or project version containing the replacement S04.
A failed final export can still produce a useful experiment if you identify the exact failing stage, preserve its inputs, and document how to repeat it. “The platform does not work” is not a useful conclusion without a version, parameters, and a reproducible failure.
Assign the final status
- Passed. The story is coherent, characters remain recognizable, audio is present, and one scene can be replaced.
- Passed with limitations. The video can be assembled but needs manual selection, external editing, or regeneration of individual scenes.
- Failed. A final playable file cannot be produced, or continuity errors change the story’s meaning.
- Invalid test. The environment changed during the run, settings were lost, or a hardware failure prevented evaluation of the main pipeline.
Preserve the last working configuration so that a rollback remains possible. Then turn the six scenes into a small benchmark: rerun the same story after a code or model update and compare processing time, retries, accepted scenes, and continuity violations.
A useful local AI video pipeline is not one that creates an impressive clip once. It is one whose output can be inspected, corrected, reproduced, and compared.