# Mimi

[Mimi](https://huggingface.co/papers/2410.00037) — это нейросетевая модель аудиокодека с предобученными и квантованными вариантами, предназначенная для эффективного представления и сжатия речи. Модель работает на скорости 1,1 кбит/с с частотой кадров 12 Гц и использует архитектуру свёрточного кодировщика-декодировщика в сочетании с остаточным векторным квантовщиком из 16 книг кодов. Mimi формирует два потока токенов — семантический и акустический, — чтобы сбалансировать лингвистическую насыщенность и высокое качество восстановления. Ключевые особенности включают каузальный потоковый кодировщик для работы с низкой задержкой, двухпутевую токенизацию для гибкой генерации на нижестоящих этапах и готовность к интеграции с крупными речевыми моделями, такими как Moshi.

Оригинальные контрольные точки Mimi можно найти в организации [Kyutai](https://huggingface.co/kyutai/models?search=mimi).

>[!TIP]
> Эта модель была предоставлена пользователем [ylacombe](https://huggingface.co/ylacombe).
>
> Щёлкните по моделям Mimi в боковой панели справа, чтобы увидеть больше примеров применения Mimi.

Приведённый ниже пример демонстрирует, как кодировать и декодировать аудио с помощью класса [AutoModel](/docs/transformers/main/ru/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`) : Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц).

audio_channels (`int`, *optional*, по умолчанию 1) : Количество каналов в аудиоданных. 1 для моно или 2 для стерео.

hidden_size (`int`, *необязательный*, по умолчанию `512`) : Размерность скрытых представлений.

num_filters (`int`, *optional*, по умолчанию 64) : Количество свёрточных ядер первого слоя понижающей дискретизации `MimiConv1d`.

num_residual_layers (`int`,  *необязательный*, по умолчанию 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) : Насколько увеличивать дилатацию на каждом слое.

use_causal_conv (`bool`, *необязательный*, по умолчанию `True`) : Использовать ли полностью каузальную свёртку.

pad_mode (`str`, *необязательный*, по умолчанию `"constant"`) : Режим дополнения для свёрток.

compress (`int`, *optional*, по умолчанию 2) : Сокращённая размерность в остаточных ветвях.

trim_right_ratio (`float`, *optional*, по умолчанию 1.0) : Коэффициент обрезки справа для транспонированной свёртки при настройке `use_causal_conv = True`. Если значение равно 1.0, это означает, что вся обрезка выполняется справа.

codebook_size (`int`, *необязательный*, по умолчанию `2048`) : Количество параллельных кодовых книг, используемых моделью.

codebook_dim (`int`, *optional*, по умолчанию `256`) : Размерность каждого вектора встраивания кодовой книги.

num_quantizers (`int`, *optional*, по умолчанию 32) : Количество каналов квантизатора, или кодовых книг, в квантизаторе.

use_conv_shortcut (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли свёрточный слой в качестве соединения 'skip' в блоке `MimiResnetBlock`. Если 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`, указывает количество групп, используемых в операции апсемплинга для перехода от одной частоты к другой.

num_hidden_layers (`int`, *необязательный*, по умолчанию `8`) : Количество скрытых слоев в декодере Transformer.

intermediate_size (`int`, *необязательный*, по умолчанию `2048`) : Размерность представлений MLP.

num_attention_heads (`int`, *необязательный*, по умолчанию `8`) : Количество головок внимания для каждого слоя внимания в декодере Transformer.

num_key_value_heads (`int`, *optional*, по умолчанию `8`) : Это количество ключевых и value-голов, которое следует использовать для реализации Grouped Query Attention. Если `num_key_value_heads=num_attention_heads`, модель будет использовать Multi Head Attention (MHA), если `num_key_value_heads=1` — Multi Query Attention (MQA), в противном случае используется GQA. При конвертации multi-head checkpoint в GQA checkpoint каждая группа ключевых и value-голов должна быть построена путем усреднения (meanpooling) всех исходных голов в этой группе. Подробнее см. в [этой статье](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`, *необязательный*, по умолчанию `8000`) : Максимальная длина последовательности, с которой может использоваться эта модель.

initializer_range (`float`, *необязательный*, по умолчанию `0.02`) : Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.

norm_eps (`float`, *необязательный*, по умолчанию `1e-05`) : Значение epsilon, используемое слоями нормализации.

use_cache (`bool`, *необязательный*, по умолчанию `False`) : Следует ли модели возвращать последние значения внимания key/values (не используется во всех моделях). Актуально только при `config.is_decoder=True` или если модель является генеративной моделью только с декодером.

use_streaming (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли режим потоковой обработки. Если `True`, метод кодирования модели вернёт кэш заполнителей, который можно использовать в последующем вызове метода кодирования.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *optional*) : Словарь, содержащий параметры конфигурации для вложений RoPE. Словарь должен содержать значение для `rope_theta` и, при необходимости, параметры, используемые для масштабирования, если вы хотите использовать RoPE с более длинными `max_position_embeddings`.

sliding_window (`int`, *optional*, по умолчанию `250`) : Размер окна скользящего внимания. Если `None`, скользящее окно не применяется.

attention_dropout (`Union[float, int]`, *необязательный*, по умолчанию `0.0`) : Коэффициент dropout для вероятностей внимания.

layer_scale_initial_scale (`float`, *optional*, по умолчанию `0.01`) : Масштаб, используемый в слоях само-внимания. 0.1 для базовых моделей, 1e-6 для крупных. Установите 0, чтобы отключить масштабирование слоя.

attention_bias (`bool`, *необязательный*, по умолчанию `False`) : Использовать ли смещение (bias) в слоях проекции запроса, ключа, значения и вывода при само-внимании.

tie_word_embeddings (`bool`, *необязательный*, по умолчанию `True`) : Связывать ли веса эмбеддингов согласно отображению `tied_weights_keys` модели.

Это класс конфигурации для хранения настроек модели MimiModel. Он используется для создания экземпляра модели Mimi в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации [kyutai/mimi](https://huggingface.co/kyutai/mimi)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/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, трансформер энкодера и downsampling). Она разделяет все поля с [MimiConfig](/docs/transformers/main/ru/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/ru/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/ru/model_doc/mimi#transformers.MimiConfig)) : Класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель нейросетевого аудиокодера Mimi.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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/ru/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/ru/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)`, *необязательный*) : Указывает, какие входные данные следует игнорировать из-за выравнивания (padding), где элементы равны 1 для *не замаскированных* или 0 для *замаскированных*.

num_quantizers (`int`, *optional*) : Количество квантизаторов (т.е. кодовых книг) для использования. По умолчанию используются все квантизаторы.

audio_codes (`torch.LongTensor`  формы `(batch_size, num_quantizers, codes_length)`, *необязательный*) : Вложения дискретных кодов, вычисленные с помощью `model.encode`.

encoder_past_key_values (`Cache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать для ускорения последовательного декодирования трансформера-энкодера. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. Модель выводит тот же формат кэша, который был передан на вход. Если используются `past_key_values`, пользователь может по желанию передать только последние `audio_values` или `audio_codes (те, для которых не заданы их прошлые состояния ключей и значений для этой модели).

decoder_past_key_values (`Cache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать для ускорения последовательного декодирования декодерного трансформера. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. Модель будет выводить тот же формат кэша, который был передан на вход. Если используются `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/ru/model_doc/mimi#transformers.MimiConfig)) и входных данных.

Метод forward модели [MimiModel](/docs/transformers/main/ru/model_doc/mimi#transformers.MimiModel) переопределяет специальный метод `__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`, *необязательный*) -- Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать для ускорения последовательного декодирования трансформера-кодировщика. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`.

  Модель будет выводить тот же формат кэша, который был передан на вход.

  Если используются `past_key_values`, пользователь может по желанию передать только последние `audio_values` или `audio_codes (те, для которых не заданы состояния прошлых ключевых значений в этой модели).
- **decoder_past_key_values** (`Cache`, *необязательный*) -- Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать для ускорения последовательного декодирования декодерного трансформера. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`.

  Модель будет выводить тот же формат кэша, который был передан на вход.

  Если используются `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/ru/model_doc/mimi#transformers.MimiEncoderConfig)) : класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Кодировательная часть Mimi: кодировщик SEANet, трансформер-кодировщик и понижающая дискретизация, преобразующие аудио в непрерывные латенты.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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)`) : Значения типа Float входной аудиоволны.

padding_mask (`torch.Tensor` формы `(batch_size, channels, sequence_length)`, *необязательный*) : Указывает, какие входные данные следует игнорировать из-за выравнивания (padding), где элементы равны 1 для *не замаскированных* или 0 для *замаскированных*.

past_key_values (`Cache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания) трансформера-кодировщика, используемые для ускорения потокового кодирования.

padding_cache (`MimiConv1dPaddingCache`, *необязательный*) : Кэш отступов для причинных свёрток, используется для потокового кодирования.

use_streaming (`bool`, *необязательный*) : Флаг, указывающий, следует ли кодировать в потоковом режиме, возвращая кэши для передачи в следующий вызов.

Кодирует входную аудиоволну в непрерывные латенты формы `(batch_size, latent_dim, frames)`. --

**Возвращает:** `MimiEncoderModelOutput` или `tuple(torch.Tensor)`

Объект `MimiEncoderModelOutput` или кортеж `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MimiConfig](/docs/transformers/main/ru/model_doc/mimi#transformers.MimiConfig)) и входных данных.

Метод forward модели [MimiEncoderModel](/docs/transformers/main/ru/model_doc/mimi#transformers.MimiEncoderModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **latents** (`torch.Tensor` формы `(batch_size, latent_dim, frames)`) -- Непрерывные латенты аудио, один кадр на `config.frame_size` аудиовыборок.
- **past_key_values** (`Cache`, *необязательный*) -- Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания) трансформера-кодировщика, возвращаемые при потоковой обработке.
- **padding_cache** (`MimiConv1dPaddingCache`, *optional*) -- Кэш отступов для каузальных свёрток MimiConv1d, позволяющий поддерживать потоковую обработку с помощью отступов в кэше.
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при `output_hidden_states=True`) -- Скрытые состояния трансформера-кодировщика на выходе каждого слоя, включая его вход.
- **attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при `output_attentions=True`) -- Веса внимания каждого слоя трансформера-кодировщика.

## 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/ru/model_doc/mimi#transformers.MimiDecoderConfig)) : класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Декодерная часть Mimi: апсемплинг, декодер-трансформер и декодер SEANet, преобразующие непрерывные латенты в аудио.

Эта модель наследуется от [PreTrainedModel](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel). Общие методы, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка головок и т. д.), описаны в документации родительского класса.

Эта модель также является подклассом [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации 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/ru/model_doc/mimi#transformers.MimiModel.decode).

padding_mask (`torch.Tensor` формы `(batch_size, channels, sequence_length)`, *необязательный*) : Указывает, какие входные данные следует игнорировать из-за выравнивания (padding), где элементы равны 1 для *не замаскированных* или 0 для *замаскированных*.

past_key_values (`Cache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания) декодера-трансформера, используемые для ускорения потокового декодирования.

Декодирует указанные кадры в выходную аудиоволну. Обратите внимание, что выходной сигнал может быть немного больше, чем --

input. В этом случае любые дополнительные шаги в конце можно отбросить. --

**Возвращает:** `MimiDecoderOutput` или `tuple(torch.Tensor)`

Объект `MimiDecoderOutput` или кортеж из `torch.Tensor` (если передано `return_dict=False` или если `config.return_dict=False`), содержащий различные элементы в зависимости от конфигурации ([MimiConfig](/docs/transformers/main/ru/model_doc/mimi#transformers.MimiConfig)) и входных данных.

Метод forward модели [MimiDecoderModel](/docs/transformers/main/ru/model_doc/mimi#transformers.MimiDecoderModel) переопределяет специальный метод `__call__`.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр `Module`, а не эту функцию, поскольку первый выполняет шаги предварительной и постобработки, тогда как второй молча их игнорирует.

- **audio_values** (`torch.Tensor` формы `(batch_size, audio_channels, num_samples)`, *необязательный*) -- Декодированные значения аудио, полученные с помощью декодерной части Mimi.
- **decoder_past_key_values** (`Cache`, *необязательный*) -- Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания), которые можно использовать для ускорения последовательного декодирования декодерного трансформера. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`.

  Модель будет выводить тот же формат кэша, который был передан на вход.

  Если используются `past_key_values`, пользователь может по желанию передать только последние `audio_values` или `audio_codes (те, для которых не заданы состояния прошлых ключевых значений в этой модели).
- **hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при `output_hidden_states=True`) -- Скрытые состояния декодерного трансформера на выходе каждого слоя, включая его вход.
- **attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при `output_attentions=True`) -- Веса внимания каждого слоя декодера трансформера.

