# SeamlessM4T-v2

## 概述

SeamlessM4T-v2 模型由 Meta AI 的 Seamless Communication 团队在 [Seamless: Multilingual Expressive and Streaming Speech Translation](https://huggingface.co/papers/2312.05187) 中提出。

SeamlessM4T-v2 是一组旨在提供高质量翻译的模型，让来自不同语言社区的人们能够通过语音和文本轻松交流。它是[上一版本](./seamless_m4t)的改进。有关 v1 和 v2 之间差异的更多详细信息，请参阅[与 SeamlessM4T-v1 的差异](#difference-with-seamlessm4t-v1)部分。

SeamlessM4T-v2 无需依赖单独的模型即可实现多种任务：

- 语音到语音翻译 (S2ST)
- 语音到文本翻译 (S2TT)
- 文本到语音翻译（T2ST）
- 文本到文本翻译 (T2TT)
- 自动语音识别（ASR）

[SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model) 可以执行上述所有任务，但每个任务也有其专用的子模型。

该论文的摘要如下：

*自动语音翻译领域的最新进展极大地扩展了语言覆盖范围，提升了多模态能力，并支持了广泛的任务和功能。然而，与人类之间的对话相比，当前的大规模自动语音翻译系统仍缺乏一些关键特性，这些特性有助于让机器辅助的沟通体验更加无缝。在本工作中，我们引入了一系列模型，支持以流式方式实现端到端的富有表现力的多语言翻译。首先，我们贡献了大规模多语言和多模态模型 SeamlessM4T 的改进版本——SeamlessM4T v2。该新模型整合了更新后的 UnitY2 框架，并在更多低资源语言数据上进行了训练。SeamlessAlign 的扩展版本增加了 114,800 小时的自动对齐数据，总计覆盖 76 种语言。SeamlessM4T v2 为我们最新的两个模型 SeamlessExpressive 和 SeamlessStreaming 奠定了基础。SeamlessExpressive 支持保留语音风格和韵律的翻译。与以往富有表现力的语音研究相比，我们的工作解决了韵律中某些尚未充分探索的方面，例如语速和停顿，同时保留说话者的声音风格。至于 SeamlessStreaming，我们的模型利用高效单调多头注意力（Efficient Monotonic Multihead Attention, EMMA）机制，在无需等待完整源语句的情况下生成低延迟的目标翻译。作为首个此类模型，SeamlessStreaming 支持多种源语言和目标语言的实时语音到语音/文本翻译。为了评估这些模型的性能，我们结合了新颖的以及现有自动指标的修改版本，以评估韵律、延迟和鲁棒性。对于人工评估，我们调整了现有协议，以衡量在意义保留、自然度和表现力方面最相关的属性。为确保我们的模型能够被安全且负责任地使用，我们实施了首个已知的多模态机器翻译红队测试，一个用于检测和缓解新增毒性的系统，一项针对性别偏见的系统性评估，以及一种旨在减弱深度伪造影响的不可听本地化水印机制。因此，我们将 SeamlessExpressive 和 SeamlessStreaming 的主要组件整合在一起，形成了 Seamless，这是首个公开可用的、能够解锁实时富有表现力的跨语言沟通的系统。总而言之，Seamless 为我们提供了一个关键的视角，展示了将通用语音翻译器从科幻概念转变为现实技术所需的技术基础。最后，本工作的贡献——包括模型、代码和水印检测器——已公开发布，并可通过下方链接访问。*

## 用法

在下面的示例中，我们将加载一个阿拉伯语音频样本和一个英语文本样本，并将它们转换为俄语语音和法语文本。

首先，加载处理器和模型的检查点：

```python
from transformers import AutoProcessor, SeamlessM4Tv2Model

processor = AutoProcessor.from_pretrained("facebook/seamless-m4t-v2-large")
model = SeamlessM4Tv2Model.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

您可以无缝地将此模型用于文本或音频，以生成翻译后的文本或翻译后的音频。

以下是如何使用处理器处理文本和音频：

```python
# let's load an audio sample from an Arabic speech corpus
from datasets import load_dataset

dataset = load_dataset("halabi2016/arabic_speech_corpus", split="test", streaming=True)
audio_sample = next(iter(dataset))["audio"]

# now, process it
audio_inputs = processor(audio=audio_sample["array"], return_tensors="pt").to(model.device)

# now, process some English text as well
text_inputs = processor(text = "Hello, my dog is cute", src_lang="eng", return_tensors="pt").to(model.device)
```

### 语音

[SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model) 可以*无缝地*生成文本或语音，几乎无需任何更改。让我们以俄语语音翻译为目标：

```python
audio_array_from_text = model.generate(**text_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
audio_array_from_audio = model.generate(**audio_inputs, tgt_lang="rus")[0].cpu().numpy().squeeze()
```

基本上使用相同的代码，我将英文文本和阿拉伯语语音翻译成了俄语语音样本。

### 文本

类似地，你可以使用相同的模型从音频文件或文本生成翻译后的文本。你只需将 `generate_speech=False` 传递给 [SeamlessM4Tv2Model.generate()](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model.generate)。这次，让我们将其翻译为法语。

```python
# from audio
output_tokens = model.generate(**audio_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_audio = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)

# from text
output_tokens = model.generate(**text_inputs, tgt_lang="fra", generate_speech=False)
translated_text_from_text = processor.decode(output_tokens[0].tolist()[0], skip_special_tokens=True)
```

### 提示

#### 1. 使用专用模型

[SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model) 是 transformers 中用于生成语音和文本的顶层模型，但您也可以使用专门执行该任务的独立模型，从而减少内存占用。例如，您可以将语音到语音生成的代码片段替换为专门用于 S2ST 任务的模型，其余代码完全相同：

```python
from transformers import SeamlessM4Tv2ForSpeechToSpeech

model = SeamlessM4Tv2ForSpeechToSpeech.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

或者，您可以将文本到文本生成的代码片段替换为专门用于 T2TT 任务的模型，只需移除 `generate_speech=False` 即可。

```python
from transformers import SeamlessM4Tv2ForTextToText

model = SeamlessM4Tv2ForTextToText.from_pretrained("facebook/seamless-m4t-v2-large", device_map="auto")
```

您也可以尝试使用 [SeamlessM4Tv2ForSpeechToText](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToText) 和 [SeamlessM4Tv2ForTextToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech)。

#### 2. 更改说话人身份

您可以通过 `speaker_id` 参数更改用于语音合成的说话人。对于某些语言，某些 `speaker_id` 的效果比其他 `speaker_id` 更好！

#### 3. 更改生成策略

你可以为文本生成使用不同的[生成策略](../generation_strategies)，例如 `.generate(input_ids=input_ids, text_num_beams=4, text_do_sample=True)`，它将在文本模型上执行多项式束搜索解码。请注意，语音生成默认仅支持贪心解码，或者可以使用多项式采样，例如 `.generate(..., speech_do_sample=True, speech_temperature=0.6)`。

#### 4. 同时生成语音和文本

使用 `return_intermediate_token_ids=True` 配合 [SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model) 可同时返回语音和文本！

## 模型架构

SeamlessM4T-v2 采用了一种灵活的架构，能够流畅地处理文本和语音的序列生成。该配置由两个序列到序列（seq2seq）模型组成。第一个模型将输入模态翻译为译文文本，而第二个模型则从译文文本中生成语音 token，即所谓的“unit token”。

每种模态都拥有各自专用的编码器，且架构各不相同。此外，对于语音输出，会在第二个 seq2seq 模型之上放置一个受 [HiFi-GAN](https://huggingface.co/papers/2010.05646) 架构启发的声码器。

### 与 SeamlessM4T-v1 的区别

这个新版本的架构在几个方面上与第一版有所不同：

#### 第二遍模型的改进

第二个 seq2seq 模型，名为 text-to-unit 模型，现在是非自回归的，这意味着它在**单次前向传播**中计算单元。这一成果的实现得益于：

- 使用**字符级嵌入**，即预测的翻译文本中的每个字符都有各自的嵌入，随后利用这些嵌入来预测单元标记。
- 使用一个中间时长预测器，在预测出的翻译文本上以**字符级**预测语音时长。
- 使用了一种新的文本到单元解码器，该解码器混合了卷积和自注意力机制，以处理更长的上下文。

#### 语音编码器的差异

语音编码器在首次生成过程中用于预测翻译后的文本，与之前的语音编码器相比，主要区别在于以下机制：

- 使用分块注意力掩码来防止跨块的注意力，确保每个位置仅关注其自身块以及固定数量的前序块中的位置。
- 使用相对位置嵌入，仅考虑序列元素之间的距离，而非绝对位置。有关更多详细信息，请参阅 [Self-Attention with Relative Position Representations (Shaw et al.)](https://huggingface.co/papers/1803.02155)。
- 使用因果深度卷积而非非因果卷积。

### 生成过程

生成过程的工作方式如下：

- 输入文本或语音会通过其对应的编码器进行处理。
- 解码器生成目标语言中的文本标记。
- 如果需要语音生成，第二个 seq2seq 模型会以非自回归的方式生成 unit token。
- 随后，这些单元 token 会被送入最终的声码器，以生成实际的语音。

该模型由 [ylacombe](https://huggingface.co/ylacombe) 贡献。原始代码可在[此处](https://github.com/facebookresearch/seamless_communication)找到。

## SeamlessM4Tv2Model[[transformers.SeamlessM4Tv2Model]]

#### transformers.SeamlessM4Tv2Model[[transformers.SeamlessM4Tv2Model]]

```python
transformers.SeamlessM4Tv2Model(config: SeamlessM4Tv2Config, current_modality = 'text')
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3665)

**参数：**

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

current_modality (`str`，*可选*，默认为 `"text"`)：默认模态。用于初始化模型。

原始的 SeamlessM4Tv2 模型 transformer，可用于所有可用任务（S2ST、S2TT、T2TT、T2ST）。

该模型继承自 [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 文档。

#### generate[[transformers.SeamlessM4Tv2Model.generate]]

```python
generate(input_ids: typing.Optional[torch.Tensor] = None, input_features: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, generate_speech: bool | None = True, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3859)

**参数：**

input_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*) : 输入序列词元在词汇表中的索引。 可以使用 [SeamlessM4TTokenizer](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 获取索引。 有关详细信息，请参阅 [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_features (`torch.Tensor`，形状为 `(batch_size, sequence_length, num_banks)`，*可选*)：输入音频特征。这应由 [SeamlessM4TFeatureExtractor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 类或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 类返回。有关详细信息，请参阅 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)。

return_intermediate_token_ids (`bool`, *可选*) : 如果为 `True`，则同时返回中间生成的文本和单元 token。如果您希望在获取音频的同时也获取翻译后的文本，请将其设置为 `True`。请注意，如果 `generate_speech=False`，此参数将被忽略，并返回文本 token。

tgt_lang (`str`, *可选*) : 用作翻译目标语言的语言。

speaker_id (`int`，*可选*，默认为 0)：用于语音合成的说话人 ID。必须小于 `config.vocoder_num_spkrs`。

generate_speech (`bool`，*可选*，默认为 `True`)：如果为 `False`，则仅返回文本标记，不生成语音。

kwargs (*可选*) : 将传递给 [GenerationMixin.generate()](/docs/transformers/main/zh/main_classes/text_generation#transformers.GenerationMixin.generate) 的其余关键字参数字典。关键字参数分为两种类型： - 不带前缀的参数将作为 `**kwargs` 传入每个子模型的 `generate` 方法，但 `decoder_input_ids` 除外，它仅通过文本组件传递。 - 带有 *text_* 或 *speech_* 前缀的参数将分别作为文本模型和语音模型的 `generate` 方法的输入。其优先级高于不带前缀的关键字。 这意味着例如，您可以为一种生成指定生成策略，而不为另一种生成指定。

**返回：** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor], ModelOutput]`

- 如果设置了 `generate_speech` 和 `return_intermediate_token_ids`，则返回 `SeamlessM4Tv2GenerationOutput`。
- 如果 `generate_speech` 为真且 `return_intermediate_token_ids` 为假，则返回一个元组，其中包含形状为 `(batch_size, sequence_length)` 的波形以及 `waveform_lengths`，后者给出每个样本的长度。
- 如果 `generate_speech=False`，则返回 `ModelOutput`。

生成翻译后的 token id 和/或翻译后的音频波形。

此方法会依次调用两个不同子模型的 `.generate` 函数。您可以在两个不同的层级指定关键字参数：将传递给两个模型的通用参数，或带有前缀、仅传递给其中一个模型的参数。

例如，调用 `.generate(input_ids=input_ids, num_beams=4, speech_do_sample=True)` 会依次对文本模型执行束搜索解码，对语音模型执行多项式束搜索采样。

有关生成策略和代码示例的概述，请参阅[以下指南](./generation_strategies)。

## SeamlessM4Tv2ForTextToSpeech[[transformers.SeamlessM4Tv2ForTextToSpeech]]

#### transformers.SeamlessM4Tv2ForTextToSpeech[[transformers.SeamlessM4Tv2ForTextToSpeech]]

```python
transformers.SeamlessM4Tv2ForTextToSpeech(config: SeamlessM4Tv2Config)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2984)

**参数：**

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

可用于 T2ST 的文本转语音 SeamlessM4Tv2 模型 transformer。

该模型继承自 [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 文档。

#### generate[[transformers.SeamlessM4Tv2ForTextToSpeech.generate]]

```python
generate(input_ids: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3118)

**参数：**

input_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`)：输入序列标记在词汇表中的索引。可以使用 [SeamlessM4TTokenizer](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 获取索引。有关详细信息，请参阅 [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)

return_intermediate_token_ids (`bool`, *可选*) : 如果为 `True`，还会返回中间生成的文本和单元标记。如果您希望在获取音频的同时也获取翻译后的文本，请将其设置为 `True`。

tgt_lang (`str`, *可选*) : 用作翻译目标语言的语言。

speaker_id (`int`，*可选*，默认为 0)：用于语音合成的说话人 ID。必须小于 `config.vocoder_num_spkrs`。

kwargs (*可选*) : 将传递给 [GenerationMixin.generate()](/docs/transformers/main/zh/main_classes/text_generation#transformers.GenerationMixin.generate) 的其余关键字参数字典。关键字参数分为两种类型： - 不带前缀的参数将作为 `**kwargs` 传入每个子模型的 `generate` 方法，但 `decoder_input_ids` 除外，它仅通过文本组件传递。 - 带有 *text_* 或 *speech_* 前缀的参数将分别作为文本模型和语音模型的 `generate` 方法的输入。其优先级高于不带前缀的关键字。 这意味着例如，您可以为一种生成指定生成策略，而不为另一种生成指定。

**返回：** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]`

- 如果设置了 `return_intermediate_token_ids`，则返回 `SeamlessM4Tv2GenerationOutput`。
- 如果未设置 `return_intermediate_token_ids`，则返回一个元组，其中包含形状为 `(batch_size, sequence_length)` 的波形以及 `waveform_lengths`，后者给出每个样本的长度。

生成翻译后的音频波形。

此方法会依次调用两个不同子模型的 `.generate` 函数。您可以在两个不同的层级指定关键字参数：将传递给两个模型的通用参数，或带有前缀、仅传递给其中一个模型的参数。

例如，调用 `.generate(input_ids, num_beams=4, speech_do_sample=True)` 会依次对文本模型执行束搜索解码，对语音模型执行多项式束搜索采样。

有关生成策略和代码示例的概述，请参阅[以下指南](./generation_strategies)。

## SeamlessM4Tv2ForSpeechToSpeech[[transformers.SeamlessM4Tv2ForSpeechToSpeech]]

#### transformers.SeamlessM4Tv2ForSpeechToSpeech[[transformers.SeamlessM4Tv2ForSpeechToSpeech]]

```python
transformers.SeamlessM4Tv2ForSpeechToSpeech(config: SeamlessM4Tv2Config)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3322)

**参数：**

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

可用于 S2ST 的语音到语音 SeamlessM4Tv2 模型 transformer。

该模型继承自 [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 文档。

#### generate[[transformers.SeamlessM4Tv2ForSpeechToSpeech.generate]]

```python
generate(input_features: typing.Optional[torch.Tensor] = None, return_intermediate_token_ids: bool | None = None, tgt_lang: str | None = None, speaker_id: int | None = 0, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L3455)

**参数：**

input_features （形状为 `(batch_size, sequence_length, num_banks)` 的 `torch.Tensor`）：输入音频特征。这应由 [SeamlessM4TFeatureExtractor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 类或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 类返回。有关详细信息，请参阅 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)。

return_intermediate_token_ids (`bool`, *可选*) : 如果为 `True`，还会返回中间生成的文本和单元标记。如果您希望在获取音频的同时也获取翻译后的文本，请将其设置为 `True`。

tgt_lang (`str`, *可选*) : 用作翻译目标语言的语言。

speaker_id (`int`，*可选*，默认为 0)：用于语音合成的说话人 ID。必须小于 `config.vocoder_num_spkrs`。

kwargs (*可选*) : 将传递给 [GenerationMixin.generate()](/docs/transformers/main/zh/main_classes/text_generation#transformers.GenerationMixin.generate) 的其余关键字参数字典。关键字参数分为两种类型： - 不带前缀的参数将作为 `**kwargs` 传入每个子模型的 `generate` 方法，但 `decoder_input_ids` 除外，它仅通过文本组件传递。 - 带有 *text_* 或 *speech_* 前缀的参数将分别作为文本模型和语音模型的 `generate` 方法的输入。其优先级高于不带前缀的关键字。 这意味着例如，您可以为一种生成指定生成策略，而不为另一种生成指定。

**返回：** `Union[SeamlessM4Tv2GenerationOutput, tuple[Tensor]]`

- 如果设置了 `return_intermediate_token_ids`，则返回 `SeamlessM4Tv2GenerationOutput`。
- 如果未设置 `return_intermediate_token_ids`，则返回一个元组，其中包含形状为 `(batch_size, sequence_length)` 的波形以及 `waveform_lengths`，后者给出每个样本的长度。

生成翻译后的音频波形。

此方法会依次调用两个不同子模型的 `.generate` 函数。您可以在两个不同的层级指定关键字参数：将传递给两个模型的通用参数，或带有前缀、仅传递给其中一个模型的参数。

例如，调用 `.generate(input_features, num_beams=4, speech_do_sample=True)` 会依次对文本模型执行束搜索解码，并对语音模型执行多项式束搜索采样。

有关生成策略和代码示例的概述，请参阅[以下指南](./generation_strategies)。

## SeamlessM4Tv2ForTextToText[[transformers.SeamlessM4Tv2ForTextToText]]

#### transformers.SeamlessM4Tv2ForTextToText[[transformers.SeamlessM4Tv2ForTextToText]]

```python
transformers.SeamlessM4Tv2ForTextToText(config: SeamlessM4Tv2Config)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2501)

**参数：**

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

可用于 T2TT 的文本到文本 SeamlessM4Tv2 模型 transformer。

该模型继承自 [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.SeamlessM4Tv2ForTextToText.forward]]

```python
forward(input_ids: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2537)

**参数：**

input_ids (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：输入序列中 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)

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

decoder_input_ids (`torch.LongTensor`，形状为 `(batch_size, target_sequence_length)`，*可选*) : 解码器输入序列中词元在词汇表中的索引。 可以使用 [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#decoder-input-ids)  Bart 使用 `eos_token_id` 作为 `decoder_input_ids` 生成的起始词元。 如果使用 `past_key_values`，则只需输入最后几个 `decoder_input_ids`（参见 `past_key_values`）。  对于翻译和摘要训练，应提供 `decoder_input_ids`。 如果未提供 `decoder_input_ids`，模型将按照论文中的方法，将 `input_ids` 向右移位以创建此张量，用于去噪预训练。

decoder_attention_mask (`torch.LongTensor`，形状为 `(batch_size, target_sequence_length)`，*可选*) : 默认行为：生成一个忽略 `decoder_input_ids` 中填充标记的张量。默认情况下也会使用因果掩码。 如果您想更改填充行为，请阅读 `modeling_bart._prepare_decoder_attention_mask` 并根据需求进行修改。有关默认策略的更多信息，请参阅[该论文](https://huggingface.co/papers/1910.13461)中的图 1。

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *可选*) : 元组由 (`last_hidden_state`, *可选*: `hidden_states`, *可选*: `attentions`) 组成。`last_hidden_state` 的形状为 `(batch_size, sequence_length, hidden_size)`，*可选*) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力中。

past_key_values (`~cache_utils.Cache`，*可选*)：预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 `past_key_values` 组成，前提是 `use_cache=True` 或 `config.use_cache=True`。 仅允许 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例作为输入，请参阅我们的 [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache)。如果未传入 `past_key_values`，则默认初始化 [DynamicCache](/docs/transformers/main/zh/internal/generation_utils#transformers.DynamicCache)。 模型将输出与输入相同的缓存格式。 如果使用 `past_key_values`，则用户预期仅输入未处理的 `input_ids`（即未向此模型提供其过去键值状态的那些），其形状为 `(batch_size, unprocessed_length)`，而不是形状为 `(batch_size, sequence_length)` 的所有 `input_ids`。

inputs_embeds (`torch.Tensor`，形状为`(batch_size, sequence_length, hidden_size)`，*可选*)：可选地，您可以选择直接传入嵌入表示，而不是传入 `input_ids`。如果您希望对如何将 `input_ids` 索引转换为相关向量拥有比模型内部嵌入查找矩阵更多的控制权，这将非常有用。 labels（`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*）：用于计算掩码语言建模损失的标签。索引应在 `[-100, 0, ..., config.vocab_size]` 范围内（参见 `input_ids` 的文档字符串）。索引设置为 `-100` 的令牌将被忽略（掩码），损失仅针对标签在 `[0, ..., config.vocab_size]` 范围内的令牌进行计算。

decoder_inputs_embeds (`torch.Tensor`，形状为 `(batch_size, target_sequence_length, hidden_size)`，*可选*)：可选地，您可以选择直接传入嵌入表示，而不是传入 `decoder_input_ids`。如果使用了 `past_key_values`，则只需输入最后一段 `decoder_inputs_embeds`（参见 `past_key_values`）。如果您希望比模型内部的嵌入查找矩阵更精细地控制将 `decoder_input_ids` 索引转换为对应向量的方式，这将非常有用。如果 `decoder_input_ids` 和 `decoder_inputs_embeds` 均未设置，则 `decoder_inputs_embeds` 将取 `inputs_embeds` 的值。

labels (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于计算掩码语言建模损失的标签。索引值应在 `[0, ..., config.vocab_size]` 范围内，或为 -100（参见 `input_ids` 的文档字符串）。索引值设为 `-100` 的 token 将被忽略（即被掩码），损失仅针对标签在 `[0, ..., config.vocab_size]` 范围内的 token 进行计算。

use_cache (`bool`，*可选*)：如果设置为 `True`，则会返回 `past_key_values` 键值状态，可用于加速解码（参见 `past_key_values`）。

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

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

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

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

- **loss** (`torch.Tensor`，形状为 `(1,)`，*可选*，在提供 `labels` 时返回) -- 语言建模损失。
- **logits**（形状为 `(batch_size, sequence_length, config.vocab_size)` 的 `torch.Tensor`）-- 语言建模头的预测分数（SoftMax 之前每个词汇表 token 的分数）。
- **past_key_values**（`EncoderDecoderCache`，*可选*，在传入 `use_cache=True` 或 `config.use_cache=True` 时返回）-- 它是一个 [EncoderDecoderCache](/docs/transformers/main/zh/internal/generation_utils#transformers.EncoderDecoderCache) 实例。更多详情，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。

  包含预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于（参见 `past_key_values` 输入）加速顺序解码。
- **decoder_hidden_states** (`tuple(torch.Tensor)`，*可选*，在传入 `output_hidden_states=True` 或 `config.output_hidden_states=True` 时返回) -- 一个 `torch.Tensor` 元组（如果模型具有嵌入层，则包含嵌入层输出的一个张量，以及每个层输出的一个张量），形状为 `(batch_size, sequence_length, hidden_size)`。

  解码器在每一层输出处的隐藏状态，以及初始嵌入输出。
- **decoder_attentions** (`tuple(torch.Tensor)`，*可选*，当传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  解码器在注意力 softmax 之后的注意力权重，用于在自注意力头中计算加权平均值。
- **cross_attentions** (`tuple(torch.Tensor)`，*可选*，在传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  解码器交叉注意力层在注意力 softmax 之后的注意力权重，用于在交叉注意力头中计算加权平均值。
- **encoder_last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`，*可选*）-- 模型编码器最后一层输出的隐藏状态序列。
- **encoder_hidden_states** (`tuple(torch.Tensor)`，*可选*，在传入 `output_hidden_states=True` 或 `config.output_hidden_states=True` 时返回) -- 一个 `torch.Tensor` 元组（如果模型具有嵌入层，则包含嵌入层的输出，以及每一层的输出），形状为 `(batch_size, sequence_length, hidden_size)`。

  编码器在每一层输出处的隐藏状态，以及初始嵌入输出。
- **encoder_attentions** (`tuple(torch.Tensor)`，*可选*，在传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  编码器在注意力 softmax 之后的注意力权重，用于在自注意力头中计算加权平均值。

#### generate[[transformers.SeamlessM4Tv2ForTextToText.generate]]

```python
generate(input_ids = None, tgt_lang = None, generation_config = None, logits_processor = None, stopping_criteria = None, prefix_allowed_tokens_fn = None, synced_gpus = False, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2619)

**参数：**

input_ids (`torch.Tensor`，形状因模态而异，*可选*) : 输入序列词元在词汇表中的索引。 可以使用 [SeamlessM4TTokenizer](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TTokenizer) 或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 获取索引。 详情请参阅 [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)

tgt_lang (`str`, *可选*) : 用作翻译目标语言的语言。

generation_config (`~generation.GenerationConfig`, *可选*) : 用作生成调用基础参数化的生成配置。传递给 generate 且与 `generation_config` 属性匹配的 `**kwargs` 将覆盖这些属性。如果未提供 `generation_config`，则使用默认值，其加载优先级如下：1) 如果存在，则从 `generation_config.json` 模型文件加载；2) 从模型配置加载。请注意，未指定的参数将继承 [GenerationConfig](/docs/transformers/main/zh/main_classes/text_generation#transformers.GenerationConfig) 的默认值，应查阅其文档以参数化生成。

logits_processor (`LogitsProcessorList`, *可选*) : 用于补充由参数和生成配置构建的默认 logits 处理器的自定义 logits 处理器。如果传入的 logit 处理器已经由参数或生成配置创建，则会抛出错误。此功能面向高级用户。

stopping_criteria (`StoppingCriteriaList`，*可选*)：自定义停止条件，用于补充由参数和生成配置构建的默认停止条件。如果传入的停止条件已经由参数或生成配置创建，则会抛出错误。此功能面向高级用户。

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`，*可选*)：如果提供，此函数会在每一步将 beam search 限制为仅允许特定的 token。如果未提供，则不施加任何约束。此函数接受 2 个参数：batch ID `batch_id` 和 `input_ids`。它必须返回一个列表，其中包含根据 batch ID `batch_id` 和之前生成的 token `inputs_ids` 条件化后，下一步生成所允许的 token。此参数对于基于前缀的约束生成非常有用，如 [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904) 中所述。

synced_gpus (`bool`，*可选*，默认为 `False`)：是否继续运行 while 循环直到 max_length（用于避免与 `FullyShardedDataParallel` 和 DeepSpeed ZeRO Stage 3 发生死锁）。

kwargs (`dict[str, Any]`, *可选*) : 用于临时参数化 `generate_config` 和/或额外的模型特定 kwargs，这些参数将被转发到模型的 `forward` 函数。

**返回：** [ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput) 或 `torch.LongTensor`

[ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput)（当 `return_dict_in_generate=True` 或 `config.return_dict_in_generate=True` 时）或 `torch.Tensor`。可能的 [ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput) 类型包括：
- [GenerateEncoderDecoderOutput](/docs/transformers/main/zh/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput)，
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/main/zh/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

生成 token id 序列。

大多数生成控制参数都在 `generation_config` 中设置，如果未传入该参数，则会使用模型的默认生成配置。你可以通过向 generate() 传入相应参数来覆盖 `generation_config` 中的任意设置，例如 `.generate(inputs, num_beams=4, do_sample=True)`。

有关生成策略和代码示例的概述，请参阅[以下指南](./generation_strategies)。

## SeamlessM4Tv2ForSpeechToText[[transformers.SeamlessM4Tv2ForSpeechToText]]

#### transformers.SeamlessM4Tv2ForSpeechToText[[transformers.SeamlessM4Tv2ForSpeechToText]]

```python
transformers.SeamlessM4Tv2ForSpeechToText(config: SeamlessM4Tv2Config)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2736)

**参数：**

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

可用于 S2TT 的语音转文本 SeamlessM4Tv2 模型 transformer。

该模型继承自 [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.SeamlessM4Tv2ForSpeechToText.forward]]

```python
forward(input_features: typing.Optional[torch.LongTensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.Cache | None = None, inputs_embeds: typing.Optional[torch.Tensor] = None, decoder_inputs_embeds: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2774)

**参数：**

input_features （形状为 `(batch_size, sequence_length, num_banks)` 的 `torch.Tensor`）：输入音频特征。这应由 [SeamlessM4TFeatureExtractor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 类或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 类返回。有关详细信息，请参阅 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)。

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

decoder_input_ids (`torch.LongTensor`，形状为 `(batch_size, target_sequence_length)`，*可选*) : 解码器输入序列中词元在词汇表中的索引。 可以使用 [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#decoder-input-ids)  Bart 使用 `eos_token_id` 作为 `decoder_input_ids` 生成的起始词元。 如果使用 `past_key_values`，则只需输入最后几个 `decoder_input_ids`（参见 `past_key_values`）。  对于翻译和摘要训练，应提供 `decoder_input_ids`。 如果未提供 `decoder_input_ids`，模型将按照论文中的方法，将 `input_ids` 向右移位以创建此张量，用于去噪预训练。

decoder_attention_mask (`torch.LongTensor`，形状为 `(batch_size, target_sequence_length)`，*可选*) : 默认行为：生成一个忽略 `decoder_input_ids` 中填充标记的张量。默认情况下也会使用因果掩码。 如果您想更改填充行为，请阅读 `modeling_bart._prepare_decoder_attention_mask` 并根据需求进行修改。有关默认策略的更多信息，请参阅[该论文](https://huggingface.co/papers/1910.13461)中的图 1。

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *可选*) : 元组由 (`last_hidden_state`, *可选*: `hidden_states`, *可选*: `attentions`) 组成。`last_hidden_state` 的形状为 `(batch_size, sequence_length, hidden_size)`，*可选*) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力中。

past_key_values (`~cache_utils.Cache`，*可选*)：预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于加速顺序解码。这通常由模型在解码的先前阶段返回的 `past_key_values` 组成，前提是 `use_cache=True` 或 `config.use_cache=True`。 仅允许 [Cache](/docs/transformers/main/zh/internal/generation_utils#transformers.Cache) 实例作为输入，请参阅我们的 [kv cache guide](https://huggingface.co/docs/transformers/en/kv_cache)。如果未传入 `past_key_values`，则默认初始化 [DynamicCache](/docs/transformers/main/zh/internal/generation_utils#transformers.DynamicCache)。 模型将输出与输入相同的缓存格式。 如果使用 `past_key_values`，则用户预期仅输入未处理的 `input_ids`（即未向此模型提供其过去键值状态的那些），其形状为 `(batch_size, unprocessed_length)`，而不是形状为 `(batch_size, sequence_length)` 的所有 `input_ids`。

inputs_embeds (`torch.Tensor`，形状为`(batch_size, sequence_length, hidden_size)`，*可选*)：可选地，您可以选择直接传入嵌入表示，而不是传入 `input_ids`。如果您希望对如何将 `input_ids` 索引转换为相关向量拥有比模型内部嵌入查找矩阵更多的控制权，这将非常有用。 labels（`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*）：用于计算掩码语言建模损失的标签。索引应在 `[-100, 0, ..., config.vocab_size]` 范围内（参见 `input_ids` 的文档字符串）。索引设置为 `-100` 的令牌将被忽略（掩码），损失仅针对标签在 `[0, ..., config.vocab_size]` 范围内的令牌进行计算。

decoder_inputs_embeds (`torch.Tensor`，形状为 `(batch_size, target_sequence_length, hidden_size)`，*可选*)：可选地，您可以选择直接传入嵌入表示，而不是传入 `decoder_input_ids`。如果使用了 `past_key_values`，则只需输入最后一段 `decoder_inputs_embeds`（参见 `past_key_values`）。如果您希望比模型内部的嵌入查找矩阵更精细地控制将 `decoder_input_ids` 索引转换为对应向量的方式，这将非常有用。如果 `decoder_input_ids` 和 `decoder_inputs_embeds` 均未设置，则 `decoder_inputs_embeds` 将取 `inputs_embeds` 的值。

labels (`torch.LongTensor`，形状为 `(batch_size, sequence_length)`，*可选*)：用于计算掩码语言建模损失的标签。索引值应在 `[0, ..., config.vocab_size]` 范围内，或为 -100（参见 `input_ids` 的文档字符串）。索引值设为 `-100` 的 token 将被忽略（即被掩码），损失仅针对标签在 `[0, ..., config.vocab_size]` 范围内的 token 进行计算。

use_cache (`bool`，*可选*)：如果设置为 `True`，则会返回 `past_key_values` 键值状态，可用于加速解码（参见 `past_key_values`）。

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

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

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

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

- **loss** (`torch.Tensor`，形状为 `(1,)`，*可选*，在提供 `labels` 时返回) -- 语言建模损失。
- **logits**（形状为 `(batch_size, sequence_length, config.vocab_size)` 的 `torch.Tensor`）-- 语言建模头的预测分数（SoftMax 之前每个词汇表 token 的分数）。
- **past_key_values**（`EncoderDecoderCache`，*可选*，在传入 `use_cache=True` 或 `config.use_cache=True` 时返回）-- 它是一个 [EncoderDecoderCache](/docs/transformers/main/zh/internal/generation_utils#transformers.EncoderDecoderCache) 实例。更多详情，请参阅我们的 [kv cache 指南](https://huggingface.co/docs/transformers/en/kv_cache)。

  包含预计算的隐藏状态（自注意力块和交叉注意力块中的键和值），可用于（参见 `past_key_values` 输入）加速顺序解码。
- **decoder_hidden_states** (`tuple(torch.Tensor)`，*可选*，在传入 `output_hidden_states=True` 或 `config.output_hidden_states=True` 时返回) -- 一个 `torch.Tensor` 元组（如果模型具有嵌入层，则包含嵌入层输出的一个张量，以及每个层输出的一个张量），形状为 `(batch_size, sequence_length, hidden_size)`。

  解码器在每一层输出处的隐藏状态，以及初始嵌入输出。
- **decoder_attentions** (`tuple(torch.Tensor)`，*可选*，当传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  解码器在注意力 softmax 之后的注意力权重，用于在自注意力头中计算加权平均值。
- **cross_attentions** (`tuple(torch.Tensor)`，*可选*，在传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  解码器交叉注意力层在注意力 softmax 之后的注意力权重，用于在交叉注意力头中计算加权平均值。
- **encoder_last_hidden_state**（形状为 `(batch_size, sequence_length, hidden_size)` 的 `torch.Tensor`，*可选*）-- 模型编码器最后一层输出的隐藏状态序列。
- **encoder_hidden_states** (`tuple(torch.Tensor)`，*可选*，在传入 `output_hidden_states=True` 或 `config.output_hidden_states=True` 时返回) -- 一个 `torch.Tensor` 元组（如果模型具有嵌入层，则包含嵌入层的输出，以及每一层的输出），形状为 `(batch_size, sequence_length, hidden_size)`。

  编码器在每一层输出处的隐藏状态，以及初始嵌入输出。
- **encoder_attentions** (`tuple(torch.Tensor)`，*可选*，在传入 `output_attentions=True` 或 `config.output_attentions=True` 时返回) -- 一个 `torch.Tensor` 元组（每层一个），形状为 `(batch_size, num_heads, sequence_length, sequence_length)`。

  编码器在注意力 softmax 之后的注意力权重，用于在自注意力头中计算加权平均值。

示例：

```python
>>> from transformers import AutoProcessor, SeamlessM4Tv2ForSpeechToText
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/hf-seamless-m4t-medium")
>>> model = SeamlessM4Tv2ForSpeechToText.from_pretrained("facebook/hf-seamless-m4t-medium")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
```

#### generate[[transformers.SeamlessM4Tv2ForSpeechToText.generate]]

```python
generate(input_features = None, tgt_lang = None, generation_config = None, logits_processor = None, stopping_criteria = None, prefix_allowed_tokens_fn = None, synced_gpus = False, **kwargs)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/modeling_seamless_m4t_v2.py#L2865)

**参数：**

input_features （形状为 `(batch_size, sequence_length, num_banks)` 的 `torch.Tensor`）：输入音频特征。这应由 [SeamlessM4TFeatureExtractor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 类或 [SeamlessM4TProcessor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TProcessor) 类返回。有关详细信息，请参阅 [SeamlessM4TFeatureExtractor.__call__()](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor.__call__)。

tgt_lang (`str`, *可选*) : 用作翻译目标语言的语言。

generation_config (`~generation.GenerationConfig`, *可选*) : 用作生成调用基础参数化的生成配置。传递给 generate 且与 `generation_config` 属性匹配的 `**kwargs` 将覆盖这些属性。如果未提供 `generation_config`，则使用默认值，其加载优先级如下：1) 如果存在，则从 `generation_config.json` 模型文件加载；2) 从模型配置加载。请注意，未指定的参数将继承 [GenerationConfig](/docs/transformers/main/zh/main_classes/text_generation#transformers.GenerationConfig) 的默认值，应查阅其文档以参数化生成。

logits_processor (`LogitsProcessorList`, *可选*) : 用于补充由参数和生成配置构建的默认 logits 处理器的自定义 logits 处理器。如果传入的 logit 处理器已经由参数或生成配置创建，则会抛出错误。此功能面向高级用户。

stopping_criteria (`StoppingCriteriaList`，*可选*)：自定义停止条件，用于补充由参数和生成配置构建的默认停止条件。如果传入的停止条件已经由参数或生成配置创建，则会抛出错误。此功能面向高级用户。

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`，*可选*)：如果提供，此函数会在每一步将 beam search 限制为仅允许特定的 token。如果未提供，则不施加任何约束。此函数接受 2 个参数：batch ID `batch_id` 和 `input_ids`。它必须返回一个列表，其中包含根据 batch ID `batch_id` 和之前生成的 token `inputs_ids` 条件化后，下一步生成所允许的 token。此参数对于基于前缀的约束生成非常有用，如 [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904) 中所述。

synced_gpus (`bool`，*可选*，默认为 `False`)：是否继续运行 while 循环直到 max_length（用于避免与 `FullyShardedDataParallel` 和 DeepSpeed ZeRO Stage 3 发生死锁）。

kwargs (`dict[str, Any]`, *可选*) : 用于临时参数化 `generate_config` 和/或额外的模型特定 kwargs，这些参数将被转发到模型的 `forward` 函数。

**返回：** [ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput) 或 `torch.LongTensor`

[ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput)（当 `return_dict_in_generate=True` 或 `config.return_dict_in_generate=True` 时）或 `torch.Tensor`。可能的 [ModelOutput](/docs/transformers/main/zh/main_classes/output#transformers.utils.ModelOutput) 类型包括：
- [GenerateEncoderDecoderOutput](/docs/transformers/main/zh/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput)，
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/main/zh/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

生成 token id 序列。

大多数生成控制参数都在 `generation_config` 中设置，如果未传入该参数，则会使用模型的默认生成配置。你可以通过向 generate() 传入相应参数来覆盖 `generation_config` 中的任意设置，例如 `.generate(inputs, num_beams=4, do_sample=True)`。

有关生成策略和代码示例的概述，请参阅[以下指南](./generation_strategies)。

## SeamlessM4Tv2Config[[transformers.SeamlessM4Tv2Config]]

#### transformers.SeamlessM4Tv2Config[[transformers.SeamlessM4Tv2Config]]

```python
transformers.SeamlessM4Tv2Config(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, 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, is_encoder_decoder: bool = True, vocab_size: int = 256102, t2u_vocab_size: int = 10082, char_vocab_size: int = 10943, hidden_size: int = 1024, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, use_cache: bool = True, max_position_embeddings: int = 4096, encoder_layerdrop: float | int = 0.05, decoder_layerdrop: float | int = 0.05, activation_function: str = 'relu', dropout: float | int = 0.1, attention_dropout: float | int = 0.1, activation_dropout: float | int = 0.0, scale_embedding: bool = True, encoder_layers: int = 24, encoder_ffn_dim: int = 8192, encoder_attention_heads: int = 16, decoder_layers: int = 24, decoder_ffn_dim: int = 8192, decoder_attention_heads: int = 16, decoder_start_token_id: int = 3, max_new_tokens: int | None = 256, pad_token_id: int | None = 0, bos_token_id: int | None = 2, eos_token_id: int | list[int] | None = 3, speech_encoder_layers: int = 24, speech_encoder_attention_heads: int = 16, speech_encoder_intermediate_size: int = 4096, speech_encoder_hidden_act: str = 'swish', speech_encoder_dropout: float | int = 0.0, add_adapter: bool = True, speech_encoder_layerdrop: float | int = 0.1, feature_projection_input_dim: int = 160, adaptor_kernel_size: int = 8, adaptor_stride: int = 8, adaptor_dropout: float | int = 0.1, num_adapter_layers: int = 1, position_embeddings_type: str = 'relative_key', conv_depthwise_kernel_size: int = 31, left_max_position_embeddings: int = 64, right_max_position_embeddings: int = 8, speech_encoder_chunk_size: int = 20000, speech_encoder_left_chunk_num: int = 128, t2u_bos_token_id: int | None = 0, t2u_pad_token_id: int | None = 1, t2u_eos_token_id: int | list[int] | None = 2, t2u_encoder_layers: int = 6, t2u_encoder_ffn_dim: int = 8192, t2u_encoder_attention_heads: int = 16, t2u_decoder_layers: int = 6, t2u_decoder_ffn_dim: int = 8192, t2u_decoder_attention_heads: int = 16, t2u_max_position_embeddings: int = 4096, t2u_variance_predictor_embed_dim: int = 1024, t2u_variance_predictor_hidden_dim: int = 256, t2u_variance_predictor_kernel_size: int = 3, t2u_variance_pred_dropout: float | int = 0.5, sampling_rate: int = 16000, upsample_initial_channel: int = 512, upsample_rates: list[int] | tuple[int, ...] = (5, 4, 4, 2, 2), upsample_kernel_sizes: list[int] | tuple[int, ...] = (11, 8, 8, 4, 4), resblock_kernel_sizes: list[int] | tuple[int, ...] = (3, 7, 11), resblock_dilation_sizes: list | tuple = ((1, 3, 5), (1, 3, 5), (1, 3, 5)), leaky_relu_slope: float = 0.1, unit_hifi_gan_vocab_size: int = 10000, unit_embed_dim: int = 1280, lang_embed_dim: int = 256, spkr_embed_dim: int = 256, vocoder_num_langs: int = 36, vocoder_num_spkrs: int = 200, variance_predictor_kernel_size: int = 3, var_pred_dropout: float | int = 0.5, vocoder_offset: int = 4, tie_word_embeddings: bool = True)
```

[来源](https://github.com/huggingface/transformers/blob/main/src/transformers/models/seamless_m4t_v2/configuration_seamless_m4t_v2.py#L24)

**参数：**

is_encoder_decoder (`bool`，*可选*，默认为 `True`)：模型是否用作编码器/解码器。

vocab_size (`int`，*可选*，默认值为 `256102`)：模型的词汇表大小。定义了 `input_ids` 可以表示的不同 token 数量。

t2u_vocab_size (`int`, *可选*，默认为 10082) : SeamlessM4Tv2 模型的单元词汇表大小。定义了调用 [~SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)、[~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 或 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech) 的 Text-To-Units 子模型时，传入的 `inputs_ids` 所能表示的不同“单元 token”的数量。

char_vocab_size (`int`，*可选*，默认值为 10943)：SeamlessM4Tv2 模型的字符词汇表大小。定义了调用 [~SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)、[~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 或 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech) 的 Text-To-Units 子模型时，传入的 `char_inputs_ids` 所能表示的不同字符标记的数量。

hidden_size (`int`，*可选*，默认为 `1024`)：隐藏表示的维度。

initializer_range (`float`，*可选*，默认值为 `0.02`)：用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。

layer_norm_eps (`float`，*可选*，默认为 `1e-05`)：层归一化层所使用的 epsilon。

use_cache (`bool`，*可选*，默认为 `True`)：模型是否应返回最后的键/值注意力（并非所有模型都使用）。仅当 `config.is_decoder=True` 或模型为仅解码器生成模型时相关。

max_position_embeddings (`int`，*可选*，默认值为 `4096`)：该模型可能使用的最大序列长度。

encoder_layerdrop (`Union[float, int]`，*可选*，默认值为 `0.05`)：编码器的 LayerDrop 概率。有关更多详细信息，请参阅 [LayerDrop 论文](see https://huggingface.co/papers/1909.11556)。

decoder_layerdrop (`Union[float, int]`，*可选*，默认值为 `0.05`)：解码器的 LayerDrop 概率。有关更多详细信息，请参阅 [LayerDrop 论文](see https://huggingface.co/papers/1909.11556)。

activation_function (`str`，*可选*，默认为 `relu`)：解码器中的非线性激活函数（函数或字符串）。例如，`"gelu"`、`"relu"`、`"silu"` 等。

dropout (`Union[float, int]`，*可选*，默认为 `0.1`)：所有 dropout 层的比率。

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

activation_dropout (`Union[float, int]`，*可选*，默认值为 `0.0`)：全连接层内部激活值的 dropout 比率。

scale_embedding (`bool`, *可选*, 默认为 `True`) : 是否通过将嵌入除以 sqrt(d_model) 来对其进行缩放。

encoder_layers (`int`，*可选*，默认为 `24`)：Transformer 编码器中的隐藏层数。如果未设置，将使用与 `num_layers` 相同的值。

encoder_ffn_dim (`int`, *可选*，默认为 `8192`)：编码器中“中间”（通常称为前馈）层的维度。

encoder_attention_heads (`int`，*可选*，默认为 `16`)：Transformer 编码器中每个注意力层的注意力头数量。

decoder_layers (`int`，*可选*，默认为 `24`)：Transformer 解码器中的隐藏层数。如果未设置，将使用与 `num_layers` 相同的值。

decoder_ffn_dim (`int`，*可选*，默认为 `8192`)：解码器中“中间”（通常称为前馈）层的维度。

decoder_attention_heads (`int`，*可选*，默认为 `16`)：Transformer 解码器中每个注意力层的注意力头数量。

decoder_start_token_id (`int`，*可选*，默认为 `3`)：如果编码器-解码器模型以不同于 `bos` 的 token 开始解码，则该 token 的 id。

max_new_tokens (`int`，*可选*，默认为 256)：要生成的文本 token 的最大数量，忽略提示词中的 token 数量。

pad_token_id (`int`，*可选*，默认为 `0`)：词表中用于填充的 Token ID。

bos_token_id (`int`，*可选*，默认为 `2`)：词汇表中用于表示流起始的 Token id。

eos_token_id (`Union[int, list[int]]`，*可选*，默认为 `3`)：词汇表中用于表示流结束（end-of-stream）的 token id。

speech_encoder_layers (`int`，*可选*，默认为 24)：Transformer 语音编码器中的隐藏层数。

speech_encoder_attention_heads (`int`，*可选*，默认为 16)：Transformer 语音编码器中每个注意力层的注意力头数量。

speech_encoder_intermediate_size (`int`，*可选*，默认为 4096)：Transformer 语音编码器中“中间”（即前馈）层的维度。

speech_encoder_hidden_act (`str` 或 `function`，*可选*，默认为 `"swish"`)：语音编码器中的非线性激活函数（函数或字符串）。如果为字符串，则支持 `"gelu"`、`"relu"`、`"selu"`、`"swish"` 和 `"gelu_new"`。

speech_encoder_dropout (`float`, *可选*，默认为 0.0)：语音编码器中所有层的 dropout 概率。

add_adapter (`bool`, *可选*, 默认为 `True`) : 在语音编码器上方添加一个适配器层。

speech_encoder_layerdrop (`float`, *可选*，默认为 0.1)：语音编码器的 LayerDrop 概率。有关更多详细信息，请参阅 [LayerDrop 论文](see https://huggingface.co/papers/1909.11556)。

feature_projection_input_dim (`int`, *可选*，默认为 160)：语音编码器输入特征投影的输入维度，即使用 [SeamlessM4TFeatureExtractor](/docs/transformers/main/zh/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) 处理输入音频后的维度。

adaptor_kernel_size (`int`，*可选*，默认为 8)：适配器网络中卷积层的核大小。仅当 `add_adapter is True` 时相关。

adaptor_stride (`int`，*可选*，默认为 8)：适配器网络中卷积层的步幅。仅当 `add_adapter is True` 时相关。

adaptor_dropout (`float`, *可选*，默认为 0.1)：语音适配器中所有层的 dropout 概率。

num_adapter_layers (`int`，*可选*，默认为 1)：适配器网络中应使用的卷积层数量。仅在 `add_adapter is True` 时相关。

position_embeddings_type (`str`，*可选*，默认为 `"relative_key"`)：可以指定为 `relative_key`。如果保持为 `None`，则不应用相对位置嵌入。仅应用于语音编码器。有关 `"relative_key"` 的更多信息，请参阅 [Self-Attention with Relative Position Representations (Shaw et al.)](https://huggingface.co/papers/1803.02155)。

conv_depthwise_kernel_size (`int`, *可选*，默认为 31)：Conformer 块中卷积深度可分离一维层的核大小。仅应用于语音编码器。

left_max_position_embeddings (`int`，*可选*，默认为 64)：相对位置的左侧裁剪值。

right_max_position_embeddings (`int`，*可选*，默认为 8)：相对位置的右侧裁剪值。

speech_encoder_chunk_size (`int`，*可选*，默认为 20000)：每个注意力块的大小。

speech_encoder_left_chunk_num (`int`，*可选*，默认为 128)：允许向前查看的左侧块数上限。

t2u_bos_token_id (`int`，*可选*，默认为 0)：_流开始_单元标记的 id。仅适用于文本到单元的 seq2seq 模型。

t2u_pad_token_id (`int`，*可选*，默认为 1)：_padding_ 单元令牌的 id。仅适用于文本到单元的 seq2seq 模型。

t2u_eos_token_id (`int`, *可选*，默认为 2)：_流结束_单元令牌的 id。仅适用于文本到单元的 seq2seq 模型。

t2u_encoder_layers (`int`, *可选*, 默认为 6) : Transformer 文本到单元编码器中的隐藏层数。

t2u_encoder_ffn_dim (`int`，*可选*，默认为 8192)：Transformer 文本到单元编码器中“中间”（即前馈）层的维度。

t2u_encoder_attention_heads (`int`，*可选*，默认为 16)：Transformer 文本到单元编码器中每个注意力层的注意力头数量。

t2u_decoder_layers (`int`, *可选*, 默认为 6) : Transformer 文本到单元解码器中的隐藏层数。

t2u_decoder_ffn_dim (`int`，*可选*，默认为 8192)：Transformer 文本到单元解码器中“中间”（即前馈）层的维度。

t2u_decoder_attention_heads (`int`，*可选*，默认为 16)：Transformer 文本到单元解码器中每个注意力层的注意力头数量。

t2u_max_position_embeddings (`int`, *可选*，默认为 4096)：该模型 text-to-unit 组件可能使用的最大序列长度。通常建议将其设置为一个较大的值以防万一（例如 512、1024 或 2048）。

t2u_variance_predictor_embed_dim (`int`, *可选*，默认为 1024)：文本到单元时长预测器的投影维度。

t2u_variance_predictor_hidden_dim (`int`, *可选*，默认为 256)：文本到单元时长预测器的内部维度。

t2u_variance_predictor_kernel_size (`int`，*可选*，默认为 3)：文本到单元时长预测器中卷积层的核大小。

t2u_variance_pred_dropout (`float`, *可选*，默认为 0.5)：文本到单元时长预测器的 dropout 概率。

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

upsample_initial_channel (`int`，*可选*，默认值为 512)：hifi-gan 上采样网络的输入通道数。仅适用于声码器。

upsample_rates (`tuple[int]` 或 `list[int]`，*可选*，默认为 `[5, 4, 4, 2, 2]`) : 一个整数元组，定义声码器上采样网络中每个一维卷积层的步长。*upsample_rates* 的长度定义了卷积层的数量，并且必须与 *upsample_kernel_sizes* 的长度相匹配。仅适用于声码器。

upsample_kernel_sizes (`tuple[int]` 或 `list[int]`，*可选*，默认为 `[11, 8, 8, 4, 4]`) : 一个整数元组，定义声码器上采样网络中每个一维卷积层的核大小。*upsample_kernel_sizes* 的长度定义了卷积层的数量，并且必须与 *upsample_rates* 的长度相匹配。仅适用于声码器。

resblock_kernel_sizes (`tuple[int]` 或 `list[int]`，*可选*，默认为 `[3, 7, 11]`)：一个整数元组，用于定义多感受野融合（MRF）模块中声码器一维卷积层的核大小。仅适用于声码器。

resblock_dilation_sizes (`tuple[tuple[int]]` 或 `list[list[int]]`，*可选*，默认为 `[[1, 3, 5], [1, 3, 5], [1, 3, 5]]`)：一个嵌套的整数元组，用于定义多感受野融合（MRF）模块中声码器膨胀一维卷积层的膨胀率。仅适用于声码器。

leaky_relu_slope (`float`, *可选*，默认为 0.1)：声码器中 Leaky ReLU 激活函数所使用的负斜率角度。仅适用于声码器。

unit_hifi_gan_vocab_size (`int`, *可选*，默认为 10000) : SeamlessM4Tv2 声码器的词汇表大小。定义了调用 [~SeamlessM4Tv2Model](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2Model)、[~SeamlessM4Tv2ForSpeechToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForSpeechToSpeech) 或 [~SeamlessM4Tv2ForTextToSpeech](/docs/transformers/main/zh/model_doc/seamless_m4t_v2#transformers.SeamlessM4Tv2ForTextToSpeech) 的声码器时，传入的 `inputs_ids` 所能表示的不同单元标记的数量。

unit_embed_dim (`int`, *可选*，默认为 1280)：提供给 hifi-gan 声码器的输入 id 的投影维度。仅适用于声码器。

lang_embed_dim (`int`，*可选*，默认为 256)：提供给 hifi-gan 声码器的目标语言投影维度。仅适用于声码器。

spkr_embed_dim (`int`，*可选*，默认为 256)：提供给 hifi-gan 声码器的说话人 ID 的投影维度。仅适用于声码器。

vocoder_num_langs (`int`，*可选*，默认为 36)：声码器支持的语言数量。可能与 `t2u_num_langs` 不同。

vocoder_num_spkrs (`int`，*可选*，默认为 200)：声码器支持的说话人数量。

variance_predictor_kernel_size (`int`，*可选*，默认为 3)：时长预测器的核大小。仅适用于声码器。

var_pred_dropout (`float`, *可选*，默认为 0.5)：时长预测器的 dropout 概率。仅适用于声码器。

vocoder_offset (`int`, *可选*，默认为 4)：将此数值作为偏移量加到单位 token id 上，以考虑符号 token。仅适用于声码器。

tie_word_embeddings (`bool`，*可选*，默认为 `True`)：是否根据模型的 `tied_weights_keys` 映射来绑定权重嵌入。

这是用于存储 SeamlessM4Tv2Model 配置的类。它根据指定的参数实例化 Seamless M4T V2 模型，并定义模型架构。使用默认值实例化配置将得到与 [facebook/hf-seamless-m4t-medium](https://huggingface.co/facebook/hf-seamless-m4t-medium) 类似的配置。

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

```python
>>> from transformers import SeamlessM4Tv2Model, SeamlessM4Tv2Config

>>> # Initializing a SeamlessM4Tv2 "" style configuration
>>> configuration = SeamlessM4Tv2Config()

>>> # Initializing a model from the "" style configuration
>>> model = SeamlessM4Tv2Model(configuration)

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

