# PE 音频

[PE Audio](https://huggingface.co/papers/2504.13181) 是 Meta 的 Perception Encoder 系列中的音频分支。它通过对比学习将原始波形与文本对齐到共享的嵌入空间中，并在配对的音频-字幕数据上进行训练，用于跨模态检索和零样本音频分类。

同一编码器上方暴露了两个模型头。[PeAudioModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioModel) 为每个片段返回一个池化嵌入，用于片段级别的检索；而 [PeAudioFrameLevelModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioFrameLevelModel) 每 40 毫秒返回一个嵌入，用于事件定位和细粒度的时序分析。

您可以在 [perception-encoder-audio-visual](https://huggingface.co/collections/facebook/perception-encoder-audio-visual) 集合中找到所有官方的 PE Audio 检查点。

## 快速入门

```py
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](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioModel) 返回形状为 `(n_audio, n_text)` 的 logits。[PeAudioFrameLevelModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioFrameLevelModel) 返回 `(n_audio, n_text, n_frames)`，每 40 ms 一帧。请根据任务选择对应的类——它们共享权重，因此切换成本很低。
- 文本塔是一个通过 `AutoModel` 从 `config.text_config` 加载的共享编码器。分词器通过 `AutoTokenizer` 附加到处理器上，而不是使用专用类。

## PeAudioConfig[[transformers.PeAudioConfig]]

#### transformers.PeAudioConfig[[transformers.PeAudioConfig]]

```python
transformers.PeAudioConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, text_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, audio_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/configuration_pe_audio.py#L88)

**参数：**

text_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`，*可选*)：文本骨干网络的配置对象或字典。

audio_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`，*可选*)：音频骨干网络的配置对象或字典。

这是用于存储 PeAudioModel 配置的类。它根据指定的参数实例化 Pe Audio 模型，并定义模型架构。使用默认值实例化配置将得到与 [facebook/pe-av-large](https://huggingface.co/facebook/pe-av-large) 类似的配置。

配置对象继承自 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig)，可用于控制模型输出。有关更多信息，请参阅 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig) 的文档。

示例：

```python
>>> 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[[transformers.PeAudioEncoderConfig]]

#### transformers.PeAudioEncoderConfig[[transformers.PeAudioEncoderConfig]]

```python
transformers.PeAudioEncoderConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, dac_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, hidden_size: int = 1792, intermediate_size: int = 4800, num_hidden_layers: int = 6, num_attention_heads: int = 14, num_key_value_heads: int | None = None, head_dim: int = 128, hidden_act: str = 'silu', max_position_embeddings: int = 10000, initializer_range: float = 0.02, rms_norm_eps: float = 1e-05, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: float | int = 0.0)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/configuration_pe_audio.py#L26)

**参数：**

dac_config (`Union[PreTrainedConfig, dict]`, *可选*) : 用于对原始音频输入进行分词的 DAC 音频编码器的配置。如果传入字典，将使用默认的 DAC 超参数来实例化一个 [DacConfig](/docs/transformers/main/zh/model_doc/dac#transformers.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）的键值头数量。如果 `num_key_value_heads=num_attention_heads`，模型将使用多头注意力（MHA）；如果 `num_key_value_heads=1`，模型将使用多查询注意力（MQA）；否则将使用 GQA。在将多头检查点转换为 GQA 检查点时，每个组的键和值头应通过对该组内所有原始头进行平均池化来构建。更多详情请参阅 [这篇论文](https://huggingface.co/papers/2305.13245)。如果未指定，则默认为 `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` 的值，并且如果希望使用更长的 `max_position_embeddings` 配合 RoPE，则可选地包含用于缩放的参数。

attention_bias (`bool`，*可选*，默认为 `False`)：在自注意力机制中，是否在查询、键、值和输出投影层中使用偏置。

attention_dropout (`Union[float, int]`，*可选*，默认值为 `0.0`)：注意力概率的 dropout 比率。

这是用于存储 PeAudioModel 配置的类。它根据指定的参数实例化 Pe Audio 模型，并定义模型架构。使用默认值实例化配置将得到与 [facebook/pe-av-large](https://huggingface.co/facebook/pe-av-large) 类似的配置。

配置对象继承自 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig)，可用于控制模型输出。有关更多信息，请参阅 [PreTrainedConfig](/docs/transformers/main/zh/main_classes/configuration#transformers.PreTrainedConfig) 的文档。

```python
>>> 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[[transformers.PeAudioFeatureExtractor]]

#### transformers.PeAudioFeatureExtractor[[transformers.PeAudioFeatureExtractor]]

```python
transformers.PeAudioFeatureExtractor(feature_size: int = 1, sampling_rate: int = 48000, padding_value: float = 0.0, hop_length: int = 1920, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/feature_extraction_pe_audio.py#L26)

**参数：**

feature_size (`int`，*可选*，默认为 1)：提取特征的维度。单声道使用 1，立体声使用 2。

sampling_rate (`int`, *可选*，默认为 48000)：音频波形应被数字化采样的采样率，以赫兹 (Hz) 为单位。

padding_value (`float`, *可选*, 默认值为 0.0) : 用于填充的值。

hop_length (`int`，*可选*，默认为 1920)：连续窗口之间的重叠长度。

构建一个 PeAudioFeatureExtractor 特征提取器。

此特征提取器继承自 [SequenceFeatureExtractor](/docs/transformers/main/zh/main_classes/feature_extractor#transformers.SequenceFeatureExtractor)，后者包含了大部分主要方法。有关这些方法的更多信息，请参阅该父类。

#### __调用__[[transformers.PeAudioFeatureExtractor.__call__]]

```python
__call__(raw_audio: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]] | str | list[str], padding: bool | str | transformers.utils.generic.PaddingStrategy | None = None, truncation: bool | None = False, max_length: int | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, sampling_rate: int | None = None)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/feature_extraction_pe_audio.py#L63)

## PeAudioProcessor[[transformers.PeAudioProcessor]]

#### transformers.PeAudioProcessor[[transformers.PeAudioProcessor]]

```python
transformers.PeAudioProcessor(*args, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/processing_pe_audio.py#L17)

## PeAudioEncoder[[transformers.PeAudioEncoder]]

#### transformers.PeAudioEncoder[[transformers.PeAudioEncoder]]

```python
transformers.PeAudioEncoder(config: PeAudioEncoderConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L606)

**参数：**

config ([PeAudioEncoderConfig](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioEncoderConfig))：模型配置类，包含模型的所有参数。通过配置文件进行初始化时，不会加载与模型关联的权重，仅加载配置。请查看 [from_pretrained()](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel.from_pretrained) 方法以加载模型权重。

PeAudio Encoder 模型。

该模型继承自 [PreTrainedModel](/docs/transformers/main/zh/main_classes/model#transformers.PreTrainedModel)。请查阅父类文档，了解该库为所有模型实现的通用方法（例如下载或保存、调整输入嵌入大小、剪枝头等）。

该模型也是 PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) 的子类。请将其作为常规的 PyTorch Module 使用，有关通用用法和行为的所有事项，请参阅 PyTorch 文档。

#### forward[[transformers.PeAudioEncoder.forward]]

```python
forward(input_values: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L625)

**参数：**

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](/docs/transformers/main/zh/model_doc/auto#transformers.AutoProcessor) 进行填充并转换为 `torch.Tensor` 类型的张量。有关详细信息，请参阅 [PeAudioProcessor.__call__()](/docs/transformers/main/zh/main_classes/processors#transformers.ProcessorMixin.__call__)。

padding_mask (`torch.Tensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于避免对 `input_values` 中的填充样本执行注意力机制的掩码。掩码值在 `[0, 1]` 中选取： - 1 表示**未掩码**的样本， - 0 表示**已掩码**的样本。

**返回：** [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `tuple(torch.Tensor)`

一个 [BaseModelOutputWithPooling](/docs/transformers/main/zh/main_classes/output#transformers.modeling_outputs.BaseModelOutputWithPooling) 或 `torch.Tensor` 元组（如果传入了 `return_dict=False` 或 `config.return_dict=False`），其包含的元素取决于配置（[PeAudioConfig](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioConfig)）和输入。

[PeAudioEncoder](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioEncoder) 的 forward 方法重写了 `__call__` 特殊方法。

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

- **last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`）-- 模型最后一层输出的隐藏状态序列。
- **pooler_output**（形状为 `(batch_size, hidden_size)` 的 `torch.Tensor`）-- 序列中第一个 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[[transformers.PeAudioModel]]

#### transformers.PeAudioModel[[transformers.PeAudioModel]]

```python
transformers.PeAudioModel(config: PeAudioConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L711)

#### forward[[transformers.PeAudioModel.forward]]

```python
forward(input_ids: Tensor, input_values: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, padding_mask: typing.Optional[torch.Tensor] = None, return_loss: bool | None = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L744)

**参数：**

input_ids （形状为 `(batch_size, sequence_length)` 的 `torch.Tensor`）：输入序列中 token 在词汇表中的索引。默认情况下，填充（padding）将被忽略。可以使用 [AutoTokenizer](/docs/transformers/main/zh/model_doc/auto#transformers.AutoTokenizer) 获取索引。有关详细信息，请参阅 [PreTrainedTokenizer.encode()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 和 [PreTrainedTokenizer.__call__()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)。[什么是输入 ID？](../glossary#input-ids)

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](/docs/transformers/main/zh/model_doc/auto#transformers.AutoProcessor) 进行填充并转换为 `torch.Tensor` 类型的张量。有关详细信息，请参阅 [PeAudioProcessor.__call__()](/docs/transformers/main/zh/main_classes/processors#transformers.ProcessorMixin.__call__)。

attention_mask (`torch.Tensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于避免对填充（padding）标记索引执行注意力机制的掩码。掩码值取自 `[0, 1]`： - 1 表示**未掩码**的标记， - 0 表示**已掩码**的标记。 [什么是注意力掩码？](../glossary#attention-mask)

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](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioConfig)）和输入。

[PeAudioModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioModel) 的 forward 方法重写了 `__call__` 特殊方法。

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

- **loss** (`torch.Tensor`，形状为 `(1,)`，*可选*) -- 在音频和文本表示之间计算的对比损失。
- **logits_audio_text**（形状为 `(batch_size, batch_size)` 的 `torch.Tensor`，*可选*）-- 音频嵌入与文本嵌入之间的相似度 logits。[PeAudioFrameLevelModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.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](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioFrameLevelModel) 返回形状为 `(batch_size, sequence_length, hidden_size)` 的逐帧嵌入。
- **text_outputs**（`BaseModelOutputWithPooling`，*可选*）-- 文本编码器的模型输出，包括最后一个隐藏状态和池化输出。
- **audio_outputs** (`BaseModelOutputWithPooling`，*可选*) -- 音频编码器的模型输出，包括最后一个隐藏状态和池化输出。

## PeAudioFrameLevelModel[[transformers.PeAudioFrameLevelModel]]

#### transformers.PeAudioFrameLevelModel[[transformers.PeAudioFrameLevelModel]]

```python
transformers.PeAudioFrameLevelModel(config: PeAudioConfig)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L800)

#### forward[[transformers.PeAudioFrameLevelModel.forward]]

```python
forward(input_ids: Tensor, input_values: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, padding_mask: typing.Optional[torch.Tensor] = None, return_loss: bool | None = None, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/pe_audio/modeling_pe_audio.py#L811)

**参数：**

input_ids （形状为 `(batch_size, sequence_length)` 的 `torch.Tensor`）：输入序列中 token 在词汇表中的索引。默认情况下，填充（padding）将被忽略。可以使用 [AutoTokenizer](/docs/transformers/main/zh/model_doc/auto#transformers.AutoTokenizer) 获取索引。有关详细信息，请参阅 [PreTrainedTokenizer.encode()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) 和 [PreTrainedTokenizer.__call__()](/docs/transformers/main/zh/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__)。[什么是输入 ID？](../glossary#input-ids)

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](/docs/transformers/main/zh/model_doc/auto#transformers.AutoProcessor) 进行填充并转换为 `torch.Tensor` 类型的张量。有关详细信息，请参阅 [PeAudioProcessor.__call__()](/docs/transformers/main/zh/main_classes/processors#transformers.ProcessorMixin.__call__)。

attention_mask (`torch.Tensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于避免对填充（padding）标记索引执行注意力机制的掩码。掩码值取自 `[0, 1]`： - 1 表示**未掩码**的标记， - 0 表示**已掩码**的标记。 [什么是注意力掩码？](../glossary#attention-mask)

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](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioConfig)）和输入。

[PeAudioFrameLevelModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioFrameLevelModel) 的 forward 方法重写了 `__call__` 特殊方法。

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

- **loss** (`torch.Tensor`，形状为 `(1,)`，*可选*) -- 在音频和文本表示之间计算的对比损失。
- **logits_audio_text**（形状为 `(batch_size, batch_size)` 的 `torch.Tensor`，*可选*）-- 音频嵌入与文本嵌入之间的相似度 logits。[PeAudioFrameLevelModel](/docs/transformers/main/zh/model_doc/pe_audio#transformers.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](/docs/transformers/main/zh/model_doc/pe_audio#transformers.PeAudioFrameLevelModel) 返回形状为 `(batch_size, sequence_length, hidden_size)` 的逐帧嵌入。
- **text_outputs**（`BaseModelOutputWithPooling`，*可选*）-- 文本编码器的模型输出，包括最后一个隐藏状态和池化输出。
- **audio_outputs** (`BaseModelOutputWithPooling`，*可选*) -- 音频编码器的模型输出，包括最后一个隐藏状态和池化输出。

