Introducción
Versión de Google Colab (computación en la nube gratuita en el navegador)
Instalación local
Apoyo
Mejores prácticas
Configuración y ejecución sencillas, localmente y mediante colab.
sin perder el tiempo descargando e instalando requisitos previos manualmente
Google Colab tiene solo 2 celdas para ejecutar
Los usuarios de Windows sólo necesitan un archivo para instalar, actualizar y ejecutar.
Opciones bien documentadas a continuación.
¡Ya no te preguntarás qué hace nada!
Para mi clip de prueba de 9 segundos a 720p y 60 fps a través de Colab T4:
Wav2Lip original | Fácil-Wav2Lip |
---|---|
Tiempo de ejecución: 6m 53s | Tiempo de ejecución: 56s |
¡Eso no es un error tipográfico! ¡Mi clip pasa de casi 7 minutos a menos de 1 minuto!
Los datos de seguimiento se guardan entre generaciones del mismo vídeo, ahorrando aún más tiempo:
Easy-Wav2Lip en el mismo vídeo otra vez |
---|
Tiempo de ejecución: 25s |
Easy-Wav2Lip corrige errores visuales en los labios:
3 opciones de calidad:
Rápido: Wav2Lip
Mejorado: Wav2Lip con una máscara de plumas alrededor de la boca para restaurar la resolución original para el resto del rostro.
Mejorado: Wav2Lip + máscara + ampliación de GFPGAN realizada en la cara
https://colab.research.google.com/github/anothermartz/Easy-Wav2Lip/blob/v8.3/Easy_Wav2Lip_v8.3.ipynb
Requisitos: Tarjeta Nvidia que admita cuda 12.2 o dispositivo MacOS que admita mps a través de Apple Silicon o AMD GPU
Descargar Easy-Wav2Lip.bat
Colóquelo en una carpeta de su PC (por ejemplo, en Documentos)
Ejecútelo y siga las instrucciones. Creará una carpeta llamada Easy-Wav2Lip dentro de cualquier carpeta desde la que lo ejecute.
Ejecute este archivo siempre que desee utilizar Easy-Wav2Lip
Esto debería encargarse de la instalación de todos los componentes necesarios.
Asegúrese de que lo siguiente esté instalado y se pueda acceder a él a través de su terminal:
Python 3.10 (solo he probado 3.10.11; ¡es posible que otras versiones no funcionen!)
git
Windows y Linux: Cuda (Con solo tener los controladores más recientes de Nvidia, solo he probado la versión 12.2)
Ejecute lo siguiente en su terminal una vez que haya navegado a la carpeta donde desea instalar Easy-Wav2Lip:
Configura un venv, le instala ffmpeg y luego instala Easy-Wav2Lip:
Abra cmd y navegue hasta la carpeta en la que desea instalar EasyWav2Lip usando cd, por ejemplo: cd Documents
Copie y pegue el siguiente código en su ventana cmd: Nota: Se crearán 2 carpetas en esta ubicación: Easy-Wav2Lip y Easy-Wav2Lip-venv (una instalación aislada de 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
Ahora para ejecutar Easy-Wav2Lip:
3. Cierre y vuelva a abrir cmd y luego cd en el mismo directorio que en el Paso 1.
4. Pegue el siguiente código:
Easy-Wav2Lip-venvScriptsactivate cd Easy-Wav2Lip call run_loop.bat
Consulte Uso para obtener más instrucciones.
Configura un venv, le instala ffmpeg y luego instala Easy-Wav2Lip:
Abra Terminal y navegue hasta la carpeta que desea instalar Easy0Wav2Kip usando cd EG: cd ~/Documents
Copie y pegue el siguiente código en la ventana de su terminal: Nota: Se crearán 2 carpetas en esta ubicación: Easy-Wav2Lip y Easy-Wav2Lip-venv (una instalación aislada de 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
Ahora para ejecutar Easy-Wav2Lip:
3. Cierre y vuelva a abrir la terminal y luego acceda al mismo directorio que en el Paso 1.
4. Pegue el siguiente código:
source Easy-Wav2Lip-venv/bin/activate cd Easy-Wav2Lip ./run_loop.sh
Una vez que todo esté instalado, debería aparecer un archivo llamado config.ini.
Agregue aquí la(s) ruta(s) a sus archivos de video y audio y configure los ajustes a su gusto.
Consejo profesional:
En Windows, mantenga presionada la tecla Mayús al hacer clic derecho en el archivo que desea usar, luego presione "a" o haga clic en "copiar como ruta" y obtendrá la ruta que puede pegar como video_file o vocal_file.
MacOS: haga clic derecho en el archivo, mantenga presionada la tecla Opción (Alt) y seleccione "Copiar [nombre de archivo] como nombre de ruta" en el menú contextual.
Guarde config.ini y ciérrelo, esto iniciará el proceso Wav2Lip y su archivo se guardará en el mismo directorio que su archivo video_path.
config.ini se abrirá nuevamente y podrá cambiar las entradas y configuraciones.
Consulte las mejores prácticas a continuación para obtener consejos sobre cómo comenzar.
Consulte Ajustes avanzados a continuación para obtener una explicación de las configuraciones que aún no se explican en config.ini.
El Wav2Lip original, por supuesto.
El enorme aumento de velocidad y la calidad base mejorada provienen de cog-Wav2Lip.
El código para mejorar con GFPGAN provino principalmente de wav2lip-hq-updated-ESRGAN.
No podría haber hecho esto sin la ayuda de la IA; ¡Antes de hacer esto, tenía una experiencia mínima con Python! LLM de elección: Bing Chat (ahora llamado 'Copilot').
Gracias a JustinJohn por crear las colabs Wav2Lip_simplified que me inspiraron a hacer mi propia versión, aún más simple.
Si tiene problemas al ejecutar esto, consulte la pestaña de problemas para ver si alguien ha escrito al respecto. Si no, crea un hilo nuevo pero asegúrate de incluir lo siguiente:
Si colabora:
Número de versión de colab Easy-Wav2Lip
Información sobre los archivos utilizados.
Si es instalación local:
EasyWav2Lip.bat o instalación manual
Sistema operativo (windows 11, linux, etc.)
modelo de GPU
Versión del controlador GPU
Versión de Python
Información sobre los archivos utilizados y si otros archivos funcionan
Sin esta información, la solicitaré de todos modos, por lo que una respuesta sobre el problema en sí tardará más.
Lo más probable es que si alguno de ellos difiere de los requisitos, entonces esa es la razón por la que no funciona y es posible que tengas que usar la versión colab si aún no lo has hecho.
Para charlas generales sobre esta y cualquier otra charla sobre sincronización de labios, estaré en este discord:
Enlace de invitación: https://discord.gg/FNZR9ETwKY
Canal Wav2Lip: https://discord.com/channels/667279414681272320/1076077584330280991
¡Los mejores resultados se obtienen al alinear el discurso con las acciones y expresiones del orador antes de enviarlo a través de wav2lip!
Archivos de vídeo:
Debe tener una cara en todos los cuadros o Wav2Lip fallará
Recorta o enmascara las caras que no deseas sincronizar con los labios o las elegirá al azar.
Utilice h264 .mp4: es posible que se admitan otros tipos de archivos, pero esto es lo que genera
Las imágenes no están actualmente probadas.
Utilice un archivo pequeño en todos los sentidos (pruebe <720p, <30 segundos, 30 fps, etc. Los archivos más grandes pueden funcionar, pero suelen ser la razón por la que falla)
Para su primer intento, use un clip realmente pequeño solo para acostumbrarse al proceso; solo una vez que esté familiarizado debe probar archivos más grandes para ver si funcionan.
Archivos de audio:
Guárdelo como .wav y con la misma duración que su video de entrada.
NOTA: He notado que se cortan alrededor de 80 ms del video/audio procesado y no estoy seguro de cómo solucionarlo, así que asegúrese de tener un poco más de lo que realmente necesita.
Puedes simplemente codificarlo en tu archivo de video y dejar vocal_path en blanco, pero esto agregará un par de segundos al tiempo de procesamiento ya que divide el audio del video.
O
Seleccione su archivo de audio por separado
No estoy seguro de qué tipos de archivos son compatibles, al menos .wav y .mp3 funcionan.
Opción | Ventajas | Contras |
---|---|---|
Wav2Labio | + Sincronización de labios más precisa + Intenta mantener la boca cerrada cuando no hay sonido | - A veces produce dientes perdidos (poco común) |
Wav2Lip_GAN | + Se ve mejor + Mantiene más las expresiones originales del hablante. | - No es tan bueno para enmascarar los movimientos originales de los labios, especialmente cuando no hay sonido. |
Sugiero probar Wav2Lip primero y cambiar a la versión GAN si experimenta un efecto en el que parece que el altavoz tiene grandes espacios entre los dientes.
Cuando está habilitado, wav2lip recortará la cara en cada cuadro de forma independiente.
Bueno para movimientos rápidos o cortes en el vídeo.
Puede causar espasmos si la cara está en un ángulo extraño.
Cuando está desactivado, wav2lip combinará la posición detectada de la cara entre 5 fotogramas.
Bueno para movimientos lentos, especialmente para rostros en un ángulo inusual.
La boca se puede compensar cuando la cara se mueve rápidamente dentro del encuadre y se ve horrible entre cortes.
Esta opción controla cuántos píxeles se agregan o eliminan del recorte de la cara en cada dirección.
Valor | Ejemplo | Efecto |
---|---|---|
Ud. | U = -5 | Elimina 5 píxeles de la parte superior de la cara. |
D | D = 10 | Agrega 10 píxeles a la parte inferior de la cara. |
l | L = 0 | Sin cambios a la izquierda de la cara. |
R | R = 15 | Agrega 15 píxeles a la derecha de la cara. |
El acolchado puede ayudar a eliminar las líneas marcadas en la barbilla u otros bordes de la cara, pero demasiado o muy poco acolchado puede cambiar el tamaño o la posición de la boca. Es una práctica común agregar 10 píxeles en la parte inferior, pero debes experimentar con diferentes valores para encontrar el mejor equilibrio para tu clip.
Esta opción controla cómo se fusiona la cara procesada con la cara original. Esto no tiene ningún efecto sobre la opción de calidad "Rápida".
El tamaño aumentará el tamaño del área que cubre la máscara.
el difuminado determina la cantidad de fusión entre el centro de la máscara y los bordes.
Mouth_tracking actualizará la posición de la máscara donde está la boca en cada cuadro (más lento)
Nota: La posición de la boca ya está bien aproximada debido a que el marco se recortó según la cara; habilítelo solo si encuentra un video en el que la máscara no parece seguir la boca.
debug_mask hará que el fondo esté en escala de grises y la máscara en color para que puedas ver fácilmente dónde está la máscara en el marco.
Esta opción le permite procesar múltiples archivos de video y/o audio automáticamente.
Nombra tus archivos con un número al final, por ejemplo. Video1.mp4, Video2.mp4, etc. y colóquelos todos en la misma carpeta.
Los archivos se procesarán en orden numérico a partir del que seleccione. Por ejemplo, si selecciona Video3.mp4, procesará Video3.mp4, Video4.mp4, etc.
Si selecciona archivos de video numerados y un archivo de audio no numerado, procesará cada video con el mismo archivo de audio. Útil para hacer que diferentes imágenes/videos digan la misma línea.
Del mismo modo, si selecciona un archivo de vídeo no numerado y archivos de audio numerados, utilizará el mismo vídeo para cada archivo de audio. Útil para hacer que la misma imagen/video diga cosas diferentes.
Esto agrega un sufijo a sus archivos de salida para que no sobrescriban sus originales.
Agrega qué configuraciones se usaron; es bueno para comparar diferentes configuraciones, ya que sabrá qué usó para cada renderizado. Agregará: Qualty_solving_nosmooth_pads-UDLR EG: _Enhanced_720_nosmooth1_pads-U15D10L-15R30 pads_UDLR no se incluirán si están configurados en 0. La resolución no se incluirá si Output_height está configurada en resolución completa
Muestra el vídeo/audio de entrada antes de procesarlo para que pueda verificar y asegurarse de haber elegido los archivos correctos. Puede que sólo funcione con .mp4, sólo sé que no funcionó en un .avi que probé. Deshabilitar esto ahorrará unos segundos de tiempo de procesamiento para cada video.
Esto renderizará solo 1 fotograma de tu vídeo y lo mostrará en tamaño completo, para que puedas modificar la configuración sin tener que renderizar todo el vídeo cada vez. frame_to_preview sirve para seleccionar un fotograma en particular que desea consultar; puede que no sea completamente preciso para el fotograma real.