# Mimi

[Mimi](https://huggingface.co/papers/2410.00037)は、事前学習済みおよび量子化済みバリアントを備えたニューラルオーディオコーデックモデルであり、効率的な音声表現と圧縮を目的として設計されています。このモデルは1.1 kbpsで動作し、フレームレートは12 Hzです。また、16個のコードブックを持つ残差ベクトル量子化器と組み合わせた畳み込み型エンコーダ・デコーダアーキテクチャを採用しています。Mimiは、言語的な豊かさと高忠実度の再構築のバランスを取るため、セマンティックとアコースティックという2つのトークンストリームを出力します。主な機能には、低レイテンシ用途向けの因果ストリーミングエンコーダ、柔軟な下流生成に対応するデュアルパスのトークン化、そしてMoshiのような大規模音声モデルとの統合対応が含まれます。

[Kyutai](https://huggingface.co/kyutai/models?search=mimi)組織の下で、元のMimiのチェックポイントを見つけることができます。

>[!TIP]
> このモデルは [ylacombe](https://huggingface.co/ylacombe) によって提供されました。
>
> Mimi の適用方法のより多くの例については、右側のサイドバーにある Mimi モデルをクリックしてください。

以下の例では、[AutoModel](/docs/transformers/main/ja/model_doc/auto#transformers.AutoModel) クラスを使用してオーディオをエンコードおよびデコードする方法を示しています。

```python
from datasets import Audio, load_dataset

from transformers import AutoFeatureExtractor, MimiModel

librispeech_dummy = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

# load model and feature extractor
model = MimiModel.from_pretrained("kyutai/mimi", device_map="auto")
feature_extractor = AutoFeatureExtractor.from_pretrained("kyutai/mimi")

# load audio sample
librispeech_dummy = librispeech_dummy.cast_column("audio", Audio(sampling_rate=feature_extractor.sampling_rate))
audio_sample = librispeech_dummy[-1]["audio"]["array"]
inputs = feature_extractor(raw_audio=audio_sample, sampling_rate=feature_extractor.sampling_rate, return_tensors="pt").to(model.device)

encoder_outputs = model.encode(inputs["input_values"], inputs["padding_mask"])
audio_values = model.decode(encoder_outputs.audio_codes, inputs["padding_mask"])[0]
# or the equivalent with a forward pass
audio_values = model(inputs["input_values"], inputs["padding_mask"]).audio_values
```

## MimiConfig[[transformers.MimiConfig]]

#### transformers.MimiConfig[[transformers.MimiConfig]]

```python
transformers.MimiConfig(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, sampling_rate: int = 24000, audio_channels: int = 1, hidden_size: int = 512, num_filters: int = 64, num_residual_layers: int = 1, upsampling_ratios: list[int] | None = None, kernel_size: int = 7, last_kernel_size: int = 3, residual_kernel_size: int = 3, dilation_growth_rate: int = 2, use_causal_conv: bool = True, pad_mode: str = 'constant', compress: int = 2, trim_right_ratio: float = 1.0, codebook_size: int = 2048, codebook_dim: int = 256, num_quantizers: int = 32, use_conv_shortcut: bool = False, vector_quantization_hidden_dimension: int = 256, num_semantic_quantizers: int = 1, upsample_groups: int = 512, num_hidden_layers: int = 8, intermediate_size: int = 2048, num_attention_heads: int = 8, num_key_value_heads: int = 8, head_dim: int | None = None, hidden_act: str = 'gelu', max_position_embeddings: int = 8000, initializer_range: float = 0.02, norm_eps: float = 1e-05, use_cache: bool = False, use_streaming: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, sliding_window: int = 250, attention_dropout: float | int = 0.0, layer_scale_initial_scale: float = 0.01, attention_bias: bool = False, tie_word_embeddings: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/configuration_mimi.py#L28)

**パラメータ:**

sampling_rate (`int`、*optional*、デフォルトは`24000`) : 音声ファイルをデジタル化するためのサンプリングレート（ヘルツ (Hz) 単位）。

audio_channels (`int`、*optional*、デフォルトは 1) : 音声データのチャネル数。モノラルの場合は 1、ステレオの場合は 2 を指定します。

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

num_filters (`int`、*optional*、デフォルトは 64) : 最初の`MimiConv1d`ダウンサンプリング層の畳み込みカーネルの数。

num_residual_layers (`int`、*optional*、デフォルトは 1) : 残差層の数。

upsampling_ratios (`Sequence[int]`, *optional*) : カーネルサイズとストライドの比率。エンコーダーはアップサンプリング比率ではなくダウンサンプリング比率を使用するため、ここで指定された比率はデコーダーの順序と一致する必要があり、その逆順で使用されます。指定されない場合、デフォルトで`[8, 6, 5, 4]`になります。

kernel_size (`int`、*任意*、デフォルトは`7`) : 畳み込みカーネルのサイズです。

last_kernel_size (`int`、*任意*、デフォルトは 3) : 最後の畳み込み層のカーネルサイズ。

residual_kernel_size (`int`、*optional*、デフォルトは 3) : 残差層のカーネルサイズ。

dilation_growth_rate (`int`、*optional*、デフォルトは 2) : 各レイヤーごとに dilation をどれだけ増加させるかを指定します。

use_causal_conv (`bool`、*任意*、デフォルトは`True`) : 完全因果畳み込みを使用するかどうか。

pad_mode (`str`、*任意*、デフォルトは`"constant"`) : 畳み込みのパディングモード。

compress (`int`、*任意*、デフォルトは 2) : 残差ブランチにおける次元削減後の次元数。

trim_right_ratio (`float`、*任意*、デフォルト値は 1.0) : `use_causal_conv = True` の設定下で、転置畳み込みの右側でトリミングを行う比率です。1.0 に等しい場合、すべてのトリミングが右側で行われることを意味します。

codebook_size (`int`、*optional*、デフォルトは`2048`) : モデルが使用する並列コードブックの数。

codebook_dim (`int`、*optional*、デフォルトは`256`) : 各コードブック埋め込みベクトルの次元数。

num_quantizers (`int`、*optional*、デフォルトは 32) : 量子化器内の量子化チャネル数、またはコードブック数。

use_conv_shortcut (`bool`、*任意*、デフォルトは`False`) : `MimiResnetBlock`ブロックの「skip」接続として畳み込み層を使用するかどうか。Falseの場合、恒等関数が使用され、一般的な残差接続になります。

vector_quantization_hidden_dimension (`int`, *optional*, デフォルトは 256) : 残差ベクトル量子化空間における中間表現の次元数。

num_semantic_quantizers (`int`、*optional*、デフォルトは 1) : セマンティック量子化器におけるセマンティック量子化チャネル、すなわちコードブックの数。`num_quantizers` より小さい値である必要があります。

upsample_groups (`int`、*optional*、デフォルトは 512) : `frame_rate!=encodec_frame_rate` の場合、1 つのレートから別のレートへの変換における上サンプリング操作で使用するグループ数を示します。

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

intermediate_size (`int`、*任意*、デフォルトは`2048`) : MLP 表現の次元数。

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

num_key_value_heads (`int`, *optional*, デフォルトは `8`) : Grouped Query Attention を実装するために使用する key_value ヘッドの数です。`num_key_value_heads=num_attention_heads` の場合、モデルは Multi Head Attention (MHA) を使用し、`num_key_value_heads=1` の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。マルチヘッドのチェックポイントを GQA のチェックポイントに変換する際は、各グループの key ヘッドと value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、[この論文](https://huggingface.co/papers/2305.13245)を参照してください。指定されない場合、デフォルトで `num_attention_heads` が使用されます。

head_dim (`int`, *optional*) : アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。

hidden_act (`str`、*任意*、デフォルトは`gelu`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"`など。

max_position_embeddings (`int`、*optional*、デフォルトは`8000`) : このモデルが使用される可能性のある最大シーケンス長。

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

norm_eps (`float`、*任意*、デフォルトは`1e-05`) : Layer Normalization 層で使用する epsilon。

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

use_streaming (`bool`、*任意*、デフォルトは`False`) : ストリーミングモードを使用するかどうか。`True`の場合、モデルのエンコードメソッドは、エンコードメソッドの後の呼び出しで使用できるパディングキャッシュを返します。

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *optional*) : RoPE 埋め込みの設定パラメータを含む辞書です。この辞書には `rope_theta` の値が含まれていなければならず、より長い `max_position_embeddings` で RoPE を使用する場合、スケーリングに使用されるパラメータが任意で含まれます。

sliding_window (`int`、*任意*、デフォルトは`250`) : スライディングウィンドウアテンションのウィンドウサイズ。`None`の場合、スライディングウィンドウは適用されません。

attention_dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 注意確率のドロップアウト率。

layer_scale_initial_scale (`float`、*optional*、デフォルトは`0.01`) : self-attention層で使用するスケール。baseモデルでは0.1、largeモデルでは1e-6を使用します。0に設定すると、layer scaleを無効にします。

attention_bias (`bool`、*任意*、デフォルトは`False`) : セルフアテンションにおけるクエリ、キー、バリュー、出力の投影層でバイアスを使用するかどうか。

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

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

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

例:

```python
>>> from transformers import MimiModel, MimiConfig

>>> # Initializing a "kyutai/mimi" style configuration
>>> configuration = MimiConfig()

>>> # Initializing a model (with random weights) from the "kyutai/mimi" style configuration
>>> model = MimiModel(configuration)

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

## MimiEncoderConfig[[transformers.MimiEncoderConfig]]

#### transformers.MimiEncoderConfig[[transformers.MimiEncoderConfig]]

```python
transformers.MimiEncoderConfig(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, sampling_rate: int = 24000, audio_channels: int = 1, hidden_size: int = 512, num_filters: int = 64, num_residual_layers: int = 1, upsampling_ratios: list[int] | None = None, kernel_size: int = 7, last_kernel_size: int = 3, residual_kernel_size: int = 3, dilation_growth_rate: int = 2, use_causal_conv: bool = True, pad_mode: str = 'constant', compress: int = 2, trim_right_ratio: float = 1.0, codebook_size: int = 2048, codebook_dim: int = 256, num_quantizers: int = 32, use_conv_shortcut: bool = False, vector_quantization_hidden_dimension: int = 256, num_semantic_quantizers: int = 1, upsample_groups: int = 512, num_hidden_layers: int = 8, intermediate_size: int = 2048, num_attention_heads: int = 8, num_key_value_heads: int = 8, head_dim: int | None = None, hidden_act: str = 'gelu', max_position_embeddings: int = 8000, initializer_range: float = 0.02, norm_eps: float = 1e-05, use_cache: bool = False, use_streaming: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, sliding_window: int = 250, attention_dropout: float | int = 0.0, layer_scale_initial_scale: float = 0.01, attention_bias: bool = False, tie_word_embeddings: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/configuration_mimi.py#L249)

Mimiのエンコーダー部分（SEANetエンコーダー、エンコーダートランスフォーマー、ダウンサンプリング）の設定です。[MimiConfig](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiConfig)とすべてのフィールドを共有しているため（引数についてはそのドキュメントを参照してください）、完全なMimiチェックポイントから直接読み込むことができます。

## MimiDecoderConfig[[transformers.MimiDecoderConfig]]

#### transformers.MimiDecoderConfig[[transformers.MimiDecoderConfig]]

```python
transformers.MimiDecoderConfig(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, sampling_rate: int = 24000, audio_channels: int = 1, hidden_size: int = 512, num_filters: int = 64, num_residual_layers: int = 1, upsampling_ratios: list[int] | None = None, kernel_size: int = 7, last_kernel_size: int = 3, residual_kernel_size: int = 3, dilation_growth_rate: int = 2, use_causal_conv: bool = True, pad_mode: str = 'constant', compress: int = 2, trim_right_ratio: float = 1.0, codebook_size: int = 2048, codebook_dim: int = 256, num_quantizers: int = 32, use_conv_shortcut: bool = False, vector_quantization_hidden_dimension: int = 256, num_semantic_quantizers: int = 1, upsample_groups: int = 512, num_hidden_layers: int = 8, intermediate_size: int = 2048, num_attention_heads: int = 8, num_key_value_heads: int = 8, head_dim: int | None = None, hidden_act: str = 'gelu', max_position_embeddings: int = 8000, initializer_range: float = 0.02, norm_eps: float = 1e-05, use_cache: bool = False, use_streaming: bool = False, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, sliding_window: int = 250, attention_dropout: float | int = 0.0, layer_scale_initial_scale: float = 0.01, attention_bias: bool = False, tie_word_embeddings: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/configuration_mimi.py#L277)

Mimiのデコーダー部分（アップサンプリング、デコーダートランスフォーマー、SEANetデコーダー）の設定です。[MimiConfig](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiConfig)とすべてのフィールドを共有しているため（引数についてはそのドキュメントを参照してください）、完全なMimiチェックポイントから直接読み込むことができます。

## MimiModel[[transformers.MimiModel]]

#### transformers.MimiModel[[transformers.MimiModel]]

```python
transformers.MimiModel(config: MimiConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1346)

**パラメータ:**

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

Mimi ニューラルオーディオコーデックモデル。

このモデルは [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のドキュメントを参照してください。

#### decode[[transformers.MimiModel.decode]]

```python
decode(audio_codes: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, decoder_past_key_values: transformers.cache_utils.Cache | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1430)

指定されたフレームを出力音声波形にデコードします。コードは[MimiDecoderModel.forward()](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiDecoderModel.forward)の潜在変数にデクォンタイズされます。

#### encode[[transformers.MimiModel.encode]]

```python
encode(input_values: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, num_quantizers: float | None = None, encoder_past_key_values: transformers.cache_utils.Cache | None = None, padding_cache: transformers.models.mimi.modeling_mimi.MimiConv1dPaddingCache | None = None, use_streaming: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1394)

入力オーディオ波形を、`(batch_size, num_quantizers, frames)` の形状の離散コードにエンコードします。[MimiEncoderModel.forward()](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiEncoderModel.forward) の潜在変数を量子化したものです。

#### forward[[transformers.MimiModel.forward]]

```python
forward(input_values: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, num_quantizers: int | None = None, audio_codes: typing.Optional[torch.Tensor] = None, encoder_past_key_values: transformers.cache_utils.Cache | None = None, decoder_past_key_values: transformers.cache_utils.Cache | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1453)

**パラメータ:**

input_values (`torch.Tensor`、形状 `(batch_size, channels, sequence_length)`、*任意*) : Float に変換された生のオーディオ入力。

padding_mask (`torch.Tensor`、形状 `(batch_size, sequence_length)`、*任意*) : パディングにより無視されるべき入力を示します。要素は、*マスクされていない*場合は 1、*マスクされている*場合は 0 です。

num_quantizers (`int`, *optional*) : 使用する量子化器（つまりコードブック）の数。デフォルトでは、すべての量子化器が使用されます。

audio_codes (`torch.LongTensor`、形状 `(batch_size, num_quantizers, codes_length)`、*任意*) : `model.encode` を使用して計算された離散コードの埋め込み。

encoder_past_key_values (`Cache`, *optional*) : エンコーダ Transformer の逐次デコードを高速化するために使用できる、事前計算された隠れ状態（自己注意ブロック内のキーとバリュー）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返す `past_key_values` で構成されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合、ユーザーは任意で、このモデルに過去のキーバリュー状態が与えられていない最後の `audio_values` または `audio_codes のみを入力できます。

decoder_past_key_values (`Cache`, *optional*) : 自己注意ブロック内のキーと値の事前計算済み隠れ状態です。デコーダー Transformer の逐次デコードを高速化するために使用できます。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返す `past_key_values` で構成されます。モデルは、入力として与えられたのと同じキャッシュ形式を出力します。`past_key_values` を使用する場合、ユーザーは任意で、このモデルに過去のキー値状態が与えられていない最後の `audio_values` または `audio_codes のみを入力できます。

**戻り値:** `MimiOutput` または `tuple(torch.Tensor)`

`MimiOutput`または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。[MimiConfig](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiConfig)および入力に応じて、さまざまな要素で構成されます。

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

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

- **audio_codes** (`torch.LongTensor`、形状 `(batch_size, num_quantizers, codes_length)`、*任意*) -- `model.encode` を使用して計算された離散コード埋め込み。
- **audio_values** (`torch.Tensor`、形状 `(batch_size, sequence_length)`、*任意*) -- Mimi のデコーダー部分を使用して取得したデコード済みオーディオ値。
- **encoder_past_key_values** (`Cache`、*任意*) -- エンコーダのトランスフォーマーの逐次デコードを高速化するために使用できる、事前計算された隠れ状態（自己注意ブロックのキーとバリュー）です。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返した `past_key_values` で構成されます。

  モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

  `past_key_values`を使用する場合、ユーザーは任意で、最後の`audio_values`または`audio_codes（このモデルに過去のキーバリュー状態が与えられていないもの）のみを入力できます。
- **decoder_past_key_values** (`Cache`、*任意*) -- 自己注意ブロックのキーとバリューの事前計算済み隠れ状態です。デコーダトランスフォーマーの逐次デコードを高速化するために使用できます。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返す `past_key_values` で構成されます。

  モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

  `past_key_values`を使用する場合、ユーザーは任意で、最後の`audio_values`または`audio_codes（このモデルに過去のキーバリュー状態が与えられていないもの）のみを入力できます。

例:

```python
>>> from datasets import load_dataset
>>> from transformers import AutoFeatureExtractor, MimiModel

>>> dataset = load_dataset("hf-internal-testing/ashraq-esc50-1-dog-example")
>>> audio_sample = dataset["train"]["audio"][0]["array"]

>>> model_id = "kyutai/mimi"
>>> model = MimiModel.from_pretrained(model_id)
>>> feature_extractor = AutoFeatureExtractor.from_pretrained(model_id)

>>> inputs = feature_extractor(raw_audio=audio_sample, return_tensors="pt")

>>> outputs = model(**inputs)
>>> audio_codes = outputs.audio_codes
>>> audio_values = outputs.audio_values
```

## MimiEncoderModel[[transformers.MimiEncoderModel]]

#### transformers.MimiEncoderModel[[transformers.MimiEncoderModel]]

```python
transformers.MimiEncoderModel(config: MimiEncoderConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1147)

**パラメータ:**

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

Mimi のエンコーダー部分: SEANet エンコーダー、エンコーダー Transformer、およびダウンサンプリング。オーディオから連続的な潜在変数への変換を示しています。

このモデルは [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.MimiEncoderModel.forward]]

```python
forward(input_values: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, padding_cache: transformers.models.mimi.modeling_mimi.MimiConv1dPaddingCache | None = None, use_streaming: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1208)

**パラメータ:**

input_values (`torch.Tensor`、形状 `(batch_size, channels, sequence_length)`) : 入力音声波形の浮動小数点値。

padding_mask (`torch.Tensor`、形状 `(batch_size, channels, sequence_length)`、*任意*) : パディングにより無視されるべき入力を示します。要素は、*マスクされていない*場合は 1、*マスクされている*場合は 0 です。

past_key_values (`Cache`, *optional*) : エンコーダのtransformerの事前計算済みhidden-states（self-attentionブロック内のkeyとvalue）。ストリーミングエンコードの高速化に使用されます。

padding_cache (`MimiConv1dPaddingCache`, *任意*) : ストリーミングエンコーディングに使用される、因果的畳み込みのパディングキャッシュです。

use_streaming (`bool`, *任意*) : ストリーミングモードでエンコードし、次の呼び出しに渡すキャッシュを返すかどうか。

入力オーディオ波形を、`(batch_size, latent_dim, frames)` の形状を持つ連続的な潜在変数にエンコードします。 --

**戻り値:** `MimiEncoderModelOutput` または `tuple(torch.Tensor)`

A `MimiEncoderModelOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([MimiConfig](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiConfig)) and inputs.

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

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

- **latents** (`torch.Tensor`、形状 `(batch_size, latent_dim, frames)`) -- 音声の連続的な潜在変数です。`config.frame_size` 個の音声サンプルごとに1フレームです。
- **past_key_values** (`Cache`、*任意*) -- ストリーミング時に返される、エンコーダのtransformerにおける自己注意ブロックの事前計算済み隠れ状態（キーとバリュー）。
- **padding_cache** (`MimiConv1dPaddingCache`、*任意*) -- MimiConv1d の因果的畳み込みにおいて、キャッシュパディングによるストリーミング処理をサポートするためのパディングキャッシュ。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` の場合に返されます) -- エンコーダの Transformer の各層の出力およびその入力の隠れ状態。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` の場合のみ返されます) -- 各エンコーダ Transformer レイヤーの注意重み。

## MimiDecoderModel[[transformers.MimiDecoderModel]]

#### transformers.MimiDecoderModel[[transformers.MimiDecoderModel]]

```python
transformers.MimiDecoderModel(config: MimiDecoderConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1279)

**パラメータ:**

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

Mimiのデコーダー部分: 連続的な潜在変数から音声への変換を行うアップサンプリング、デコーダーtransformer、およびSEANetデコーダー。

このモデルは [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.MimiDecoderModel.forward]]

```python
forward(latents: Tensor, padding_mask: typing.Optional[torch.Tensor] = None, past_key_values: transformers.cache_utils.Cache | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1306)

**パラメータ:**

latents (`torch.Tensor`、形状 `(batch_size, hidden_size, frames)`) : [MimiModel.decode()](/docs/transformers/main/ja/model_doc/mimi#transformers.MimiModel.decode) によって計算された、デコード対象の連続的な潜在変数。

padding_mask (`torch.Tensor`、形状 `(batch_size, channels, sequence_length)`、*任意*) : パディングにより無視されるべき入力を示します。要素は、*マスクされていない*場合は 1、*マスクされている*場合は 0 です。

past_key_values (`Cache`, *optional*) : デコーダのTransformerにおける自己注意ブロックの事前計算済み隠れ状態（キーとバリュー）。ストリーミングデコーディングを高速化するために使用されます。

…

input。その場合、末尾の余分なステップは切り捨てることができます。--

**戻り値:** `MimiDecoderOutput` または `tuple(torch.Tensor)`

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

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

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

- **audio_values** (`torch.Tensor`、形状 `(batch_size, audio_channels, num_samples)`、*任意*) -- Mimi のデコーダー部分を使用して取得したデコード済みオーディオ値。
- **decoder_past_key_values** (`Cache`、*任意*) -- 自己注意ブロックのキーとバリューの事前計算済み隠れ状態です。デコーダトランスフォーマーの逐次デコードを高速化するために使用できます。通常、`use_cache=True` または `config.use_cache=True` の場合、モデルがデコードの以前の段階で返す `past_key_values` で構成されます。

  モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

  `past_key_values`を使用する場合、ユーザーは任意で、最後の`audio_values`または`audio_codes（このモデルに過去のキーバリュー状態が与えられていないもの）のみを入力できます。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` の場合のみ返されます) -- デコーダの Transformer の各層の出力およびその入力の隠れ状態です。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` の場合のみ返されます) -- 各デコーダ Transformer レイヤーの注意重み。

