Transformers documentation

PE 音频

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
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