File size: 10,814 Bytes
b5023f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# 🛠️ managers/ - Ferramentas de IA de Terceiros para orquestração ADUC-SDR

Esta pasta contém implementações adaptadas de modelos e utilitários de IA de terceiros, que servem como "especialistas" ou "ferramentas" de baixo nível para a arquitetura ADUC-SDR.

**IMPORTANTE:** O conteúdo desta pasta é de autoria de seus respectivos idealizadores e desenvolvedores originais. Esta pasta **NÃO FAZ PARTE** do projeto principal ADUC-SDR em termos de sua arquitetura inovadora. Ela serve como um repositório para as **dependências diretas e modificadas** que os `Deformes enginers` (os estágios do "foguete" ADUC-SDR) invocam para realizar tarefas específicas (geração de imagem, vídeo, áudio).

As modificações realizadas nos arquivos aqui presentes visam principalmente:
1.  **Adaptação de Interfaces:** Padronizar as interfaces para que se encaixem no fluxo de orquestração do ADUC-SDR.
2.  **Gerenciamento de Recursos:** Integrar lógicas de carregamento/descarregamento de modelos (GPU management) e configurações via arquivos YAML.
3.  **Otimização de Fluxo:** Ajustar as pipelines para aceitar formatos de entrada mais eficientes (ex: tensores pré-codificados em vez de caminhos de mídia, pulando etapas de codificação/decodificação redundantes).

---

## 📄 Licenciamento

O conteúdo original dos projetos listados abaixo é licenciado sob a **Licença Apache 2.0**, ou outra licença especificada pelos autores originais. Todas as modificações e o uso desses arquivos dentro da estrutura `helpers/` do projeto ADUC-SDR estão em conformidade com os termos da **Licença Apache 2.0**.

As licenças originais dos projetos podem ser encontradas nas suas respectivas fontes ou nos subdiretórios `incl_licenses/` dentro de cada módulo adaptado.

---

## 🛠️ API dos Helpers e Guia de Uso

Esta seção detalha como cada helper (agente especialista) deve ser utilizado dentro do ecossistema ADUC-SDR. Todos os agentes são instanciados como **singletons** no `hardware_manager.py` para garantir o gerenciamento centralizado de recursos de GPU.

### **gemini_helpers.py (GeminiAgent)**

*   **Propósito:** Atua como o "Oráculo de Síntese Adaptativo", responsável por todas as tarefas de processamento de linguagem natural, como criação de storyboards, geração de prompts, e tomada de decisões narrativas.
*   **Singleton Instance:** `gemini_agent_singleton`
*   **Construtor:** `GeminiAgent()`
    *   Lê `configs/gemini_config.yaml` para obter o nome do modelo, parâmetros de inferência e caminhos de templates de prompt. A chave da API é lida da variável de ambiente `GEMINI_API_KEY`.
*   **Métodos Públicos:**
    *   `generate_storyboard(prompt: str, num_keyframes: int, ref_image_paths: list[str])`
        *   **Inputs:**
            *   `prompt`: A ideia geral do filme (string).
            *   `num_keyframes`: O número de cenas a serem geradas (int).
            *   `ref_image_paths`: Lista de caminhos para as imagens de referência (list[str]).
        *   **Output:** `tuple[list[str], str]` (Uma tupla contendo a lista de strings do storyboard e um relatório textual da operação).
    *   `select_keyframes_from_pool(storyboard: list, base_image_paths: list[str], pool_image_paths: list[str])`
        *   **Inputs:**
            *   `storyboard`: A lista de strings do storyboard gerado.
            *   `base_image_paths`: Imagens de referência base (list[str]).
            *   `pool_image_paths`: O "banco de imagens" de onde selecionar (list[str]).
        *   **Output:** `tuple[list[str], str]` (Uma tupla contendo a lista de caminhos de imagens selecionadas e um relatório textual).
    *   `get_anticipatory_keyframe_prompt(...)`
        *   **Inputs:** Contexto narrativo e visual para gerar um prompt de imagem.
        *   **Output:** `tuple[str, str]` (Uma tupla contendo o prompt gerado para o modelo de imagem e um relatório textual).
    *   `get_initial_motion_prompt(...)`
        *   **Inputs:** Contexto narrativo e visual para a primeira transição de vídeo.
        *   **Output:** `tuple[str, str]` (Uma tupla contendo o prompt de movimento gerado e um relatório textual).
    *   `get_transition_decision(...)`
        *   **Inputs:** Contexto narrativo e visual para uma transição de vídeo intermediária.
        *   **Output:** `tuple[dict, str]` (Uma tupla contendo um dicionário `{"transition_type": "...", "motion_prompt": "..."}` e um relatório textual).
    *   `generate_audio_prompts(...)`
        *   **Inputs:** Contexto narrativo global.
        *   **Output:** `tuple[dict, str]` (Uma tupla contendo um dicionário `{"music_prompt": "...", "sfx_prompt": "..."}` e um relatório textual).

### **flux_kontext_helpers.py (FluxPoolManager)**

*   **Propósito:** Especialista em geração de imagens de alta qualidade (keyframes) usando a pipeline FluxKontext. Gerencia um pool de workers para otimizar o uso de múltiplas GPUs.
*   **Singleton Instance:** `flux_kontext_singleton`
*   **Construtor:** `FluxPoolManager(device_ids: list[str], flux_config_file: str)`
    *`configs/flux_config.yaml`.
*   **Método Público:**
    *   `generate_image(prompt: str, reference_images: list[Image.Image], width: int, height: int, seed: int = 42, callback: callable = None)`
        *   **Inputs:**
            *   `prompt`: Prompt textual para guiar a geração (string).
            *   `reference_images`: Lista de objetos `PIL.Image` como referência visual.
            *   `width`, `height`: Dimensões da imagem de saída (int).
            *   `seed`: Semente para reprodutibilidade (int).
            *   `callback`: Função de callback opcional para monitorar o progresso.
        *   **Output:** `PIL.Image.Image` (O objeto da imagem gerada).

### **dreamo_helpers.py (DreamOAgent)**

*   **Propósito:** Especialista em geração de imagens de alta qualidade (keyframes) usando a pipeline DreamO, com capacidades avançadas de edição e estilo a partir de referências.
*   **Singleton Instance:** `dreamo_agent_singleton`
*   **Construtor:** `DreamOAgent(device_id: str = None)`
    *   Lê `configs/dreamo_config.yaml`.
*   **Método Público:**
    *   `generate_image(prompt: str, reference_images: list[Image.Image], width: int, height: int)`
        *   **Inputs:**
            *   `prompt`: Prompt textual para guiar a geração (string).
            *   `reference_images`: Lista de objetos `PIL.Image` como referência visual. A lógica interna atribui a primeira imagem como `style` e as demais como `ip`.
            *   `width`, `height`: Dimensões da imagem de saída (int).
        *   **Output:** `PIL.Image.Image` (O objeto da imagem gerada).

### **ltx_manager_helpers.py (LtxPoolManager)**

*   **Propósito:** Especialista na geração de fragmentos de vídeo no espaço latente usando a pipeline LTX-Video. Gerencia um pool de workers para otimizar o uso de múltiplas GPUs.
*   **Singleton Instance:** `ltx_manager_singleton`
*   **Construtor:** `LtxPoolManager(device_ids: list[str], ltx_model_config_file: str, ltx_global_config_file: str)`
    *   Lê o `ltx_global_config_file` e o `ltx_model_config_file` para configurar a pipeline.
*   **Método Público:**
    *   `generate_latent_fragment(**kwargs)`
        *   **Inputs:** Dicionário de keyword arguments (`kwargs`) contendo todos os parâmetros da pipeline LTX, incluindo:
            *   `height`, `width`: Dimensões do vídeo (int).
            *   `video_total_frames`: Número total de frames a serem gerados (int).
            *   `video_fps`: Frames por segundo (int).
            *   `motion_prompt`: Prompt de movimento (string).
            *   `conditioning_items_data`: Lista de objetos `LatentConditioningItem` contendo os tensores latentes de condição.
            *   `guidance_scale`, `stg_scale`, `num_inference_steps`, etc.
        *   **Output:** `tuple[torch.Tensor, tuple]` (Uma tupla contendo o tensor latente gerado e os valores de padding utilizados).

### **mmaudio_helper.py (MMAudioAgent)**

*   **Propósito:** Especialista em geração de áudio para um determinado fragmento de vídeo.
*   **Singleton Instance:** `mmaudio_agent_singleton`
*   **Construtor:** `MMAudioAgent(workspace_dir: str, device_id: str = None, mmaudio_config_file: str)`
    *   Lê `configs/mmaudio_config.yaml`.
*   **Método Público:**
    *   `generate_audio_for_video(video_path: str, prompt: str, negative_prompt: str, duration_seconds: float)`
        *   **Inputs:**
            *   `video_path`: Caminho para o arquivo de vídeo silencioso (string).
            *   `prompt`: Prompt textual para guiar a geração de áudio (string).
            *   `negative_prompt`: Prompt negativo para áudio (string).
            *   `duration_seconds`: Duração exata do vídeo (float).
        *   **Output:** `str` (O caminho para o novo arquivo de vídeo com a faixa de áudio integrada).


### **seedvr_helpers.py (SeedVrManager)**

*   **Propósito:** Especialista em pós-produção de vídeo, aplicando super-resolução com IA (`Video Super-Resolution`) para adicionar detalhes finos, nitidez e texturas realistas a um vídeo já renderizado.
*   **Singleton Instance:** `seedvr_manager_singleton`
*   **Construtor:** `SeedVrManager(workspace_dir: str, device_id: str = None)`
    *   Lê `configs/seedvr_config.yaml`.
*   **Método Público:**
    *   `process_video(input_video_path: str, output_video_path: str, prompt: str, model_version: str = '7B', steps: int = 100, seed: int = 666)`
        *   **Inputs:**
            *   `input_video_path`: Caminho para o vídeo de entrada a ser aprimorado (string).
            *   `output_video_path`: Caminho onde o vídeo finalizado será salvo (string).
            *   `prompt`: Um prompt de estilo geral para guiar o aprimoramento (string).
            *   `model_version`: A versão do modelo a ser usada, '3B' ou '7B' (string).
            *   `steps`: Número de passos de inferência para o processo de aprimoramento (int).
            *   `seed`: Semente para reprodutibilidade (int).
        *   **Output:** `str` (O caminho para o vídeo finalizado em alta definição).

---

## 🔗 Projetos Originais e Atribuições
(A seção de atribuições e licenças permanece a mesma que definimos anteriormente)

### DreamO
*   **Repositório Original:** [https://github.com/bytedance/DreamO](https://github.com/bytedance/DreamO)
...

### LTX-Video
*   **Repositório Original:** [https://github.com/Lightricks/LTX-Video](https://github.com/Lightricks/LTX-Video)
...

### MMAudio
*   **Repositório Original:** [https://github.com/hkchengrex/MMAudio](https://github.com/hkchengrex/MMAudio)
...

### SeedVr
*   **Repositório Original:** [https://github.com/ByteDance-Seed/SeedVR](https://github.com/ByteDance-Seed/SeedVR)