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
< source >( 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
< source >( semantic_config: BarkSemanticConfig coarse_acoustics_config: BarkCoarseConfig fine_acoustics_config: BarkFineConfig codec_config: PretrainedConfig **kwargs ) → BarkConfig
从 bark 子模型配置中实例化一个 BarkConfig(或派生类)。
BarkProcessor
构建一个 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 (
str
或 TensorType, 可选) — 如果设置,将返回特定框架的张量。可接受的值为:'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 NumPynp.ndarray
对象。
返回值
Tuple(BatchEncoding, BatchFeature)
一个元组,包含一个 BatchEncoding(即 tokenizer
的输出)和一个 BatchFeature(即具有正确张量类型的语音预设)。
为模型准备一个或多个序列(s)的主要方法。此方法将 text
和 kwargs
参数转发到 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 (
str
或os.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
< source > ( save_directory speaker_embeddings_dict_path = 'speaker_embeddings_path.json' speaker_embeddings_directory = 'speaker_embeddings' push_to_hub: bool = False **kwargs )
参数
- save_directory (
str
或os.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
< source >( config )
参数
- config (BarkConfig) — 模型配置类,包含模型的所有参数。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 请查看 from_pretrained() 方法以加载模型权重。
完整的 Bark 模型,一个由 4 个子模型组成的文本转语音模型
- BarkSemanticModel(也称为“文本”模型):一个因果自回归 Transformer 模型,它以分词后的文本作为输入,并预测捕捉文本含义的语义文本标记。
- BarkCoarseModel(也称为“粗略声学”模型),也是一个因果自回归 Transformer,它将最后一个模型的结果作为输入。 它的目标是回归生成
encodec
所需的前两个音频码本。 - BarkFineModel(“精细声学”模型),这次是一个非因果自编码 Transformer,它根据先前所有码本嵌入的总和迭代地预测最后一个码本。
- 在从 EncodecModel 预测了所有码本通道之后,Bark 使用它来解码输出音频数组。
需要注意的是,前三个模块中的每一个都支持条件说话人嵌入,以便根据特定预定义的声音来调节输出声音。
此模型继承自 PreTrainedModel。 请查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入的大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。
generate
< source > ( input_ids: Optional = None history_prompt: Optional = None return_output_lengths: Optional = None 参数 这意味着您可以,例如,为所有子模型指定一个生成策略,除了其中一个模型。 返回值 默认情况下
Optional[torch.Tensor]
of shape (batch_size, seq_len), 可选) — 输入id。将被截断至 256 个token。请注意,输出音频将与批次中生成的最长音频长度相同。 Optional[Dict[str,torch.Tensor]]
, 可选) — 可选的 Bark
语者提示。请注意,目前,此模型每批次只接受一个语者提示。
**kwargs
输入到每个子模型的 generate
方法。generate
方法。它优先于没有前缀的关键字。bool
, 可选) — 是否返回波形长度。在批处理时很有用。
torch.Tensor
of shape (batch_size, seq_len)): 生成的音频波形。当 return_output_lengths=True
时:返回一个包含以下内容的元组torch.Tensor
of shape (batch_size, seq_len)): 生成的音频波形。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()
使用 accelerate 将所有子模型卸载到 CPU,减少内存使用,对性能影响很小。此方法在子模型使用时将一个完整的子模型移动到 GPU,并且该子模型将在下一个子模型运行之前一直保留在 GPU 中。
BarkSemanticModel
class transformers.BarkSemanticModel
< source >( config )
参数
- config (BarkSemanticConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法来加载模型权重。
Bark 语义(或文本)模型。它与粗略模型共享相同的架构。它是一个类似 GPT-2 的自回归模型,在顶部有一个语言建模头。此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、裁剪头等)。
此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。
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_cache
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(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 表示已屏蔽的标记。
- 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.
BarkFineModel
class transformers.BarkFineModel
< source >( config )
参数
- config (BarkFineConfig) — 模型配置类,包含模型的所有参数。 使用配置文件初始化不会加载与模型关联的权重,只会加载配置。 请查看 from_pretrained() 方法以加载模型权重。
Bark 精细声学模型。 它是一个非因果 GPT 类模型,具有 config.n_codes_total
个嵌入层和语言建模头,每个码本一个。 此模型继承自 PreTrainedModel。 查看超类文档,了解该库为所有模型实现的通用方法(如下载或保存、调整输入嵌入大小、修剪头部等)。
此模型也是 PyTorch torch.nn.Module 的子类。 将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以了解有关一般用法和行为的所有事项。
forward
< source > ( 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]
范围内。 - 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
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_cache
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(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]
范围内选择。 - 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.
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
) — 模型是否应该返回最后的键/值注意力(并非所有模型都使用)。
这是一个配置类,用于存储 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 子模型的输出词汇量大小。 定义了传递 BarkSemanticModel 时output_ids
可以表示的不同 token 的数量。 默认值为 10_048,但应根据所选子模型仔细考虑。 - num_layers (
int
, 可选, 默认值为 12) — 给定子模型中的隐藏层数量。 - num_heads (
int
, 可选, 默认值为 12) — Transformer 架构中每个注意力层的注意力头数量。 - hidden_size (
int
, 可选, 默认值为 768) — 架构中“中间”(通常称为前馈)层的维度。 - dropout (
float
, 可选, 默认值为 0.0) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。 - 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