# Moonshine Streaming

Moonshine Streaming — это потоковая версия модели распознавания речи [Moonshine](https://huggingface.co/papers/2410.15608), оптимизированная для транскрипции в реальном времени с низкой задержкой. Как и исходная Moonshine, это модель с архитектурой «кодировщик-декодировщик», которая использует Rotary Position Embedding (RoPE) для эффективной обработки речи переменной длины. Потоковая архитектура включает скользящее окно внимания в кодировщике и адаптер контекста, обеспечивающий инкрементальную обработку аудиосегментов.

Moonshine Streaming доступен в трёх размерах: tiny, small и medium, что позволяет выбирать баланс между скоростью и точностью. Он особенно хорошо подходит для потоковой расшифровки речи и приложений голосовых команд на устройстве.

Все исходные контрольные точки Moonshine Streaming можно найти в организации [Useful Sensors](https://huggingface.co/UsefulSensors).

> [!TIP]
> Moonshine Streaming обрабатывает сырые аудиосигналы напрямую, без необходимости предварительной обработки в виде мел-спектрограмм, что делает его эффективным для приложений реального времени.

Приведённый ниже пример показывает, как преобразовать речь в текст с помощью [Pipeline](/docs/transformers/main/ru/main_classes/pipelines#transformers.Pipeline) или класса [AutoModel](/docs/transformers/main/ru/model_doc/auto#transformers.AutoModel).

```python
from transformers import pipeline

pipe = pipeline(
    task="automatic-speech-recognition",
    model="UsefulSensors/moonshine-streaming-tiny",
    device=0
)
pipe("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")
```

```python
from datasets import load_dataset

from transformers import AutoProcessor, MoonshineStreamingForConditionalGeneration

processor = AutoProcessor.from_pretrained("UsefulSensors/moonshine-streaming-tiny")
model = MoonshineStreamingForConditionalGeneration.from_pretrained(
    "UsefulSensors/moonshine-streaming-tiny",
    device_map="auto",
    attn_implementation="sdpa"
)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
audio_sample = ds[0]["audio"]

inputs = processor(audio_sample["array"], return_tensors="pt").to(model.device)
inputs = inputs.to(model.device)

generated_ids = model.generate(**inputs, max_new_tokens=100)
transcription = processor.decode(generated_ids[0], skip_special_tokens=True)
transcription
```

## MoonshineStreamingProcessor[[transformers.MoonshineStreamingProcessor]]

#### transformers.MoonshineStreamingProcessor[[transformers.MoonshineStreamingProcessor]]

```python
transformers.MoonshineStreamingProcessor(feature_extractor, tokenizer)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/processing_moonshine_streaming.py#L37)

**Параметры:**

feature_extractor (`feature_extractor_class`) : Извлечение признаков является обязательным входом.

tokenizer (`tokenizer_class`) : Токенизатор является обязательным входным параметром.

Создаёт MoonshineStreamingProcessor, который объединяет экстрактор признаков и токенизатор в единый процессор.

[MoonshineStreamingProcessor](/docs/transformers/main/ru/model_doc/moonshine_streaming#transformers.MoonshineStreamingProcessor) предоставляет все возможности `feature_extractor_class` и `tokenizer_class`. Подробнее см. в `~feature_extractor_class` и `~tokenizer_class`.

#### pad[[transformers.MoonshineStreamingProcessor.pad]]

```python
pad(*args, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/processing_moonshine_streaming.py#L74)

**Параметры:**

input_features : Если первый аргумент — словарь, содержащий батч тензоров, или присутствует аргумент `input_features`, он передаётся в `MoonshineStreamingFeatureExtractor.pad`.

labels : Если аргумент `label` присутствует, он передаётся в [PreTrainedTokenizer.pad()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad).

**Возвращаемое значение:**

Этот метод возвращает результаты каждого метода `pad`. Если используются оба, выводом будет словарь, содержащий результаты обоих.

Этот метод работает с батчами извлечённых признаков и/или токенизированного текста. Он передаёт все аргументы в `MoonshineStreamingFeatureExtractor.pad` и/или [PreTrainedTokenizer.pad()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad) в зависимости от модальности входных данных и возвращает их результаты. Если переданы обе модальности, вызываются `MoonshineStreamingFeatureExtractor.pad` и [PreTrainedTokenizer.pad()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad).

## MoonshineStreamingEncoderConfig[[transformers.MoonshineStreamingEncoderConfig]]

#### transformers.MoonshineStreamingEncoderConfig[[transformers.MoonshineStreamingEncoderConfig]]

```python
transformers.MoonshineStreamingEncoderConfig(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, hidden_size: int = 320, intermediate_size: int = 1280, hidden_act: str = 'gelu', num_hidden_layers: int = 6, num_attention_heads: int = 8, num_key_value_heads: int = 8, max_position_embeddings: int = 4096, attention_dropout: float | int = 0.0, attention_bias: bool = False, sample_rate: int = 16000, frame_ms: float = 5.0, sliding_windows: tuple[tuple[int, int], ...] | list[list[int, int]] = ((16, 4), (16, 4), (16, 0), (16, 0), (16, 4), (16, 4)), head_dim: int | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/configuration_moonshine_streaming.py#L25)

**Параметры:**

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

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

hidden_act (`str`, *необязательный*, по умолчанию `gelu`) : Нелинейная функция активации (функция или строка) в декодере. Например, `"gelu"`, `"relu"`, `"silu"` и т. д.

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

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

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

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

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

sample_rate (`int`, *optional*, по умолчанию 16000) : Частота дискретизации аудиовхода в Гц.

frame_ms (`float`, *optional*, по умолчанию 5.0) : Длительность кадра в миллисекундах для обработки аудио.

sliding_windows (`list[tuple[int, int]]`, *необязательный*, по умолчанию `[(16, 4), (16, 4), (16, 0), (16, 0), (16, 4), (16, 4)]`) : Список конфигураций скользящего окна для каждого слоя кодировщика. Каждая кортежа содержит (window_size, shift).

head_dim (`int`, *optional*) : Размер измерения внимания. Если None, по умолчанию будет использовано hidden_size // num_attention_heads

Это класс конфигурации для хранения настроек модели MoonshineStreamingModel. Он используется для создания модели Moonshine Streaming в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [UsefulSensors/moonshine-streaming-tiny](https://huggingface.co/UsefulSensors/moonshine-streaming-tiny)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

```python
>>> from transformers import MoonshineStreamingEncoder, MoonshineStreamingEncoderConfig

>>> # Initializing a Moonshine Streaming encoder configuration
>>> configuration = MoonshineStreamingEncoderConfig()

>>> # Initializing a model from the configuration
>>> model = MoonshineStreamingEncoder(configuration)

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

## MoonshineStreamingConfig[[transformers.MoonshineStreamingConfig]]

#### transformers.MoonshineStreamingConfig[[transformers.MoonshineStreamingConfig]]

```python
transformers.MoonshineStreamingConfig(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, 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, is_encoder_decoder: bool = True, encoder_config: dict | transformers.models.moonshine_streaming.configuration_moonshine_streaming.MoonshineStreamingEncoderConfig | None = None, vocab_size: int = 32768, hidden_size: int = 320, intermediate_size: int = 1280, num_hidden_layers: int = 6, num_attention_heads: int = 8, hidden_act: str = 'silu', max_position_embeddings: int = 4096, use_cache: bool = True, pad_token_id: int | None = 0, bos_token_id: int | None = 1, eos_token_id: int | list[int] | None = 2, rope_parameters: transformers.modeling_rope_utils.RopeParameters | dict | None = None, attention_bias: bool = False, attention_dropout: float | int = 0.0, decoder_start_token_id: int | None = None, head_dim: int | None = None, pad_head_dim_to_multiple_of: int | None = None, tie_word_embeddings: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/configuration_moonshine_streaming.py#L80)

**Параметры:**

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

encoder_config (`Union[dict, ~models.moonshine_streaming.configuration_moonshine_streaming.MoonshineStreamingEncoderConfig]`, *необязательный*) : Объект конфигурации или словарь для базовой модели энкодера.

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

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

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

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

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

hidden_act (`str`, *необязательный*, по умолчанию `silu`) : Нелинейная функция активации (функция или строка) в декодере. Например, `"gelu"`, `"relu"`, `"silu"` и т. д.

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

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

pad_token_id (`int`, *необязательный*, по умолчанию `0`) : Идентификатор токена, используемый для выравнивания в словаре.

bos_token_id (`int`, *необязательный*, по умолчанию `1`) : Идентификатор токена, используемый для обозначения начала потока в словаре.

eos_token_id (`Union[int, list[int]]`, *необязательный*, по умолчанию `2`) : Идентификатор токена, используемого для обозначения конца потока в словаре.

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

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

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

decoder_start_token_id (`int`, *optional*) : Если модель с архитектурой «энкодер-декодер» начинает декодирование с токена, отличного от `bos`, то идентификатор этого токена.

head_dim (`int`, *optional*) : Размер измерения внимания. Если None, по умолчанию будет использовано hidden_size // num_attention_heads

pad_head_dim_to_multiple_of (`int`, *optional*) : Если задано, размерность головы будет дополнена до кратного этого значения.

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

Это класс конфигурации для хранения настроек модели MoonshineStreamingModel. Он используется для создания модели Moonshine Streaming в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации модели [UsefulSensors/moonshine-streaming-tiny](https://huggingface.co/UsefulSensors/moonshine-streaming-tiny)

Объекты конфигурации наследуются от [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig) и могут использоваться для управления выводами модели. Подробнее см. в документации [PreTrainedConfig](/docs/transformers/main/ru/main_classes/configuration#transformers.PreTrainedConfig).

```python
>>> from transformers import MoonshineStreamingModel, MoonshineStreamingConfig

>>> # Initializing a Moonshine Streaming configuration
>>> configuration = MoonshineStreamingConfig()

>>> # Initializing a model from the configuration
>>> model = MoonshineStreamingModel(configuration)

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

## MoonshineStreamingModel[[transformers.MoonshineStreamingModel]]

#### transformers.MoonshineStreamingModel[[transformers.MoonshineStreamingModel]]

```python
transformers.MoonshineStreamingModel(config: MoonshineStreamingConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/modeling_moonshine_streaming.py#L871)

**Параметры:**

config ([MoonshineStreamingConfig](/docs/transformers/main/ru/model_doc/moonshine_streaming#transformers.MoonshineStreamingConfig)) : класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель Moonshine Streaming без дополнительных компонентов, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.

Эта модель наследуется от [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.MoonshineStreamingModel.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.EncoderDecoderCache | None = None, decoder_inputs_embeds: tuple[torch.Tensor] | None = None, decoder_position_ids: tuple[torch.LongTensor] | None = None, use_cache: bool | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/modeling_moonshine_streaming.py#L899)

**Параметры:**

input_values (`torch.Tensor` формы `(batch_size, audio_length)`) : Значения типа float для исходной звуковой волны. Исходную звуковую волну можно получить, загрузив аудиофайл `.flac` или `.wav` в массив типа `list[float]`, `numpy.ndarray` или `torch.Tensor`, *например*, с помощью библиотеки torchcodec (`pip install torchcodec`) или библиотеки soundfile (`pip install soundfile`). Для подготовки массива в `input_values` следует использовать [AutoFeatureExtractor](/docs/transformers/main/ru/model_doc/auto#transformers.AutoFeatureExtractor) для выравнивания и преобразования в тензор типа `torch.Tensor`.

attention_mask (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

decoder_input_ids (`torch.LongTensor` формы `(batch_size, target_sequence_length)`, *необязательный*) : Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью [AutoTokenizer](/docs/transformers/main/ru/model_doc/auto#transformers.AutoTokenizer). Подробности см. в [PreTrainedTokenizer.encode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) и [PreTrainedTokenizer.__call__()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__). [Что такое входные ID декодера?](../glossary#decoder-input-ids)

decoder_attention_mask (`torch.LongTensor` формы `(batch_size, target_sequence_length)`, *необязательный*) : Маска для исключения внимания к определённым индексам токенов. По умолчанию используется каузальная маска, чтобы модель могла учитывать только предыдущие входные данные при прогнозировании будущих.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *необязательный*) : Кортеж состоит из (`last_hidden_state`, *необязательный*: `hidden_states`, *необязательный*: `attentions`) `last_hidden_state` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) представляет собой последовательность скрытых состояний на выходе последнего слоя кодировщика. Используется в кросс-внимании декодера.

past_key_values (`~cache_utils.EncoderDecoderCache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. В качестве входных данных допускается только экземпляр [Cache](/docs/transformers/main/ru/internal/generation_utils#transformers.Cache), см. наше [руководство по kv cache](https://huggingface.co/docs/transformers/en/kv_cache). Если `past_key_values` не переданы, по умолчанию будет инициализирован [DynamicCache](/docs/transformers/main/ru/internal/generation_utils#transformers.DynamicCache). Модель будет выводить тот же формат кэша, который был передан на вход. Если используются `past_key_values`, ожидается, что пользователь передаст только необработанные `input_ids` (те, для которых не заданы их прошлые состояния ключей и значений в этой модели) с формой `(batch_size, unprocessed_length)`, а не все `input_ids` с формой `(batch_size, sequence_length)`.

decoder_inputs_embeds (`tuple[torch.Tensor]` формы `(batch_size, target_sequence_length, hidden_size)`, *необязательно*) : По желанию, вместо передачи `decoder_input_ids` можно напрямую передать встроенное представление. Если используется `past_key_values`, по желанию на вход необходимо передавать только последние `decoder_inputs_embeds` (см. `past_key_values`). Это полезно, если требуется больший контроль над тем, как индексы `decoder_input_ids` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. Если `decoder_input_ids` и `decoder_inputs_embeds` не заданы, `decoder_inputs_embeds` принимает значение `inputs_embeds`.

decoder_position_ids (`torch.LongTensor` формы `(batch_size, target_sequence_length)`) : Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Используются для вычисления позиционных эмбеддингов до `config.decoder_config.max_position_embeddings`

use_cache (`bool`, *необязательный*) : Если установлено в `True`, состояния ключей и значений `past_key_values` возвращаются и могут использоваться для ускорения декодирования (см. `past_key_values`).

**Возвращает:** [Seq2SeqModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.Seq2SeqModelOutput) или `tuple(torch.Tensor)`

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

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

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

- **last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`) -- Последовательность скрытых состояний на выходе последнего слоя декодера модели.

  Если используется `past_key_values`, выводится только последнее скрытое состояние последовательностей формы `(batch_size, 1, hidden_size)`.
- **past_key_values** (`EncoderDecoderCache`, *необязательный*, возвращается при передаче `use_cache=True` или при `config.use_cache=True`) -- это экземпляр [EncoderDecoderCache](/docs/transformers/main/ru/internal/generation_utils#transformers.EncoderDecoderCache). Подробнее см. в нашем [руководстве по кэшированию kv](https://huggingface.co/docs/transformers/en/kv_cache).

  Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать (см. вход `past_key_values`) для ускорения последовательного декодирования.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния декодера на выходе каждого слоя, а также необязательные выходные значения начального эмбеддинга.
- **decoder_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **cross_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) — Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания кросс-внимания декодера, после применения softmax к вниманию, используемые для вычисления взвешенного среднего в головах кросс-внимания.
- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) -- Последовательность скрытых состояний на выходе последнего слоя энкодера модели.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния энкодера на выходе каждого слоя, а также необязательные выходные значения начального эмбеддинга.
- **encoder_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

```python
>>> import torch
>>> from transformers import AutoFeatureExtractor, MoonshineStreamingModel
>>> from datasets import load_dataset

>>> model = MoonshineStreamingModel.from_pretrained("UsefulSensors/moonshine_streaming-tiny")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("UsefulSensors/moonshine_streaming-tiny")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_values = inputs.input_values
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_values, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 288]
```

## MoonshineStreamingForConditionalGeneration[[transformers.MoonshineStreamingForConditionalGeneration]]

#### transformers.MoonshineStreamingForConditionalGeneration[[transformers.MoonshineStreamingForConditionalGeneration]]

```python
transformers.MoonshineStreamingForConditionalGeneration(config: MoonshineStreamingConfig)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/modeling_moonshine_streaming.py#L992)

**Параметры:**

config ([MoonshineStreamingConfig](/docs/transformers/main/ru/model_doc/moonshine_streaming#transformers.MoonshineStreamingConfig)) : класс конфигурации модели со всеми параметрами модели. Инициализация с файлом конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод [from_pretrained()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.from_pretrained) для загрузки весов модели.

Модель MoonshineStreaming с головой языковой модели. Может использоваться для автоматического распознавания речи.

Эта модель наследуется от [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.MoonshineStreamingForConditionalGeneration.forward]]

```python
forward(input_values: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.LongTensor] = None, decoder_input_ids: typing.Optional[torch.LongTensor] = None, decoder_attention_mask: typing.Optional[torch.LongTensor] = None, encoder_outputs: tuple[tuple[torch.Tensor]] | None = None, past_key_values: transformers.cache_utils.EncoderDecoderCache | None = None, decoder_inputs_embeds: tuple[torch.Tensor] | None = None, decoder_position_ids: tuple[torch.LongTensor] | None = None, use_cache: bool | None = None, labels: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/models/moonshine_streaming/modeling_moonshine_streaming.py#L1012)

**Параметры:**

input_values (`torch.Tensor` формы `(batch_size, audio_length)`) : Значения типа float для исходной звуковой волны. Исходную звуковую волну можно получить, загрузив аудиофайл `.flac` или `.wav` в массив типа `list[float]`, `numpy.ndarray` или `torch.Tensor`, *например*, с помощью библиотеки torchcodec (`pip install torchcodec`) или библиотеки soundfile (`pip install soundfile`). Для подготовки массива в `input_values` следует использовать [AutoFeatureExtractor](/docs/transformers/main/ru/model_doc/auto#transformers.AutoFeatureExtractor) для выравнивания и преобразования в тензор типа `torch.Tensor`.

attention_mask (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Маска для предотвращения применения внимания к индексам токенов отсечки. Значения маски выбираются из `[0, 1]`:  - 1 для токенов, которые **не замаскированы**, - 0 для токенов, которые **замаскированы**.  [Что такое маски внимания?](../glossary#attention-mask)

decoder_input_ids (`torch.LongTensor` формы `(batch_size, target_sequence_length)`, *необязательный*) : Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью [AutoTokenizer](/docs/transformers/main/ru/model_doc/auto#transformers.AutoTokenizer). Подробности см. в [PreTrainedTokenizer.encode()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.encode) и [PreTrainedTokenizer.__call__()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__). [Что такое входные ID декодера?](../glossary#decoder-input-ids)

decoder_attention_mask (`torch.LongTensor` формы `(batch_size, target_sequence_length)`, *необязательный*) : Маска для исключения внимания к определённым индексам токенов. По умолчанию используется каузальная маска, чтобы модель могла учитывать только предыдущие входные данные при прогнозировании будущих.

encoder_outputs (`tuple[tuple[torch.Tensor]]`, *необязательный*) : Кортеж состоит из (`last_hidden_state`, *необязательный*: `hidden_states`, *необязательный*: `attentions`) `last_hidden_state` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) представляет собой последовательность скрытых состояний на выходе последнего слоя кодировщика. Используется в кросс-внимании декодера.

past_key_values (`~cache_utils.EncoderDecoderCache`, *optional*) : Предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это `past_key_values`, возвращаемые моделью на предыдущем этапе декодирования, когда `use_cache=True` или `config.use_cache=True`. В качестве входных данных допускается только экземпляр [Cache](/docs/transformers/main/ru/internal/generation_utils#transformers.Cache), см. наше [руководство по kv cache](https://huggingface.co/docs/transformers/en/kv_cache). Если `past_key_values` не переданы, по умолчанию будет инициализирован [DynamicCache](/docs/transformers/main/ru/internal/generation_utils#transformers.DynamicCache). Модель будет выводить тот же формат кэша, который был передан на вход. Если используются `past_key_values`, ожидается, что пользователь передаст только необработанные `input_ids` (те, для которых не заданы их прошлые состояния ключей и значений в этой модели) с формой `(batch_size, unprocessed_length)`, а не все `input_ids` с формой `(batch_size, sequence_length)`.

decoder_inputs_embeds (`tuple[torch.Tensor]` формы `(batch_size, target_sequence_length, hidden_size)`, *необязательно*) : По желанию, вместо передачи `decoder_input_ids` можно напрямую передать встроенное представление. Если используется `past_key_values`, по желанию на вход необходимо передавать только последние `decoder_inputs_embeds` (см. `past_key_values`). Это полезно, если требуется больший контроль над тем, как индексы `decoder_input_ids` преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели. Если `decoder_input_ids` и `decoder_inputs_embeds` не заданы, `decoder_inputs_embeds` принимает значение `inputs_embeds`.

decoder_position_ids (`torch.LongTensor` формы `(batch_size, target_sequence_length)`) : Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Используются для вычисления позиционных эмбеддингов до `config.decoder_config.max_position_embeddings`

use_cache (`bool`, *необязательный*) : Если установлено в `True`, состояния ключей и значений `past_key_values` возвращаются и могут использоваться для ускорения декодирования (см. `past_key_values`).

labels (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательно*) : Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне `[0, ..., config.vocab_size]` или равняться -100 (см. docstring `input_ids`). Токены с индексами, установленными в `-100`, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне `[0, ..., config.vocab_size]`.

**Возвращает:** [Seq2SeqLMOutput](/docs/transformers/main/ru/main_classes/output#transformers.modeling_outputs.Seq2SeqLMOutput) или `tuple(torch.Tensor)`

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

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

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

- **loss** (`torch.Tensor` формы `(1,)`, *необязательный*, возвращается, если задан `labels`) -- Потеря языковой модели.
- **logits** (`torch.Tensor` формы `(batch_size, sequence_length, config.vocab_size)`) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).
- **past_key_values** (`EncoderDecoderCache`, *необязательный*, возвращается при передаче `use_cache=True` или при `config.use_cache=True`) -- это экземпляр [EncoderDecoderCache](/docs/transformers/main/ru/internal/generation_utils#transformers.EncoderDecoderCache). Подробнее см. в нашем [руководстве по кэшированию kv](https://huggingface.co/docs/transformers/en/kv_cache).

  Содержит предварительно вычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать (см. вход `past_key_values`) для ускорения последовательного декодирования.
- **decoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода эмбеддингов, если у модели есть слой эмбеддингов, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния декодера на выходе каждого слоя, а также выходные значения начального слоя встраивания.
- **decoder_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или когда `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания декодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
- **cross_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) — Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания кросс-внимания декодера, после применения softmax к вниманию, используемые для вычисления взвешенного среднего в головах кросс-внимания.
- **encoder_last_hidden_state** (`torch.Tensor` формы `(batch_size, sequence_length, hidden_size)`, *необязательный*) -- Последовательность скрытых состояний на выходе последнего слоя энкодера модели.
- **encoder_hidden_states** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_hidden_states=True` или при `config.output_hidden_states=True`) -- Кортеж `torch.Tensor` (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы `(batch_size, sequence_length, hidden_size)`.

  Скрытые состояния кодировщика на выходе каждого слоя, а также выходные значения начального слоя встраиваний.
- **encoder_attentions** (`tuple(torch.Tensor)`, *необязательный*, возвращается при передаче `output_attentions=True` или при `config.output_attentions=True`) -- Кортеж `torch.Tensor` (по одному на каждый слой) формы `(batch_size, num_heads, sequence_length, sequence_length)`.

  Веса внимания энкодера после softmax внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

```python
>>> import torch
>>> from transformers import AutoProcessor, MoonshineStreamingForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("UsefulSensors/moonshine_streaming-tiny")
>>> model = MoonshineStreamingForConditionalGeneration.from_pretrained("UsefulSensors/moonshine_streaming-tiny")

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

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_values = inputs.input_values

>>> generated_ids = model.generate(input_values, max_new_tokens=100)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'
```

#### generate[[transformers.MoonshineStreamingForConditionalGeneration.generate]]

```python
generate(inputs: typing.Optional[torch.Tensor] = None, generation_config: transformers.generation.configuration_utils.GenerationConfig | None = None, logits_processor: transformers.generation.logits_process.LogitsProcessorList | None = None, stopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = None, prefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = None, synced_gpus: bool | None = None, assistant_model: typing.Optional[ForwardRef('PreTrainedModel')] = None, streamer: typing.Optional[ForwardRef('BaseStreamer')] = None, negative_prompt_ids: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, custom_generate: str | collections.abc.Callable | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/generation/utils.py#L2581)

**Параметры:**

inputs (`torch.Tensor` с изменяющейся формой в зависимости от модальности, *необязательный*) : Последовательность, используемая в качестве промпта для генерации или в качестве входных данных для кодировщика. Если `None`, метод инициализирует её с помощью `bos_token_id` и размером батча 1. Для моделей только с декодером `inputs` должен быть в формате `input_ids`. Для моделей с кодировщиком и декодером *inputs* может представлять собой любой из `input_ids`, `input_values`, `input_features` или `pixel_values`.

generation_config ([GenerationConfig](/docs/transformers/main/ru/main_classes/text_generation#transformers.GenerationConfig), *optional*) : Конфигурация генерации, используемая в качестве базовой параметризации для вызова генерации. Аргументы `**kwargs`, переданные в generate и совпадающие с атрибутами `generation_config`, переопределяют их. Если `generation_config` не предоставлен, будет использован вариант по умолчанию, который имеет следующий приоритет загрузки: 1) из файла модели `generation_config.json`, если он существует; 2) из конфигурации модели. Обратите внимание, что не указанные параметры наследуют значения по умолчанию из [GenerationConfig](/docs/transformers/main/ru/main_classes/text_generation#transformers.GenerationConfig), документация по которым должна быть проверена для параметризации генерации.

logits_processor (`LogitsProcessorList`, *необязательный*) : Пользовательские обработчики логитов, дополняющие стандартные обработчики логитов, создаваемые на основе аргументов и конфигурации генерации. Если передан обработчик логитов, который уже был создан с использованием аргументов или конфигурации генерации, возникает ошибка. Эта функция предназначена для опытных пользователей.

stopping_criteria (`StoppingCriteriaList`, *необязательный*) : Пользовательские критерии остановки, дополняющие критерии остановки по умолчанию, создаваемые на основе аргументов и конфигурации генерации. Если передан критерий остановки, который уже был создан с использованием аргументов или конфигурации генерации, будет выброшена ошибка. Если ваш критерий остановки зависит от входного параметра `scores`, убедитесь, что вы передаёте `return_dict_in_generate=True, output_scores=True` в `generate`. Эта функция предназначена для опытных пользователей.

prefix_allowed_tokens_fn (`Callable[[int, torch.Tensor], list[int]]`, *необязательный*) : Если указан, эта функция ограничивает поиск луча (beam search) только разрешёнными токенами на каждом шаге. Если не указан, ограничения не применяются. Эта функция принимает 2 аргумента: идентификатор батча `batch_id` и `input_ids`. Она должна возвращать список разрешённых токенов для следующего шага генерации, обусловленный идентификатором батча `batch_id` и ранее сгенерированными токенами `inputs_ids`. Этот аргумент полезен для ограниченной генерации, обусловленной префиксом, как описано в [Autoregressive Entity Retrieval](https://huggingface.co/papers/2010.00904).

synced_gpus (`bool`, *optional*) : Определяет, следует ли продолжать выполнение цикла while до достижения max_length. Если значение не переопределено, этот флаг будет установлен в `True` при использовании `FullyShardedDataParallel` или DeepSpeed ZeRO Stage 3 с несколькими GPU, чтобы избежать блокировки, если один GPU завершает генерацию раньше других. В противном случае по умолчанию устанавливается в `False`.

assistant_model (`PreTrainedModel`, *необязательный*) : Вспомогательная модель, которая может использоваться для ускорения генерации. Вспомогательная модель должна иметь точно такой же токенизатор. Ускорение достигается, когда прогнозирование кандидатных токенов с помощью вспомогательной модели выполняется значительно быстрее, чем запуск генерации с моделью, от которой вы вызываете generate. Таким образом, вспомогательная модель должна быть значительно меньше.

streamer (`BaseStreamer`, *необязательный*) : объект Streamer, который будет использоваться для потоковой передачи сгенерированных последовательностей. Сгенерированные токены передаются через `streamer.put(token_ids)`, а дальнейшая обработка является ответственностью streamer.

negative_prompt_ids (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Отрицательный промпт, необходимый для некоторых процессоров, таких как CFG. Размер батча должен совпадать с размером входного батча. Это экспериментальная функция, которая может претерпеть изменения API, нарушающие совместимость, в будущих версиях.

negative_prompt_attention_mask (`torch.LongTensor` формы `(batch_size, sequence_length)`, *необязательный*) : Attention_mask для `negative_prompt_ids`.

custom_generate (`str` или `Callable`, *необязательный*) : Одно из следующих значений: - `str` (имя репозитория Hugging Face Hub): выполняет пользовательскую функцию `generate`, определённую в файле `custom_generate/generate.py` этого репозитория, вместо стандартного метода `generate`. Репозитория полностью заменяет логику генерации, а тип возвращаемого значения может отличаться. - `str` (путь к локальному репозиторию): то же самое, но из локального пути. Для локальных каталогов также требуется `trust_remote_code=True`, так как выполняется локальный файл `custom_generate/generate.py`. - `Callable`: `generate` выполнит стандартные шаги подготовки входных данных, а затем вызовет переданную вызываемую функцию для запуска цикла декодирования. Подробнее см. [документацию](../../generation_strategies#custom-generation-methods).

kwargs (`dict[str, Any]`, *необязательный*) : Произвольная параметризация `generation_config` и/или дополнительные специфичные для модели kwargs, которые будут переданы в функцию `forward` модели. Если модель является моделью с кодировщиком-декодировщиком, kwargs, специфичные для кодировщика, не должны иметь префикса, а kwargs, специфичные для декодера, должны иметь префикс *decoder_*.

**Возвращает:** [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) или `torch.LongTensor`

Объект [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput) (если `return_dict_in_generate=True` или когда `config.return_dict_in_generate=True`) или `torch.LongTensor`.

Если модель *не* является моделью типа «кодировщик-декодировщик» (`model.config.is_encoder_decoder=False`), возможные типы [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput):

- [GenerateDecoderOnlyOutput](/docs/transformers/main/ru/internal/generation_utils#transformers.generation.GenerateDecoderOnlyOutput),
- [GenerateBeamDecoderOnlyOutput](/docs/transformers/main/ru/internal/generation_utils#transformers.generation.GenerateBeamDecoderOnlyOutput)

Если модель является моделью с кодировщиком-декодировщиком (`model.config.is_encoder_decoder=True`), возможные типы [ModelOutput](/docs/transformers/main/ru/main_classes/output#transformers.utils.ModelOutput):

- [GenerateEncoderDecoderOutput](/docs/transformers/main/ru/internal/generation_utils#transformers.generation.GenerateEncoderDecoderOutput),
- [GenerateBeamEncoderDecoderOutput](/docs/transformers/main/ru/internal/generation_utils#transformers.generation.GenerateBeamEncoderDecoderOutput)

Генерирует последовательности идентификаторов токенов для моделей с заголовком языкового моделирования.

Большинство параметров, управляющих генерацией, задаются в `generation_config`, который, если не передан явно, принимает значение конфигурации генерации по умолчанию для модели. Вы можете переопределить любые параметры `generation_config`, передав соответствующие аргументы в generate(), например, `.generate(inputs, num_beams=4, do_sample=True)`.

Для обзора стратегий генерации и примеров кода см. [следующее руководство](../generation_strategies).

