docs(skill): corte deve deixar folga na borda que encosta em fala mantida
Cortes escritos rente ao timestamp da palavra soavam secos (relatado no projeto Mastopexia) — o critério e o prompt do modelo local mandavam cobrir a frase inteira sem orientar a borda que toca fala mantida. Adiciona a regra de recuar ~0,15-0,25s nas duas pontas quando o corte encosta em conteúdo que fica, tanto no skill (06-texto-corte-marcador.md) quanto no prompt embutido do Ollama (llm_local.py) — pra não precisar ajustar na mão de novo. Também registra em 05_EXPERIENCIAS.md/09_MANUTENCAO.md a dívida de resolve_actions não tolerar margem quando zoom/marker encosta na borda de um corte (contornado manualmente, não corrigido em código ainda), e atualiza a lista de dívidas abertas (etapa 6/offset de whisper já resolvidos nesta sessão). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
7b5aed79ee
commit
fd791e116a
@@ -44,6 +44,7 @@ que merece entrada.
|
||||
| 24 | 2026-08-19 | `admin/test_models_api.py` existia mas estava fora de `testpaths` — 13 testes que nunca rodaram | `resolvido` |
|
||||
| 25 | 2026-08-20 | `admin/api/shared.py` apontava para `admin/code` (inexistente) após a divisão — install editável mascarou o bug em toda validação anterior | `resolvido` |
|
||||
| 26 | 2026-08-21 | `generate_voice_script` (IA local/Ollama) caía com "Falha ao gerar roteiro por IA local" — prompt embutia a timeline inteira (47k tokens) e estourava `num_ctx`; e `response.json()` de conexão caída escapava como `JSONDecodeError` | `resolvido` |
|
||||
| 27 | 2026-08-21 | Cortes escritos rente ao timestamp da palavra soam secos — critério da skill e prompt do modelo local não instruíam folga na borda | `resolvido` |
|
||||
|
||||
> Mantenha o índice acima sempre sincronizado com as entradas mais recentes.
|
||||
|
||||
@@ -1414,3 +1415,47 @@ o outro; percentil entrega um punhado útil nos dois casos.
|
||||
> de análise cru no prompt; projetar só o que a decisão usa. E qualquer parse
|
||||
> de resposta de servidor local deve tratar body vazio/quebrado como erro de
|
||||
> transporte, não como sucesso mudo.
|
||||
|
||||
---
|
||||
|
||||
### 2026-08-21 — Cortes escritos rente ao timestamp da palavra soam secos
|
||||
|
||||
- **Sintoma:** usuário revisou o corte final (projeto Mastopexia) e reportou
|
||||
"os cortes estão muito secos, principalmente no final de frase — falta um
|
||||
tempinho a mais pra concluir as palavras". Também notou que o ar morto
|
||||
antes da primeira fala do vídeo não tinha sido cortado.
|
||||
- **Causa:** o critério `06-texto-corte-marcador.md` (e o prompt embutido do
|
||||
modelo local em `fcpxml/llm_local.py`) instruíam cobrir a frase inteira
|
||||
(`start..end = início..fim da frase`) ao escrever um `cut`, sem nenhuma
|
||||
orientação sobre a borda que encosta em fala **mantida** (não em silêncio
|
||||
puro). Um `cut` com `start` exatamente no fim da última palavra mantida
|
||||
engole essa palavra antes dela terminar de soar; um `cut` com `end` no
|
||||
início exato da próxima engole o ataque da fala seguinte. É um problema
|
||||
diferente de cortar a pausa curta (proibido, é a própria ênfase) — aqui a
|
||||
pausa natural entre os blocos já existe, e o corte estava comendo essa
|
||||
margem sozinho.
|
||||
- **Correção:**
|
||||
- `06-texto-corte-marcador.md` ganhou a seção "Nunca corte rente à
|
||||
palavra — deixe uma folga": recuar `start`/`end` do corte em ~0,15–0,25s
|
||||
para dentro do próprio corte nas bordas que tocam fala mantida (não em
|
||||
silêncio puro), incluindo o início/fim do vídeo.
|
||||
- `fcpxml/llm_local.py::_SYSTEM_PROMPT` (item 4) recebeu a mesma
|
||||
instrução, para o modelo local gerar decisões já com a folga.
|
||||
- **Validação manual:** reaplicado no projeto Mastopexia real —
|
||||
`10.77 → 95.50` (rente) virou `10.97 → 95.30` (folga de ~0,2s nas duas
|
||||
pontas), e as 4 emendas seguintes receberam o mesmo tratamento; zoom/texto/
|
||||
marcador continuaram longe o suficiente da nova borda do corte — a folga
|
||||
também evita o problema relacionado (não corrigido em código, só
|
||||
contornado manualmente nesta sessão): um `zoom`/`marker` cuja borda cai
|
||||
exatamente em cima do início/fim de um `cut` é descartado por
|
||||
`resolve_actions` como "apontando para material cortado", mesmo quando a
|
||||
intenção era ficar bem ao lado. Vale registrar como dívida: `resolve_actions`
|
||||
poderia tolerar uma margem de meio-frame antes de considerar a ação "dentro"
|
||||
do corte.
|
||||
- **Estado:** `resolvido`
|
||||
|
||||
> **Aprendizado:** "cobrir a frase inteira" não é a instrução completa para
|
||||
> um corte — a frase que **sobra** ao lado do corte também precisa de uma
|
||||
> borda que respire. Regra prática: só cortar rente ao timestamp quando a
|
||||
> borda encosta em silêncio real (`gap_before` grande) ou em conteúdo que
|
||||
> também será descartado; encostando em fala mantida, sempre recuar.
|
||||
|
||||
Reference in New Issue
Block a user