# Mimi

[Mimi](https://huggingface.co/papers/2410.00037) هو نموذج ترميز صوتي عصبي يتوفر بنسخ مُسبقة التدريب ومكمّمة، مصمَّم لتمثيل الكلام بكفاءة وضغطه. يعمل النموذج بمعدل 1.1 كيلوبت في الثانية مع معدل إطار 12 هرتز، ويعتمد على معمارية مُرمِّز-مُفكِّك تجميعي (Convolutional Encoder-Decoder) مقترنة بمكمِّم متجهي متبقي (Residual Vector Quantizer) يتألف من 16 دفتر رموز. يُخرج Mimi تدفّقي رموز مزدوجين، أي دلالي وصوتي، لتحقيق التوازن بين الغنى اللغوي وإعادة البناء عالية الدقة. تشمل الميزات الرئيسية مُرمِّز تدفقي سببي (Causal Streaming Encoder) للاستخدام منخفض الكمون، وتوكنيز مزدوج المسار (Dual-path Tokenization) لتوليد مرن في المراحل اللاحقة، وجاهزية التكامل مع نماذج الكلام الكبيرة مثل Moshi.

يمكنك العثور على نقاط التفتيش الأصلية لـ Mimi تحت منظمة [Kyutai](https://huggingface.co/kyutai/models?search=mimi).

>[!TIP]
> تمت مساهمة هذا النموذج من قِبل [ylacombe](https://huggingface.co/ylacombe).
>
> انقر على نماذج Mimi في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق Mimi.

يُظهر المثال أدناه كيفية ترميز وفك ترميز الصوت باستخدام فئة [AutoModel](/docs/transformers/main/ar/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`، *اختياري*، القيمة الافتراضية `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) : النسبة المستخدمة لقص الجزء الأيمن من الالتفاف المنقول (transposed convolution) عند تفعيل الإعداد `use_causal_conv = True`. إذا كانت تساوي 1.0، فهذا يعني أن كل عملية القص تتم على الجانب الأيمن.

codebook_size (`int`، *اختياري*، القيمة الافتراضية `2048`) : عدد كتيّبات الأكواد المتوازية التي يستخدمها النموذج.

codebook_dim (`int`، *اختياري*، القيمة الافتراضية `256`) : بُعد متجه التضمين لكل كتاب رموز.

num_quantizers (`int`، *اختياري*، القيمة الافتراضية 32) : عدد قنوات المُكمِّم، أو كُتُب الرموز، في المُكمِّم.

use_conv_shortcut (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام طبقة تلافيفية كاتصال "تخطي" في كتلة `MimiResnetBlock`. إذا كانت القيمة False، فسيتم استخدام دالة الهوية، مما يوفر اتصالًا متبقيًا عامًا.

vector_quantization_hidden_dimension (`int`، *اختياري*، القيمة الافتراضية 256) : بُعد التمثيل الوسيط في فضاء تكميم المتجهات المتبقية.

num_semantic_quantizers (`int`، *اختياري*، القيمة الافتراضية 1) : عدد قنوات الكمية الدلالية، أو كتل الرموز، في مُكمِّم الدلالة. يجب أن يكون أقل من `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.

num_key_value_heads (`int`، *اختياري*، القيمة الافتراضية `8`) : يمثل هذا عدد رؤوس key_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. عند تحويل نقطة تفتيش متعددة الرؤوس إلى نقطة تفتيش 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`) : قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.

use_cache (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان يجب على النموذج إرجاع انتباهات المفاتيح/القيم الأخيرة (لا تُستخدم في جميع النماذج). لا ينطبق إلا إذا كان `config.is_decoder=True` أو عندما يكون النموذج نموذجًا توليديًا يعتمد على المُفكِّك فقط.

use_streaming (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام وضع البث. إذا كانت القيمة `True`، فسيُرجع أسلوب ترميز النموذج ذاكرة التخزين المؤقت للملء التي يمكن استخدامها في استدعاء لاحق لأسلوب الترميز.

rope_parameters (`Union[~modeling_rope_utils.RopeParameters, dict]`، *اختياري*) : قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ `rope_theta`، وبشكل اختياري معاملات تُستخدم للتوسيع في حال رغبتَ في استخدام RoPE مع `max_position_embeddings` أطول.

sliding_window (`int`، *اختياري*، القيمة الافتراضية `250`) : حجم نافذة الانتباه النافذة المنزلقة. إذا كانت `None`، فلا تُطبَّق نافذة منزلقة.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

layer_scale_initial_scale (`float`، *اختياري*، القيمة الافتراضية `0.01`) : المقياس المستخدم في طبقات الانتباه الذاتي. 0.1 للنموذج الأساسي، و1e-6 للنموذج الكبير. اضبط القيمة على 0 لتعطيل مقياس الطبقة.

attention_bias (`bool`، *اختياري*، القيمة الافتراضية `False`) : ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.

tie_word_embeddings (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب ربط ترميزات الأوزان وفقاً لخريطة `tied_weights_keys` الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج MimiModel. تُستخدم لاستحداث نموذج Mimi وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ [kyutai/mimi](https://huggingface.co/kyutai/mimi)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

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

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

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

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

## MimiEncoderConfig[[transformers.MimiEncoderConfig]]

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

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/configuration_mimi.py#L249)

إعداد النصف المُشفِّر من Mimi (مُشفِّر SEANet، مُحوِّل المُشفِّر، والخفض). يتشارك كل حقل مع [MimiConfig](/docs/transformers/main/ar/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/ar/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/ar/model_doc/mimi#transformers.MimiConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج Mimi، وهو ترميز صوتي عصبي.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### فك الترميز[[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/ar/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/ar/model_doc/mimi#transformers.MimiEncoderModel.forward)، بعد التكميم.

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

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/mimi/modeling_mimi.py#L1453)

**المعاملات:**

input_values (`torch.Tensor` من الشكل `(batch_size, channels, sequence_length)`، *اختياري*) : مدخلات صوت خام تم تحويلها إلى Float.

padding_mask (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) : يُحدد المدخلات التي يجب تجاهلها بسبب الحشو، حيث تكون العناصر إما 1 لـ *غير مقنّعة* أو 0 لـ *مقنّعة*.

num_quantizers (`int`, *اختياري*) : عدد مُكمّسات (أي كُتُب الرموز) المراد استخدامها. افتراضيًا، تُستخدم جميع المُكمّسات.

audio_codes (`torch.LongTensor` من الشكل `(batch_size, num_quantizers, codes_length)`، *اختياري*) : تضمينات رموز منفصلة محسوبة باستخدام `model.encode`.

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 (تلك التي لا يتم تقديم حالات مفاتيحها وقيمتها السابقة إلى هذا النموذج).

**يعيد:** `MimiOutput` أو `tuple(torch.Tensor)`

`MimiOutput` أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعدادات ([MimiConfig](/docs/transformers/main/ar/model_doc/mimi#transformers.MimiConfig)) والمدخلات.

تتجاوز طريقة [MimiModel](/docs/transformers/main/ar/model_doc/mimi#transformers.MimiModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **audio_codes** (`torch.LongTensor` من الشكل `(batch_size, num_quantizers, codes_length)`، *اختياري*) -- تمثيلات رموز منفصلة محسوبة باستخدام `model.encode`.
- **audio_values** (`torch.Tensor` من الشكل `(batch_size, sequence_length)`، *اختياري*) -- قيم الصوت المُفكّكة، المُستخرجة باستخدام جزء المُفكّك في Mimi.
- **encoder_past_key_values** (`Cache`، *اختياري*) -- حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) يمكن استخدامها لتسريع فك الترميز التسلسلي لتحوّل المُشفِّر. يتكوّن هذا عادةً من `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/ar/model_doc/mimi#transformers.MimiEncoderConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نصف المُشفِّر في Mimi: مُشفِّر SEANet، ومحوّل المُشفِّر، والخفض، من الصوت إلى الكمّات المستمرة.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/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)`) : قيم رقمية عشرية لموجة الصوت المدخلة.

padding_mask (`torch.Tensor` من الشكل `(batch_size, channels, sequence_length)`، *اختياري*) : يُحدد المدخلات التي يجب تجاهلها بسبب الحشو، حيث تكون العناصر إما 1 لـ *غير مقنّعة* أو 0 لـ *مقنّعة*.

past_key_values (`Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) لمحوّل المُشفِّر، تُستخدم لتسريع التشفير البثّي.

padding_cache (`MimiConv1dPaddingCache`، *اختياري*) : ذاكرة مؤقتة للتبطين الخاصة باللافقات السببية، تُستخدم للتشفير البثي.

use_streaming (`bool`، *اختياري*) : ما إذا كان سيتم الترميز في وضع البث، مع إرجاع الكاشات (caches) لتُمرَّر إلى الاستدعاء التالي.

يقوم بتشفير موجة الصوت المدخلة إلى كائنات مستمرة (latents) ذات الشكل `(batch_size, latent_dim, frames)`. --

**يعيد:** `MimiEncoderModelOutput` أو `tuple(torch.Tensor)`

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

تُعيد طريقة [MimiEncoderModel](/docs/transformers/main/ar/model_doc/mimi#transformers.MimiEncoderModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__call__`.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن `Module` بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

- **latents** (`torch.Tensor` من الشكل `(batch_size, latent_dim, frames)`) -- متغيرات مستمرة للصوت، إطار واحد لكل `config.frame_size` من عينات الصوت.
- **past_key_values** (`Cache`، *اختياري*) -- حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) لمحوّل المُشفِّر، تُعاد عند البث.
- **padding_cache** (`MimiConv1dPaddingCache`، *اختياري*) -- مخبأ للتبطين (Padding) للتمددات التلافيفية السببية في 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/ar/model_doc/mimi#transformers.MimiDecoderConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نصف المُفكِّك في Mimi: رفع العينة، مُحوِّل المُفكِّك، ومُفكِّك SEANet، من الكمّانات المستمرة إلى الصوت.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/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/ar/model_doc/mimi#transformers.MimiModel.decode).

padding_mask (`torch.Tensor` من الشكل `(batch_size, channels, sequence_length)`، *اختياري*) : يُحدد المدخلات التي يجب تجاهلها بسبب الحشو، حيث تكون العناصر إما 1 لـ *غير مقنّعة* أو 0 لـ *مقنّعة*.

past_key_values (`Cache`، *اختياري*) : حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي) لمحوّل المُفكِّك، تُستخدم لتسريع فك الترميز التدفقي.

يفكك الإطارات المعطاة إلى موجة صوتية ناتجة. لاحظ أن الناتج قد يكون أكبر قليلاً من --

input. في هذه الحالة، يمكن حذف أي خطوات إضافية في النهاية. --

**يعيد:** `MimiDecoderOutput` أو `tuple(torch.Tensor)`

A `MimiDecoderOutput` أو مجموعة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([MimiConfig](/docs/transformers/main/ar/model_doc/mimi#transformers.MimiConfig)) والمدخلات.

تُعيد طريقة [MimiDecoderModel](/docs/transformers/main/ar/model_doc/mimi#transformers.MimiDecoderModel) الخاصة بالتقديم (forward) تعريف الطريقة الخاصة `__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`) -- أوزان الانتباه لكل طبقة محوّل المُفكِّك.

