- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
7.5 KiB
Plano de leitura de vídeo com tecnologias Apple
Conclusão
O caminho recomendado é um pipeline híbrido, local e substituível:
FFmpegcontinua extraindo áudio e amostras de vídeo.Speechfaz a transcrição temporal do áudio no macOS, preferencialmente comsupportsOnDeviceRecognitionerequiresOnDeviceRecognitionquando disponíveis.Visionanalisa os quadros: OCR, pessoas/objetos, rostos, códigos, poses e mudanças de cena conforme a necessidade.FoundationModels(Apple Intelligence) recebe um pacote compacto de evidências — transcrição, descrições dos quadros, OCR e metadados — e produz resumo, tópicos, classificação e sugestões editoriais estruturadas.
O modelo de linguagem não deve receber o arquivo de vídeo inteiro como entrada direta. A documentação do Foundation Models descreve geração e entendimento de texto, geração estruturada, ferramentas e análise de imagens; a análise de vídeo deve ser orquestrada pelo nosso pipeline, ou por um provider multimodal próprio no futuro.
O que já existe no Engine
engine/scanner/analise.pyjá defineProviderDeTranscricaoeProviderDeAnaliseVisual.engine/scanner/transcricao_da_timeline.pyjá divide o resultado por clipe e corrige os offsets das partes.engine/integracoes/midia/extracao_de_audio.pyjá gera WAV mono, 16 kHz e blocos de até 600 s.engine/integracoes/apple_speech/já possui um executável Swift usandoSFSpeechRecognizere um provider Python.engine/integracoes/whisper/fornece fallback local.
O relatório Apple atual confirma que o adaptador está integrado ao fluxo, mas também evidencia uma falha operacional a investigar: a execução reportada não encontrou fala em todos os intervalos. Antes de comparar qualidade, devemos validar permissão, disponibilidade do locale, formato/volume do WAV e se o modo on-device foi realmente ativado.
Tecnologias disponíveis
Speech
SFSpeechRecognizer aceita arquivos existentes com SFSpeechURLRecognitionRequest, fornece segmentos com timestamp e expõe supportsOnDeviceRecognition. Há limite documentado para tarefas longas, portanto a divisão existente em blocos é adequada. O provider deve manter os offsets, a confiança e o locale.
Vision
Vision é a camada Apple para análise de fotos e vídeos. Para o primeiro corte, implementar apenas:
RecognizeTextRequestpara texto em tela;- detecção de pessoas/objetos ou classificação, se a decisão editorial exigir;
- amostragem temporal de quadros e agrupamento de resultados semelhantes;
- detecção de mudança de cena, caso a implementação determinística atual ainda não cubra o caso.
Vision não deve ser chamado em todos os frames. O sampler deve escolher, por exemplo, um frame a cada 1–2 segundos e frames próximos a cortes, mantendo timestamp, confidence e a origem do frame.
Foundation Models / Apple Intelligence
FoundationModels fornece o LLM local que alimenta Apple Intelligence. É adequado para resumir a transcrição, extrair entidades/tópicos, classificar trechos, sugerir títulos e gerar estruturas Swift com @Generable. A disponibilidade precisa ser verificada em runtime por SystemLanguageModel.default; Apple Intelligence precisa estar habilitado e o sistema/dispositivo precisa ser compatível.
O contexto deve ser limitado e particionado. A documentação técnica da Apple indica janela de contexto de 4096 tokens para o modelo on-device; enviar o vídeo inteiro ou uma transcrição longa em uma única solicitação não é seguro. O contrato deve prever truncation, modelUnavailable, guardrail e timeout.
App Intents
É uma opção posterior para expor ações do Engine ao Siri/Apple Intelligence — por exemplo, “resumir o clipe selecionado” ou “encontrar trechos em que se fala de X”. Não é a API de leitura do vídeo; é a camada de descoberta e ação.
Arquitetura proposta
Timeline/clip
├─ AudioExtractor ──> AppleSpeechProvider | WhisperProvider
├─ FrameSampler ────> VisionProvider
└─ MediaEvidenceStore
└─ FoundationModelsProvider
└─ AnalysisResult / EditorialPlan
Adicionar interfaces no domínio, mantendo o scanner independente:
class ProviderDeQuadros(Protocol):
def amostrar(self, clipe: Any) -> list[QuadroDeVideo]: ...
class ProviderDeAnaliseSemantica(Protocol):
def interpretar(self, evidencias: PacoteDeEvidencias) -> ResultadoSemantico: ...
QuadroDeVideo deve conter timestamp, caminho temporário ou bytes, dimensões e índice. EvidenciaDeVideo deve conter tipo (transcricao, ocr, objeto, cena), intervalo temporal, valor, confiança e provider. O resultado do Foundation Models deve ser estruturado e validado antes de entrar em caracteristicas_visuais, cenas ou plano de edição.
Implementação em fases
Fase 1 — endurecer Apple Speech
- Corrigir o build/instalação do executável Swift para o ambiente do usuário.
- Tornar
somente_no_dispositivo=Truea opção explícita de privacidade. - Capturar stderr, código de saída, locale, disponibilidade e modo efetivo no resultado.
- Testar WAV com fala conhecida em
pt-BR, inclusive blocos menores que um minuto. - Comparar Apple Speech, Whisper e Groq usando o mesmo áudio e medir WER, latência e falhas.
Fase 2 — Vision
- Criar um pequeno helper Swift ou um app/CLI macOS que receba vídeo, timestamps e operações.
- Usar AVFoundation para ler frames; usar Vision por frame.
- Devolver JSON versionado, com timestamp absoluto e confiança.
- Adicionar testes com fixtures de texto em tela, pessoa e quadro sem conteúdo.
Fase 3 — Foundation Models
- Criar um processo Swift residente (mais eficiente que iniciar um processo por trecho).
- Receber JSON de evidências via stdin/stdout ou IPC existente.
- Usar
LanguageModelSessione geração guiada para umResultadoSemanticofixo. - Fazer chunking da transcrição e uma segunda etapa de consolidação.
- Persistir prompt/model-version/evidence revision para reprodutibilidade.
Fase 4 — integração editorial
- Alimentar o
EditorialContextPackcom evidências citáveis e intervalos temporais. - Manter análise e plano como operações read-only até validação.
- Só depois conectar resultados a rough-cut, marcadores ou legendas via APIs já existentes do Premiere.
Decisão recomendada agora
Implementar primeiro AppleSpeechProvider robusto e VisionEvidenceProvider; deixar FoundationModelsProvider como uma etapa semântica posterior. Isso entrega leitura real de áudio e imagem imediatamente, preserva fallback para Windows/Whisper e evita acoplar o Engine Python a APIs Apple que só existem no macOS.