facebook / pe-av-large

huggingface.co
Total runs: 70.7K
24-hour runs: 465
7-day runs: 817
30-day runs: 50.4K
Model's Last Updated: January 29 2026

Introduction of pe-av-large

Model Details of pe-av-large

Perception Encoder Audio-Visual (PE-AV)

PE-AV is a state-of-the-art multimodal model that embeds audio, video, audio-video, and text into a joint embedding space. The model enables powerful cross-modal retrieval and understanding across audio, video, and text modalities.

Model Description

PE-AV is trained using contrastive learning to align audio, video, and text representations in a shared embedding space. The model can encode:

  • Audio only : Extract audio embeddings from audio waveforms
  • Video only : Extract visual embeddings from video frames
  • Audio-Video : Extract joint audio-visual embeddings
  • Text : Extract text embeddings optimized for different modality pairs
Model Variants

We release 6 model checkpoints with varying sizes and capabilities:

Model Avg Retrieval Video Frames used
pe-av-small-16-frame 45.2 16 frames
pe-av-base-16-frame 47.0 16 frames
pe-av-large-16-frame 48.2 16 frames
pe-av-small 48.1 all frames
pe-av-base 50.2 all frames
pe-av-large 51.6 all frames

The -16-frame variants sample exactly 16 frames (evenly spaced apart) from each video, while the base variants support variable-length videos.

Quick Start

The model is available in both transformers as well as perception_models libraries

perception_models Usage
import torch
from core.audio_visual_encoder import PEAudioVisual, PEAudioVisualTransform

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Load model and transform
model = PEAudioVisual.from_config("pe-av-large", pretrained=True).to(device)
transform = PEAudioVisualTransform.from_config("pe-av-large")

video_files = ["video1.mp4", "video2.mp4"]
descriptions = ["description1", "description2"]
audio_files = ["audio1.wav", "audio2.wav"]

# Process inputs and get embeddings
inputs = transform(videos=video_files, text=descriptions, audio=audio_files).to(device)

with torch.inference_mode(), torch.autocast(device.type, dtype=torch.bfloat16):
    outputs = model(**inputs)

# Access different embeddings
audio_embeds = outputs.audio_embeds  # Audio-only embeddings
visual_embeds = outputs.visual_embeds  # Video-only embeddings
audio_visual_embeds = outputs.audio_visual_embeds  # Joint audio-visual embeddings
audio_text_embeds = outputs.audio_text_embeds  # Text embeddings aligned to audio
visual_text_embeds = outputs.visual_text_embeds  # Text embeddings aligned to video
audio_visual_text_embeds = outputs.audio_visual_text_embeds  # Text embeddings aligned to audio-visual
audio_plus_text_embeds = outputs.audio_plus_text_embeds  # Joint audio and text embedding
visual_plus_text_embeds = outputs.visual_plus_text_embeds  # Joint video and text embedding

# Compute the dot product to get their similarities
audio_visual_similarity = audio_embeds @ visual_embeds.T
# When computing similarity against text embeddings, use the
# appropriate text embedding based on the other modality
audio_text_similarity = audio_embeds @ audio_text_embeds.T
video_text_similarity = visual_embeds @ visual_text_embeds.T

Note that you can omit any of the modalities, and use the same forward method. The corresponding embeddings in output will be None . For example:

inputs = transform(videos=video_files, text=descriptions).to(device)

with torch.inference_mode(), torch.autocast(device.type, dtype=torch.bfloat16):
    outputs = model(**inputs)

audio_embeds = outputs.audio_embeds  # None
visual_embeds = outputs.visual_embeds  # available
audio_visual_embeds = outputs.audio_visual_embeds # None
audio_visual_text_embeds = outputs.audio_visual_text_embeds # None
audio_text_embeds = outputs.audio_text_embeds  # None
visual_text_embeds = outputs.visual_text_embeds  # available
audio_plus_text_embeds = outputs.audio_plus_text_embeds  # None
visual_plus_text_embeds = outputs.visual_plus_text_embeds  # Available

We also provide methods for directly encoding an individual modality:

def encode_video_text(self, input_ids, attention_mask=None)
def encode_audio_text(self, input_ids, attention_mask=None)
def encode_audio_video_text(self, input_ids, attention_mask=None)
def encode_audio(self, input_values, padding_mask=None, input_features=None)
def encode_video(self, pixel_values_videos, padding_mask_videos=None, pe_features=None)
def encode_audio_video(
    self,
    input_values,
    pixel_values_videos,
    padding_mask=None,
    padding_mask_videos=None,
    pe_features=None,  # optionally re-use pre-computed PE features
    input_features=None,  # Optionally re-use pre-computed audio codec features
)
def encode_audio_plus_text(
    self,
    input_ids,
    input_values,
    attention_mask=None,
    padding_mask=None,
    input_features=None  # Optionally re-use pre-computed audio codec features
)
def encode_video_plus_text(
    self,
    input_ids,
    pixel_values_videos,
    attention_mask=None,
    padding_mask_videos=None,
    pe_features=None,  # optionally re-use pre-computed PE features
)
transformers Usage
from transformers import PeAudioVideoModel, PeAudioVideoProcessor
import torch

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = PeAudioVideoModel.from_pretrained("facebook/pe-av-large")
processor = PeAudioVideoProcessor.from_pretrained("facebook/pe-av-large")

model = model.to(device)

video_files = ["video1.mp4", "video2.mp4"]
descriptions = ["description1", "description2"]
audio_files = ["audio1.wav", "audio2.wav"]

# Process inputs and get embeddings
inputs = processor(
    videos=video_files, text=descriptions, audio=audio_files, return_tensors="pt", padding=True
)

with torch.inference_mode(), torch.autocast(device.type, dtype=torch.bfloat16):
    outputs = model(**inputs.to(device), return_loss=True)

audio_embeds = outputs.audio_embeds  # Audio-only embeddings
video_embeds = outputs.video_embeds  # Video-only embeddings
audio_video_embeds = outputs.audio_video_embeds  # Joint audio-video embeddings
text_audio_video_embeds = outputs.audio_video_text_embeds  # Text embeddings aligned to audio-video
text_audio_embeds = outputs.text_audio_embeds  # Text embeddings aligned to audio
text_video_embeds = outputs.text_video_embeds  # Text embeddings aligned to video
audio_plus_text_embeds = outputs.audio_plus_text_embeds  # Joint audio and text embedding
video_plus_text_embeds = outputs.video_plus_text_embeds  # Joint video and text embedding

# For classification, you can use the logits_* fields of the output
audio_text_preds = outputs.logits_audio_text.sigmoid()

# The overall loss is also available in the output (requires passing return_loss=True)
loss = outputs.loss

We also provide methods for directly encoding an individual modality:

def get_text_audio_embeds(self, input_ids, attention_mask=None)

def get_text_video_embeds(self, input_ids, attention_mask=None)

def get_text_audio_video_embeds(self, input_ids, attention_mask=None)

def get_audio_embeds(self, input_values, padding_mask=None)

def get_video_embeds(self, pixel_values_videos, padding_mask_videos=None)

def get_audio_video_embeds(
    self,
    input_values: torch.Tensor,
    pixel_values_videos: torch.Tensor,
    padding_mask: Optional[torch.Tensor] = None,
    padding_mask_videos: Optional[torch.Tensor] = None,
    return_audio_embeds: bool = False,
    return_video_embeds: bool = False,
)

def get_audio_plus_text_embeds(
    self,
    input_ids: torch.Tensor,
    input_values: torch.Tensor,
    attention_mask: Optional[torch.Tensor] = None,
    padding_mask: Optional[torch.Tensor] = None,
)

def get_video_plus_text_embeds(
    self,
    input_ids: torch.Tensor,
    pixel_values_videos: torch.Tensor,
    attention_mask: Optional[torch.Tensor] = None,
    padding_mask_videos: Optional[torch.Tensor] = None,
)
Citation
@article{pe-av2025,
  title={PEAV: An Audiovisual Perception Encoder via Large-Scale Multimodal Correspondence Learning},
  author={Apoorv Vyas, Heng-Jui Chang, Cheng-Fu Yang, Po-Yao Huang, Luya Gao, Julius Richter, Sanyuan Chen, Matt Le, Piotr Dollár, Christoph Feichtenhofer, Ann Lee, Wei-Ning Hsu},
  url={arxiv link coming soon}
  year={2025}
}
License

This model is released under the Apache 2.0 license.

Runs of facebook pe-av-large on huggingface.co

70.7K
Total runs
465
24-hour runs
817
3-day runs
817
7-day runs
50.4K
30-day runs

More Information About pe-av-large huggingface.co Model

More pe-av-large license Visit here:

https://choosealicense.com/licenses/apache-2.0

pe-av-large huggingface.co

pe-av-large huggingface.co is an AI model on huggingface.co that provides pe-av-large's model effect (), which can be used instantly with this facebook pe-av-large model. huggingface.co supports a free trial of the pe-av-large model, and also provides paid use of the pe-av-large. Support call pe-av-large model through api, including Node.js, Python, http.

pe-av-large huggingface.co Url

https://huggingface.co/facebook/pe-av-large

facebook pe-av-large online free

pe-av-large huggingface.co is an online trial and call api platform, which integrates pe-av-large's modeling effects, including api services, and provides a free online trial of pe-av-large, you can try pe-av-large online for free by clicking the link below.

facebook pe-av-large online free url in huggingface.co:

https://huggingface.co/facebook/pe-av-large

pe-av-large install

pe-av-large is an open source model from GitHub that offers a free installation service, and any user can find pe-av-large on GitHub to install. At the same time, huggingface.co provides the effect of pe-av-large install, users can directly use pe-av-large installed effect in huggingface.co for debugging and trial. It also supports api for free installation.

pe-av-large install url in huggingface.co:

https://huggingface.co/facebook/pe-av-large

Url of pe-av-large

pe-av-large huggingface.co Url

Provider of pe-av-large huggingface.co

facebook
ORGANIZATIONS

Other API from facebook

huggingface.co

Total runs: 14.2M
Run Growth: -3.0M
Growth Rate: -20.84%
Updated:September 15 2023
huggingface.co

Total runs: 8.0M
Run Growth: 320.3K
Growth Rate: 3.99%
Updated:January 20 2022
huggingface.co

Total runs: 4.8M
Run Growth: 1.4M
Growth Rate: 28.25%
Updated:September 06 2023
huggingface.co

Total runs: 3.5M
Run Growth: -350.5K
Growth Rate: -9.88%
Updated:December 28 2021
huggingface.co

Total runs: 2.7M
Run Growth: 313.5K
Growth Rate: 11.76%
Updated:January 17 2024
huggingface.co

Total runs: 2.3M
Run Growth: 732.1K
Growth Rate: 32.33%
Updated:March 23 2023
huggingface.co

Total runs: 2.2M
Run Growth: 121.7K
Growth Rate: 5.42%
Updated:November 21 2025
huggingface.co

Total runs: 1.8M
Run Growth: -356.7K
Growth Rate: -20.06%
Updated:January 25 2024
huggingface.co

Total runs: 813.5K
Run Growth: -240.0K
Growth Rate: -29.51%
Updated:September 06 2023
huggingface.co

Total runs: 673.3K
Run Growth: -412.2K
Growth Rate: -61.23%
Updated:January 12 2024
huggingface.co

Total runs: 568.5K
Run Growth: 59.1K
Growth Rate: 10.39%
Updated:May 22 2023
huggingface.co

Total runs: 499.7K
Run Growth: 155.4K
Growth Rate: 31.09%
Updated:March 17 2025
huggingface.co

Total runs: 396.3K
Run Growth: 40.9K
Growth Rate: 10.32%
Updated:February 29 2024
huggingface.co

Total runs: 383.4K
Run Growth: -79.0K
Growth Rate: -20.61%
Updated:January 12 2024
huggingface.co

Total runs: 363.3K
Run Growth: -454.6K
Growth Rate: -125.14%
Updated:July 25 2023
huggingface.co

Total runs: 350.7K
Run Growth: 180.3K
Growth Rate: 51.40%
Updated:September 06 2023
huggingface.co

Total runs: 322.4K
Run Growth: -62.2K
Growth Rate: -19.31%
Updated:November 17 2022
huggingface.co

Total runs: 239.7K
Run Growth: -26.1K
Growth Rate: -10.90%
Updated:June 15 2023
huggingface.co

Total runs: 236.9K
Run Growth: 14.3K
Growth Rate: 6.02%
Updated:July 23 2024
huggingface.co

Total runs: 235.5K
Run Growth: -106.8K
Growth Rate: -45.37%
Updated:November 17 2023
huggingface.co

Total runs: 226.7K
Run Growth: -24.6K
Growth Rate: -10.85%
Updated:September 15 2023
huggingface.co

Total runs: 209.7K
Run Growth: -29.6K
Growth Rate: -14.14%
Updated:June 13 2023
huggingface.co

Total runs: 201.6K
Run Growth: 66.6K
Growth Rate: 33.05%
Updated:May 22 2023
huggingface.co

Total runs: 162.4K
Run Growth: 1000
Growth Rate: 0.62%
Updated:September 01 2023
huggingface.co

Total runs: 153.4K
Run Growth: 56.2K
Growth Rate: 36.60%
Updated:February 12 2023
huggingface.co

Total runs: 136.0K
Run Growth: -116.1K
Growth Rate: -85.37%
Updated:June 13 2023
huggingface.co

Total runs: 133.9K
Run Growth: 39.8K
Growth Rate: 29.71%
Updated:June 13 2023
huggingface.co

Total runs: 133.9K
Run Growth: 1.5K
Growth Rate: 1.14%
Updated:June 03 2022
huggingface.co

Total runs: 118.7K
Run Growth: 15.3K
Growth Rate: 12.90%
Updated:September 06 2023
huggingface.co

Total runs: 114.9K
Run Growth: -17.9K
Growth Rate: -15.58%
Updated:September 15 2023
huggingface.co

Total runs: 98.3K
Run Growth: 88.4K
Growth Rate: 89.93%
Updated:September 06 2023
huggingface.co

Total runs: 90.7K
Run Growth: 1.3K
Growth Rate: 1.46%
Updated:January 25 2023
huggingface.co

Total runs: 89.9K
Run Growth: 31.7K
Growth Rate: 35.31%
Updated:November 16 2023
huggingface.co

Total runs: 89.9K
Run Growth: -11.1K
Growth Rate: -12.30%
Updated:November 20 2023
huggingface.co

Total runs: 79.6K
Run Growth: -301
Growth Rate: -0.38%
Updated:March 28 2026
huggingface.co

Total runs: 70.6K
Run Growth: 25.0K
Growth Rate: 35.36%
Updated:June 13 2023
huggingface.co

Total runs: 67.7K
Run Growth: 56.2K
Growth Rate: 83.01%
Updated:September 01 2023
huggingface.co

Total runs: 52.9K
Run Growth: 21.9K
Growth Rate: 41.48%
Updated:March 13 2024
huggingface.co

Total runs: 45.3K
Run Growth: -9.6K
Growth Rate: -21.13%
Updated:March 27 2026
huggingface.co

Total runs: 42.7K
Run Growth: -2.8K
Growth Rate: -6.48%
Updated:September 05 2023