Verification records¶
These point-in-time measurements support release checks and implementation decisions. They describe the tested environment and are not performance guarantees for other hardware, inputs, or dependency versions.
For the interfaces covered by the AI checks, see AI generation, AI understanding, and Dubbing. For the design decision supported by the effects profile, see The streaming engine.
MCP workflow verification¶
The stdio workflow passed on 2026-09-06 at commit
8af4f71754a0d16859475093dcdfea8d31fe2b72, using Python 3.13.5 on a 16 GB M1 Mac
mini with macOS 14.8.9 and Ollama 0.33.3. It used the representative Polish clip from
the AI check and the locally available gemma3:12b caption model.
| MCP call | Elapsed | Result |
|---|---|---|
analyze_video |
140.224 s | One scene; speech, scene detection, captioning, and face tracking completed |
build_catalog |
2.337 s | One scene with a caption, Polish transcript, speech flag, and face flag |
validate_edit |
0.039 s | The one-scene plan was valid with no errors |
run_edit |
10.350 s | 60.08-second 1280×720 H.264/AAC MP4 with 1,502 frames |
The full session took 154.153 seconds. Manual review confirmed the caption and rendered shot; FFmpeg decoded both output streams without an error. Audio classification was disabled and reported as such.
The model files were present before the measured run. Reproduce it with the real stdio client and server harness:
OLLAMA_HOST=127.0.0.1:11434 uv run python scripts/verify_mcp_workflow.py \
--source verification-input/cam1_1min.mp4 \
--workdir verify-results/mcp-gemma3-12b \
--vision-model gemma3:12b
AI model verification¶
The real-model harness in scripts/verify_ai_models.py passed with public defaults on
2026-09-06. It used library commit
3023da1ffc20254abd91c4f8b3005925f0ca4e19 and a representative 60.08-second Polish
clip. The input was 1280×720 H.264 video with AAC audio. Its SHA-256 was
4a258bf9eb50a120485399a60768479bec8b72fae2e98de21361c751eff350f0.
The environment used Python 3.12.3, an NVIDIA RTX PRO 6000 Blackwell Workstation Edition with 97,887 MiB VRAM and compute capability 12.0, driver 595.71.05, PyTorch 2.13.0+cu130, Diffusers 0.39.0, Transformers 5.14.1, Safetensors 0.8.0, Ollama server 0.33.3, and Ollama Python client 0.6.2.
CPU diarization reconstruction comparison¶
On 2026-09-07, pyannote's original reconstruction and the 0.60.1 implementation at
commit 1ae2b789c5c91e64bd419614208c3ab578ec7163 ran against the same 60.024-second
audio and 121 timed words on an M1 CPU.
| Original | 0.60.1 |
|
|---|---|---|
| Reconstruction workspace | 478.6 KiB (float64) |
239.3 KiB (float32) |
| Wall time | 43.708 s | 42.347 s |
| Process peak RSS | 3,036.9 MB | 3,049.3 MB |
Both runs produced the same two speakers, four segments, and word labels. The exact workspace is 50% smaller. Process RSS is model-dominated at this input length.
Environment: macOS 14.8.9, Python 3.13.5, pyannote-audio 4.0.7, PyTorch 2.13.0,
NumPy 2.4.6. Input SHA-256:
472540f20091958d5283f26701927e0cf0ea193f35c4d5a3e70ac0ae905d8d66.
Default-setting results and timings¶
| # | Check | Elapsed | Result | Semantic evidence |
|---|---|---|---|---|
| 1 | env — Environment and package versions |
1.109 s | PASS | PyTorch 2.13.0, RTX PRO 6000 Blackwell |
| 2 | imports — Public AI entrypoints resolve |
0.328 s | PASS | 38/38 entrypoints |
| 3 | ollama — Schema-constrained output |
75.632 s | PASS | qwen3.6:27b returned a valid Spanish translation |
| 4 | t2i — Prompt conditions image output |
200.657 s | PASS | Same-seed cross-prompt correlation 0.067 |
| 5 | t2v — Video renders and moves |
2,112.681 s | PASS | 81 frames, 97.1% of pixels moved |
| 6 | i2v — Input conditions frame 0 |
691.838 s | PASS | Input correlation 0.992, 91.2% of pixels moved |
| 7 | tts — Speech is intelligible |
40.995 s | PASS | Round-trip word overlap 91%; cloned sample also written |
| 8 | separation — Voice reaches vocals stem |
10.795 s | PASS | Vocals correlation 0.990 with voice, -0.146 with music |
| 9 | music — Output is audible and conditioned |
9.863 s | PASS | Peak 0.334, cross-prompt envelope correlation -0.214 |
| 10 | detect — Known objects are detected |
2.815 s | PASS | Five objects: cat, remote, sofa |
| 11 | dub — Full Polish-to-Spanish dub |
73.272 s | PASS | 17/17 translated; cloned voice; worst truncation 1.760 seconds |
The complete run took 3,219.985 seconds. Text-to-image generated two 50-step
1328×1328 images. Text-to-video generated 81 frames at 1280×720 and 16 fps with 40
steps. Image-to-video generated 81 frames at 832×480 and 16 fps with 40 steps. The
default dub used voice cloning without speaker diarization and grouped segments under
one speaker_0 clone.
Manual review confirmed that both images matched their prompts. The text-to-video clip kept a coherent mountain-lake scene while mist and water moved. The image-to-video clip kept the bicycle from its source image while a camera push moved it partly out of frame.
Reproduction¶
Run the harness once to populate model caches, then again from a fresh process into a new output directory. The reported time includes cached model loading, inference, output writing, semantic validation, and weight cleanup.
uv sync --all-extras --group ai --frozen
HF_HOME=/workspace/.hf_home TOKENIZERS_PARALLELISM=false OLLAMA_HOST=127.0.0.1:11434 \
uv run python scripts/verify_ai_models.py \
--all \
--video verification-input/cam1_1min.mp4 \
--workdir verify-results/measured
Dubbing synchronization threshold¶
Speech synthesis is nondeterministic. Four earlier A100 runs with the same one-minute input established the failure limit.
| Run | Truncated segments | Mean speed factor | Worst truncation |
|---|---|---|---|
| Baseline 1 | 9/17 | 1.072 | 2.460 s |
| Baseline 2 | 8/17 | 1.054 | 1.680 s |
| Baseline 3 | 10/17 | 1.085 | 2.000 s |
| Complete model run | 7/17 | 1.102 | 2.400 s |
The dub verification fails if the timing summary is missing or if one segment loses more than 3.0 seconds during synchronization.
4K effects performance¶
This profile measures median processing time for one warmed 3840×2160 frame on an Apple M1. Each result is the median of seven samples, repeated in three independent runs. Effects use their defaults except for an active animation frame and a representative non-default strength or geometry where the default would not exercise the effect.
The non-default inputs were a 0.6-alpha full overlay, five blur iterations, 1.5× zoom,
color_adjust at 0.1 brightness/temperature and 1.1 contrast/1.2 saturation, a
full-to-80% Ken Burns crop, a 0.15-scale/0.8-opacity image overlay, 12-pixel shake, 1.4×
punch-in, 6-pixel chromatic shift, and 16-pixel blocks. flash used its active peak and
fade its midpoint.
| Effect | ms/frame |
|---|---|
full_image_overlay |
41.11 |
blur_effect |
4.98 |
zoom_effect |
3.98 |
color_adjust |
16.17 |
vignette |
6.35 |
ken_burns |
4.25 |
fade |
29.14 |
image_overlay |
2.30 |
shake |
5.41 |
punch_in |
3.63 |
flash |
106.20 |
chromatic_aberration |
19.62 |
glitch |
18.00 |
film_grain |
11.62 |
sharpen |
8.78 |
pixelate |
3.28 |
mirror_flip |
3.26 |
kaleidoscope |
5.86 |
The reference libx264 encode took 34.3 ms/frame on the same machine. The active
flash peak, full-frame overlay, and some effect combinations can therefore become the
bottleneck at 4K. Per-frame costs remained additive: color_adjust + vignette +
film_grain took 34.22 ms/frame, compared with 34.13 ms/frame for the sum of their
individual measurements.
An end-to-end one-second run_to_file cross-check, including decode and libx264
medium/CRF 23 encode, took 44.3 ms/frame with no operations and 324.8 ms/frame for that
three-effect plan. Its incremental cost was 1.03× the sum of the three individual plan
increments, so the scheduler did not materially compound framewise overhead. These
wall-clock results include content-dependent encoding work; grain makes frames harder
to compress, which is why its end-to-end cost is much larger than its isolated pixel
cost.
FilmGrain kept a 51.95 MiB padded noise pool at 4K. Its offset table for 60 frames was
960 bytes, and initialization peaked at 69.27 MiB of traced Python memory. These
measurements used macOS 14.0, Python 3.13.5, NumPy 2.4.6, and OpenCV 5.0.0.