Lead with the full 48s cut: intro + roll call + topic segment
This commit is contained in:
parent
838f86f744
commit
722eebbe98
1 changed files with 36 additions and 33 deletions
69
index.html
69
index.html
|
|
@ -31,10 +31,11 @@
|
||||||
.player{width:100%;aspect-ratio:9/16;border-radius:14px;border:1px solid var(--line);
|
.player{width:100%;aspect-ratio:9/16;border-radius:14px;border:1px solid var(--line);
|
||||||
background:#000;display:block}
|
background:#000;display:block}
|
||||||
.cap{font:12.5px/1.6 var(--mono);color:var(--muted);margin-top:12px}
|
.cap{font:12.5px/1.6 var(--mono);color:var(--muted);margin-top:12px}
|
||||||
.cast{list-style:none;padding:0;margin:0 0 22px}
|
.run{list-style:none;padding:0;margin:0 0 22px}
|
||||||
.cast li{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:15px}
|
.run li{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}
|
||||||
.cast b{min-width:112px;color:var(--ink)}
|
.run b{min-width:64px;color:var(--accent2);font-family:var(--mono);font-size:13px}
|
||||||
.cast span{color:var(--muted)}
|
.run span{color:var(--muted)}
|
||||||
|
.run i{color:var(--ink);font-style:normal;font-weight:600}
|
||||||
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
|
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
|
||||||
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px}
|
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px}
|
||||||
.card .n{font:600 12px/1 var(--mono);color:var(--accent);letter-spacing:.1em;display:block;margin-bottom:10px}
|
.card .n{font:600 12px/1 var(--mono);color:var(--accent);letter-spacing:.1em;display:block;margin-bottom:10px}
|
||||||
|
|
@ -61,24 +62,23 @@
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2>Dog-In Podcast — the full cut</h2>
|
<h2>Dog-In Podcast — full cut</h2>
|
||||||
<div class="demo">
|
<div class="demo">
|
||||||
<div>
|
<div>
|
||||||
<video class="player" controls playsinline preload="metadata"
|
<video class="player" controls playsinline preload="metadata"
|
||||||
src="https://api.corben.world/files/68fdcece-135d-416d-97df-a53da2a3c929/public">
|
src="https://api.corben.world/files/732f9f06-f7f9-47c7-86ec-3b15ccc70059/public">
|
||||||
Your browser cannot play this video.
|
Your browser cannot play this video.
|
||||||
</video>
|
</video>
|
||||||
<p class="cap">720×1280 · 32s · h264 + AAC · 13 MB</p>
|
<p class="cap">720×1280 · 48s · h264 + AAC · 19 MB</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h3>Four dogs, one argument</h3>
|
<h3>Three segments, ten generated clips</h3>
|
||||||
<p style="color:var(--muted);margin:0 0 20px">Everyone stays on screen the whole time, like a real call. Each dog has two takes — a speaking one and an idle one — and only shows the speaking take during their own slot. The rest of the time they are listening, blinking, tilting their head, scratching an ear or yawning. The live tile carries a lit border.</p>
|
<ul class="run">
|
||||||
<ul class="cast">
|
<li><b>0–8s</b><span><i>Cold open.</i> Butcher alone, full frame.</span></li>
|
||||||
<li><b>Butcher</b><span>overclaims the market</span></li>
|
<li><b>8–16s</b><span><i>Roll call.</i> The grid assembles; three listen while one talks.</span></li>
|
||||||
<li><b>The Golden</b><span>reframes it as displacement</span></li>
|
<li><b>16–48s</b><span><i>The topic.</i> Each dog takes a turn on the same argument.</span></li>
|
||||||
<li><b>Marshall</b><span>the bleak second-order note</span></li>
|
|
||||||
<li><b>Moose</b><span>disputes the number</span></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
<p style="color:var(--muted);margin:0">The first two segments are fixed furniture — they carry over to every episode untouched. Only the third is written fresh, so a new short costs four generations rather than ten.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
@ -88,18 +88,16 @@
|
||||||
<div class="demo">
|
<div class="demo">
|
||||||
<div>
|
<div>
|
||||||
<video class="player" controls playsinline preload="metadata"
|
<video class="player" controls playsinline preload="metadata"
|
||||||
src="https://api.corben.world/files/be1d916a-9fbf-4460-abf9-5497b470d63e/public">
|
src="https://api.corben.world/files/be1d916a-9fbf-4460-abf9-5497b470d63e/public"></video>
|
||||||
</video>
|
<p class="cap">speaking · 8s</p>
|
||||||
<p class="cap">speaking · 8s · $0.40</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<video class="player" controls playsinline preload="metadata" style="max-width:330px"
|
<video class="player" controls playsinline preload="metadata" style="max-width:330px"
|
||||||
src="https://api.corben.world/files/3f7a93c8-d20e-4aec-a8f9-a3b35b538bf9/public">
|
src="https://api.corben.world/files/3f7a93c8-d20e-4aec-a8f9-a3b35b538bf9/public"></video>
|
||||||
</video>
|
<p class="cap">idle B-roll · 8s · reused every episode</p>
|
||||||
<p class="cap">idle B-roll · 8s · reusable forever</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p style="color:var(--muted);max-width:66ch;margin:26px 0 0">The idle take is seeded from the <em>last frame</em> of the speaking take, which locks the same dog, room, lighting and framing — not merely a similar-looking room. Idle clips are generated once per character and reused in every future episode, so they are capex rather than per-episode cost.</p>
|
<p style="color:var(--muted);max-width:66ch;margin:26px 0 0">The idle take is seeded from the <em>last frame</em> of the speaking take, which locks the same dog, room, lighting and framing — not merely a similar-looking room. Without it the listeners stare blankly; with it they blink, tilt, scratch and yawn, and the grid reads as a real call.</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
@ -108,7 +106,7 @@
|
||||||
<div class="card"><span class="n">01</span><h3>The photo</h3><p>Breed, coat colour and markings are described in words. Naming the breed explicitly carries the likeness further than image resolution does.</p></div>
|
<div class="card"><span class="n">01</span><h3>The photo</h3><p>Breed, coat colour and markings are described in words. Naming the breed explicitly carries the likeness further than image resolution does.</p></div>
|
||||||
<div class="card"><span class="n">02</span><h3>The topic</h3><p>A real discussion — a thread, a podcast clip, an argument. The claim being made is preserved; only the stakes change.</p></div>
|
<div class="card"><span class="n">02</span><h3>The topic</h3><p>A real discussion — a thread, a podcast clip, an argument. The claim being made is preserved; only the stakes change.</p></div>
|
||||||
<div class="card"><span class="n">03</span><h3>Director notes</h3><p>The owner supplies the attitude. Loud and self-important, or flat and unimpressed. This is what makes it sound like <em>their</em> pet.</p></div>
|
<div class="card"><span class="n">03</span><h3>Director notes</h3><p>The owner supplies the attitude. Loud and self-important, or flat and unimpressed. This is what makes it sound like <em>their</em> pet.</p></div>
|
||||||
<div class="card"><span class="n">04</span><h3>The render</h3><p>Each character is generated alone, twice — speaking and idle — then the four are composited into one grid with captions and branding.</p></div>
|
<div class="card"><span class="n">04</span><h3>The render</h3><p>Each character is generated alone, twice — speaking and idle — then composited into one grid with captions and branding.</p></div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
@ -116,26 +114,31 @@
|
||||||
<h2>Notes from the build</h2>
|
<h2>Notes from the build</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>Native generation beats lip-sync retrofitting.</b> Post-hoc lip-sync tools are trained on human faces and track landmarks a muzzle does not have. Generating the animal already talking sidesteps the problem — the single most important finding so far.</li>
|
<li><b>Native generation beats lip-sync retrofitting.</b> Post-hoc lip-sync tools are trained on human faces and track landmarks a muzzle does not have. Generating the animal already talking sidesteps the problem — the single most important finding so far.</li>
|
||||||
<li><b>Composite, do not ask for a crowd.</b> Prompting one model for four characters on a call rendered the same dog in every panel. Four separate generations tiled in post gives four genuinely distinct dogs and exact control over who speaks when.</li>
|
<li><b>Composite, do not ask for a crowd.</b> Prompting one model for four characters on a call rendered the same dog in every panel. Four separate generations tiled in post gives four distinct dogs and exact control over who speaks when.</li>
|
||||||
<li><b>Seed continuity from the last frame.</b> Growing the idle take out of the speaking take’s final frame guarantees an exact match. A shared background reference cannot do that, because it does not lock the animal.</li>
|
<li><b>Names belong in captions, not dialogue.</b> The model refuses to speak real people’s names outright. Drawing them into the caption layer is reliable, unrestricted, and free to change — and puts more of the joke on screen than the spoken version managed.</li>
|
||||||
<li><b>Every line is verified, not assumed.</b> Generated audio is transcribed back with Whisper and checked against the script before a clip is accepted. This caught a take where one character had absorbed another’s line.</li>
|
<li><b>Seed continuity from the last frame.</b> Growing the idle take out of the speaking take’s final frame guarantees an exact match. A shared background reference cannot, because it does not lock the animal.</li>
|
||||||
<li><b>Each shot gets a clean context.</b> Generating several clips in one conversation caused dialogue to bleed between characters.</li>
|
<li><b>Every line is transcribed back and checked.</b> This caught a take where one character had absorbed another’s line, and two takes where a list of names came out as mush.</li>
|
||||||
<li><b>Video needs remuxing before it will play in a page.</b> Model output puts the <span class="k">moov</span> index at the end of the file, so a browser shows a blank player until the whole thing downloads. A lossless faststart pass moves it to the front.</li>
|
<li><b>Do not write stage directions the model can read aloud.</b> Dashes added to force pauses were spoken as filler words. Punctuation is not direction.</li>
|
||||||
<li><b>Captions are burned in afterwards, not generated.</b> Video models render text unreliably; an overlay pass gives identical typography across every clip and costs nothing to restyle.</li>
|
<li><b>Remux before publishing.</b> Model output puts the <span class="k">moov</span> index at the end of the file, so a browser shows a blank player until the whole thing downloads. A lossless faststart pass moves it to the front.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h2>What it costs</h2>
|
<h2>What it costs</h2>
|
||||||
<table style="max-width:520px">
|
<table style="max-width:540px">
|
||||||
<tr><th>Model</th><td><span class="k">veo-3.1-lite</span>, 720p, native audio</td></tr>
|
<tr><th>Model</th><td><span class="k">veo-3.1-lite</span>, 720p, native audio</td></tr>
|
||||||
<tr><th>Speaking clip</th><td>$0.40 per 8s</td></tr>
|
<tr><th>Any 8s clip</th><td>$0.40</td></tr>
|
||||||
<tr><th>Idle B-roll</th><td>$0.40 per 8s — once per character, then reused</td></tr>
|
<tr><th>Generation time</th><td>41–62 seconds</td></tr>
|
||||||
<tr><th>A four-dog short</th><td>$1.60 recurring, after a one-off $1.60 idle library</td></tr>
|
<tr><th>This 48s short, from nothing</th><td>$4.00 — ten clips</td></tr>
|
||||||
<tr><th>Generation time</th><td>41–62 seconds per clip</td></tr>
|
<tr><th>Each additional episode</th><td>$1.60 — four new lines; intro, cast and idles are reused</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Still rough</h2>
|
||||||
|
<p class="note">Honest state of play. Coined words give the model trouble — “okayest” lands somewhere between okayest and okay-us. Dense lists of proper nouns need splitting across takes rather than crammed into eight seconds. And every clip is a fresh roll of the dice: coat colour drifted tan-heavy on one early take and had to be regenerated.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<p>PayToLaugh · an experiment in short-form pet commentary. All video on this page is AI-generated. Parody.</p>
|
<p>PayToLaugh · an experiment in short-form pet commentary. All video on this page is AI-generated. Parody.</p>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue