Registro completo do processo de instalação, configuração e depuração…
INEMA
Checklist tudo o que você fez até agora para instalar e consertar o MultiTalk, passo a passo, para você ter guardado.
Passos de instalação e correção do MultiTalk⌗
1. Ambiente⌗
- Criou e ativou o ambiente Conda:
conda create -n meigen310 python=3.10
conda activate meigen310
* Instalou dependências com pip install -r requirements.txt.
2. Diretórios principais⌗
- Código-fonte:
C
:\Users\neima\MultiTalk\Pesos originais (Wan): C:\Users\neima\MultiTalk\weights\Wan2.1-I2V-14B-480P\Pesos quantizados (MultiTalk): C:\Users\neima\MultiTalk\weights\MeiGen-MultiTalk\quant_models\Áudio (wav2vec): C:\Users\neima\MultiTalk\weights\chinese-wav2vec2-base\Exemplos de entrada: C:\Users\neima\MultiTalk\examples\single_example_tts_1.jsonSaída de vídeos: C:\Users\neima\MultiTalk\outputs\Log de execução: C:\Users\neima\MultiTalk\run.log
3. Ajustes no código⌗
-
attention.py (C:\Users\neima\MultiTalk\wan\modules\attention.py):
-
Removeu referências quebradas ao f
lash_attn. - Substituiu a função f
lash_attentionpara usar torch.nn.functional.scaled_dot_product_attention(SDPA). - Corrigiu sintaxes que apareciam como r
eturn outdef...e return outclass...(erros de substituição). -
Garantiu que as flags F
LASH_ATTN_*_AVAILABLEestivessem como False. -
Adicionou/corrigiu a classe S
ingleStreamMutiAttentionquando ausente (stub mínimo para evitar ImportError).
4. Testes de compilação⌗
- Testou se o arquivo não tinha mais erros de sintaxe:
``` python -m compileall C:\Users\neima\MultiTalk\wan\modules\attention.py
```* Conferiu se a classe estava presente:
```Select-String -Path C:\Users\neima\MultiTalk\wan\modules\attention.py -Pattern "class SingleStreamMutiAttention"
```### 5. Variáveis de ambiente
Definiu variáveis para evitar fallback em compiladores (que travavam ou usavam só CPU):
$en```v:TORCHDYNAMO_DISABLE = "1" $env:TORCH_COMPILE_DISABLE = "1" $env:TOKENIZERS_PARALLELISM = "false" $env:TRANSFORMERS_ATTENTION_IMPLEMENTATION = "eager" $env:HF_ATTENTION_BACKEND = "eager" $env:PYTORCH_CUDA_ALLOC_CONF = "max_split_size_mb:64" $env:WAN_DISABLE_REF_ATTENTION = "1"
```## 6. Testes básicos de GPU
-
Validou se PyTorch estava reconhecendo CUDA:
@'``` import torch print("torch:", torch.version) print("cuda disponível:", torch.cuda.is_available()) if torch.cuda.is_available(): print("GPU:", torch.cuda.get_device_name(0)) '@ | python -
-
T```estou operações simples (matmul e SDPA) para confirmar uso da GPU:
tor```ch.randn(..., device="cuda") F.scaled_dot_product_attention(q,k,v)
``` 7. Execução do MultiTalk⌗
-
Preparou entrada e saída:
$pat```h = (Resolve-Path .\examples\single_example_tts_1.json).Path $OUT = "C:\Users\neima\MultiTalk\outputs\teste_gpu.mp4"
-
Rod```ou o script:
pytho
``n -u .\generate_multitalk.py--size multitalk-480--mode clip--frame_num 5--motion_frame 5--sample_steps 2--quant int8--offload_model False--num_persistent_param_in_dit 0--t5_cpu--ckpt_dir .\weights\Wan2.1-I2V-14B-480P--quant_dir .\weights\MeiGen-MultiTalk--wav2vec_dir .\weights\chinese-wav2vec2-base--audio_mode tts--input_json "$path"--save_file "$OUT" 2>&1 | Tee-Object .\run.log
8```. Erros enfrentados e correções⌗
- SyntaxError no attention.py → corrigido substituindo função de forma limpa.
- ImportError (SingleStreamMutiAttention) → adicionada classe stub.
- RuntimeError shapes (4704 vs 257) → relacionado a layouts de atenção, mitigado com WAN_DISA`BLE_REF_ATTENTION.
- CUDA
out** of memory → contr**olado reduzindo frame_num e sample_steps. - Fall
back** CPU (GPU 1%) → resol**vido desativando torch.compile/dynamo via var`iáveis de ambiente.
Aqui vai um resumo organizado só das correções e problemas que você encontrou, em ordem cronológica:
Problemas que você enfrentou⌗
- Erro de import no início
ModuleNotFoundError: No module named 'transformers.utils.torch_utils'
→ Aconteceu porque a versão do transformersestava desatualizada.
-
Erro de identação em wav2vec2.py
``` IndentationError: expected an indented block after 'try' statement
→ Código original estava mal formatado (linha 23 sem bloco).
3. Erro com Wav2Vec2Model
``` AttributeError: type object 'Wav2Vec2Model' has no attribute 'from_pretrained'
``` → Usava a classe errada / implementação sem suporte a fro`m_pretrained.
`4. Err**o de atributo inexistente
** ```AttributeError: 'Wav2Vec2Model' object has no attribute 'feature_extractor'
``` → A API mudou, e o código do projeto tentava acessar feat`ure_extractor que` não existe mais.
5. Erro com embeddings
A```ttributeError: 'Tensor' object has no attribute 'hidden_states'
TypeError: object of type 'types.SimpleNamespace' has no len()
``` → Resultado do modelo não estava no formato esperado.
6. Erro **ao carregar pesos quantizados
** Ty```peError: expected str, bytes or os.PathLike object, not NoneType
```→ Faltava passar o argumento --quan`t_dir.
7. `Erro de caminho de áudio e imagem
Res```olve-Path : Não é possível localizar o caminho 'PATH_DA_IMAGEM_AQUI'
→``` Arquivo JSON de exemplo tinha placeholders (`PATH_DA_IMAGEM_AQUI`) que precisavam ser substituídos.
8. Erro ao usar TTS Kokoro
File```NotFoundError: No such file or directory: 'weights/Kokoro-82M\\config.json'
→ ```O modelo Kokoro não estava baixado corretamente (faltava `config.json`).
9. Erro de BOM no JSON
JSOND```ecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig)
→ O``` arquivo single_ex`ample_tts_1.json tinha BO`M (assinatura UTF-8) e o Python não conseguia parsear.
10. Erro de vírgula no JSON
JSOND```ecodeError: Expecting ',' delimiter: line 6 column 33
→ O``` JSON estava mal formatado (faltava vírgula entre campos).
11. Erro de chave ausente
KeyErr```or: 'cond_image'
→ O ```script esperava cond_image,` mas no JS`ON de TTS só havia tts_audio.
`
---
## `Correções aplicadas
* Atualizado transformer`s para corri`gir import.
* Ajustada identação em wav2vec2.py`.
* Corrigi`do uso de Wav2Vec2Mod`el para não c`hamar métodos inexistentes.
* Adaptado código para não acessar feature_ext`ractor inexistent`e.
* Ajustado tratamento do retorno do modelo (`Tensor` vs `hidden_states`).
* Incluído parâmetro --quant_dir` .\weights\MeiGen-MultiTalk.
* Substit`uídos caminhos PATH_DA_IMA`GEM_AQUI e PATH_DO_`AUD`IO_AQUI por arquiv`os reais.
* Baixado corretamente o modelo hexgrad/Kok`oro-82M do Hugging` Face com config.json`.
* Removid`o BOM dos arquivos JSON com PowerShell (`UTF8Encoding($false)`).
* Corrigida sintaxe do JSON (vírgula faltante).
* Ajustado JSON para incluir sempre cond_image `mesmo em c`asos de TTS.
---
Vou resumir em duas partes:
1. **Passo a passo de instalação e configuração**
2. **Dicas e ajustes que corrigimos durante os testes**
Assim você tem um guia compacto para continuar depois.
---
## 1. Passo a passo de instalação
1. **Criar ambiente Conda**
``` conda create -n meigen310 python=3.10 -y
conda activate meigen310
```
2. **Clonar e entrar no projeto**
``` git clone https://github.com/MeiGen-AI/MultiTalk.git
cd MultiTalk
```
3. **Instalar dependências**
``` pip install -r requirements.txt
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
```
4. **Baixar os pesos necessários**
* Modelo principal: `Wan2.1-I2V-14B-480P`
* Quantização: `MeiGen-MultiTalk`
* Áudio: `chinese-wav2vec2-base`
* TTS: `Kokoro-82M`
Estrutura de pastas em `weights` deve ficar assim:
``` weights/
Wan2.1-I2V-14B-480P/
MeiGen-MultiTalk/
chinese-wav2vec2-base/
Kokoro-82M/
```
5. Criar pasta de saída
``` mkdir outputs
-
Rodar exemplo com áudio local
`` python .\generate_multitalk.py--size multitalk-480--mode clip--sample_steps 12--ckpt_dir .\weights\Wan2.1-I2V-14B-480P--quant_dir .\weights\MeiGen-MultiTalk--wav2vec_dir .\weights\chinese-wav2vec2-base--input_json .\examples\single_example_1.json ` --save_file .\outputs\saida_480p.mp4
7. Rodar exemplo com TTS
``` python .\generate_multitalk.py `
--size multitalk-480 `
--mode clip `
--sample_steps 12 `
--ckpt_dir .\weights\Wan2.1-I2V-14B-480P `
--quant_dir .\weights\MeiGen-MultiTalk `
--wav2vec_dir .\weights\chinese-wav2vec2-base `
--audio_mode tts `
--input_json .\examples\single_example_tts_1.json `
--save_file .\outputs\saida_480p.mp4
2. Dicas e correções que fizemos⌗
-
Dependências quebradas
-
Corrigido t
ransformers.utils.torch_utilsinstalando transformersatualizado. -
Corrigido erro de W
av2Vec2Modelsem from_pretrained. -
Erros de código
-
Ajustamos identação em w
av2vec2.py(faltava bloco depois detry:). -
Removemos uso de atributos inexistentes (
feature_extractor). -
Erros de JSON
-
Arquivo s
ingle_example_tts_1.jsontinha BOM (assinatura UTF-8) → corrigido salvando sem BOM. -
Também tinha vírgula faltando → corrigido para JSON válido.
-
Estrutura do JSON
-
Para áudio gravado (
localfile):``` { "prompt": "Descrição...", "cond_image": "examples/single/single1.png", "cond_audio": { "person1": "examples/single/1.wav" } }
``` * Para TTS:
``` {
"prompt": "Descrição...",
"cond_image": "examples/single/single1.png",
"tts_audio": {
"text": "Olá, este é um teste em português.",
"human1_voice": "af_heart"
}
}
``` * Saída
-
Os vídeos são salvos em:
``` C:\Users\neima\MultiTalk\outputs\saida_480p.mp4
``` * Sempre conferir com:
``` Get-Item .\outputs\saida_480p.mp4 -ErrorAction SilentlyContinue```
Meigen Multitalk - wan21
1