Introdução
Versão do Google Colab (computação em nuvem gratuita no navegador)
Instalação Local
Apoiar
Melhores práticas
Configuração e execução simples – localmente e via colab.
sem mexer no download e instalação manual de pré-requisitos
Google Colab tem apenas 2 células para executar
Os usuários do Windows precisam apenas de um arquivo para instalar, atualizar e executar.
Opções bem documentadas abaixo.
Chega de se perguntar o que qualquer coisa faz!
Para meu clipe de teste de 9 segundos em 720p 60fps via Colab T4:
Wav2Lip Original | Fácil-Wav2Lip |
---|---|
Tempo de execução: 6m 53s | Tempo de execução: 56s |
Isso não é um erro de digitação! Meu clipe vai de quase 7 minutos para menos de 1 minuto!
Os dados de rastreamento são salvos entre gerações do mesmo vídeo, economizando ainda mais tempo:
Easy-Wav2Lip no mesmo vídeo novamente |
---|
Tempo de execução: 25s |
Easy-Wav2Lip corrige bugs visuais nos lábios:
3 opções de qualidade:
Rápido: Wav2Lip
Melhorado: Wav2Lip com máscara emplumada ao redor da boca para restaurar a resolução original no resto do rosto
Aprimorado: Wav2Lip + máscara + upscaling GFPGAN feito no rosto
https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
Requisitos: placa Nvidia compatível com cuda 12.2 ou dispositivo MacOS compatível com mps via silício Apple ou GPU AMD
Baixe Easy-Wav2Lip.bat
Coloque-o em uma pasta do seu PC (Ex: em Documentos)
Execute-o e siga as instruções. Isso criará uma pasta chamada Easy-Wav2Lip dentro da pasta em que você o executou.
Execute este arquivo sempre que quiser usar o Easy-Wav2Lip
Isso deve cuidar da instalação de todos os componentes necessários.
Certifique-se de que o seguinte esteja instalado e possa ser acessado através do seu terminal:
Python 3.10 (testei apenas 3.10.11 - outras versões podem não funcionar!)
Git
Windows e Linux: Cuda (apenas ter os drivers mais recentes da Nvidia já resolverá isso, testei apenas o 12.2)
Execute o seguinte em seu terminal depois de navegar até a pasta onde deseja instalar o Easy-Wav2Lip:
Configura um venv, instala o ffmpeg nele e depois instala o Easy-Wav2Lip:
Abra o cmd e navegue até a pasta onde deseja instalar o EasyWav2Lip usando cd EG: cd Documents
Copie e cole o seguinte código em sua janela cmd: Nota: 2 pastas serão criadas neste local: Easy-Wav2Lip e Easy-Wav2Lip-venv (uma instalação isolada do python)
py -3.10 -m venv Easy-Wav2Lip-venv Easy-Wav2Lip-venvScriptsactivate python -m pip install --upgrade pip python -m pip install requests set url=https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip python -c "import requests; r = requests.get('%url%', stream=True); open('ffmpeg.zip', 'wb').write(r.content)" powershell -Command "Expand-Archive -Path .\ffmpeg.zip -DestinationPath .\" xcopy /e /i /y "ffmpeg-master-latest-win64-gplbin*" .Easy-Wav2Lip-venvScripts del ffmpeg.zip rmdir /s /q ffmpeg-master-latest-win64-gpl git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
Agora, para executar o Easy-Wav2Lip:
3. Feche e reabra o cmd e depois faça cd no mesmo diretório da Etapa 1.
4. Cole o seguinte código:
Easy-Wav2Lip-venvScriptsactivate cd Easy-Wav2Lip call run_loop.bat
Consulte Uso para obter mais instruções.
Configura um venv, instala o ffmpeg nele e depois instala o Easy-Wav2Lip:
Abra o Terminal e navegue até a pasta que deseja instalar o Easy0Wav2Kip usando cd EG: cd ~/Documents
Copie e cole o seguinte código na janela do seu terminal: Nota: 2 pastas serão criadas neste local: Easy-Wav2Lip e Easy-Wav2Lip-venv (uma instalação isolada do python)
python3.10 -m venv Easy-Wav2Lip-venv source EW2Lvenv/bin/activate python -m pip install --upgrade pip python -m pip install requests for file in ffmpeg ffprobe ffplay; do curl -O "https://evermeet.cx/ffmpeg/${file}-6.1.1.zip" unzip "${file}-6.1.1.zip" done mv -f ffmpeg ffprobe ffplay /Easy-Wav2Lip-venv/bin/ rm -f ffmpeg-6.1.1.zip ffprobe-6.1.1.zip ffplay-6.1.1.zip source EW2Lvenv/bin/activate git clone https://github.com/anothermartz/Easy-Wav2Lip.git cd Easy-Wav2Lip pip install -r requirements.txt python install.py
Agora, para executar o Easy-Wav2Lip:
3. Feche e reabra o terminal e faça cd para o mesmo diretório da Etapa 1.
4. Cole o seguinte código:
source Easy-Wav2Lip-venv/bin/activate cd Easy-Wav2Lip ./run_loop.sh
Depois que tudo estiver instalado, um arquivo chamado config.ini deverá aparecer.
Adicione aqui o(s) caminho(s) aos seus arquivos de vídeo e áudio e defina as configurações de acordo com sua preferência.
Dica profissional:
No Windows, segure shift ao clicar com o botão direito no arquivo que deseja usar e pressione "a" ou clique em "copiar como caminho" e isso obterá o caminho que você pode colar como video_file ou vocal_file.
MacOS: Clique com o botão direito no arquivo, mantenha pressionada a tecla Option (Alt) e selecione “Copiar [nome do arquivo] como nome do caminho” no menu de contexto.
Salve config.ini e feche-o, isso iniciará o processo Wav2Lip e seu arquivo será salvo no mesmo diretório do arquivo video_path.
config.ini será aberto novamente e você poderá alterar entradas e configurações.
Consulte as práticas recomendadas abaixo para obter dicas sobre como começar.
Consulte Ajustes avançados abaixo para obter a explicação das configurações ainda não explicadas em config.ini
O Wav2Lip Original, é claro.
O enorme aumento de velocidade e a melhoria da qualidade de base vêm do cog-Wav2Lip.
O código para upscale com GFPGAN veio principalmente de wav2lip-hq-updated-ESRGAN.
Eu não poderia ter feito isso sem a ajuda da IA; Antes de fazer isso, eu tinha uma experiência mínima em python! LLM de escolha: Bing Chat (agora chamado de 'Copilot').
Obrigado a JustinJohn por fazer as colaborações Wav2Lip_simplified que me inspiraram a fazer minha própria versão ainda mais simples.
Se você estiver tendo problemas para executar isso, consulte a guia de problemas para ver se alguém escreveu sobre isso. Caso contrário, crie um novo tópico, mas certifique-se de incluir o seguinte:
Se colab:
Número da versão do Easy-Wav2Lip colab
Informações sobre os arquivos usados.
Se for instalação local:
EasyWav2Lip.bat ou instalação manual
Sistema operacional (windows 11, linux etc.)
Modelo de GPU
Versão do driver da GPU
Versão Python
Informações sobre os arquivos usados e se outros arquivos funcionam
Sem essas informações, vou solicitá-las de qualquer maneira e, portanto, uma resposta sobre o problema em si demorará mais.
Provavelmente, se algum deles for diferente dos requisitos, esse é o motivo pelo qual não está funcionando e talvez você precise usar a versão Colab, se ainda não estiver.
Para um bate-papo geral sobre esta e qualquer outra conversa sobre sincronização labial, estarei neste discord:
Link do convite: https://discord.gg/FNZR9ETwKY
Canal Wav2Lip: https://discord.com/channels/667279414681272320/1076077584330280991
Os melhores resultados vêm de alinhar o discurso com as ações e expressões do orador antes de enviá-lo pelo wav2lip!
Arquivos de vídeo:
Deve ter um rosto em todos os frames ou o Wav2Lip falhará
Corte ou mascare rostos que você não deseja sincronizar com os lábios ou eles serão escolhidos aleatoriamente.
Use h264 .mp4 - outros tipos de arquivo podem ser suportados, mas é isso que ele produz
As imagens não foram testadas no momento.
Use um arquivo pequeno em todos os sentidos (tente <720p, <30 segundos, 30fps etc. - Arquivos maiores podem funcionar, mas geralmente são o motivo da falha)
Na primeira tentativa, use um clipe bem pequeno apenas para se acostumar com o processo. Somente quando estiver familiarizado, você deve tentar arquivos maiores para ver se funcionam.
Arquivos de áudio:
Salve como .wav e com a mesma duração do vídeo de entrada.
NOTA: Percebi que cerca de 80 ms são cortados do vídeo/áudio processado e não tenho certeza de como consertar isso, então certifique-se de ter um pouco mais do que realmente precisa!
Você pode simplesmente codificá-lo em seu arquivo de vídeo e deixar vocal_path em branco, mas isso adicionará alguns segundos ao tempo de processamento, pois divide o áudio do vídeo
OU
Selecione seu arquivo de áudio separadamente
Não tenho certeza de quais tipos de arquivos são suportados, pelo menos .wav e .mp3 funcionam.
Opção | Prós | Contras |
---|---|---|
Wav2Lip | + Sincronização labial mais precisa + Tenta manter a boca fechada quando não há som | - Às vezes produz perda de dentes (incomum) |
Wav2Lip_GAN | + Parece mais legal + Mantém mais as expressões originais do locutor | - Não é tão bom em mascarar os movimentos originais dos lábios, especialmente quando não há som |
Sugiro experimentar o Wav2Lip primeiro e mudar para a versão GAN se você sentir um efeito em que parece que o alto-falante tem grandes lacunas nos dentes.
Quando ativado, o wav2lip cortará o rosto em cada quadro de forma independente.
Bom para movimentos rápidos ou cortes no vídeo.
Pode causar espasmos se o rosto estiver em um ângulo estranho.
Quando desativado, o wav2lip mesclará a posição detectada do rosto entre 5 quadros.
Bom para movimentos lentos, especialmente para rostos em ângulos incomuns.
A boca pode ficar deslocada quando o rosto se move rapidamente dentro do quadro, fica horrível entre os cortes.
Esta opção controla quantos pixels são adicionados ou removidos do corte da face em cada direção.
Valor | Exemplo | Efeito |
---|---|---|
Você | você = -5 | Remove 5 pixels da parte superior do rosto |
D | D = 10 | Adiciona 10 pixels à parte inferior do rosto |
eu | eu = 0 | Nenhuma mudança à esquerda do rosto |
R | R = 15 | Adiciona 15 pixels à direita do rosto |
O preenchimento pode ajudar a remover linhas duras no queixo ou em outras bordas do rosto, mas muito ou pouco preenchimento pode alterar o tamanho ou a posição da boca. É uma prática comum adicionar 10 pixels na parte inferior, mas você deve experimentar valores diferentes para encontrar o melhor equilíbrio para o seu clipe.
Esta opção controla como a face processada é mesclada com a face original. Isto não afeta a opção de qualidade "Rápido".
size aumentará o tamanho da área que a máscara cobre.
o enevoamento determina a quantidade de mesclagem entre o centro da máscara e as bordas.
Mouth_tracking atualizará a posição da máscara para onde a boca está em cada quadro (mais lento)
Obs: A posição da boca já está bem aproximada devido a moldura estar recortada ao rosto, ative isso somente se encontrar um vídeo onde a máscara não parece acompanhar a boca.
debug_mask tornará o fundo em tons de cinza e a máscara colorida para que você possa ver facilmente onde a máscara está no quadro.
Esta opção permite processar vários arquivos de vídeo e/ou áudio automaticamente.
Nomeie seus arquivos com um número no final, por exemplo. Video1.mp4, Video2.mp4, etc. e coloque todos na mesma pasta.
Os arquivos serão processados em ordem numérica a partir daquele que você selecionar. Por exemplo, se você selecionar Video3.mp4, ele processará Video3.mp4, Video4.mp4 e assim por diante.
Se você selecionar arquivos de vídeo numerados e um arquivo de áudio não numerado, cada vídeo será processado com o mesmo arquivo de áudio. Útil para fazer diferentes imagens/vídeos dizerem a mesma linha.
Da mesma forma, se você selecionar um arquivo de vídeo não numerado e arquivos de áudio numerados, o mesmo vídeo será usado para cada arquivo de áudio. Útil para fazer com que a mesma imagem/vídeo diga coisas diferentes.
Isso adiciona um sufixo aos arquivos de saída para que eles não sobrecarreguem os originais.
Adiciona quais configurações foram usadas - bom para comparar configurações diferentes, pois você saberá o que usou para cada renderização. Será adicionado: Qualty_resolution_nosmooth_pads-UDLR EG: _Enhanced_720_nosmooth1_pads-U15D10L-15R30 pads_UDLR não serão incluídos se estiverem definidos como 0. A resolução não será incluída se output_height estiver definido como resolução total
Exibe o vídeo/áudio de entrada antes do processamento para que você possa verificar se escolheu o(s) arquivo(s) correto(s). Pode funcionar apenas com .mp4, só sei que não funcionou em um .avi que tentei. Desativar isso economizará alguns segundos de processamento para cada vídeo.
Isso renderizará apenas 1 quadro do seu vídeo e o exibirá em tamanho real, para que você possa ajustar as configurações sem ter que renderizar o vídeo inteiro a cada vez. frame_to_preview serve para selecionar um quadro específico que você deseja verificar - pode não ser totalmente preciso em relação ao quadro real.