WavFlow: proyecto abierto de Meta para generación de audio en espacio de onda cruda

Un repaso de facebookresearch/WavFlow: posicionamiento, método, instalación, entrada de inferencia, flujo de entrenamiento y límites de uso. WavFlow intenta evitar latent compression y generar audio sincronizado de alta fidelidad directamente desde video y texto en raw waveform space.

facebookresearch/WavFlow es un proyecto de generación de audio multimodal publicado por Meta AI. El título del paper es WavFlow: Audio Generation in Waveform Space.

Proyecto: https://github.com/facebookresearch/WavFlow

No se centra en síntesis de voz ni en generación musical pura. Su objetivo es generar audio sincronizado y de alta fidelidad a partir de condiciones de video y texto. Lo más particular es que no sigue la ruta habitual de latent compression, sino que intenta hacer generación de audio end-to-end directamente en raw waveform space.

En el momento de escribir esto, la página de GitHub muestra unas 55 stars y 3 forks. El código es principalmente Python, y el proyecto no tiene releases publicados. El README también deja clara una limitación importante: por restricciones de política organizativa, actualmente no pueden publicar production-trained checkpoints. El equipo trabaja en un foundation checkpoint entrenado con datos completamente open source. Hasta entonces, los usuarios deben entrenar sus propios modelos.

Qué problema intenta resolver WavFlow

Muchos métodos de generación de audio multimodal comprimen primero el audio a un espacio latent, generan ahí y luego reconstruyen la forma de onda. Esta ruta es eficiente, pero puede traer un problema: la compresión puede perder detalles y afectar la textura del audio, la sincronización y la información de alta frecuencia.

WavFlow intenta saltarse ese paso y generar audio directamente en el espacio de onda cruda.

El README menciona waveform patchifying y amplitude lifting para que flow matching pueda funcionar de forma estable sobre raw audio, usando predicción directa de x. Dicho de forma simple: no comprime primero el sonido en una representación intermedia. Corta la propia forma de onda en patches adecuados para el modelo y aplica una transformación de amplitud para que el modelo aprenda generación a nivel de onda.

Ahí está su punto más interesante. Si la generación end-to-end en forma de onda puede funcionar de forma estable, podría reducir el cuello de botella de información introducido por codificadores y decodificadores.

Modos de entrada soportados

Según el README y la guía de entrenamiento, WavFlow apunta a tres tipos de entrada.

El primero es VT2A, es decir, video + text to audio. El modelo recibe video y descripción textual, y genera audio sincronizado con la escena y la semántica, por ejemplo bosques, ranas, tambores o skateboards.

El segundo es T2A, o text to audio. Solo hay descripción textual y no hay video. En entrenamiento usa CLIP text feature; en inferencia, el CSV puede poner video_exist en 0.

El tercero es V2A, o video to audio. Hay video, pero no texto. En inferencia se puede poner text_exist en 0, y el modelo usa un learned empty CLIP-text token.

Este diseño es práctico. En datos reales no siempre cada muestra tiene video, texto y audio anotados de forma completa. WavFlow usa campos como video_exist y text_exist para expresar explícitamente la modalidad faltante, de modo que entrenamiento e inferencia puedan manejar distintas combinaciones.

Evaluación y posicionamiento

El README dice que WavFlow se evalúa en VGGSound para VT2A y AudioCaps para T2A, con rendimiento comparable al de métodos latent-based ya establecidos.

Esto no significa que ya supere en todo a los modelos existentes. Significa que end-to-end raw waveform generation no necesariamente pierde frente a los frameworks latent tradicionales. Al menos en acoustic richness, fidelity y synchronization, puede llegar a una categoría similar.

La página del proyecto también ofrece demos como forest, frog, drum y skateboard, además de más de 24 muestras y comparaciones benchmark lado a lado. En modelos de generación de audio, las demos son importantes porque las métricas textuales difícilmente describen por completo la textura, el espacio y la sincronización del sonido.

Instalación

El proyecto ofrece un script de instalación automática:

1
2
3
4
git clone https://github.com/facebookresearch/WavFlow.git
cd WavFlow
bash scripts/setup.sh
conda activate wavflow

scripts/setup.sh crea un entorno conda llamado wavflow e instala las dependencias necesarias.

Si prefieres instalación manual, el README propone:

1
2
3
4
5
conda create -n wavflow python=3.10 -y
conda activate wavflow
pip install -r requirements.txt
pip install -e . --no-deps
conda install -n wavflow -c conda-forge "ffmpeg<7" -y

El ffmpeg<7 se usa principalmente para decodificación de video con torio. El README también indica que los pesos externos necesarios, como CLIP, Synchformer y empty-string CFG embedding, se descargan o calculan automáticamente en la primera ejecución y se guardan en ~/.cache/wavflow/.

Cómo ejecutar inferencia

Como el proyecto oficial aún no publica production-trained checkpoints, la entrada de inferencia siguiente solo aplica si ya tienes un checkpoint entrenado.

1
bash scripts/launch/predict.sh [--gpu N] [--config PATH]

El archivo de configuración por defecto es:

1
wavflow/configs/infer.yaml

El CSV de entrada se especifica con data.csv_path, y acepta video, texto o ambos:

1
2
3
4
5
video_path,caption,video_exist,text_exist
/abs/path/sample1.mp4,a whistling rocket explodes,1,1
/abs/path/sample2.mp4,birds chirping in a forest,1,1
,a whistling rocket explodes,0,1
/abs/path/sample3.mp4,,1,0

Aquí video_exist=0 significa que no se decodifica video y se usan learned empty CLIP/Sync tokens. text_exist=0 significa que se ignora el caption y se usa learned empty CLIP-text token. Los captions con comas deben ir entre comillas.

Los parámetros habituales del launcher incluyen:

1
2
3
--gpu N
--config PATH
WAVFLOW_ENV

Los campos importantes de configuración incluyen model.name, model.ckpt_path, model.use_ema, inference.duration_sec, target_sample_rate, inference.cfg, num_steps, noise_scale, noise_shift, prediction_type, seed y el directorio de salida.

Una trampa con EMA

El README advierte específicamente sobre model.use_ema.

Un checkpoint de WavFlow puede contener model_ema1, que se actualiza con ema_decay = 0.9999. Si el entrenamiento solo ha corrido unos cientos o miles de pasos, el tensor EMA puede seguir conteniendo muchos valores de inicialización aleatoria y producir ruido durante la inferencia.

Por eso, si haces una corrida corta, sobreajuste en pocas muestras o un smoke test, conviene considerar:

1
model.use_ema: false

O bien usar un ema_epoch_*.pth guardado después de suficiente entrenamiento. Este detalle es útil: si no lo conoces, es fácil pensar que el modelo está roto, cuando en realidad el EMA aún no se ha estabilizado.

Flujo de entrenamiento

El TRAINING.md oficial divide el entrenamiento en dos pasos.

El primer paso es extracción de características.

T2A solo extrae CLIP text feature. VT2A extrae CLIP frame feature, Synchformer feature y CLIP text feature. Un CSV de ejemplo se ve así:

1
2
id,audio_path,video_path,caption
sample1,/abs/or/relative/wav/sample1.wav,/abs/or/relative/video/sample1.mp4,a whistling rocket explodes

Los videos deben durar al menos extraction.duration_sec, que por defecto es 8 segundos. Clips más cortos se saltan. La extracción se puede ejecutar con:

1
2
bash scripts/launch/extract_t2a.sh
bash scripts/launch/extract_vt2a.sh

Para usar más GPUs o una configuración personalizada:

1
2
NPROC_PER_NODE=4 bash scripts/launch/extract_vt2a.sh
CONFIG_PATH=path/to/your_extract.yaml bash scripts/launch/extract_t2a.sh

El segundo paso es entrenamiento.

Para entrenamiento multi-GPU en un solo nodo:

1
bash scripts/launch/train_single_node.sh

El entrenamiento multinodo requiere configurar NNODES, NODE_RANK, MASTER_ADDR, MASTER_PORT y NPROC_PER_NODE. Las salidas incluyen checkpoint_latest.pth, checkpoint_epoch_*.pth, ema_epoch_*.pth, muestras de audio generadas y training.log.

El entrenamiento puede hacer resume automáticamente: si existe checkpoint_latest.pth en el directorio del experimento, continúa desde ahí.

A quién le interesa

WavFlow interesa más a investigadores y equipos de ingeniería que a usuarios normales que buscan una herramienta final de efectos de sonido.

Es adecuado para:

  • Personas que investigan video-to-audio, text-to-audio o multimodal audio generation.
  • Equipos que quieren comparar raw waveform generation con latent-based audio generation.
  • Usuarios que necesitan entrenar su propio modelo de generación de audio y pueden preparar datos y recursos GPU.
  • Equipos de aplicación con requisitos fuertes de sincronización entre video y sonido.
  • Quienes quieren estudiar si flow matching es viable sobre formas de onda de audio crudas.

Si solo buscas una herramienta web donde escribir un prompt y generar directamente un efecto de sonido, WavFlow no es hoy la opción más cómoda. Todavía no publica un production checkpoint, y su ruta de despliegue se parece más a código de investigación.

Qué conviene vigilar

Primero, no se debe tratar como un modelo de generación de audio “descargar y usar”. El proyecto oficial no publica actualmente production-trained checkpoints. Para inferencia real, necesitas entrenarlo tú mismo o esperar un futuro checkpoint entrenado con datos abiertos.

Segundo, la licencia no es una opción comercial permisiva por defecto. El README indica que la mayor parte de WavFlow usa CC-BY-NC 4.0, mientras que algunos componentes vendored conservan sus licencias originales, como MIT, Apache 2.0, CC BY-NC 4.0 y Stability AI Community License. Antes de uso comercial, conviene leer con cuidado LICENSE y NOTICE.txt.

Tercero, los datos de entrenamiento son críticos. La ventaja de WavFlow depende de datos alineados de audio, video y texto. Si la calidad de datos es baja, los captions son imprecisos o audio y video no están sincronizados, el modelo tendrá dificultades para aprender generación estable de sonido.

Cuarto, raw waveform generation reduce el latent bottleneck, pero también puede traer mayor coste de entrenamiento e inferencia. En proyectos reales todavía hay que equilibrar calidad de audio, velocidad, VRAM, sample rate y duración de salida.

Resumen

El valor de WavFlow está en plantear una pregunta clara: ¿la generación de audio multimodal tiene que comprimirse primero a un espacio latent?

Con waveform patchifying, amplitude lifting y flow matching, intenta generar audio sincronizado de alta fidelidad directamente en raw waveform space. Los resultados de evaluación sugieren que esta ruta al menos puede situarse cerca de métodos latent-based maduros.

Por ahora, sin embargo, se parece más a un framework de investigación y entrenamiento que a un modelo de producto listo para usar. No hay production checkpoint público, la licencia se inclina hacia uso no comercial y el entrenamiento necesita datos alineados de audio, video y texto. Todo esto lo hace más adecuado para investigación, reproducción y reentrenamiento. Si te interesan los próximos modelos video-to-audio o text-to-audio, WavFlow merece una lectura seria.

Referencias

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy