Transformers 文档

吠叫

Hugging Face's logo
加入Hugging Face社区

并获取增强型文档体验

开始使用

Bark

概述

Bark 是 Suno AI 在 suno-ai/bark 中提出的基于 Transformer 的文本转语音模型。

Bark 由 4 个主要模型组成

  • BarkSemanticModel(也称为“文本”模型):一个因果自回归 Transformer 模型,它以分词后的文本作为输入,并预测捕捉文本含义的语义文本标记。
  • BarkCoarseModel(也称为“粗略声学”模型):一个因果自回归 Transformer,它以 BarkSemanticModel 模型的结果作为输入。它旨在预测 EnCodec 所需的前两个音频码本。
  • BarkFineModel(“精细声学”模型),这次是一个非因果自编码 Transformer,它根据先前所有码本嵌入的总和迭代地预测最后一个码本。
  • 在从 EncodecModel 预测了所有码本通道之后,Bark 使用它来解码输出音频数组。

需要注意的是,前三个模块中的每一个都支持条件说话人嵌入,以便根据特定预定义的声音来调节输出声音。

该模型由 Yoach Lacombe (ylacombe)Sanchit Gandhi (sanchit-gandhi) 贡献。原始代码可在 此处 找到。

优化 Bark

Bark 只需要几行额外的代码就可以优化,这将 **显著降低其内存占用** 并 **加速推理**。

使用半精度

只需将模型加载为半精度,就可以将推理速度提高并降低 50% 的内存占用。

from transformers import BarkModel
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"
model = BarkModel.from_pretrained("suno/bark-small", torch_dtype=torch.float16).to(device)

使用 CPU 卸载

如上所述,Bark 由 4 个子模型组成,这些子模型在音频生成过程中按顺序调用。换句话说,当一个子模型正在使用时,其他子模型处于空闲状态。

如果您使用的是 CUDA 设备,一个简单的解决方案是将子模型在空闲时从 GPU 卸载到 CPU,从而使内存占用量减少 80%。此操作称为CPU 卸载。您可以使用以下一行代码来实现它

model.enable_cpu_offload()

请注意,在使用此功能之前,必须安装 🤗 Accelerate。 此处介绍如何安装。

使用 更好的 Transformer

更好的 Transformer 是 🤗 Optimum 的一项功能,它在后台执行内核融合。您可以获得 20% 到 30% 的速度提升,而性能没有任何下降。只需一行代码即可将模型导出到 🤗 更好的 Transformer

model =  model.to_bettertransformer()

请注意,在使用此功能之前,必须安装 🤗 Optimum。 此处介绍如何安装。

使用 闪光 注意力 2

闪光 注意力 2 是之前优化的一个更快、更优化的版本。

安装

首先,检查您的硬件是否与闪光 注意力 2 兼容。最新的兼容硬件列表可以在 官方文档 中找到。如果您的硬件与闪光 注意力 2 不兼容,您仍然可以通过更好的 Transformer 支持获得注意力内核优化,如 上面 所述。

接下来,安装 最新版本的闪光 注意力 2

pip install -U flash-attn --no-build-isolation
用法

要使用闪光 注意力 2 加载模型,我们可以将 attn_implementation="flash_attention_2" 标志传递给 .from_pretrained。我们还将以半精度(例如 torch.float16)加载模型,因为它几乎不会降低音频质量,但会显着降低内存使用量并加快推理速度

model = BarkModel.from_pretrained("suno/bark-small", torch_dtype=torch.float16, attn_implementation="flash_attention_2").to(device)
性能比较

下图显示了原生注意力实现(无优化)与更好的 Transformer 和闪光 注意力 2 的延迟。在所有情况下,我们在 40GB A100 GPU 上使用 PyTorch 2.1 生成 400 个语义标记。闪光 注意力 2 也始终比更好的 Transformer 更快,并且随着批次大小的增加,其性能会进一步提高

从这个角度来看,在 NVIDIA A100 上,当使用 16 的批次大小生成 400 个语义标记时,您可以获得 17 倍的吞吐量,并且比使用原生模型实现逐个生成句子快 2 秒。换句话说,所有样本的生成速度都会提高 17 倍。

在 NVIDIA A100 上,当批次大小为 8 时,闪光 注意力 2 比更好的 Transformer 快 10%,当批次大小为 16 时,快 25%。

组合优化技术

您可以组合优化技术,并同时使用 CPU 卸载、半精度和闪光 注意力 2(或 🤗 更好的 Transformer)。

from transformers import BarkModel
import torch

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

# load in fp16 and use Flash Attention 2
model = BarkModel.from_pretrained("suno/bark-small", torch_dtype=torch.float16, attn_implementation="flash_attention_2").to(device)

# enable CPU offload
model.enable_cpu_offload()

在此处了解更多关于推理优化技术的信息:此处

用法提示

Suno 提供了多种语言的语音预设库,点击此处 查看。这些预设也已上传到以下中心:此处此处

>>> from transformers import AutoProcessor, BarkModel

>>> processor = AutoProcessor.from_pretrained("suno/bark")
>>> model = BarkModel.from_pretrained("suno/bark")

>>> voice_preset = "v2/en_speaker_6"

>>> inputs = processor("Hello, my dog is cute", voice_preset=voice_preset)

>>> audio_array = model.generate(**inputs)
>>> audio_array = audio_array.cpu().numpy().squeeze()

Bark 可以生成高度逼真的多语言语音以及其他音频,包括音乐、背景噪音和简单的音效。

>>> # Multilingual speech - simplified Chinese
>>> inputs = processor("惊人的!我会说中文")

>>> # Multilingual speech - French - let's use a voice_preset as well
>>> inputs = processor("Incroyable! Je peux générer du son.", voice_preset="fr_speaker_5")

>>> # Bark can also generate music. You can help it out by adding music notes around your lyrics.
>>> inputs = processor("♪ Hello, my dog is cute ♪")

>>> audio_array = model.generate(**inputs)
>>> audio_array = audio_array.cpu().numpy().squeeze()

该模型还可以产生非语言交流,例如笑声、叹息和哭声。

>>> # Adding non-speech cues to the input text
>>> inputs = processor("Hello uh ... [clears throat], my dog is cute [laughter]")

>>> audio_array = model.generate(**inputs)
>>> audio_array = audio_array.cpu().numpy().squeeze()

要保存音频,只需从模型配置中获取采样率和一些 scipy 实用程序

>>> from scipy.io.wavfile import write as write_wav

>>> # save audio to disk, but first take the sample rate from the model config
>>> sample_rate = model.generation_config.sample_rate
>>> write_wav("bark_generation.wav", sample_rate, audio_array)

BarkConfig

class transformers.BarkConfig

< >

( semantic_config: Dict = None coarse_acoustics_config: Dict = None fine_acoustics_config: Dict = None codec_config: Dict = None initializer_range = 0.02 **kwargs )

参数

  • semantic_config (BarkSemanticConfig, 可选) — 底层语义子模型的配置。
  • coarse_acoustics_config (BarkCoarseConfig, 可选) — 底层粗粒度声学子模型的配置。
  • fine_acoustics_config (BarkFineConfig, 可选) — 底层细粒度声学子模型的配置。
  • codec_config (AutoConfig, 可选) — 底层编解码器子模型的配置。

    示例 —

这是用于存储 BarkModel 配置的配置类。它用于根据指定的子模型配置实例化 Bark 模型,定义模型架构。

使用默认值实例化配置将产生与 Bark suno/bark 架构类似的配置。

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

from_sub_model_configs

< >

( semantic_config: BarkSemanticConfig coarse_acoustics_config: BarkCoarseConfig fine_acoustics_config: BarkFineConfig codec_config: PretrainedConfig **kwargs ) BarkConfig

返回值

BarkConfig

配置对象的实例

从 bark 子模型配置中实例化一个 BarkConfig(或派生类)。

BarkProcessor

class transformers.BarkProcessor

< >

( tokenizer speaker_embeddings = None )

参数

  • speaker_embeddings (Dict[Dict[str]], 可选) — 可选的嵌套说话人嵌入字典。第一层包含语音预设名称(例如 "en_speaker_4")。第二层包含 "semantic_prompt""coarse_prompt""fine_prompt" 嵌入。这些值对应于相应的 np.ndarray 的路径。有关 voice_preset_names 列表,请参阅 此处

构建一个 Bark 处理器,它将文本标记器和可选的 Bark 语音预设包装到单个处理器中。

__call__

< >

( text = None voice_preset = None return_tensors = 'pt' max_length = 256 add_special_tokens = False return_attention_mask = True return_token_type_ids = False **kwargs ) Tuple(BatchEncoding, BatchFeature)

参数

  • text (str, List[str], List[List[str]]) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预标记字符串)。如果序列以字符串列表(预标记)的形式提供,则必须设置 is_split_into_words=True(以消除与序列批次的歧义)。
  • voice_preset (str, Dict[np.ndarray]) — 语音预设,即说话人嵌入。它可以是有效的语音预设名称,例如 "en_speaker_1",也可以是直接为 Bark 的每个子模型提供的 np.ndarray 嵌入字典。它还可以是本地 .npz 单个语音预设的有效文件名。
  • return_tensors (strTensorType, 可选) — 如果设置,将返回特定框架的张量。可接受的值为:

    • 'pt': 返回 PyTorch torch.Tensor 对象。
    • 'np': 返回 NumPy np.ndarray 对象。

返回值

Tuple(BatchEncoding, BatchFeature)

一个元组,包含一个 BatchEncoding(即 tokenizer 的输出)和一个 BatchFeature(即具有正确张量类型的语音预设)。

为模型准备一个或多个序列(s)的主要方法。此方法将 textkwargs 参数转发到 AutoTokenizer 的 __call__() 以编码文本。该方法还建议一个语音预设,它是一个包含数组的字典,用于调节 Bark 的输出。如果 voice_preset 是有效的文件名,则 kwargs 参数将转发到标记器和 cached_file 方法。

from_pretrained

< >

( pretrained_processor_name_or_path speaker_embeddings_dict_path = 'speaker_embeddings_path.json' **kwargs )

参数

  • pretrained_model_name_or_path (stros.PathLike) — 这可以是:

    • 字符串,预训练的 BarkProcessor模型 ID,托管在 huggingface.co 上的模型存储库中。
    • 包含使用 save_pretrained() 方法保存的处理器的目录的路径,例如 ./my_model_directory/
  • speaker_embeddings_dict_path (str, 可选,默认值为 "speaker_embeddings_path.json") — 包含 pretrained_model_name_or_path 中的说话人嵌入字典的 .json 文件的名称。如果为 None,则不加载说话人嵌入。**kwargs — 传递到 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained 的其他关键字参数。

实例化与预训练模型关联的 Bark 处理器。

save_pretrained

< >

( save_directory speaker_embeddings_dict_path = 'speaker_embeddings_path.json' speaker_embeddings_directory = 'speaker_embeddings' push_to_hub: bool = False **kwargs )

参数

  • save_directory (stros.PathLike) — 保存分词器文件和说话者嵌入的目录(如果不存在,将创建该目录)。
  • speaker_embeddings_dict_path (str, 可选, 默认值 "speaker_embeddings_path.json") — 包含说话者嵌入嵌套路径字典的 .json 文件的名称(如果存在),该文件将位于 pretrained_model_name_or_path/speaker_embeddings_directory 中。
  • speaker_embeddings_directory (str, 可选, 默认值 "speaker_embeddings/") — 保存说话者嵌入数组的文件夹名称。
  • push_to_hub (bool, 可选, 默认值 False) — 是否在保存模型后将其推送到 Hugging Face 模型中心。 你可以使用 repo_id 指定要推送到哪个仓库(默认情况下将使用你的命名空间中的 save_directory 的名称)。kwargs — 传递给 push_to_hub() 方法的额外关键字参数。

将此处理器的属性(分词器等)保存到指定的目录中,以便可以使用 from_pretrained() 方法重新加载。

BarkModel

class transformers.BarkModel

< >

( config )

参数

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

完整的 Bark 模型,一个由 4 个子模型组成的文本转语音模型

  • BarkSemanticModel(也称为“文本”模型):一个因果自回归 Transformer 模型,它以分词后的文本作为输入,并预测捕捉文本含义的语义文本标记。
  • BarkCoarseModel(也称为“粗略声学”模型),也是一个因果自回归 Transformer,它将最后一个模型的结果作为输入。 它的目标是回归生成 encodec 所需的前两个音频码本。
  • BarkFineModel(“精细声学”模型),这次是一个非因果自编码 Transformer,它根据先前所有码本嵌入的总和迭代地预测最后一个码本。
  • 在从 EncodecModel 预测了所有码本通道之后,Bark 使用它来解码输出音频数组。

需要注意的是,前三个模块中的每一个都支持条件说话人嵌入,以便根据特定预定义的声音来调节输出声音。

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

此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。

generate

< >

( input_ids: Optional = None history_prompt: Optional = None return_output_lengths: Optional = None

参数

  • input_ids (Optional[torch.Tensor] of shape (batch_size, seq_len), 可选) — 输入id。将被截断至 256 个token。请注意,输出音频将与批次中生成的最长音频长度相同。
  • history_prompt (Optional[Dict[str,torch.Tensor]], 可选) — 可选的 Bark 语者提示。请注意,目前,此模型每批次只接受一个语者提示。
  • kwargs (可选) — 其余的关键字参数字典。关键字参数分为两种类型:

    • 没有前缀,它们将作为 **kwargs 输入到每个子模型的 generate 方法。
    • 带有 semantic_coarse_fine_ 前缀,它们将作为输入到分别对应语义、粗略和精细的 generate 方法。它优先于没有前缀的关键字。

    这意味着您可以,例如,为所有子模型指定一个生成策略,除了其中一个模型。

  • return_output_lengths (bool, 可选) — 是否返回波形长度。在批处理时很有用。

返回值

默认情况下

  • audio_waveform (torch.Tensor of shape (batch_size, seq_len)): 生成的音频波形。当 return_output_lengths=True 时:返回一个包含以下内容的元组
  • audio_waveform (torch.Tensor of shape (batch_size, seq_len)): 生成的音频波形。
  • output_lengths (torch.Tensor of shape (batch_size)): 批次中每个波形的长度

从输入提示和可选的 Bark 语者提示生成音频。

示例

>>> from transformers import AutoProcessor, BarkModel

>>> processor = AutoProcessor.from_pretrained("suno/bark-small")
>>> model = BarkModel.from_pretrained("suno/bark-small")

>>> # To add a voice preset, you can pass `voice_preset` to `BarkProcessor.__call__(...)`
>>> voice_preset = "v2/en_speaker_6"

>>> inputs = processor("Hello, my dog is cute, I need him in my life", voice_preset=voice_preset)

>>> audio_array = model.generate(**inputs, semantic_max_new_tokens=100)
>>> audio_array = audio_array.cpu().numpy().squeeze()

enable_cpu_offload

< >

( gpu_id: Optional = 0 )

参数

  • gpu_id (int, 可选, 默认值为 0) — 子模型将被加载和卸载到的 GPU ID。

使用 accelerate 将所有子模型卸载到 CPU,减少内存使用,对性能影响很小。此方法在子模型使用时将一个完整的子模型移动到 GPU,并且该子模型将在下一个子模型运行之前一直保留在 GPU 中。

BarkSemanticModel

class transformers.BarkSemanticModel

< >

( config )

参数

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

Bark 语义(或文本)模型。它与粗略模型共享相同的架构。它是一个类似 GPT-2 的自回归模型,在顶部有一个语言建模头。此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、裁剪头等)。

此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。

forward

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 词汇表中输入序列词元的索引。如果您提供填充,默认情况下将忽略填充。可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()什么是输入 ID?
  • past_key_values (tuple(tuple(torch.FloatTensor)), 可选, 在传递 use_cacheconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(tuple(torch.FloatTensor)),每个元组都有 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量。

    包含预先计算的隐藏状态(自注意力块中的键和值),可以用于(参见 past_key_values 输入)加速顺序解码。

    如果使用 past_key_values,用户可以选择性地仅输入形状为 (batch_size, 1) 的最后一个 decoder_input_ids(那些没有将过去键值状态提供给该模型的),而不是所有形状为 (batch_size, sequence_length)input_ids

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), 可选) — 掩码,以避免对填充词元索引执行注意力。在 [0, 1] 中选择的掩码值:

    • 1 表示未掩码的词元,
    • 0 表示掩码的词元。

    什么是注意力掩码?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 位置嵌入中每个输入序列词元的位置索引。在范围 [0, config.max_position_embeddings - 1] 中选择。

    什么是位置 ID?

  • head_mask (torch.Tensor 形状为 (encoder_layers, encoder_attention_heads), 可选) — 掩码,以使编码器中注意力模块的选定头无效。在 [0, 1] 中选择的掩码值:

    • 1 表示头未掩码
    • 0 表示头掩码
  • input_embeds (torch.FloatTensor 形状为 (batch_size, input_sequence_length, hidden_size), 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。在这里,由于 Bark 的特殊性,如果使用 past_key_values,则 input_embeds 将被忽略,您必须使用 input_ids。如果未使用 past_key_values 并且 use_cache 设置为 True,则 input_embeds 优先于 input_ids 使用。
  • use_cache (bool, 可选) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(参见 past_key_values)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参见返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量中的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

The BarkCausalModel forward method, overrides the __call__ special method.

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the pre and post processing steps while the latter silently ignores them.

BarkCoarseModel

class transformers.BarkCoarseModel

< >

( config )

参数

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

Bark 粗略声学模型。它与语义(或文本)模型共享相同的架构。它是一个类似 GPT-2 的自回归模型,顶部有一个语言建模头。此模型继承自 PreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入的大小、剪枝头等)。

此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。

forward

< >

( input_ids: Optional = None past_key_values: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None labels: Optional = None input_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。如果提供,默认情况下将忽略填充。索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()什么是输入 ID?
  • past_key_values (tuple(tuple(torch.FloatTensor)), 可选,在传递 use_cacheconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含 2 个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量。

    包含预先计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加快顺序解码。

    如果使用 past_key_values,用户可以选择仅输入最后 decoder_input_ids(那些没有向此模型提供其过去键值状态的)形状为 (batch_size, 1),而不是所有 input_ids 形状为 (batch_size, sequence_length)

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), 可选) — 用于避免对填充标记索引执行注意的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示未屏蔽的标记,
    • 0 表示已屏蔽的标记。

    什么是注意力掩码?

  • head_mask (torch.Tensor 形状为 (encoder_layers, encoder_attention_heads)可选) — 用于使编码器中注意力模块的选定头部无效的掩码。 掩码值选择范围为 [0, 1]

    • 1 表示头部未被掩盖
    • 0 表示头部被掩盖
  • input_embeds (torch.FloatTensor 形状为 (batch_size, input_sequence_length, hidden_size)可选) — 可选地,您可以选择直接传入嵌入表示,而不是传入 input_ids。 在这里,由于 Bark 的特殊性,如果使用了 past_key_values,则 input_embeds 将被忽略,您必须使用 input_ids。 如果未使用 past_key_valuesuse_cache 设置为 True,则 input_embeds 优先于 input_ids 使用。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码(请参见 past_key_values)。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。 有关详细信息,请参见返回张量中的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。 有关详细信息,请参见返回张量中的 hidden_states
  • return_dict (bool可选) — 是否返回一个 ModelOutput 而不是一个普通元组。

The BarkCausalModel forward method, overrides the __call__ special method.

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the pre and post processing steps while the latter silently ignores them.

BarkFineModel

class transformers.BarkFineModel

< >

( config )

参数

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

Bark 精细声学模型。 它是一个非因果 GPT 类模型,具有 config.n_codes_total 个嵌入层和语言建模头,每个码本一个。 此模型继承自 PreTrainedModel。 查看超类文档,了解该库为所有模型实现的通用方法(如下载或保存、调整输入嵌入大小、修剪头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。

forward

< >

( codebook_idx: int input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None labels: Optional = None input_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )

参数

  • codebook_idx (int) — 要预测的码本索引。
  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length, number_of_codebooks)) — 词汇表中输入序列标记的索引。如果您提供了填充,默认情况下将忽略填充。最初,前两个码本的索引是从 coarse 子模型中获取的。其余部分通过关注先前预测的通道递归地预测。模型在长度为 1024 的窗口上进行预测。
  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length)可选) — 掩码,以避免对填充标记索引执行注意力。掩码值选择在 [0, 1] 中:

    • 1 表示 未掩码 的标记,
    • 0 表示 掩码 的标记。

    什么是注意力掩码?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置索引。选择在 [0, config.max_position_embeddings - 1] 范围内。

    什么是位置 ID?

  • head_mask (torch.Tensor 形状为 (encoder_layers, encoder_attention_heads)可选) — 掩码,以使编码器中注意力模块的选定头部无效。掩码值选择在 [0, 1] 中:

    • 1 表示头部 未掩码
    • 0 表示头部 掩码
  • labels (torch.LongTensor 形状为 (batch_size, sequence_length)可选) — 尚未实施。
  • input_embeds (torch.FloatTensor 形状为 (batch_size, input_sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。如果使用 past_key_values,可选地只需输入最后一个 input_embeds(请参阅 past_key_values)。如果您希望对如何将 input_ids 索引转换为相关向量比模型的内部嵌入查找矩阵有更多控制权,这很有用。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

BarkFineModel 的 forward 方法覆盖了 __call__ 特殊方法。

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the pre and post processing steps while the latter silently ignores them.

BarkCausalModel

transformers.BarkCausalModel

< >

( config )

forward

< >

( input_ids: Optional = None past_key_values: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None labels: Optional = None input_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None )

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 输入序列词元的词汇索引。默认情况下,如果您提供填充,则填充将被忽略。索引可以通过 AutoTokenizer 获取。有关详细信息,请参见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()什么是输入 ID?
  • past_key_values (tuple(tuple(torch.FloatTensor)), 可选, 当传入 use_cacheconfig.use_cache=True 时返回) — 长度为 config.n_layerstuple(torch.FloatTensor) 元组,每个元组包含两个形状为 (batch_size, num_heads, sequence_length, embed_size_per_head) 的张量。

    包含预先计算的隐藏状态(自注意力块中的键和值),可用于(参见 past_key_values 输入)加速顺序解码。

    如果使用 past_key_values,用户可以选择仅输入最后一个 decoder_input_ids(其过去键值状态未提供给此模型的那些)形状为 (batch_size, 1),而不是所有 input_ids 形状为 (batch_size, sequence_length)

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), 可选) — 掩码,用于避免对填充词元索引执行注意力。掩码值在 [0, 1] 中选择:

    • 1 表示未掩码的词元,
    • 0 表示掩码的词元。

    什么是注意力掩码?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 位置嵌入中每个输入序列词元位置的索引。在 [0, config.max_position_embeddings - 1] 范围内选择。

    什么是位置 ID?

  • head_mask (torch.Tensor 形状为 (encoder_layers, encoder_attention_heads), 可选) — 掩码,用于使编码器中注意力模块的选定头部无效。掩码值在 [0, 1] 中选择:

    • 1 表示头部未掩码,
    • 0 表示头部已掩码。
  • input_embeds (torch.FloatTensor 形状为 (batch_size, input_sequence_length, hidden_size), 可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递 input_ids。这里,由于 Bark 的特殊性,如果使用 past_key_valuesinput_embeds 将被忽略,您必须使用 input_ids。如果未使用 past_key_values 并且 use_cache 设置为 True,则优先使用 input_embeds 而不是 input_ids
  • use_cache (bool, 可选) — 如果设置为 True,则返回 past_key_values 键值状态,可用于加速解码 (参见 past_key_values)。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的 hidden_states
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。

The BarkCausalModel forward method, overrides the __call__ special method.

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the pre and post processing steps while the latter silently ignores them.

BarkCoarseConfig

class transformers.BarkCoarseConfig

< >

( block_size = 1024 input_vocab_size = 10048 output_vocab_size = 10048 num_layers = 12 num_heads = 12 hidden_size = 768 dropout = 0.0 bias = True initializer_range = 0.02 use_cache = True **kwargs )

参数

  • block_size (int, 可选, 默认值为 1024) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一 (例如,512 或 1024 或 2048)。
  • input_vocab_size (int, 可选, 默认值为 10_048) — Bark 子模型的词汇量大小。定义了调用 BarkCoarseModel 时通过 inputs_ids 可以表示的不同标记的数量。默认值为 10_048,但应根据所选子模型仔细考虑。
  • output_vocab_size (int, 可选, 默认值为 10_048) — Bark 子模型的输出词汇量。 定义了在通过 BarkCoarseModel 正向传递时,output_ids 可以表示的不同标记数量。 默认值为 10_048,但应根据所选子模型进行仔细考虑。
  • num_layers (int, 可选, 默认值为 12) — 给定子模型中的隐藏层数。
  • num_heads (int, 可选, 默认值为 12) — Transformer 架构中每个注意力层的注意力头数。
  • hidden_size (int, 可选, 默认值为 768) — 架构中“中间”层(通常称为前馈层)的维度。
  • dropout (float, 可选, 默认值为 0.0) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • bias (bool, 可选, 默认值为 True) — 是否在线性层和层归一化层中使用偏差。
  • initializer_range (float, 可选, 默认值为 0.02) — 初始化所有权重矩阵的截断正态初始化的标准差。
  • use_cache (bool, 可选, 默认值为 True) — 模型是否应返回最后键/值注意力(并非所有模型都使用)。

这是用于存储 BarkCoarseModel 配置的配置类。 它用于根据指定的参数实例化模型,定义模型架构。 使用默认值实例化配置将产生与 Bark suno/bark 架构类似的配置。

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

示例

>>> from transformers import BarkCoarseConfig, BarkCoarseModel

>>> # Initializing a Bark sub-module style configuration
>>> configuration = BarkCoarseConfig()

>>> # Initializing a model (with random weights) from the suno/bark style configuration
>>> model = BarkCoarseModel(configuration)

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

BarkFineConfig

class transformers.BarkFineConfig

< >

( tie_word_embeddings = True n_codes_total = 8 n_codes_given = 1 **kwargs )

参数

  • block_size (int, 可选, 默认为 1024) — 模型可能使用的最大序列长度。 通常设置为一个较大的值以防万一(例如,512 或 1024 或 2048)。
  • input_vocab_size (int, 可选, 默认为 10_048) — Bark 子模型的词汇量大小。 定义了调用 BarkFineModel 时传递的 inputs_ids 可以表示的不同标记数量。 默认为 10_048,但应根据所选的子模型进行仔细考虑。
  • output_vocab_size (int, 可选, 默认为 10_048) — Bark 子模型的输出词汇量大小。 定义了在将 BarkFineModel 正向传递时,output_ids 可以表示的不同标记数量。 默认为 10_048,但应根据所选的子模型进行仔细考虑。
  • num_layers (int, 可选, 默认为 12) — 给定子模型中的隐藏层数。
  • num_heads (int, 可选, 默认为 12) — Transformer 架构中每个注意力层的注意力头数。
  • hidden_size (int, 可选, 默认为 768) — 架构中“中间”层(通常称为前馈层)的维度。
  • dropout (float, 可选, 默认为 0.0) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • bias (bool, 可选, 默认为 True) — 是否在线性层和层归一化层中使用偏差。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • use_cache (bool, 可选, 默认为 True) — 模型是否应该返回最后的键/值注意力(并非所有模型都使用)。
  • n_codes_given (int, 可选, 默认值为 1) — 在粗略声学子模型中预测的音频码本数量。 用于声学子模型。

这是一个配置类,用于存储 BarkFineModel 的配置。 它用于根据指定的参数实例化模型,定义模型架构。 使用默认值实例化配置将产生类似于 Bark suno/bark 架构的配置。

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

示例

>>> from transformers import BarkFineConfig, BarkFineModel

>>> # Initializing a Bark sub-module style configuration
>>> configuration = BarkFineConfig()

>>> # Initializing a model (with random weights) from the suno/bark style configuration
>>> model = BarkFineModel(configuration)

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

BarkSemanticConfig

class transformers.BarkSemanticConfig

< >

( block_size = 1024 input_vocab_size = 10048 output_vocab_size = 10048 num_layers = 12 num_heads = 12 hidden_size = 768 dropout = 0.0 bias = True initializer_range = 0.02 use_cache = True **kwargs )

参数

  • block_size (int, 可选, 默认值为 1024) — 此模型可能使用过的最大序列长度。 通常将其设置为一个较大的值,以防万一(例如,512 或 1024 或 2048)。
  • input_vocab_size (int, 可选, 默认值为 10_048) — Bark 子模型的词汇量大小。 定义了调用 BarkSemanticModel 时传递的 inputs_ids 可以表示的不同 token 的数量。 默认值为 10_048,但应根据所选子模型仔细考虑。
  • output_vocab_size (int, 可选, 默认值为 10_048) — Bark 子模型的输出词汇量大小。 定义了传递 BarkSemanticModeloutput_ids 可以表示的不同 token 的数量。 默认值为 10_048,但应根据所选子模型仔细考虑。
  • num_layers (int, 可选, 默认值为 12) — 给定子模型中的隐藏层数量。
  • num_heads (int, 可选, 默认值为 12) — Transformer 架构中每个注意力层的注意力头数量。
  • hidden_size (int, 可选, 默认值为 768) — 架构中“中间”(通常称为前馈)层的维度。
  • dropout (float, 可选, 默认值为 0.0) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。
  • initializer_range (float, 可选, 默认值 0.02) — 初始化所有权重矩阵的截断正态分布初始化器的标准差。
  • use_cache (bool, 可选, 默认值 True) — 模型是否应该返回最后的键值注意力(并非所有模型都使用)。

这是用于存储 BarkSemanticModel 配置的配置类。它用于根据指定的参数实例化模型,定义模型架构。使用默认值实例化配置将产生与 Bark suno/bark 架构类似的配置。

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

示例

>>> from transformers import BarkSemanticConfig, BarkSemanticModel

>>> # Initializing a Bark sub-module style configuration
>>> configuration = BarkSemanticConfig()

>>> # Initializing a model (with random weights) from the suno/bark style configuration
>>> model = BarkSemanticModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
< > 在 GitHub 上更新