# Mimi

[Mimi](https://huggingface.co/papers/2410.00037) é um modelo de codec de áudio neural com variantes pré-treinadas e quantizadas, projetado para representação e compressão eficientes de fala. O modelo opera a 1,1 kbps com uma taxa de quadro de 12 Hz e utiliza uma arquitetura de codificador-decodificador convolucional combinada com um quantizador vetorial residual de 16 livros de códigos. O Mimi gera fluxos duplos de tokens, ou seja, semânticos e acústicos, para equilibrar a riqueza linguística com a reconstrução de alta fidelidade. Os recursos principais incluem um codificador de streaming causal para uso de baixa latência, tokenização de caminho duplo para geração flexível em etapas posteriores e prontidão para integração com grandes modelos de fala, como o Moshi.

Você pode encontrar os checkpoints originais do Mimi na organização [Kyutai](https://huggingface.co/kyutai/models?search=mimi).

>[!TIP]
> Este modelo foi contribuído por [ylacombe](https://huggingface.co/ylacombe).
>
> Clique nos modelos Mimi na barra lateral à direita para ver mais exemplos de como aplicar o Mimi.

O exemplo abaixo demonstra como codificar e decodificar áudio com a classe [AutoModel](/docs/transformers/main/pt/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)
```

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

**Parâmetros:**

sampling_rate (`int`, *opcional*, padrão `24000`) : A taxa de amostragem na qual os arquivos de áudio devem ser digitalizados, expressa em hertz (Hz).

audio_channels (`int`, *opcional*, padrão 1) : Número de canais nos dados de áudio. 1 para mono ou 2 para estéreo.

hidden_size (`int`, *opcional*, padrão `512`) : Dimensão das representações ocultas.

num_filters (`int`, *opcional*, padrão 64) : Número de núcleos de convolução da primeira camada de downsampling `MimiConv1d`.

num_residual_layers (`int`,  *opcional*, padrão 1) : Número de camadas residuais.

upsampling_ratios (`Sequence[int]`, *opcional*) : Razões de tamanho e passo do kernel. O codificador usa razões de downsampling em vez de razões de upsampling, portanto, ele usará as razões na ordem inversa às especificadas aqui, que devem corresponder à ordem do decodificador. Se não especificado, o padrão será `[8, 6, 5, 4]`

kernel_size (`int`, *opcional*, padrão `7`) : O tamanho do kernel de convolução.

last_kernel_size (`int`, *opcional*, padrão 3) : Tamanho do kernel para a última camada de convolução.

residual_kernel_size (`int`, *opcional*, padrão 3) : Tamanho do kernel para as camadas residuais.

dilation_growth_rate (`int`, *opcional*, padrão 2) : Quanto aumentar a dilatação em cada camada.

use_causal_conv (`bool`, *opcional*, padrão `True`) : Se deve usar convolução totalmente causal.

pad_mode (`str`, *opcional*, padrão `"constant"`) : Modo de preenchimento para as convoluções.

compress (`int`, *opcional*, padrão 2) : Dimensionalidade reduzida nos ramos residuais.

trim_right_ratio (`float`, *opcional*, padrão 1.0) : Proporção para o recorte à direita da convolução transposta na configuração `use_causal_conv = True`. Se for igual a 1.0, significa que todo o recorte é feito à direita.

codebook_size (`int`, *opcional*, padrão `2048`) : O número de codebooks paralelos usados pelo modelo.

codebook_dim (`int`, *opcional*, padrão `256`) : Dimensionalidade de cada vetor de incorporação do livro de códigos.

num_quantizers (`int`, *opcional*, padrão 32) : Número de canais do quantizador, ou codebooks, no quantizador.

use_conv_shortcut (`bool`, *opcional*, padrão `False`) : Se deve usar uma camada convolucional como a conexão 'skip' no bloco `MimiResnetBlock`. Se False, uma função identidade será usada, resultando em uma conexão residual genérica.

vector_quantization_hidden_dimension (`int`, *opcional*, padrão 256) : Dimensão da representação intermediária no espaço de quantização vetorial residual.

num_semantic_quantizers (`int`, *opcional*, padrão 1) : Número de canais do quantizador semântico, ou codebooks, no quantizador semântico. Deve ser menor que `num_quantizers`.

upsample_groups (`int`, *opcional*, padrão 512) : Se `frame_rate!=encodec_frame_rate`, indica o número de grupos usados na operação de upsampling para passar de uma taxa para outra.

num_hidden_layers (`int`, *opcional*, padrão `8`) : Número de camadas ocultas no decodificador do Transformer.

intermediate_size (`int`, *opcional*, padrão `2048`) : Dimensão das representações do MLP.

num_attention_heads (`int`, *opcional*, padrão `8`) : Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer.

num_key_value_heads (`int`, *opcional*, padrão `8`) : Este é o número de cabeças de key_value que devem ser usadas para implementar Grouped Query Attention. Se `num_key_value_heads=num_attention_heads`, o modelo usará Multi Head Attention (MHA); se `num_key_value_heads=1`, o modelo usará Multi Query Attention (MQA); caso contrário, será usado GQA. Ao converter um checkpoint multi-head para um checkpoint GQA, cada cabeça de chave e valor do grupo deve ser construída pela média (meanpooling) de todas as cabeças originais dentro desse grupo. Para mais detalhes, consulte [este artigo](https://huggingface.co/papers/2305.13245). Se não for especificado, o valor padrão será `num_attention_heads`.

head_dim (`int`, *opcional*) : A dimensão da cabeça de atenção. Se for None, o valor padrão será hidden_size // num_attention_heads

hidden_act (`str`, *opcional*, padrão `gelu`) : A função de ativação não linear (função ou string) no decodificador. Por exemplo, `"gelu"`, `"relu"`, `"silu"`, etc.

max_position_embeddings (`int`, *opcional*, padrão `8000`) : O comprimento máximo de sequência com o qual este modelo pode ser usado.

initializer_range (`float`, *opcional*, padrão `0.02`) : O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.

norm_eps (`float`, *opcional*, padrão `1e-05`) : O epsilon usado pelas camadas de normalização de camada.

use_cache (`bool`, *opcional*, padrão `False`) : Indica se o modelo deve retornar as últimas atenções de chave/valor (não utilizado por todos os modelos). Relevante apenas se `config.is_decoder=True` ou quando o modelo for um modelo generativo somente de decodificador.

use_streaming (`bool`, *opcional*, padrão `False`) : Se deve usar o modo de streaming. Se `True`, o método de codificação do modelo retornará o cache de padding que pode ser usado em uma chamada subsequente ao método de codificação.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`, *opcional*) : Dicionário contendo os parâmetros de configuração para os embeddings RoPE. O dicionário deve conter um valor para `rope_theta` e, opcionalmente, parâmetros usados para escalonamento, caso você queira usar RoPE com `max_position_embeddings` maiores.

sliding_window (`int`, *opcional*, padrão `250`) : Tamanho da janela de atenção deslizante. Se `None`, nenhuma janela deslizante é aplicada.

attention_dropout (`Union[float, int]`, *opcional*, padrão `0.0`) : A taxa de dropout para as probabilidades de atenção.

layer_scale_initial_scale (`float`, *opcional*, padrão `0.01`) : Escala a ser usada nas camadas de autoatenção. 0.1 para base, 1e-6 para grande. Defina 0 para desativar a escala da camada.

attention_bias (`bool`, *opcional*, padrão `False`) : Se deve usar um viés nas camadas de projeção de query, key, value e output durante a autoatenção.

tie_word_embeddings (`bool`, *opcional*, padrão `True`) : Se deve vincular as embeddings de pesos de acordo com o mapeamento `tied_weights_keys` do modelo.

Esta é a classe de configuração para armazenar a configuração de um MimiModel. Ela é usada para instanciar um modelo Mimi de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do [kyutai/mimi](https://huggingface.co/kyutai/mimi)

Os objetos de configuração herdam de [PreTrainedConfig](/docs/transformers/main/pt/main_classes/configuration#transformers.PreTrainedConfig) e podem ser usados para controlar as saídas do modelo. Leia a documentação de [PreTrainedConfig](/docs/transformers/main/pt/main_classes/configuration#transformers.PreTrainedConfig) para mais informações.

Exemplo:

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

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

Configuração da metade codificadora do Mimi (codificador SEANet, codificador transformer e downsampling). Ele compartilha todos os campos com [MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig) (consulte sua documentação para os argumentos), portanto, pode ser carregado diretamente de um checkpoint completo do 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)
```

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

Configuração da metade decodificadora do Mimi (upsampling, transformer decodificador e decodificador SEANet). Ele compartilha todos os campos com [MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig) (consulte sua documentação para os argumentos), portanto, pode ser carregado diretamente de um checkpoint completo do Mimi.

## MimiModel[[transformers.MimiModel]]

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

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

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

**Parâmetros:**

config ([MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig)) : Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar os pesos do modelo.

O modelo de codec de áudio neural Mimi.

Este modelo herda de [PreTrainedModel](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel). Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.).

Este modelo também é uma subclasse de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso e comportamento gerais.

#### 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'>)
```

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

Decodifica os frames fornecidos em uma forma de onda de áudio de saída: os códigos são desquantizados nos latentes de [MimiDecoderModel.forward()](/docs/transformers/main/pt/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'>)
```

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

Codifica a forma de onda de áudio de entrada em códigos discretos de forma `(batch_size, num_quantizers, frames)`: os latentes de [MimiEncoderModel.forward()](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiEncoderModel.forward), quantizados.

#### 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'>)
```

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

**Parâmetros:**

input_values (`torch.Tensor` de forma `(batch_size, channels, sequence_length)`, *opcional*) : Entrada de áudio bruto convertida para Float.

padding_mask (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) : Indica quais entradas devem ser ignoradas devido ao preenchimento, em que os elementos são 1 para *não mascarado* ou 0 para *mascarado*.

num_quantizers (`int`, *opcional*) : Número de quantizadores (ou seja, codebooks) a serem usados. Por padrão, todos os quantizadores são usados.

audio_codes (`torch.LongTensor` de forma `(batch_size, num_quantizers, codes_length)`, *opcional*) : Embebidings de código discretos calculados usando `model.encode`.

encoder_past_key_values (`Cache`, *opcional*) : Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados para acelerar a decodificação sequencial do transformador codificador. Isso geralmente consiste nos `past_key_values` retornados pelo modelo em um estágio anterior de decodificação, quando `use_cache=True` ou `config.use_cache=True`. O modelo sairá no mesmo formato de cache que é fornecido como entrada. Se `past_key_values` forem usados, o usuário pode opcionalmente inserir apenas os últimos `audio_values` ou `audio_codes (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo).

decoder_past_key_values (`Cache`, *opcional*) : Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados para acelerar a decodificação sequencial do transformador decodificador. Isso geralmente consiste nos `past_key_values` retornados pelo modelo em uma etapa anterior de decodificação, quando `use_cache=True` ou `config.use_cache=True`. O modelo sairá no mesmo formato de cache que é fornecido como entrada. Se `past_key_values` forem usados, o usuário pode opcionalmente inserir apenas os últimos `audio_values` ou `audio_codes (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo).

**Retorna:** `MimiOutput` ou `tuple(torch.Tensor)`

Um `MimiOutput` ou uma tupla de `torch.Tensor` (se `return_dict=False` for passado ou quando `config.return_dict=False`) contendo vários elementos, dependendo da configuração ([MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig)) e das entradas.

O método forward do [MimiModel](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiModel) substitui o método especial `__call__`.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de `Module` em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

- **audio_codes** (`torch.LongTensor` de forma `(batch_size, num_quantizers, codes_length)`, *opcional*) -- Embebidings de código discretos calculados usando `model.encode`.
- **audio_values** (`torch.Tensor` de forma `(batch_size, sequence_length)`, *opcional*) -- Valores de áudio decodificados, obtidos usando a parte decodificadora do Mimi.
- **encoder_past_key_values** (`Cache`, *opcional*) -- Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados para acelerar a decodificação sequencial do transformador codificador. Isso geralmente consiste nos `past_key_values` retornados pelo modelo em uma etapa anterior de decodificação, quando `use_cache=True` ou `config.use_cache=True`.

  O modelo sairá no mesmo formato de cache que é fornecido como entrada.

  Se `past_key_values` forem usados, o usuário pode opcionalmente inserir apenas os últimos `audio_values` ou `audio_codes (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo).
- **decoder_past_key_values** (`Cache`, *opcional*) -- Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados para acelerar a decodificação sequencial do transformador decodificador. Isso geralmente consiste nos `past_key_values` retornados pelo modelo em uma etapa anterior de decodificação, quando `use_cache=True` ou `config.use_cache=True`.

  O modelo sairá no mesmo formato de cache que é fornecido como entrada.

  Se `past_key_values` forem usados, o usuário pode opcionalmente inserir apenas os últimos `audio_values` ou `audio_codes (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo).

Exemplos:

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

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

**Parâmetros:**

config ([MimiEncoderConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiEncoderConfig)) : Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar os pesos do modelo.

A metade codificadora do Mimi: codificador SEANet, transformador do codificador e redução de amostragem, do áudio para latentes contínuos.

Este modelo herda de [PreTrainedModel](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel). Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.).

Este modelo também é uma subclasse de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso e comportamento gerais.

#### 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'>)
```

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

**Parâmetros:**

input_values (`torch.Tensor` de forma `(batch_size, channels, sequence_length)`) : Valores em ponto flutuante da forma de onda de áudio de entrada.

padding_mask (`torch.Tensor` de forma `(batch_size, channels, sequence_length)`, *opcional*) : Indica quais entradas devem ser ignoradas devido ao preenchimento, em que os elementos são 1 para *não mascarado* ou 0 para *mascarado*.

past_key_values (`Cache`, *opcional*) : Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) do transformador codificador, usados para acelerar a codificação em streaming.

padding_cache (`MimiConv1dPaddingCache`, *opcional*) : Cache de padding das convoluções causais, usado para codificação em streaming.

use_streaming (`bool`, *opcional*) : Se codificar em modo de streaming, retornando os caches para passar à próxima chamada.

Codifica a forma de onda de áudio de entrada em latentes contínuos de forma `(batch_size, latent_dim, frames)`. --

**Retorna:** `MimiEncoderModelOutput` ou `tuple(torch.Tensor)`

Um `MimiEncoderModelOutput` ou uma tupla de `torch.Tensor` (se `return_dict=False` for passado ou quando `config.return_dict=False`) contendo vários elementos, dependendo da configuração ([MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig)) e das entradas.

O método forward do [MimiEncoderModel](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiEncoderModel) sobrescreve o método especial `__call__`.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de `Module` em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

- **latents** (`torch.Tensor` de forma `(batch_size, latent_dim, frames)`) -- Latentes contínuos do áudio, um frame por `config.frame_size` amostras de áudio.
- **past_key_values** (`Cache`, *opcional*) -- Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) do transformador codificador, retornados durante o streaming.
- **padding_cache** (`MimiConv1dPaddingCache`, *opcional*) -- Cache de padding para as convoluções causais de MimiConv1d, a fim de suportar streaming por meio do padding do cache.
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, retornado quando `output_hidden_states=True`) -- Estados ocultos do transformador do codificador na saída de cada camada, além da sua entrada.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, retornado quando `output_attentions=True`) -- Pesos de atenção de cada camada do transformador do codificador.

## MimiDecoderModel[[transformers.MimiDecoderModel]]

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

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

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

**Parâmetros:**

config ([MimiDecoderConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiDecoderConfig)) : Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método [from_pretrained()](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel.from_pretrained) para carregar os pesos do modelo.

A metade decodificadora do Mimi: upsampling, transformer decodificador e decodificador SEANet, de latentes contínuos para áudio.

Este modelo herda de [PreTrainedModel](/docs/transformers/main/pt/main_classes/model#transformers.PreTrainedModel). Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.).

Este modelo também é uma subclasse de [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso e comportamento gerais.

#### 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'>)
```

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

**Parâmetros:**

latents (`torch.Tensor` de forma `(batch_size, hidden_size, frames)`) : Latentes contínuos para decodificar, conforme calculado por [MimiModel.decode()](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiModel.decode).

padding_mask (`torch.Tensor` de forma `(batch_size, channels, sequence_length)`, *opcional*) : Indica quais entradas devem ser ignoradas devido ao preenchimento, em que os elementos são 1 para *não mascarado* ou 0 para *mascarado*.

past_key_values (`Cache`, *opcional*) : Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) do transformador decodificador, usados para acelerar a decodificação em streaming.

Decodifica os quadros fornecidos em uma forma de onda de áudio de saída. Observe que a saída pode ser um pouco maior que a --

input. Nesse caso, quaisquer etapas extras no final podem ser removidas. --

**Retorna:** `MimiDecoderOutput` ou `tuple(torch.Tensor)`

Um `MimiDecoderOutput` ou uma tupla de `torch.Tensor` (se `return_dict=False` for passado ou quando `config.return_dict=False`) contendo vários elementos, dependendo da configuração ([MimiConfig](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiConfig)) e das entradas.

O método forward do [MimiDecoderModel](/docs/transformers/main/pt/model_doc/mimi#transformers.MimiDecoderModel) substitui o método especial `__call__`.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de `Module` em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

- **audio_values** (`torch.Tensor` de forma `(batch_size, audio_channels, num_samples)`, *opcional*) -- Valores de áudio decodificados, obtidos usando a parte decodificadora do Mimi.
- **decoder_past_key_values** (`Cache`, *opcional*) -- Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção) que podem ser usados para acelerar a decodificação sequencial do transformador decodificador. Isso geralmente consiste nos `past_key_values` retornados pelo modelo em uma etapa anterior de decodificação, quando `use_cache=True` ou `config.use_cache=True`.

  O modelo sairá no mesmo formato de cache que é fornecido como entrada.

  Se `past_key_values` forem usados, o usuário pode opcionalmente inserir apenas os últimos `audio_values` ou `audio_codes (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo).
- **hidden_states** (`tuple(torch.Tensor)`, *opcional*, retornado quando `output_hidden_states=True`) -- Estados ocultos do transformador do decodificador na saída de cada camada, além de sua entrada.
- **attentions** (`tuple(torch.Tensor)`, *opcional*, retornado quando `output_attentions=True`) -- Pesos de atenção de cada camada do transformador do decodificador.

