Skip to content

fix(cut-paper): lipsync Hocus de Tijeral con las voces Qwen - #407

Merged
IAnMove merged 5 commits into
developmentfrom
fix/tijeral-hocus-lipsync-20260912
Sep 12, 2026
Merged

fix(cut-paper): lipsync Hocus de Tijeral con las voces Qwen#407
IAnMove merged 5 commits into
developmentfrom
fix/tijeral-hocus-lipsync-20260912

Conversation

@IAnMove

@IAnMove IAnMove commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Las bocas de Tijeral empezaban a hablar antes de la primera palabra y el ritmo de letras no seguía bien las voces Qwen. Los planos ahora usan intervalos del análisis de audio de Hocus, con la boca cerrada en las pausas y un visema por palabra.

Incluye íntegramente #408. La revisión añade ordenación y límites de tiempo para los intervalos editados, evita extender palabras cortas dentro del silencio y conserva la primera palabra en t=0 cuando el personaje vuelve a hablar después de otro. Un análisis vacío o fuera de la escena no sustituye las bocas existentes. Los planos ingleses usan sus propias voces y tiempos; Story Lab conserva el idioma español de su capítulo predeterminado.

Validación: suite completa de UI en GitHub Actions (1727 pruebas); en local, 26 pruebas dirigidas del código final, lint, tipos, build, traducciones, presupuesto de bundle, guard de repositorio y ratchet contra 60e867a6. Los diez WAV originales coinciden con las duraciones declaradas, con tolerancia de redondeo de 1 ms. Regenerar los JSON públicos desde el compilador no produce cambios adicionales. No se ha rehecho ni escuchado una exportación de Tijeral durante esta revisión.

La base anterior provocaba el fallo de complejidad al comparar también cambios ya integrados por #404. Actualizada con development; el ratchet pasa sin cambiar presupuestos ni baselines. HEAD validado: e72c493436797b347702f29fc3573c2255f7f01b. Todas las GitHub Actions correctas, incluido CI required, E2E Chromium y speech Windows: CI del HEAD. Las dos automatizaciones de Cursor finalizaron correctamente; el check formal opcional Independent QA permanece neutral, no certificado. Preparado para integrar en development; no mezclado en development.

Visemes follow word times from POST /api/v1/audio/analyze on the Qwen
WAVs (aligned-audio), then Video 2.5D Export MP4 mixes those tracks.
Mouths no longer hold open for the old 6–10 s script slots.
@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

PR Review — Loreframe Studio

Risk: medium
Scope: 20 file(s); +10472/-11794; React UI

Automated review from scripts/analyze_pr.py. This is a heuristic pass (no LLM) so humans still own the merge decision.

Findings

  • medium — Large pull request
    10472 additions / 11794 deletions. Reviewers will have an easier time with smaller, focused PRs.
  • medium — Very large file change (ui/public/examples/cut-paper/shots/02-talk.maestro-scene.json)
    ui/public/examples/cut-paper/shots/02-talk.maestro-scene.json adds 939 lines. Consider splitting the PR.
  • medium — Very large file change (ui/public/examples/cut-paper/shots/en/02-talk.maestro-scene.json)
    ui/public/examples/cut-paper/shots/en/02-talk.maestro-scene.json adds 2763 lines. Consider splitting the PR.
  • medium — Very large file change (ui/public/examples/cut-paper/shots/en/03-sticker.maestro-scene.json)
    ui/public/examples/cut-paper/shots/en/03-sticker.maestro-scene.json adds 1477 lines. Consider splitting the PR.
  • medium — Very large file change (ui/public/examples/cut-paper/shots/en/tijeral-la-fuente.maestro-scene.json)
    ui/public/examples/cut-paper/shots/en/tijeral-la-fuente.maestro-scene.json adds 3287 lines. Consider splitting the PR.
  • medium — Very large file change (ui/public/examples/cut-paper/tijeral-la-fuente.maestro-scene.json)
    ui/public/examples/cut-paper/tijeral-la-fuente.maestro-scene.json adds 1252 lines. Consider splitting the PR.
  • low — UI changed — rebuild before merge
    Run cd ui && npm run build (CI already does this). Pinokio Update rebuilds for end users; keep ui/dist untracked.

Changed files

  • added: ui/public/examples/cut-paper/script.en.txt, ui/public/examples/cut-paper/shots/en/01-plaza.maestro-scene.json, ui/public/examples/cut-paper/shots/en/02-talk.maestro-scene.json, ui/public/examples/cut-paper/shots/en/03-sticker.maestro-scene.json, ui/public/examples/cut-paper/shots/en/tijeral-la-fuente.maestro-scene.json, ui/src/features/cutPaper/voiceAlign.ts
  • modified: ui/public/examples/cut-paper/HOWTO.md, ui/public/examples/cut-paper/PROVENANCE.md, ui/public/examples/cut-paper/shots/02-talk.maestro-scene.json, ui/public/examples/cut-paper/shots/03-sticker.maestro-scene.json, ui/public/examples/cut-paper/tijeral-la-fuente.maestro-scene.json, ui/scripts/export_cut_paper_hocus.mjs, ui/scripts/write-cut-paper-scene.mjs, ui/src/components/Sidebar/SceneAnimatorPanel.tsx, ui/src/features/cutPaper/characterKits.ts, ui/src/features/cutPaper/index.ts, ui/src/features/cutPaper/pilot.ts, ui/src/lib/cutoutDialogue.ts, ui/tests/cutPaper.test.ts, ui/tests/cutoutDialogue.test.mjs

CONTRIBUTING checklist

  • python scripts/verify_clean_repo.py
  • python -m compileall -q app/services app/launch.py scripts
  • cd ui && npm run build if the UI changed
  • No weights, CivitAI sidecars, or generated guides
  • Stays local-first (no required accounts / telemetry)

Posted by the repo PR review workflow. Re-runs on each push to the PR.

@github-actions

github-actions Bot commented Sep 12, 2026

Copy link
Copy Markdown

Code health

Quality score: 63.8/100

Higher is better. The score is a trend dashboard; the independent ratchet below remains the CI gate.

Component Weight Current Change
Cyclomatic health 45% 59.1 -0.1
File concentration 25% 73.7 +0.0
Oversized-file debt 20% 49.5 +0.1
Modularity 10% 88.3 +0.0

Change vs PR base: +0.0 points.

Metric Value
Production LOC 313,906
Production files 1,053
Test LOC 127,937
Functions measured 21,376
Functions complexity ≥ 15 908
Maximum complexity 674
Policy code-health-policy-v1
HEAD cacff73b648f7b62f370d75d3ebd88dec7f7379d
Base 60e867a6aae832d5b56c5ebd44b99867bda55b26
UI measurement complete

Markdown, JSON catalogs and tests are out of this table. Only app/ runtime + ui/src TS/JS count.

Most complex functions

Complexity Where
674 app/wgp.py:7230 generate_video
382 ui/src/stores/useStore.ts:4129 Async method 'startGeneration'
355 app/_launch_runtime.py:23674 _run_generation
308 app/wgp.py:12372 generate_video_tab
269 ui/src/components/Sidebar/SceneAnimatorPanel.tsx:508 Function 'SceneAnimatorPanel'
264 ui/src/stores/useStore.ts:8684 Async method 'loadSettingsFromOutput'
258 app/services/director/planners/short_film.py:3433 ShortFilmPlanner._plan_story_driven
248 app/services/director_pipeline.py:13612 _run_video_generation
245 app/services/director_pipeline.py:7712 _run_pipeline
233 ui/src/features/agent/agentActions.ts:1152 Function 'parseAction'
226 app/services/director_pipeline.py:6541 update_comic_preview
225 ui/src/features/agent/agentActions.ts:2998 Async function 'executeAgentActions'

Trend vs baseline

Metric Δ
Production LOC +256
Test LOC +127
Functions ≥ 15 +2
Maximum complexity +0

Warnings

  • production LOC increased by +256
  • functions at complexity >= 15 increased by +2
  • complexity hotspot ui/src/lib/cutoutDialogue.ts rose 19 -> 22

Ratchet passed.

IAnMove and others added 2 commits September 12, 2026 17:02
Cutout planning no longer treats consonants as silence or shuts short
Whisper words for half their duration. Aligned-audio beats stay open
during speech. Tijeral ships Spanish and English scripts, WAVs, and
Video 2.5D shots (shots/ vs shots/en/).
A zero-length closed viseme shared a timestamp with the first spoken
word. rebuild kept the later open frame, so evaluateSceneLayer held
that viseme from t=0 (Nilo open for 6s, Berta for 17s). Rest closed
now starts at t=0. Detect-from-audio no longer applies a dummy plan
when every Whisper unit is empty.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
@IAnMove
IAnMove merged commit 5da575a into development Sep 12, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants