# Mimi

[Mimi](https://huggingface.co/papers/2410.00037)는 사전 학습 및 양자화 변형이 포함된 신경 오디오 코덱 모델로, 효율적인 음성 표현 및 압축을 위해 설계되었습니다. 이 모델은 1.1 kbps의 비트레이트와 12 Hz의 프레임 레이트로 동작하며, 16개의 코드북을 가진 잔차 벡터 양자화기(RVQ)와 결합된 합성곱 인코더-디코더 아키텍처를 사용합니다. Mimi는 언어적 풍부함과 높은 충실도의 재현을 균형 있게 맞추기 위해 의미론적(semantic) 및 음향(acoustic)의 이중 토크 스트림을 출력합니다. 주요 기능에는 저지연 사용에 적합한 인과 스트리밍 인코더, 유연한 다운스트림 생성을 위한 이중 경로 토큰화, 그리고 Moshi와 같은 대규모 음성 모델과의 통합 준비가 포함됩니다.

원본 Mimi 체크포인트는 [Kyutai](https://huggingface.co/kyutai/models?search=mimi) 조직에서 찾을 수 있습니다.

>[!TIP]
> 이 모델은 [ylacombe](https://huggingface.co/ylacombe)에 의해 기여되었습니다.
>
> Mimi 적용에 대한 추가 예제는 오른쪽 사이드바의 Mimi 모델에서 확인하세요.

아래 예제는 [AutoModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/configuration_mimi.py#L28)

**매개변수:**

sampling_rate (`int`, *선택 사항*, 기본값 `24000`) : 오디오 파일을 디지털화할 때 사용할 샘플링 레이트를 헤르츠(Hz) 단위로 나타낸 값입니다.

audio_channels (`int`, *선택 사항*, 기본값 1) : 오디오 데이터의 채널 수. 모노의 경우 1, 스테레오의 경우 2입니다.

hidden_size (`int`, *선택 사항*, 기본값 `512`) : 숨겨진 표현의 차원.

num_filters (`int`, *선택 사항*, 기본값 64) : 첫 번째 `MimiConv1d` 다운샘플링 레이어의 컨볼루션 커널 수.

num_residual_layers (`int`, *선택 사항*, 기본값 1) : 잔차 레이어의 수.

upsampling_ratios (`Sequence[int]`, *선택 사항*) : 커널 크기 및 스트라이드 비율입니다. 인코더는 업샘플링 비율 대신 다운샘플링 비율을 사용하므로, 여기에서 지정된 비율과 일치해야 하는 디코더 순서와 반대 순서로 비율을 사용합니다. 지정되지 않으면 기본값으로 `[8, 6, 5, 4]`가 사용됩니다.

kernel_size (`int`, *선택 사항*, 기본값 `7`) : 컨볼루션 커널의 크기입니다.

last_kernel_size (`int`, *선택 사항*, 기본값 3) : 마지막 컨볼루션 레이어의 커널 크기.

residual_kernel_size (`int`, *선택 사항*, 기본값 3) : 잔차 레이어의 커널 크기입니다.

dilation_growth_rate (`int`, *선택 사항*, 기본값 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`, *선택 사항*, 기본값 `2048`) : 모델이 사용하는 병렬 코드북의 수입니다.

codebook_dim (`int`, *선택 사항*, 기본값 `256`) : 각 코드북 임베딩 벡터의 차원.

num_quantizers (`int`, *선택 사항*, 기본값 32) : 양자화기의 채널 수 또는 코드북 수.

use_conv_shortcut (`bool`, *선택 사항*, 기본값 `False`) : `MimiResnetBlock` 블록의 'skip' 연결에 합성곱(convolutional) 레이어를 사용할지 여부입니다. False인 경우 항등 함수(identity function)가 사용되어 일반적인 잔차(residual) 연결이 됩니다.

vector_quantization_hidden_dimension (`int`, *선택 사항*, 기본값 256) : 잔차 벡터 양자화 공간의 중간 표현 차원입니다.

num_semantic_quantizers (`int`, *선택 사항*, 기본값 1) : semantic quantizer의 semantic quantizer 채널 또는 codebook 수. `num_quantizers`보다 작아야 합니다.

upsample_groups (`int`, *선택 사항*, 기본값 512) : `frame_rate!=encodec_frame_rate`인 경우, 한 레이트에서 다른 레이트로 전환하기 위한 업샘플링 연산에 사용되는 그룹 수를 나타냅니다.

num_hidden_layers (`int`, *선택 사항*, 기본값 `8`) : Transformer 디코더의 숨겨진 레이어 수.

intermediate_size (`int`, *선택 사항*, 기본값 `2048`) : MLP 표현의 차원.

num_attention_heads (`int`, *선택 사항*, 기본값 `8`) : Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.

num_key_value_heads (`int`, *선택 사항*, 기본값 `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 헤드는 해당 그룹 내 모든 원래 헤드를 meanpooling하여 구성해야 합니다. 자세한 내용은 [이 논문](https://huggingface.co/papers/2305.13245)을 참고하세요. 지정되지 않으면 `num_attention_heads`가 기본값으로 사용됩니다.

head_dim (`int`, *선택 사항*) : 어텐션 헤드 차원입니다. None인 경우, 기본값은 hidden_size // num_attention_heads입니다.

hidden_act (`str`, *선택 사항*, 기본값 `gelu`) : 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열). 예를 들어, `"gelu"`, `"relu"`, `"silu"` 등이 있습니다.

max_position_embeddings (`int`, *선택 사항*, 기본값 `8000`) : 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.

initializer_range (`float`, *선택 사항*, 기본값 `0.02`) : 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.

norm_eps (`float`, *선택 사항*, 기본값 `1e-05`) : layer normalization 레이어에서 사용되는 epsilon 값입니다.

use_cache (`bool`, *선택 사항*, 기본값 `False`) : 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음). `config.is_decoder=True`인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다.

use_streaming (`bool`, *선택 사항*, 기본값 `False`) : 스트리밍 모드를 사용할지 여부입니다. `True`인 경우, 모델의 encode 메서드는 이후 encode 메서드 호출에서 사용할 수 있는 패딩 캐시를 반환합니다.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *선택*) : RoPE 임베딩의 구성 매개변수를 포함하는 사전입니다. 사전에는 `rope_theta` 값이 포함되어야 하며, 더 긴 `max_position_embeddings`로 RoPE를 사용하려는 경우 스케일링에 사용되는 매개변수도 선택적으로 포함할 수 있습니다.

sliding_window (`int`, *선택 사항*, 기본값 `250`) : Sliding window attention의 윈도우 크기입니다. `None`인 경우 sliding window가 적용되지 않습니다.

attention_dropout (`Union[float, int]`, *선택 사항*, 기본값 `0.0`) : attention 확률에 적용할 dropout 비율입니다.

layer_scale_initial_scale (`float`, *선택 사항*, 기본값 `0.01`) : self-attention 레이어에서 사용할 스케일입니다. base 모델은 0.1, large 모델은 1e-6을 사용합니다. 0으로 설정하면 layer scale을 비활성화합니다.

attention_bias (`bool`, *선택 사항*, 기본값 `False`) : self-attention에서 query, key, value 및 output projection layer에 bias를 사용할지 여부.

tie_word_embeddings (`bool`, *선택 사항*, 기본값 `True`) : 모델의 `tied_weights_keys` 매핑에 따라 가중치 임베딩을 묶을지 여부.

이것은 MimiModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Mimi 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 [kyutai/mimi](https://huggingface.co/kyutai/mimi)와 유사한 구성이 생성됩니다.

Configuration 객체는 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/main_classes/configuration#transformers.PreTrainedConfig)를 상속하며, 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 [PreTrainedConfig](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/configuration_mimi.py#L249)

Mimi의 인코더 부분(SEANet 인코더, 인코더 트랜스포머 및 다운샘플링)의 구성입니다. [MimiConfig](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/configuration_mimi.py#L277)

Mimi의 디코더 부분(업샘플링, 디코더 트랜스포머 및 SEANet 디코더)의 구성입니다. [MimiConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiConfig)의 모든 필드를 공유하므로(인수에 대한 자세한 내용은 해당 문서 참조) 전체 Mimi 체크포인트에서 직접 로드할 수 있습니다.

## MimiModel[[transformers.MimiModel]]

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

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

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1346)

**매개변수:**

config ([MimiConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하면 모델과 관련된 가중치가 로드되지 않고 구성만 로드됩니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Mimi 신경 오디오 코덱 모델입니다.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1430)

주어진 프레임을 출력 오디오 웨이브폼으로 디코딩합니다. 코드는 [MimiDecoderModel.forward()](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiDecoderModel.forward)의 latents로 역양자화됩니다.

#### 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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1394)

입력 오디오 웨이브폼을 `(batch_size, num_quantizers, frames)` 모양의 이산 코드로 인코딩합니다: [MimiEncoderModel.forward()](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1453)

**매개변수:**

input_values (`torch.Tensor`, shape `(batch_size, channels, sequence_length)`, *선택 사항*) : Float로 변환된 원시 오디오 입력.

padding_mask (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) : 패딩으로 인해 무시할 입력을 나타내며, 요소는 *마스크되지 않음*인 경우 1, *마스크됨*인 경우 0입니다.

num_quantizers (`int`, *선택 사항*) : 사용할 양자화기(즉, 코드북)의 수입니다. 기본적으로 모든 양자화기가 사용됩니다.

audio_codes (`torch.LongTensor`, shape `(batch_size, num_quantizers, codes_length)`, *선택 사항*) : `model.encode`를 사용하여 계산된 이산 코드 임베딩.

encoder_past_key_values (`Cache`, *선택 사항*) : 인코더 transformer의 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다. 이는 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때, 이전 디코딩 단계에서 모델이 반환한 `past_key_values`로 구성됩니다. 모델은 입력으로 제공된 것과 동일한 cache 형식을 출력합니다. `past_key_values`를 사용하는 경우, 사용자는 선택적으로 마지막 `audio_values` 또는 `audio_codes(이 모델에 past key value states가 제공되지 않은 것)만 입력할 수 있습니다.

decoder_past_key_values (`Cache`, *선택 사항*) : 시퀀셜 디코딩을 가속화하기 위해 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다. 이는 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때, 이전 디코딩 단계에서 모델이 반환한 `past_key_values`로 구성됩니다. 모델은 입력으로 제공된 것과 동일한 cache 형식을 출력합니다. `past_key_values`를 사용하는 경우, 사용자는 선택적으로 마지막 `audio_values` 또는 `audio_codes(이 모델에 past key value states가 제공되지 않은 것)만 입력할 수 있습니다.

**반환값:** `MimiOutput` 또는 `tuple(torch.Tensor)`

`MimiOutput` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우)로, [MimiConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiConfig) 및 입력에 따라 다양한 요소를 포함합니다.

[MimiModel](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **audio_codes** (`torch.LongTensor`, shape `(batch_size, num_quantizers, codes_length)`, *선택 사항*) -- `model.encode`를 사용하여 계산된 이산 코드 임베딩.
- **audio_values** (`torch.Tensor`, shape `(batch_size, sequence_length)`, *선택 사항*) -- Mimi의 디코더 부분을 사용하여 얻은 디코딩된 오디오 값입니다.
- **encoder_past_key_values** (`Cache`, *선택 사항*) -- 인코더 transformer의 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다. 이는 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때, 이전 디코딩 단계에서 모델이 반환한 `past_key_values`로 구성됩니다.

  모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.

  `past_key_values`를 사용하는 경우, 사용자는 선택적으로 마지막 `audio_values` 또는 `audio_codes (이 모델에 과거 키 값 상태가 제공되지 않은 것)만 입력할 수 있습니다.
- **decoder_past_key_values** (`Cache`, *선택 사항*) -- 시퀀셜 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다. 이는 일반적으로 `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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1147)

**매개변수:**

config ([MimiEncoderConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiEncoderConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Mimi의 인코더 부분: 오디오에서 연속적인 잠재 변수(continuous latents)로 변환하는 SEANet 인코더, 인코더 트랜스포머 및 다운샘플링.

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1208)

**매개변수:**

input_values (`torch.Tensor`, shape `(batch_size, channels, sequence_length)`) : 입력 오디오 웨이브폼의 부동 소수점 값.

padding_mask (`torch.Tensor`, shape `(batch_size, channels, sequence_length)`, *선택 사항*) : 패딩으로 인해 무시할 입력을 나타내며, 요소는 *마스크되지 않음*인 경우 1, *마스크됨*인 경우 0입니다.

past_key_values (`Cache`, *선택 사항*) : 인코더 트랜스포머의 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)로, 스트리밍 인코딩을 가속하는 데 사용됩니다.

padding_cache (`MimiConv1dPaddingCache`, *선택 사항*) : 스트리밍 인코딩에 사용되는 인과적 합성곱의 패딩 캐시입니다.

use_streaming (`bool`, *선택 사항*) : 스트리밍 모드로 인코딩할지 여부입니다. 다음 호출에 전달할 캐시를 반환합니다.

입력 오디오 웨이브폼을 `(batch_size, latent_dim, frames)` 모양의 연속 잠재 변수로 인코딩합니다. --

**반환값:** `MimiEncoderModelOutput` 또는 `tuple(torch.Tensor)`

구성([MimiConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiConfig))과 입력에 따라 다양한 요소를 포함하는 `MimiEncoderModelOutput` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[MimiEncoderModel](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiEncoderModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **latents** (`torch.Tensor`, shape `(batch_size, latent_dim, frames)`) -- 오디오의 연속형 latents로, `config.frame_size`개의 오디오 샘플마다 1프레임씩 구성됩니다.
- **past_key_values** (`Cache`, *선택 사항*) -- 스트리밍 시 반환되는 인코더 transformer의 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value).
- **padding_cache** (`MimiConv1dPaddingCache`, *선택 사항*) -- 캐시 패딩을 통한 스트리밍을 지원하기 위해 MimiConv1d 인과적 합성곱에 사용되는 패딩 캐시입니다.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`일 때 반환됨) -- 각 레이어의 출력과 그 입력을 포함한 인코더 transformer의 hidden states입니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`일 때 반환됨) -- 각 인코더 transformer 레이어의 어텐션 가중치.

## MimiDecoderModel[[transformers.MimiDecoderModel]]

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

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

[소스](https://github.com/huggingface/transformers/blob/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1279)

**매개변수:**

config ([MimiDecoderConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiDecoderConfig)) : 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 [from_pretrained()](/docs/transformers/v5.23.0/ko/main_classes/model#transformers.PreTrainedModel.from_pretrained) 메서드를 확인하세요.

Mimi의 디코더 부분: 연속된 잠재 변수(latents)를 오디오로 변환하기 위한 업샘플링, 디코더 트랜스포머, SEANet 디코더

이 모델은 [PreTrainedModel](/docs/transformers/v5.23.0/ko/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/v5.23.0/src/transformers/models/mimi/modeling_mimi.py#L1306)

**매개변수:**

latents (`torch.Tensor`, shape `(batch_size, hidden_size, frames)`) : [MimiModel.decode()](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiModel.decode)로 계산된 디코딩할 연속형 latents입니다.

padding_mask (`torch.Tensor`, shape `(batch_size, channels, sequence_length)`, *선택 사항*) : 패딩으로 인해 무시할 입력을 나타내며, 요소는 *마스크되지 않음*인 경우 1, *마스크됨*인 경우 0입니다.

past_key_values (`Cache`, *선택 사항*) : 스트리밍 디코딩을 가속화하기 위해 디코더 트랜스포머의 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다.

주어진 프레임을 출력 오디오 웨이브폼으로 디코딩합니다. 출력이 --보다 약간 클 수 있다는 점에 유의하세요.

input. 이 경우, 마지막의 추가 단계는 잘라낼 수 있습니다. --

**반환값:** `MimiDecoderOutput` 또는 `tuple(torch.Tensor)`

구성([MimiConfig](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiConfig))과 입력에 따라 다양한 요소를 포함하는 `MimiDecoderOutput` 또는 `torch.Tensor`의 튜플(`return_dict=False`가 전달되거나 `config.return_dict=False`인 경우).

[MimiDecoderModel](/docs/transformers/v5.23.0/ko/model_doc/mimi#transformers.MimiDecoderModel)의 forward 메서드는 `__call__` 특수 메서드를 오버라이드합니다.

`Module` 인스턴스는 전처리 및 후처리 단계를 실행하는 것을 처리하지만, 이 함수는 해당 단계를 조용히 무시하므로, 순전파(forward pass) 레시피를 이 함수 내에서 정의해야 하더라도 이후에는 이 함수 대신 `Module` 인스턴스를 호출해야 합니다.

- **audio_values** (`torch.Tensor`, shape `(batch_size, audio_channels, num_samples)`, *선택 사항*) -- Mimi의 디코더 부분을 사용하여 얻은 디코딩된 오디오 값입니다.
- **decoder_past_key_values** (`Cache`, *선택 사항*) -- 시퀀셜 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록의 key와 value)입니다. 이는 일반적으로 `use_cache=True` 또는 `config.use_cache=True`일 때, 디코딩의 이전 단계에서 모델이 반환한 `past_key_values`로 구성됩니다.

  모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.

  `past_key_values`를 사용하는 경우, 사용자는 선택적으로 마지막 `audio_values` 또는 `audio_codes (이 모델에 과거 키 값 상태가 제공되지 않은 것)만 입력할 수 있습니다.
- **hidden_states** (`tuple(torch.Tensor)`, *선택 사항*, `output_hidden_states=True`일 때 반환됨) -- 각 레이어의 출력과 그 입력을 포함한 decoder transformer의 hidden states입니다.
- **attentions** (`tuple(torch.Tensor)`, *선택 사항*, `output_attentions=True`일 때 반환됨) -- 각 decoder transformer 레이어의 attention 가중치.

