Files
jhonny-editor/code/plugins/premiere-pro/skills/editar-por-voz/criterios/01-leitura-do-json.md
T
João Henrique a9e5b5ff58 feat: copiada a skill editar-por-voz e seus critérios para as skil
- copiada a skill editar-por-voz e seus critérios para as skills do projeto
- adaptada a skill editar-por-voz para usar o banco SQLite como fonte oficial
- corrigida a cópia do JSON do tipo de vídeo para priorizar clipboard Unicode
- criado carregador único do contexto de edição por voz a partir do SQLite
- criada entrada para registrar planos no SQLite e reaproveitar o mesmo plano na aplicação
- habilitado carregamento do plano editorial diretamente do SQLite na interface
- corrigido o bloqueio visual da etapa de carregamento do plano salvo
- configurado carregamento automático do plano salvo após selecionar a sequência
- documentada a sequência como raiz de retomada do fluxo de edição
- criada a estrutura local para análise de músicas instrumentais com Essentia

Resumo:
- 22 arquivos alterados
- 11 novos
- 11 modificados
- 0 removidos

 11 files changed, 270 insertions(+), 34 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - CONTEXT.md
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/engine/README.md
  - code/engine/aplicar_plano_de_edicao.py
  - code/engine/integracoes/audio/__init__.py
  - code/engine/persistencia/consultas.py
  - code/engine/requirements-audio.txt
  - code/engine/testes/test_consultas_de_persistencia.py
  - code/tests/cep-tipos-video-encoding.test.ts
  - code/.jhonny/
  - code/engine/carregar_plano_de_edicao.py
  - code/engine/integracoes/audio/contratos.py
  - code/engine/integracoes/audio/modelos_de_analise_musical.py
  - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py
  - code/engine/preparar_edicao_por_voz.py
  - code/engine/registrar_plano_de_edicao.py
  - code/engine/testes/test_analisador_de_musica_essentia.py
  - code/engine/testes/test_carregar_plano_de_edicao.py
  - code/engine/testes/test_registrar_plano_de_edicao.py
  - code/plugins/premiere-pro/skills/editar-por-voz/
2026-09-10 13:09:01 -04:00

3.9 KiB
Raw Blame History

01 — Leitura das evidências do banco

Escopo: Como ler as evidências persistidas no banco, sem recalcular o que já foi medido. Quando: Fase 1 — ver a ordem de trabalho em ../SKILL.md.

O registro da edição e as tabelas relacionadas no banco são a entrada de todo o trabalho. Um JSON exportado pode ser usado como visão de trabalho, mas deve ser reconciliado com o video_id e a versão da análise antes de qualquer decisão. Leia em camadas, de cima para baixo, e só desça quando precisar.

Camadas

Camada O que traz Para quê
analises_versao o que de fato rodou e qual versão está válida leia primeiro — ver 09-analise-incompleta.md
summary forma da peça, peak_moments, contagens visão geral em poucos números
segmentos_de_transcricao cada fala com seus agregados onde você mais trabalha
palavras_de_transcricao detalhe por palavra achar o instante exato de um destaque
evidencias_visuais observações visuais por intervalo apoiar a decisão quando disponível
edicoes_de_video.configuracao objetivo e regras do vídeo calibrar a seleção editorial

Campos que decidem quase tudo

gap_before — silêncio antes da fala, em segundos. É o mapa estrutural da gravação: acima de ~3s (take_boundary: true) a câmera parou ou a tomada recomeçou. Num material real de 3min17s isso identificou 6 fronteiras, todas exatamente onde a pessoa recomeçava o roteiro.

take_boundary — booleano derivado do gap_before. Use para agrupar tomadas.

emphasis (0–1) — índice combinado de energia, variação de tom, variação de ritmo, pausa anterior e duração. É relativo ao material analisado, nunca uma medida absoluta. Ver 02-enfase-e-reanalise.md.

energy (0–1) — intensidade relativa ao trecho mais alto da gravação.

pitch_delta (0–1) — quanto o tom se afasta da média do falante.

peak_emphasis e avg_energy (por segmento) — permitem julgar uma frase inteira sem ler palavra por palavra. É por aqui que você avalia o arco narrativo.

energy_raw e pitch_hz — valores brutos, sem normalização. Não use para decidir; existem para permitir a reanálise da Fase 2.

O que NÃO fazer

  • Não recalcule energia, tom ou ênfase. O sistema mede melhor e de forma reprodutível.
  • Não reestime tempos "no olho". Use os timestamps do JSON.
  • Não trate emphasis como valor absoluto. Um 0,35 pode ser o pico de uma gravação e ruído em outra.

O timestamp por palavra tem um viés conhecido

O início de cada palavra vem sistematicamente adiantado em ~0,3-0,5s em relação ao ataque real da fala — medido em material real com ffmpeg (astats), consistente em 6 pontos do mesmo vídeo. O fim da palavra não tem esse problema (erro de poucos centésimos). Causa: word_timestamps do faster-whisper deriva por atenção cruzada, sem alinhamento forçado — ver 05_EXPERIENCIAS.md, entrada de 2026-08-19.

Quando o pipeline já corrigiu isso: se layers.alignment for true (transcript gerado com alinhamento forçado fonético via whisperx, implementado depois desse aviso), o viés foi removido na origem — não aplique o offset manual abaixo. O aviso vale só para transcripts antigos sem layers.alignment.

Isso não é "reestimar no olho" — é um bug de medição na fonte, não um julgamento seu. Na prática (somente sem layers.alignment):

  • Ao posicionar um zoom cujo start precisa cair exatamente na palavra (não uma frase inteira), some +0,3 a +0,4s ao timestamp do JSON antes de decidir, ou confira com ffmpeg -af astats se a precisão importar para o frame.
  • Não aplique essa correção a gap_before para decidir corte — a régua de silêncio (06-texto-corte-marcador.md) já é conservadora o bastante para absorver esse erro; corrigir os dois ao mesmo tempo é redundante.