# Bark

## 概要

[Bark](https://huggingface.co/suno/bark)は、[suno-ai/bark](https://github.com/suno-ai/bark)でSuno AIが提案した、Transformerベースのテキスト読み上げモデルです。

Barkは4つの主要なモデルで構成されています:

- [BarkSemanticModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkSemanticModel)（「text」モデルとも呼ばれる）: トークン化されたテキストを入力として受け取り、テキストの意味を捉えたセマンティックなテキストトークンを予測する、因果的な自己回帰型 Transformer モデルです。
- [BarkCoarseModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCoarseModel)（「coarse acoustics」モデルとも呼ばれる）: [BarkSemanticModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkSemanticModel)モデルの結果を入力として受け取る、因果的な自己回帰型transformerです。EnCodecに必要な最初の2つのオーディオコードブックを予測することを目的としています。
- [BarkFineModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkFineModel)（「fine acoustics」モデル）は、今回は非因果オートエンコーダ型トランスフォーマーであり、以前のコードブックの埋め込みの合計に基づいて、最後のコードブックを反復的に予測します。
- [EncodecModel](/docs/transformers/main/ja/model_doc/encodec#transformers.EncodecModel)によってすべてのコードブックチャネルを予測した後、Bark はそれを使用して出力オーディオ配列をデコードします。

最初の3つのモジュールはそれぞれ、条件付きのスピーカー埋め込みをサポートしており、特定の事前定義された声に基づいて出力音声を条件付けできます。

このモデルは、[Yoach Lacombe (ylacombe)](https://huggingface.co/ylacombe) と [Sanchit Gandhi (sanchit-gandhi)](https://github.com/sanchit-gandhi) によって提供されました。元のコードは[こちら](https://github.com/suno-ai/bark)で確認できます。

### Barkの最適化

Barkは、わずか数行のコードを追加するだけで最適化でき、**メモリ使用量を大幅に削減**し、**推論を高速化**できます。

#### 半精度の使用

モデルを半精度で読み込むだけで、推論を高速化し、メモリ使用量を50%削減できます。

```python
from transformers import BarkModel

model = BarkModel.from_pretrained("suno/bark-small", device_map="auto")
```

#### CPU オフロードの使用

上記で述べたように、Bark は4つのサブモデルで構成されており、音声生成時にはこれらが順番に呼び出されます。つまり、あるサブモデルが使用中の間に、他のサブモデルは待機状態になります。

CUDA GPUまたはIntel XPUを使用している場合、アイドル状態のサブモデルをデバイスからCPUへオフロードすることで、メモリ使用量を80%削減できるシンプルなソリューションがあります。この操作は*CPUオフローディング*と呼ばれます。以下の1行のコードで利用できます。

```python
model.enable_cpu_offload()
```

この機能を使用する前に、🤗 Accelerate をインストールしておく必要があります。[インストール方法はこちら。](https://huggingface.co/docs/accelerate/basic_tutorials/install)

#### Flash Attention 2 の使用

Flash Attention 2 は、以前の最適化よりもさらに高速で最適化されたバージョンです。

##### インストール

まず、お使いのハードウェアが Flash Attention 2 と互換性があるかどうかを確認してください。互換性のあるハードウェアの最新リストは、[公式ドキュメント](https://github.com/Dao-AILab/flash-attention#installation-and-features)で確認できます。次に、Flash Attention 2 の最新バージョンを[インストール](https://github.com/Dao-AILab/flash-attention#installation-and-features)します:

```bash
pip install -U flash-attn --no-build-isolation
```

##### 使用方法

Flash Attention 2 を使用してモデルを読み込むには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) に `attn_implementation="flash_attention_2"` フラグを渡すことができます。また、音声品質への劣化はほぼないものの、メモリ使用量が大幅に低減され、推論が高速になるため、モデルは半精度（例: `torch.float16`）で読み込みます。

```python
model = BarkModel.from_pretrained("suno/bark-small", attn_implementation="flash_attention_2", device_map="auto")
```

##### パフォーマンス比較

次の図は、ネイティブなアテンション実装（最適化なし）と Flash Attention 2 のレイテンシーを示しています。いずれの場合も、PyTorch 2.1 を使用した 40GB の A100 GPU 上で 400 個のセマンティックトークンを生成しています。

この規模感を示すために、NVIDIA A100 上でバッチサイズ 16 により 400 個のセマンティックトークンを生成する場合、ネイティブなモデル実装で文を 1 つずつ生成するよりも 17 倍の[スループット](https://huggingface.co/blog/optimizing-bark#throughput)を達成でき、さらに 2 秒速くなります。つまり、すべてのサンプルが 17 倍速く生成されるということです。

#### 最適化技術の組み合わせ

最適化技術の組み合わせが可能であり、CPU オフロード、半精度、Flash Attention 2 をすべて同時に使用できます。

```python
from transformers import BarkModel

# load in fp16 and use Flash Attention 2
model = BarkModel.from_pretrained("suno/bark-small", attn_implementation="flash_attention_2", device_map="auto")

# enable CPU offload
model.enable_cpu_offload()
```

推論最適化技術の詳細については、[こちら](https://huggingface.co/docs/transformers/perf_infer_gpu_one)をご覧ください。

### 使用のコツ

Suno は、[こちら](https://suno-ai.notion.site/8b8e8749ed514b0cbf3f699013548683?v=bc67cff786b04b50b3ceb756fd05f68c)で複数の言語に対応した音声プリセットのライブラリを提供しています。これらのプリセットは、[こちら](https://huggingface.co/suno/bark-small/tree/main/speaker_embeddings)または[こちら](https://huggingface.co/suno/bark/tree/main/speaker_embeddings)のハブにもアップロードされています。

```python
from transformers import AutoProcessor, BarkModel

processor = AutoProcessor.from_pretrained("suno/bark")
model = BarkModel.from_pretrained("suno/bark", device_map="auto")

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は、非常にリアルな**多言語**音声だけでなく、音楽、背景音、単純な効果音などの他の音声も生成できます。

```python
# 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()
```

モデルは、笑い、ため息、泣き声などの**非言語コミュニケーション**も生成できます。

```python
# 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()
```

オーディオを保存するには、モデルのconfigからサンプリングレートを取得し、scipyのユーティリティを使用するだけです。

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

#### transformers.BarkConfig[[transformers.BarkConfig]]

```python
transformers.BarkConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, semantic_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, coarse_acoustics_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, fine_acoustics_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, codec_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, initializer_range: float = 0.02)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/configuration_bark.py#L188)

**パラメータ:**

semantic_config ([BarkSemanticConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkSemanticConfig)、*optional*) : 基盤となるセマンティックサブモデルの設定。

coarse_acoustics_config ([BarkCoarseConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCoarseConfig)、*optional*) : 基盤となる粗い音響サブモデルの設定。

fine_acoustics_config ([BarkFineConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkFineConfig)、*optional*) : 基盤となるファインアコースティクスサブモデルの設定。

codec_config ([AutoConfig](/docs/transformers/main/ja/model_doc/auto#transformers.AutoConfig)、*任意*) : 基盤となるコーデックサブモデルの設定。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

これはBarkModelの設定を保存するための設定クラスです。指定された引数に従ってBarkモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[suno/bark](https://huggingface.co/suno/bark)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> from transformers import (
...     BarkSemanticConfig,
...     BarkCoarseConfig,
...     BarkFineConfig,
...     BarkModel,
...     BarkConfig,
...     AutoConfig,
... )

>>> # Initializing Bark sub-modules configurations.
>>> semantic_config = BarkSemanticConfig()
>>> coarse_acoustics_config = BarkCoarseConfig()
>>> fine_acoustics_config = BarkFineConfig()
>>> codec_config = AutoConfig.from_pretrained("facebook/encodec_24khz")

>>> # Initializing a Bark module style configuration
>>> configuration = BarkConfig(
...     semantic_config, coarse_acoustics_config, fine_acoustics_config, codec_config
... )

>>> # Initializing a model (with random weights)
>>> model = BarkModel(configuration)

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

## BarkProcessor[[transformers.BarkProcessor]]

#### transformers.BarkProcessor[[transformers.BarkProcessor]]

```python
transformers.BarkProcessor(tokenizer, speaker_embeddings = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/processing_bark.py#L35)

**パラメータ:**

tokenizer (`BertTokenizer`) : トークナイザーは必須の入力です。

speaker_embeddings (`dict[dict[str]]`、*任意*) : 任意のネストされた話者埋め込み辞書です。第1階層には音声プリセット名（例: `"en_speaker_4"`）が含まれます。第2階層には `"semantic_prompt"`、`"coarse_prompt"` および `"fine_prompt"` の埋め込みが含まれます。値は、対応する `np.ndarray` のパスに対応します。`voice_preset_names` のリストについては、[こちら](https://suno-ai.notion.site/8b8e8749ed514b0cbf3f699013548683?v=bc67cff786b04b50b3ceb756fd05f68c)を参照してください。

BarkProcessor を構築し、トークナイザーを単一のプロセッサーにラップします。

[BarkProcessor](/docs/transformers/main/ja/model_doc/bark#transformers.BarkProcessor) は [BertTokenizer](/docs/transformers/main/ja/model_doc/lxmert#transformers.BertTokenizer) のすべての機能を提供します。詳細については、[~BertTokenizer](/docs/transformers/main/ja/model_doc/lxmert#transformers.BertTokenizer) を参照してください。

#### __call__[[transformers.BarkProcessor.__call__]]

```python
__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)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/processing_bark.py#L296)

**パラメータ:**

text (``) : The sequence or batch of sequences to be encoded. Each sequence can be a string or a list of strings (pretokenized string). If you pass a pretokenized input, set `is_split_into_words=True` to avoid ambiguity with batched inputs.

voice_preset (`str`, `dict[np.ndarray]`) : 音声プリセット、つまりスピーカー埋め込みです。有効な voice_preset 名（例: `"en_speaker_1"`）であるか、`Bark` の各サブモデルに対する `np.ndarray` 埋め込みの辞書であるかのいずれかです。また、キー `"semantic_prompt"`、`"coarse_prompt"` および `"fine_prompt"` を含むローカルの `.npz` 単一音声プリセットの有効なファイル名でも構いません。

return_tensors (``, defaults to `pt`) : If set, will return tensors of a particular framework. Acceptable values are:  - `'pt'`: Return PyTorch `torch.Tensor` objects. - `'np'`: Return NumPy `np.ndarray` objects.

max_length (`int`、デフォルトは`256`) : 切り詰め/パディングパラメータのいずれかによって使用される最大長を制御します。未設定または`None`に設定されている場合、切り詰め/パディングパラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合（XLNetなど）、最大長への切り詰め/パディングは無効になります。

add_special_tokens (`bool`、デフォルトは`False`) : シーケンスをエンコードする際に特殊トークンを追加するかどうか。これは、入力 ID に自動的に追加されるトークンを定義する基盤となる`PretrainedTokenizerBase.build_inputs_with_special_tokens`関数を使用します。`bos`または`eos`トークンを自動的に追加したい場合に便利です。

return_attention_mask (`bool`、デフォルトは`True`) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。 [アテンションマスクとは?](../glossary#attention-mask)

return_token_type_ids (`bool`、デフォルトは`False`) : トークンタイプIDを返すかどうか。デフォルトのままにすると、`return_outputs`属性で定義される特定のトークナイザーのデフォルトに従って、トークンタイプIDを返します。  [トークンタイプIDとは?](../glossary#token-type-ids)

**戻り値:** [BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding)

`tokenizer` の出力を含む [BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding) オブジェクトです。音声プリセットが指定されている場合、返されるオブジェクトには、適切なテンソル型を持つ音声プリセット、すなわち [BatchFeature](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.BatchFeature) を含む `"history_prompt"` キーが含まれます。

#### from_pretrained[[transformers.BarkProcessor.from_pretrained]]

```python
from_pretrained(pretrained_processor_name_or_path, speaker_embeddings_dict_path = 'speaker_embeddings_path.json', **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/processing_bark.py#L55)

**パラメータ:**

pretrained_model_name_or_path (`str` または `os.PathLike`) : 以下のいずれかです。 - huggingface.co のモデルリポジトリにホストされている事前学習済み [BarkProcessor](/docs/transformers/main/ja/model_doc/bark#transformers.BarkProcessor) の *model id* を示す文字列。 - [save_pretrained()](/docs/transformers/main/ja/model_doc/bark#transformers.BarkProcessor.save_pretrained) メソッドを使用してプロセッサが保存された *ディレクトリ* へのパス。例: `./my_model_directory/`。

speaker_embeddings_dict_path (`str`、*任意*、デフォルトは`"speaker_embeddings_path.json"`) : `pretrained_model_name_or_path` に配置されている speaker_embeddings ディクショナリを含む`.json` ファイルの名前。`None` の場合、speaker_embeddings は読み込まれません。

- ****kwargs** : `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained` に渡される追加のキーワード引数。

事前学習済みモデルに関連付けられた Bark プロセッサをインスタンス化します。

#### save_pretrained[[transformers.BarkProcessor.save_pretrained]]

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

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/processing_bark.py#L121)

**パラメータ:**

save_directory (`str` または `os.PathLike`) : トークナイザーファイルとスピーカー埋め込みを保存するディレクトリ（存在しない場合は作成されます）。

speaker_embeddings_dict_path (`str`、*任意*、デフォルトは`"speaker_embeddings_path.json"`) : 存在する場合、`pretrained_model_name_or_path/speaker_embeddings_directory` に配置される、speaker_embeddings のネストされたパス辞書を含む `.json` ファイルの名前。

speaker_embeddings_directory (`str`、*任意*、デフォルトは `"speaker_embeddings/"`) : speaker_embeddings 配列を保存するフォルダの名前。

push_to_hub (`bool`、*任意*、デフォルトは`False`) : モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリは`repo_id`で指定できます（指定しない場合、`save_directory`の名前があなたのネームスペース内でデフォルトとして使用されます）。

kwargs : [push_to_hub()](/docs/transformers/main/ja/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) メソッドに渡される追加のキーワード引数。

このプロセッサ（トークナイザーなど）の属性を指定されたディレクトリに保存し、[from_pretrained()](/docs/transformers/main/ja/model_doc/bark#transformers.BarkProcessor.from_pretrained) メソッドを使って読み戻せるようにします。

## BarkModel[[transformers.BarkModel]]

#### transformers.BarkModel[[transformers.BarkModel]]

```python
transformers.BarkModel(config: BarkConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L1260)

**パラメータ:**

config ([BarkConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

4つのサブモデルで構成されるテキストから音声への変換モデルである、完全なBarkモデル:
- [BarkSemanticModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkSemanticModel)（「text」モデルとも呼ばれる）:
トークン化されたテキストを入力として受け取り、テキストの意味を捉えるセマンティックなテキストトークンを予測します。
- [BarkCoarseModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCoarseModel)（「coarse acoustics」モデルとも呼ばれる）もまた、因果的自己回帰型トランスフォーマーです。
直前のモデルの結果を入力として受け取り、`encodec` に必要な最初の 2 つのオーディオコードブックを回帰することを目的としています。
- [BarkFineModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkFineModel)（「fine acoustics」モデル）は、今回は非因果オートエンコーダ型トランスフォーマーであり、反復的に
predicts は、それ以前の codebook の embedding の合計に基づいて最後の codebook を予測します。
- [EncodecModel](/docs/transformers/main/ja/model_doc/encodec#transformers.EncodecModel)からすべてのコードブックチャネルを予測した後、Bark はそれを使用して出力オーディオをデコードします
配列。

最初の3つのモジュールはそれぞれ、条件付きのスピーカー埋め込みをサポートしており、特定の事前定義された声に基づいて出力音声を条件付けできます。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### generate[[transformers.BarkModel.generate]]

```python
generate(input_ids: typing.Optional[torch.Tensor] = None, history_prompt: dict[str, torch.Tensor] | None = None, return_output_lengths: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L1364)

**パラメータ:**

input_ids (`Optional[torch.Tensor]`、shape (batch_size, seq_len)、*任意*) : 入力 ID。256 トークンまで切り詰められます。なお、出力オーディオの長さは、バッチ内で最も長い生成に等しくなります。

history_prompt (`Optional[dict[str,torch.Tensor]]`, *optional*) : 任意の `Bark` スピーカープロンプトです。なお、現時点ではこのモデルはバッチあたり 1 つのスピーカープロンプトのみを受け取ります。

kwargs (*任意*) : 残りのキーワード引数の辞書。キーワード引数は2つの種類があります。 - プレフィックスなしの場合、各サブモデルの `generate` メソッドに対して `**kwargs` として入力されます。 - *semantic_*、*coarse_*、*fine_* というプレフィックス付きの場合、それぞれ semantic、coarse、fine の `generate` メソッドに入力されます。プレフィックスなしのキーワードよりも優先されます。 これにより、例えば1つのサブモデルを除くすべてのサブモデルに対して生成戦略を指定できます。

return_output_lengths (`bool`, *任意*) : 波形の長さを返すかどうか。バッチ処理を行う際に便利です。

**戻り値:** `By default`

- **audio_waveform**（`torch.Tensor`、shape: (batch_size, seq_len)）: 生成されたオーディオ波形。
`return_output_lengths=True`の場合: 以下の要素で構成されるタプルを返します:
- **audio_waveform**（`torch.Tensor`、shape: (batch_size, seq_len)）: 生成されたオーディオ波形。
- **output_lengths** (`torch.Tensor`、shape: (batch_size)): バッチ内の各波形の長さ

入力プロンプトと、任意の追加の`Bark`スピーカープロンプトからオーディオを生成します。

例:

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

```python
enable_cpu_offload(accelerator_id: int | None = 0, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L1302)

**パラメータ:**

accelerator_id (`int`、*optional*、デフォルトは 0) : サブモデルがロードおよびオフロードされる accelerator の ID。

accelerate を使用してすべてのサブモデルを CPU にオフロードし、パフォーマンスへの影響を最小限に抑えながらメモリ使用量を削減します。このメソッドでは、サブモデルが使用されるタイミングで、1 つのサブモデル全体をアクセラレーターに移動し、次のサブモデルが実行されるまでそのサブモデルはアクセラレーター上に保持されます。

## BarkSemanticModel[[transformers.BarkSemanticModel]]

#### transformers.BarkSemanticModel[[transformers.BarkSemanticModel]]

```python
transformers.BarkSemanticModel(config: BarkSubModelConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L526)

**パラメータ:**

config (`BarkSubModelConfig`) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを参照してください。

Barkのセマンティック（またはテキスト）モデルです。粗いモデルと同じアーキテクチャを共有しています。上部に言語モデリングヘッドを備えた、GPT-2のような自己回帰モデルです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.BarkSemanticModel.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L396)

**パラメータ:**

input_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

past_key_values (`~cache_utils.Cache`, *任意*) : 逐次デコードを高速化するために使用できる、事前計算された hidden-states（self-attention ブロックおよび cross-attention ブロック内の key と value）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返した `past_key_values` で構成されます。入力として許可されるのは [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) インスタンスのみです。[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。`past_key_values` が渡されない場合、デフォルトで [DynamicCache](/docs/transformers/main/ja/internal/generation_utils#transformers.DynamicCache) が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合は、すべての `input_ids`（形状 `(batch_size, sequence_length)`）の代わりに、このモデルに過去の key value 状態が与えられていない未処理の `input_ids`（形状 `(batch_size, unprocessed_length)`）のみを入力する必要があります。

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。`[0, config.n_positions - 1]` の範囲から選択されます。  [位置 ID とは何か？](../glossary#position-ids)

labels (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[0, ..., config.vocab_size]` の範囲内であるか、-100 である必要があります（`input_ids` のドキュメント文字列を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲内のラベルを持つトークンに対してのみ計算されます。

inputs_embeds (`torch.Tensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

use_cache (`bool`, *任意*) : `True`に設定すると、`past_key_values`のキーバリュー状態が返され、デコーディングの高速化に利用できます（`past_key_values`を参照）。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) または `tuple(torch.Tensor)`

`torch.Tensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）または [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast)。設定（[BarkConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkConfig)）や入力に応じて、さまざまな要素で構成されます。

[BarkCausalModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCausalModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.Tensor`、形状 `(1,)`、*任意*、`labels` が指定された場合に返されます) -- 言語モデリングの損失(次のトークンの予測用)。
- **logits** (`torch.Tensor`、形状 `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **past_key_values** (`Cache`、*任意*、`use_cache=True` が渡された場合または `config.use_cache=True` の場合に返されます) -- [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) のインスタンスです。詳細については、[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。

  逐次デコーディングを高速化するために使用できる（`past_key_values` 入力参照）、事前計算済みの隠れ状態（自己注意ブロックのキーとバリュー）が含まれます。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## BarkCoarseModel[[transformers.BarkCoarseModel]]

#### transformers.BarkCoarseModel[[transformers.BarkCoarseModel]]

```python
transformers.BarkCoarseModel(config: BarkSubModelConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L642)

**パラメータ:**

config (`BarkSubModelConfig`) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを参照してください。

Bark coarse acoustics model。セマンティック（またはテキスト）モデルと同じアーキテクチャを共有しています。言語モデリングヘッドを備えた、GPT-2 風の自己回帰モデルです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.BarkCoarseModel.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L396)

**パラメータ:**

input_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

past_key_values (`~cache_utils.Cache`, *任意*) : 逐次デコードを高速化するために使用できる、事前計算された hidden-states（self-attention ブロックおよび cross-attention ブロック内の key と value）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返した `past_key_values` で構成されます。入力として許可されるのは [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) インスタンスのみです。[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。`past_key_values` が渡されない場合、デフォルトで [DynamicCache](/docs/transformers/main/ja/internal/generation_utils#transformers.DynamicCache) が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合は、すべての `input_ids`（形状 `(batch_size, sequence_length)`）の代わりに、このモデルに過去の key value 状態が与えられていない未処理の `input_ids`（形状 `(batch_size, unprocessed_length)`）のみを入力する必要があります。

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。`[0, config.n_positions - 1]` の範囲から選択されます。  [位置 ID とは何か？](../glossary#position-ids)

labels (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[0, ..., config.vocab_size]` の範囲内であるか、-100 である必要があります（`input_ids` のドキュメント文字列を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲内のラベルを持つトークンに対してのみ計算されます。

inputs_embeds (`torch.Tensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

use_cache (`bool`, *任意*) : `True`に設定すると、`past_key_values`のキーバリュー状態が返され、デコーディングの高速化に利用できます（`past_key_values`を参照）。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) または `tuple(torch.Tensor)`

`torch.Tensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）または [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast)。設定（[BarkConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkConfig)）や入力に応じて、さまざまな要素で構成されます。

[BarkCausalModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCausalModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.Tensor`、形状 `(1,)`、*任意*、`labels` が指定された場合に返されます) -- 言語モデリングの損失(次のトークンの予測用)。
- **logits** (`torch.Tensor`、形状 `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **past_key_values** (`Cache`、*任意*、`use_cache=True` が渡された場合または `config.use_cache=True` の場合に返されます) -- [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) のインスタンスです。詳細については、[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。

  逐次デコーディングを高速化するために使用できる（`past_key_values` 入力参照）、事前計算済みの隠れ状態（自己注意ブロックのキーとバリュー）が含まれます。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## BarkFineModel[[transformers.BarkFineModel]]

#### transformers.BarkFineModel[[transformers.BarkFineModel]]

```python
transformers.BarkFineModel(config: BarkFineConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L866)

**パラメータ:**

config ([BarkFineConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkFineConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

Barkのファインアコースティクスモデルです。`config.n_codes_total`個の埋め込み層と、各コードブックに対応する言語モデリングヘッドを備えた、非因果的なGPT類似のモデルです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.BarkFineModel.forward]]

```python
forward(codebook_idx: int, input_ids: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L993)

**パラメータ:**

codebook_idx (`int`) : 予測されるコードブックのインデックス。

input_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。`[0, config.n_positions - 1]` の範囲から選択されます。  [位置 ID とは何か？](../glossary#position-ids)

labels (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : 未実装です。

inputs_embeds (`torch.Tensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [MaskedLMOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.MaskedLMOutput) または `tuple(torch.Tensor)`

設定（[BarkConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkConfig)）と入力に応じて、さまざまな要素で構成される、[MaskedLMOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.MaskedLMOutput)または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。

[BarkFineModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkFineModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.Tensor`、形状 `(1,)`、*任意*、`labels` が指定された場合に返されます) -- マスクド言語モデリング (MLM) の損失。
- **logits** (`torch.Tensor`、形状 `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## BarkCausalModel[[transformers.BarkCausalModel]]

#### transformers.BarkCausalModel[[transformers.BarkCausalModel]]

```python
transformers.BarkCausalModel(config: BarkSubModelConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L361)

#### forward[[transformers.BarkCausalModel.forward]]

```python
forward(input_ids: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, attention_mask: typing.Optional[torch.Tensor] = None, position_ids: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.LongTensor] = None, inputs_embeds: typing.Optional[torch.Tensor] = None, use_cache: bool | None = None, output_attentions: bool | None = None, output_hidden_states: bool | None = None, return_dict: bool | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/modeling_bark.py#L396)

**パラメータ:**

input_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 語彙における入力シーケンスのトークンインデックスです。デフォルトでは、パディングは無視されます。インデックスは [AutoTokenizer](/docs/transformers/main/ja/model_doc/auto#transformers.AutoTokenizer) を使用して取得できます。詳細については、[PreTrainedTokenizer.encode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) および [PreTrainedTokenizer.__call__()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__) を参照してください。 [入力IDとは何ですか？](../glossary#input-ids)

past_key_values (`~cache_utils.Cache`, *任意*) : 逐次デコードを高速化するために使用できる、事前計算された hidden-states（self-attention ブロックおよび cross-attention ブロック内の key と value）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返した `past_key_values` で構成されます。入力として許可されるのは [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) インスタンスのみです。[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。`past_key_values` が渡されない場合、デフォルトで [DynamicCache](/docs/transformers/main/ja/internal/generation_utils#transformers.DynamicCache) が初期化されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合は、すべての `input_ids`（形状 `(batch_size, sequence_length)`）の代わりに、このモデルに過去の key value 状態が与えられていない未処理の `input_ids`（形状 `(batch_size, unprocessed_length)`）のみを入力する必要があります。

attention_mask (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

position_ids (`torch.Tensor`、shape `(batch_size, sequence_length)`、*任意*) : 各入力シーケンスのトークンが位置埋め込み内で占める位置のインデックス。`[0, config.n_positions - 1]` の範囲から選択されます。  [位置 ID とは何か？](../glossary#position-ids)

labels (`torch.LongTensor`、形状 `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[0, ..., config.vocab_size]` の範囲内であるか、-100 である必要があります（`input_ids` のドキュメント文字列を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲内のラベルを持つトークンに対してのみ計算されます。

inputs_embeds (`torch.Tensor`、shape `(batch_size, sequence_length, hidden_size)`、*任意*) : `input_ids` を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、`input_ids` のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。

use_cache (`bool`, *任意*) : `True`に設定すると、`past_key_values`のキーバリュー状態が返され、デコーディングの高速化に利用できます（`past_key_values`を参照）。

output_attentions (`bool`, *任意*) : すべてのアテンション層のアテンションテンソルを返すかどうか。詳細は、返されるテンソルの `attentions` を参照してください。

output_hidden_states (`bool`, *任意*) : 全レイヤーの hidden states を返すかどうかを指定します。詳細は、返されるテンソルの `hidden_states` を参照してください。

return_dict (`bool`, *任意*) : プレーンなタプルではなく [ModelOutput](/docs/transformers/main/ja/main_classes/output#transformers.utils.ModelOutput) を返すかどうか。

**戻り値:** [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast) または `tuple(torch.Tensor)`

`torch.Tensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）または [CausalLMOutputWithPast](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutputWithPast)。設定（[BarkConfig](/docs/transformers/main/ja/model_doc/bark#transformers.BarkConfig)）や入力に応じて、さまざまな要素で構成されます。

[BarkCausalModel](/docs/transformers/main/ja/model_doc/bark#transformers.BarkCausalModel)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.Tensor`、形状 `(1,)`、*任意*、`labels` が指定された場合に返されます) -- 言語モデリングの損失(次のトークンの予測用)。
- **logits** (`torch.Tensor`、形状 `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **past_key_values** (`Cache`、*任意*、`use_cache=True` が渡された場合または `config.use_cache=True` の場合に返されます) -- [Cache](/docs/transformers/main/ja/internal/generation_utils#transformers.Cache) のインスタンスです。詳細については、[kv cache ガイド](https://huggingface.co/docs/transformers/en/kv_cache)を参照してください。

  逐次デコーディングを高速化するために使用できる（`past_key_values` 入力参照）、事前計算済みの隠れ状態（自己注意ブロックのキーとバリュー）が含まれます。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

## BarkCoarseConfig[[transformers.BarkCoarseConfig]]

#### transformers.BarkCoarseConfig[[transformers.BarkCoarseConfig]]

```python
transformers.BarkCoarseConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, block_size: int = 1024, input_vocab_size: int = 10048, output_vocab_size: int = 10048, num_layers: int = 12, num_heads: int = 12, hidden_size: int = 768, dropout: float | int = 0.0, bias: bool = True, initializer_range: float = 0.02, use_cache: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/configuration_bark.py#L105)

**パラメータ:**

block_size (`int`, *optional*, デフォルトは 1024) : このモデルが使用される可能性のある最大シーケンス長です。念のため、通常は大きめの値（例: 512、1024、2048 など）に設定します。

input_vocab_size (`int`、*optional*、デフォルトは 10_048) : Bark サブモデルの語彙サイズです。`{model}` を呼び出す際に渡す `inputs_ids` で表現できるトークンの種類数を定義します。デフォルトは 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

output_vocab_size (`int`、*optional*、デフォルト値は 10_048) : Bark サブモデルの出力語彙サイズです。`{model}` をフォワードパスに渡す際に、`output_ids` で表現できるトークンの種類数を定義します。デフォルト値は 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

num_layers (`int`, *任意*, デフォルトは `12`) : Transformer デコーダーの隠れ層の数。

num_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : すべての dropout レイヤーの比率。

bias (`bool`、*任意*、デフォルトは`True`) : 線形層とレイヤーノルム層でバイアスを使用するかどうか

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

use_cache (`bool`、*任意*、デフォルトは `True`) : モデルが最後のキー/バリューアテンションを返すかどうか（すべてのモデルで利用されるわけではありません）。`config.is_decoder=True` の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。

これはBarkModelの設定を保存するための設定クラスです。指定された引数に従ってBarkモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[suno/bark](https://huggingface.co/suno/bark)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

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

#### transformers.BarkFineConfig[[transformers.BarkFineConfig]]

```python
transformers.BarkFineConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, block_size: int = 1024, input_vocab_size: int = 10048, output_vocab_size: int = 10048, num_layers: int = 12, num_heads: int = 12, hidden_size: int = 768, dropout: float | int = 0.0, bias: bool = True, initializer_range: float = 0.02, use_cache: bool = True, tie_word_embeddings: bool = True, n_codes_total: int = 8, n_codes_given: int = 1)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/configuration_bark.py#L142)

**パラメータ:**

block_size (`int`, *optional*, デフォルトは 1024) : このモデルが使用される可能性のある最大シーケンス長です。念のため、通常は大きめの値（例: 512、1024、2048 など）に設定します。

input_vocab_size (`int`、*optional*、デフォルトは 10_048) : Bark サブモデルの語彙サイズです。`{model}` を呼び出す際に渡す `inputs_ids` で表現できるトークンの種類数を定義します。デフォルトは 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

output_vocab_size (`int`、*optional*、デフォルト値は 10_048) : Bark サブモデルの出力語彙サイズです。`{model}` をフォワードパスに渡す際に、`output_ids` で表現できるトークンの種類数を定義します。デフォルト値は 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

num_layers (`int`, *任意*, デフォルトは `12`) : Transformer デコーダーの隠れ層の数。

num_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : すべての dropout レイヤーの比率。

bias (`bool`、*任意*、デフォルトは`True`) : 線形層とレイヤーノルム層でバイアスを使用するかどうか

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

use_cache (`bool`、*任意*、デフォルトは `True`) : モデルが最後のキー/バリューアテンションを返すかどうか（すべてのモデルで利用されるわけではありません）。`config.is_decoder=True` の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。

tie_word_embeddings (`bool`、*任意*、デフォルトは`True`) : モデルの`tied_weights_keys`マッピングに従って重み埋め込みを共有するかどうか。

n_codes_total (`int`、*optional*、デフォルトは 8) : 予測されるオーディオコードブックの総数です。ファインアコースティクスサブモデルで使用されます。

n_codes_given (`int`、*optional*、デフォルトは 1) : 粗い音響サブモデルで予測されるオーディオコードブックの数。音響サブモデルで使用されます。

これはBarkModelの設定を保存するための設定クラスです。指定された引数に従ってBarkモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[suno/bark](https://huggingface.co/suno/bark)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

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

#### transformers.BarkSemanticConfig[[transformers.BarkSemanticConfig]]

```python
transformers.BarkSemanticConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, block_size: int = 1024, input_vocab_size: int = 10048, output_vocab_size: int = 10048, num_layers: int = 12, num_heads: int = 12, hidden_size: int = 768, dropout: float | int = 0.0, bias: bool = True, initializer_range: float = 0.02, use_cache: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/bark/configuration_bark.py#L68)

**パラメータ:**

block_size (`int`, *optional*, デフォルトは 1024) : このモデルが使用される可能性のある最大シーケンス長です。念のため、通常は大きめの値（例: 512、1024、2048 など）に設定します。

input_vocab_size (`int`、*optional*、デフォルトは 10_048) : Bark サブモデルの語彙サイズです。`{model}` を呼び出す際に渡す `inputs_ids` で表現できるトークンの種類数を定義します。デフォルトは 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

output_vocab_size (`int`、*optional*、デフォルト値は 10_048) : Bark サブモデルの出力語彙サイズです。`{model}` をフォワードパスに渡す際に、`output_ids` で表現できるトークンの種類数を定義します。デフォルト値は 10_048 ですが、選択したサブモデルに応じて慎重に検討する必要があります。

num_layers (`int`, *任意*, デフォルトは `12`) : Transformer デコーダーの隠れ層の数。

num_heads (`int`、*任意*、デフォルトは `12`) : Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。

hidden_size (`int`、*任意*、デフォルトは`768`) : 隠れ表現の次元数。

dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : すべての dropout レイヤーの比率。

bias (`bool`、*任意*、デフォルトは`True`) : 線形層とレイヤーノルム層でバイアスを使用するかどうか

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

use_cache (`bool`、*任意*、デフォルトは `True`) : モデルが最後のキー/バリューアテンションを返すかどうか（すべてのモデルで利用されるわけではありません）。`config.is_decoder=True` の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。

これはBarkModelの設定を保存するための設定クラスです。指定された引数に従ってBarkモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[suno/bark](https://huggingface.co/suno/bark)と類似した設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> 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
```

