Transformers documentation

PE 音频

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2025-04-17 在 HF papers 上发布,并于 2025-12-16 贡献至 Hugging Face Transformers。 该模型于 2025-04-17 发布,并于 2025-12-16 添加至 Hugging Face Transformers。

PE 音频

PE Audio 是 Meta 感知编码器(Perception Encoder)系列中的音频分支。它通过对比学习将原始波形与文本对齐到共享的嵌入空间中,并在配对的音频-字幕数据上进行训练,以实现跨模态检索和零样本音频分类。

同一编码器上方暴露了两个模型头。PeAudioModel 为每个片段返回一个池化嵌入,用于片段级别的检索;而 PeAudioFrameLevelModel 每 40 毫秒返回一个嵌入,用于事件定位和细粒度的时序分析。

您可以在 perception-encoder-audio-visual 集合中找到所有官方的 PE Audio 检查点。

快速入门

import torch
from datasets import load_dataset
from transformers import AutoProcessor, PeAudioModel

processor = AutoProcessor.from_pretrained("facebook/pe-av-large")
model = PeAudioModel.from_pretrained(
    "facebook/pe-av-large",
    device_map="auto",
)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
audio = ds[0]["audio"]["array"]
labels = ["a dog barking", "a person speaking", "music playing"]

audio_inputs = processor.feature_extractor(audio, sampling_rate=48_000, return_tensors="pt").to(model.device)
text_inputs = processor.tokenizer(labels, padding=True, return_tensors="pt").to(model.device)
inputs = {**audio_inputs, **text_inputs}

with torch.no_grad():
    outputs = model(**inputs)

probs = outputs.logits_audio_text.sigmoid()
print({label: p.item() for label, p in zip(labels, probs[0])})

使用技巧与说明

  • 音频必须为单声道(feature_size=1)并重采样至 48 kHz——特征提取器会发出警告,但不会替你执行重采样。不支持立体声输入。
  • 变长音频通过 padding_mask(而非通常的 attention_mask)进行处理。该掩码在到达编码器之前会由 dac_config.hop_length 在内部进行下采样,因此请传入特征提取器返回的原始波形分辨率掩码。
  • PeAudioModel 返回形状为 (n_audio, n_text) 的 logits。PeAudioFrameLevelModel 返回 (n_audio, n_text, n_frames),每 40 ms 一帧。请根据任务选择对应的类——它们共享权重,因此切换成本很低。
  • 文本塔是一个通过 AutoModel 从 config.text_config 加载的共享编码器。分词器通过 AutoTokenizer 附加到处理器上,而不是使用专用类。

PeAudioConfig

class transformers.PeAudioConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None )

参数

  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig],可选) — 文本骨干网络的配置对象或字典。
  • audio_config (Union[dict, ~configuration_utils.PreTrainedConfig], 可选) — 音频骨干网络的配置对象或字典。

这是用于存储 PeAudioModel 配置的类。它根据指定的参数实例化 Pe Audio 模型,并定义模型架构。使用默认值实例化配置将生成与 facebook/pe-av-large 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

示例:

>>> from transformers import PeAudioModel, PeAudioConfig

>>> # Initializing a PeAudioModel style configuration
>>> configuration = PeAudioConfig()

>>> # Initializing a model from the pe-av-large style configuration
>>> model = PeAudioModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

PeAudioEncoderConfig

class transformers.PeAudioEncoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonedac_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonehidden_size: int = 1792intermediate_size: int = 4800num_hidden_layers: int = 6num_attention_heads: int = 14num_key_value_heads: int | None = Nonehead_dim: int = 128hidden_act: str = 'silu'max_position_embeddings: int = 10000initializer_range: float = 0.02rms_norm_eps: float = 1e-05rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = Noneattention_bias: bool = Falseattention_dropout: float | int = 0.0 )

参数

  • dac_config (Union[PreTrainedConfig, dict], 可选) — 用于对原始音频输入进行分词的 DAC 音频编码器的配置。如果传入字典,将使用它来实例化一个具有默认 DAC 超参数的 DacConfig。
  • hidden_size (int,可选,默认为 1792) — 隐藏表示的维度。
  • intermediate_size (int,可选,默认为 4800) — MLP 表示的维度。
  • num_hidden_layers (int,可选,默认为 6) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 14) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_key_value_heads (int, 可选) — 这是用于实现 Grouped Query Attention 的 key_value 头数。如果 num_key_value_heads=num_attention_heads,模型将使用 Multi Head Attention (MHA);如果 num_key_value_heads=1,模型将使用 Multi Query Attention (MQA);否则使用 GQA。在将多头检查点转换为 GQA 检查点时,每个组的 key 和 value 头应通过对该组内所有原始头进行平均池化来构建。更多详情请参阅 这篇论文。如果未指定,则默认为 num_attention_heads。
  • head_dim (int,可选,默认为 128) — 注意力头维度。如果为 None,则默认为 hidden_size // num_attention_heads
  • hidden_act (str,可选,默认为 silu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • max_position_embeddings (int,可选,默认为 10000) — 该模型可能使用的最大序列长度。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • rms_norm_eps (float,可选,默认为 1e-05) — RMS 归一化层使用的 epsilon 值。
  • rope_parameters (Union[~modeling_rope_utils.RopeParameters, dict], 可选) — 包含 RoPE 嵌入配置参数的字典。该字典应包含 rope_theta 的值,并且如果希望使用 RoPE 处理更长的 max_position_embeddings,则可选地包含用于缩放的参数。
  • attention_bias (bool,可选,默认为 False) — 在自注意力机制中,是否在 query、key、value 和 output 投影层中使用偏置。
  • attention_dropout (Union[float, int],可选,默认为 0.0) — 注意力概率的 dropout 比率。

这是用于存储 PeAudioModel 配置的类。它根据指定的参数实例化 Pe Audio 模型,并定义模型架构。使用默认值实例化配置将生成与 facebook/pe-av-large 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

>>> from transformers import PeAudioEncoder, PeAudioEncoderConfig

>>> # Initializing a PeAudioEncoder style configuration
>>> configuration = PeAudioEncoderConfig()

>>> # Initializing a model from the pe-av-large style configuration
>>> model = PeAudioEncoder(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

PeAudioFeatureExtractor

class transformers.PeAudioFeatureExtractor

< >

( feature_size: int = 1sampling_rate: int = 48000padding_value: float = 0.0hop_length: int = 1920**kwargs )

参数

  • feature_size (int,可选,默认为 1) — 提取特征的维度。单声道使用 1,立体声使用 2。
  • sampling_rate (int, 可选,默认为 48000) — 用于数字化音频波形的采样率,以赫兹 (Hz) 为单位。
  • padding_value (float,可选,默认为 0.0) — 用于填充的值。
  • hop_length (int,可选,默认为 1920) — 相邻窗口之间的重叠长度。

构建一个 PeAudioFeatureExtractor 特征提取器。

该特征提取器继承自 SequenceFeatureExtractor,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

__call__

< >

( raw_audio: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]] | str | list[str]padding: bool | str | transformers.utils.generic.PaddingStrategy | None = Nonetruncation: bool | None = Falsemax_length: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = None )

PeAudioProcessor

class transformers.PeAudioProcessor

< >

( *args**kwargs )

PeAudioEncoder

class transformers.PeAudioEncoder

< >

( config: PeAudioEncoderConfig )

参数

  • config (PeAudioEncoderConfig) — 模型配置类,包含模型的所有参数。使用配置文件进行初始化时,不会加载与模型关联的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

PeAudio Encoder 模型。

该模型继承自 PreTrainedModel。请查阅父类文档,了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头等)。

该模型也是 PyTorch torch.nn.Module 的子类。 请将其作为常规的 PyTorch Module 使用,有关通用用法和行为的所有事项,请参阅 PyTorch 文档。

forward

< >

( input_values: Tensorpadding_mask: typing.Optional[torch.Tensor] = None**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

参数

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。有关详细信息,请参阅 PeAudioProcessor.call()。
  • padding_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对 input_values. 中的掩码值,取值范围为 [0, 1]:
    • 1 对于未被掩码的样本,
    • 对于被掩码的样本,值为 0。

返回值

BaseModelOutputWithPooling 或 tuple(torch.Tensor)

一个 BaseModelOutputWithPooling 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(PeAudioConfig)和输入。

PeAudioEncoder 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后得到。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)。

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

PeAudioModel

class transformers.PeAudioModel

< >

( config: PeAudioConfig )

forward

< >

( input_ids: Tensorinput_values: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.Tensor] = Nonereturn_loss: bool | None = None**kwargs ) → PeAudioOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.Tensor 形状为 (batch_size, sequence_length)) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)会被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。有关详细信息,请参阅 PeAudioProcessor.call()。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • padding_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对 input_values. 中的掩码值,取值范围为 [0, 1]:
    • 1 对于未被掩码的样本,
    • 对于被掩码的样本,值为 0。
  • return_loss (bool, 可选) — 是否返回损失值。

返回值

PeAudioOutput 或 tuple(torch.Tensor)

PeAudioOutput 或 torch.Tensor 元组(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(PeAudioConfig)和输入。

PeAudioModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选) — 在音频和文本表示之间计算的对比损失。
  • logits_audio_text(形状为 (batch_size, batch_size) 的 torch.Tensor,可选)— 音频嵌入与文本嵌入之间的相似度 logits。PeAudioFrameLevelModel 返回形状为 (batch_size, batch_size, sequence_length) 的逐帧 logits。
  • text_audio_embeds(形状为 (batch_size, hidden_size) 的 torch.Tensor,可选)— 投影到音频-文本空间的文本嵌入。
  • audio_embeds(形状为 (batch_size, hidden_size) 的 torch.Tensor,可选)— 投影到音频-文本空间的音频嵌入。PeAudioFrameLevelModel 返回形状为 (batch_size, sequence_length, hidden_size) 的逐帧嵌入。
  • text_outputs (BaseModelOutputWithPooling,可选) — 文本编码器的模型输出,包括最后一个隐藏状态和池化输出。
  • audio_outputs (BaseModelOutputWithPooling,可选) — 音频编码器的模型输出,包括最后一个隐藏状态和池化输出。

PeAudioFrameLevelModel

class transformers.PeAudioFrameLevelModel

< >

( config: PeAudioConfig )

forward

< >

( input_ids: Tensorinput_values: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonepadding_mask: typing.Optional[torch.Tensor] = Nonereturn_loss: bool | None = None**kwargs ) → PeAudioOutput or tuple(torch.Tensor)

参数

  • input_ids (torch.Tensor 形状为 (batch_size, sequence_length)) — 输入序列中各 token 在词汇表中的索引。默认情况下,填充(padding)会被忽略。

    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。

    什么是输入 ID?

  • input_values (torch.Tensor,形状为 (batch_size, sequence_length)) — 输入原始语音波形的浮点值。可以通过将 .flac 或 .wav 音频文件加载为 list[float]、numpy.ndarray 或 torch.Tensor 类型的数组来获取这些值,例如 使用 torchcodec 库(pip install torchcodec)或 soundfile 库(pip install soundfile)。要将该数组准备为 input_values,应使用 AutoProcessor 进行填充并转换为 torch.Tensor 类型的张量。有关详细信息,请参阅 PeAudioProcessor.call()。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • padding_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于避免对 input_values. 中的掩码值,取值范围为 [0, 1]:
    • 1 对于未被掩码的样本,
    • 对于被掩码的样本,值为 0。
  • return_loss (bool, 可选) — 是否返回损失值。

返回值

PeAudioOutput 或 tuple(torch.Tensor)

PeAudioOutput 或 torch.Tensor 元组(当传入 return_dict=False 或 config.return_dict=False 时),其包含的元素取决于配置(PeAudioConfig)和输入。

PeAudioFrameLevelModel 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • loss (torch.Tensor,形状为 (1,),可选) — 在音频和文本表示之间计算的对比损失。
  • logits_audio_text(形状为 (batch_size, batch_size) 的 torch.Tensor,可选)— 音频嵌入与文本嵌入之间的相似度 logits。PeAudioFrameLevelModel 返回形状为 (batch_size, batch_size, sequence_length) 的逐帧 logits。
  • text_audio_embeds(形状为 (batch_size, hidden_size) 的 torch.Tensor,可选)— 投影到音频-文本空间的文本嵌入。
  • audio_embeds(形状为 (batch_size, hidden_size) 的 torch.Tensor,可选)— 投影到音频-文本空间的音频嵌入。PeAudioFrameLevelModel 返回形状为 (batch_size, sequence_length, hidden_size) 的逐帧嵌入。
  • text_outputs (BaseModelOutputWithPooling,可选) — 文本编码器的模型输出,包括最后一个隐藏状态和池化输出。
  • audio_outputs (BaseModelOutputWithPooling,可选) — 音频编码器的模型输出,包括最后一个隐藏状态和池化输出。
Update on GitHub