Transformers documentation

Nemotron 3 Diarization

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo fue aportado a Hugging Face Transformers el 2026-09-23.

Nemotron 3 Diarization

Resumen

Nemotron 3 Diarization es un modelo de diarización de hablantes en streaming con pesos abiertos, diseñado para determinar “quién habló cuándo” en audio del mundo real. Admite inferencia tanto en streaming como offline, maneja hasta ocho hablantes y ordena las salidas de los hablantes según la primera aparición de cada uno en el audio de entrada.

El modelo utiliza la Arrival-Order Speaker Cache (AOSC) 1 y la cola FIFO introducidas para Streaming Sortformer 1, 2. Un único checkpoint admite perfiles de latencia configurables, desde un búfer de entrada de 80 ms hasta un búfer de 30,4 s de estilo offline, y una resolución de fotogramas de salida configurables en múltiplos de 10 ms. Con la inferencia por bloques, la duración máxima del audio no está limitada.

Uso

Offline

import torch
from transformers import AutoModelForAudioFrameClassification, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "nvidia/Nemotron-3-Diarization"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")

sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/diarization_example.mp3",
    sampling_rate=sampling_rate,
)
inputs = processor(audio, sampling_rate=sampling_rate).to(model.device, dtype=model.dtype)

with torch.inference_mode():
    logits = model(**inputs).logits  # (1, num_frames, 8), one frame every 10 ms

segments = processor.extract_speaker_dict(logits, inputs.attention_mask)[0]
for segment in segments:
    print(f"speaker_{segment['Speaker']}: {segment['Start']:.2f}s - {segment['End']:.2f}s")

Streaming

El audio llega por fragmentos y cada paso de adelante procesa un fragmento: el procesador lo recorta para su streaming_mode y agrega num_lookahead_frames, el número de cuadros de anticipación finales a los que el modelo presta atención pero no puntúa, ya que abren el siguiente fragmento. El paso de adelante devuelve el speaker_cache para pasarlo a la siguiente llamada. El último fragmento de una sesión se extrae con is_last_audio_chunk=True: no tiene anticipación, por lo que se puntúa cada cuadro restante.

streaming_modeLatencia¹
"low_latency" (predeterminado)1.04 s
"very_low_latency"0.64 s
"ultra_low_latency"0.32 s

¹ Audio que se debe esperar antes de que el modelo se ejecute en un fragmento: el fragmento más su anticipación, excluyendo el tiempo de cómputo.

import torch
from transformers import AutoModelForAudioFrameClassification, AutoProcessor
from transformers.audio_utils import load_audio

model_id = "nvidia/Nemotron-3-Diarization"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")
processor.set_streaming_mode("low_latency")  # the default, can also be "very_low_latency" and "ultra_low_latency"
print(f"Streaming latency: {processor.streaming_latency_ms} ms")

sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/diarization_example.mp3",
    sampling_rate=sampling_rate,
)


def inputs_generator():
    """Yields the processor outputs of each chunk."""
    yield processor(
        audio[: processor.num_samples_first_audio_chunk],
        sampling_rate=sampling_rate,
        is_streaming=True,
        is_first_audio_chunk=True,
    )

    mel_frame_idx = processor.num_mel_frames_per_step
    start_idx = processor.audio_chunk_start(mel_frame_idx)
    while (end_idx := start_idx + processor.num_samples_per_audio_chunk) <= audio.shape[0]:
        yield processor(
            audio[start_idx:end_idx],
            sampling_rate=sampling_rate,
            is_streaming=True,
            is_first_audio_chunk=False,
        )
        mel_frame_idx += processor.num_mel_frames_per_step
        start_idx = processor.audio_chunk_start(mel_frame_idx)

    # the audio ended: the frames left in the buffer are the last ones of the session
    yield processor(
        audio[start_idx:],
        sampling_rate=sampling_rate,
        is_streaming=True,
        is_first_audio_chunk=False,
        is_last_audio_chunk=True,
    )


speaker_cache, logits = None, []
with torch.inference_mode():
    for inputs in inputs_generator():
        inputs = inputs.to(model.device, dtype=model.dtype)
        # `inputs` carries `num_lookahead_frames` for every chunk but the last, `speaker_cache` links the chunks
        outputs = model(**inputs, speaker_cache=speaker_cache)
        logits.append(outputs.logits)  # the chunk's frames, without its look-ahead
        speaker_cache = outputs.speaker_cache

logits = torch.cat(logits, dim=1)  # (1, num_frames, 8), one frame every 10 ms
segments = processor.extract_speaker_dict(logits)[0]  # [{"Start": 0.0, "End": 15.43, "Speaker": 0}, ...]

Hacer que funcione a toda velocidad

La entrada del codificador de un paso de streaming es [speaker cache | FIFO | chunk], cuya longitud cambia a medida que la caché y la FIFO se llenan y se vacían: torch.compile volvería a compilar unas cien veces por sesión. Rellenar cada paso hasta la ventana más grande del modo fija la forma. Las posiciones se reinician en cero en cada chunk, por lo que el relleno a la derecha no cambia los cuadros válidos:

import torch.nn.functional as F

chunk_length, chunk_right_context = processor.streaming_modes[processor.streaming_mode]
max_window = (
    model.config.streaming_config.speaker_cache_length
    + model.config.streaming_config.fifo_length
    + chunk_length
    + chunk_right_context
)
encoder = model.model
compiled_forward = torch.compile(encoder.forward, mode="reduce-overhead", fullgraph=True, dynamic=False)


def padded_forward(inputs_embeds, attention_mask=None, position_ids=None, **kwargs):
    batch_size, num_frames, _ = inputs_embeds.shape
    if attention_mask is None:
        attention_mask = inputs_embeds.new_ones(batch_size, num_frames, dtype=torch.bool)
    padding = max_window - num_frames
    hidden_states = compiled_forward(
        inputs_embeds=F.pad(inputs_embeds, (0, 0, 0, padding)),
        attention_mask=F.pad(attention_mask.bool(), (0, padding), value=False),
        position_ids=torch.arange(max_window, device=inputs_embeds.device)[None, :],
        **kwargs,
    )
    return hidden_states[:, :num_frames].clone()  # CUDA graphs reuse the output buffer


encoder.forward = padded_forward

# warm up before the session: compiles, then records the CUDA graph, so the first real chunk runs at full speed
with torch.inference_mode():
    for _ in range(3):
        hidden_size = model.config.audio_config.hidden_size
        padded_forward(torch.zeros(1, max_window, hidden_size, device=model.device, dtype=model.dtype))

El bucle de streaming anterior se compila una sola vez. El paso en línea fuera de línea fragmenta de la misma manera, por lo que el mismo envoltorio se aplica con config.fifo_length, config.chunk_left_context, config.chunk_length y config.chunk_right_context en max_window.

Aceleración frente a eager (A100, tamaño de lote 1)float32bfloat16
streaming, por paso1.2x4.4x
offline, grabación de 488 s1.3x2.8x

Nemotron3DiarizationConfig

clase transformers.Nemotron3DiarizationConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneaudio_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationAudioConfig | dict | None = Nonehead_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationHeadConfig | dict | None = Nonestreaming_config: transformers.models.nemotron3_diarization.configuration_nemotron3_diarization.Nemotron3DiarizationStreamingConfig | dict | None = Nonechunk_length: int = 340chunk_right_context: int = 40chunk_left_context: int = 0fifo_length: int = 40speaker_cache_update_period: int = 300initializer_range: float = 0.02 )

Parámetros

  • audio_config (Nemotron3DiarizationAudioConfig o dict, opcional) — Configuración del codificador de audio del transformer. El valor predeterminado es Nemotron3DiarizationAudioConfig().
  • head_config (Nemotron3DiarizationHeadConfig o dict, opcional) — Configuración de la cabeza de hablante. El valor predeterminado es Nemotron3DiarizationHeadConfig().
  • streaming_config (Nemotron3DiarizationStreamingConfig o dict, opcional) — Política de caché de hablantes y tamaños FIFO del modo de streaming. El valor predeterminado es Nemotron3DiarizationStreamingConfig().
  • chunk_length (int, opcional, valor predeterminado 340) — Modo sin conexión: número de fotogramas del codificador por bloque cuando se realiza la diarización de una grabación completa en una sola pasada. En modo de transmisión, el bloque es la entrada de cada pasada.
  • chunk_right_context (int, opcional, valor predeterminado 40) — Modo sin conexión: número de fotogramas del codificador de anticipación que cada fragmento toma de los siguientes. En el modo de transmisión la anticipación es num_lookahead_frames de cada paso hacia adelante.
  • chunk_left_context (int, opcional, valor predeterminado 0) — Modo offline: número de fotogramas de codificador de contexto previo que cada fragmento vuelve a tomar de los anteriores, insertados entre los fotogramas en caché y el fragmento. Al igual que el contexto futuro, se les presta atención pero no se les puntúa ni se envían a la cola FIFO. En modo streaming, el contexto previo es num_lookback_frames de cada paso de inferencia.
  • fifo_length (int, opcional, valor predeterminado 40) — Modo sin conexión: capacidad de la cola FIFO de los fotogramas de codificador más recientes. El modo de transmisión en directo utiliza streaming_config.fifo_length.
  • speaker_cache_update_period (int, opcional, valor predeterminado 300) — Modo sin conexión: número de fotogramas del codificador que se mueven de la cola FIFO a la caché del hablante cuando la cola se desborda. El modo de transmisión utiliza streaming_config.speaker_cache_update_period.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.

Esta es la clase de configuración para almacenar la configuración de un Nemotron3DiarizationModel. Se utiliza para instanciar un modelo de diarización Nemotron3 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de nvidia/Nemotron-3-Diarization

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Nemotron3DiarizationAudioConfig

clase transformers.Nemotron3DiarizationAudioConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 512intermediate_size: int = 2048num_hidden_layers: int = 31num_attention_heads: int = 8num_key_value_heads: int | None = Nonehidden_act: str = 'gelu'max_position_embeddings: int = 5000initializer_range: float = 0.02rope_parameters: dict | None = Noneattention_dropout: float | int = 0.0num_mel_bins: int = 128subsampling_factor: int = 8 )

Parámetros

  • hidden_size (int, opcional, valor predeterminado 512) — Dimensión de las representaciones ocultas.
  • intermediate_size (int, opcional, valor predeterminado 2048) — Dimensión de las representaciones del MLP.
  • num_hidden_layers (int, opcional, valor predeterminado 31) — Número de capas ocultas en el decodificador Transformer.
  • num_attention_heads (int, opcional, valor predeterminado 8) — Número de cabezas de atención para cada capa de atención en el decodificador Transformer.
  • num_key_value_heads (int, opcional) — Este es el número de cabezas de key_value que se deben utilizar para implementar Grouped Query Attention. Si num_key_value_heads=num_attention_heads, el modelo utilizará Multi Head Attention (MHA); si num_key_value_heads=1, el modelo utilizará Multi Query Attention (MQA); en caso contrario, se utilizará GQA. Al convertir un checkpoint multi-head en un checkpoint GQA, cada cabeza de key y value del grupo debe construirse mediante el promedio (meanpooling) de todas las cabezas originales dentro de ese grupo. Para más detalles, consulta este artículo. Si no se especifica, el valor predeterminado será num_attention_heads.
  • hidden_act (str, opcional, valor predeterminado gelu) — La función de activación no lineal (función o cadena) en el decodificador. Por ejemplo, "gelu", "relu", "silu", etc.
  • max_position_embeddings (int, opcional, valor predeterminado 5000) — La longitud máxima de secuencia con la que se podría utilizar este modelo.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • rope_parameters (dict, opcional) — Diccionario que contiene los parámetros de configuración para las incrustaciones RoPE. El diccionario debe contener un valor para rope_theta y, opcionalmente, los parámetros utilizados para el escalado en caso de que desee usar RoPE con max_position_embeddings más largos.
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las probabilidades de atención.
  • num_mel_bins (int, opcional, valor predeterminado 128) — Número de características mel utilizadas por cada cuadro de entrada. Debe corresponder al valor utilizado en la clase AutoFeatureExtractor.
  • subsampling_factor (int, opcional, valor predeterminado 8) — Número de fotogramas consecutivos del espectrograma apilados en un fotograma del codificador. El clasificador realiza una interpolación ascendente de sus salidas con el mismo factor, por lo que la actividad del hablante se predice a la tasa de fotogramas del espectrograma.

Esta es la clase de configuración para almacenar la configuración de un Nemotron3DiarizationModel. Se utiliza para instanciar un modelo de diarización Nemotron3 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de nvidia/Nemotron-3-Diarization

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Nemotron3DiarizationHeadConfig

clase transformers.Nemotron3DiarizationHeadConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 192num_speakers: int = 8audio_hidden_size: int = 512subsampling_factor: int = 8 )

Parámetros

  • hidden_size (int, opcional, valor predeterminado 192) — Tamaño oculto de la cabecera del hablante: la salida del codificador se proyecta a este tamaño, y el amplificador y el clasificador lo mantienen.
  • num_speakers (int, opcional, valor predeterminado 8) — Número máximo de hablantes, es decir, el número de salidas de actividad por cuadro. Los hablantes se ordenan según su primera aparición en el audio.
  • audio_hidden_size (int, opcional, valor predeterminado 512) — Tamaño oculto de la salida del codificador desde la cual proyecta la cabeza. Debe coincidir con Nemotron3DiarizationAudioConfig.hidden_size.
  • subsampling_factor (int, opcional, valor predeterminado 8) — Factor de interpolación de la cabecera, de vuelta a la tasa de fotogramas del espectrograma. Debe coincidir con Nemotron3DiarizationAudioConfig.subsampling_factor.

Esta es la clase de configuración para almacenar la configuración de un Nemotron3DiarizationModel. Se utiliza para instanciar un modelo de diarización Nemotron3 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de nvidia/Nemotron-3-Diarization

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Nemotron3DiarizationStreamingConfig

clase transformers.Nemotron3DiarizationStreamingConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonefifo_length: int = 264speaker_cache_update_period: int = 222speaker_cache_length: int = 264speaker_cache_silence_frames_per_speaker: int = 1prediction_score_threshold: float = 0.25latest_frames_score_boost: float = 0.05strong_boost_rate: float = 0.75weak_boost_rate: float = 1.5min_positive_scores_rate: float = 0.5num_speakers: int = 8subsampling_factor: int = 8 )

Parámetros

  • fifo_length (int, opcional, valor predeterminado 264) — Capacidad de la cola FIFO de los fotogramas más recientes del codificador en modo de transmisión (el modo sin conexión utiliza Nemotron3DiarizationConfig.fifo_length).
  • speaker_cache_update_period (int, opcional, valor predeterminado 222) — Número de fotogramas del codificador que se trasladan de la cola FIFO a la caché del hablante cuando la cola se desborda, en modo de transmisión (el modo sin conexión utiliza Nemotron3DiarizationConfig.speaker_cache_update_period).
  • speaker_cache_length (int, opcional, valor predeterminado 264) — Capacidad de la Arrival-Order Speaker Cache. Debe ser al menos (1 + speaker_cache_silence_frames_per_speaker) * num_speakers.
  • speaker_cache_silence_frames_per_speaker (int, opcional, valor predeterminado 1) — Número de espacios de la caché de hablantes por hablante reservados para el incrustado de silencio aprendido cuando la caché se comprime.
  • prediction_score_threshold (float, opcional, valor predeterminado 0.25) — Límite inferior de las probabilidades del hablante antes de tomar su logaritmo en las puntuaciones de los marcos de la caché del hablante.
  • latest_frames_score_boost (float, opcional, valor predeterminado 0.05) — Bono de puntuación otorgado a los fotogramas recién añadidos a la caché del hablante cuando esta se comprime.
  • strong_boost_rate (float, opcional, valor predeterminado 0.75) — Fracción del presupuesto de caché por orador cuyos mejores fotogramas reciben un aumento fuerte de puntuación, de modo que cada orador mantiene al menos ese número de fotogramas en la caché.
  • weak_boost_rate (float, opcional, valor predeterminado 1.5) — Fracción del presupuesto de caché por orador cuyos mejores fotogramas reciben un aumento débil de puntuación, lo que impide que un solo orador domine la caché.
  • min_positive_scores_rate (float, opcional, valor predeterminado 0.5) — Fracción del presupuesto de caché por hablante: un hablante con al menos ese número de frames con puntuación positiva tiene sus frames no positivos (habla superpuesta) excluidos de la caché.
  • num_speakers (int, opcional, valor predeterminado 8) — Número de habladores que sigue la caché de habladores. Debe coincidir con Nemotron3DiarizationHeadConfig.num_speakers.
  • subsampling_factor (int, opcional, valor predeterminado 8) — Número de fotogramas de probabilidad de hablante por fotograma del codificador. Debe coincidir con Nemotron3DiarizationAudioConfig.subsampling_factor.

Esta es la clase de configuración para almacenar la configuración de un Nemotron3DiarizationModel. Se utiliza para instanciar un modelo de diarización Nemotron3 según los argumentos especificados, definiendo la arquitectura del modelo. Instanciar una configuración con los valores predeterminados producirá una configuración similar a la de nvidia/Nemotron-3-Diarization

Los objetos de configuración heredan de PreTrainedConfig y se pueden usar para controlar las salidas del modelo. Lea la documentación de PreTrainedConfig para obtener más información.

Nemotron3DiarizationAudioModel

clase transformers.Nemotron3DiarizationAudioModel

< >

( config: Nemotron3DiarizationAudioConfig )

Parámetros

  • config (Nemotron3DiarizationAudioConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo de diarización Nemotron3 sin procesar, que genera estados ocultos crudos sin ninguna cabeza específica en la parte superior.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

Parámetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim), opcional) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando NemotronAsrStreamingFeatureExtractor. Consulte NemotronAsrStreamingFeatureExtractor.__call__() para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios).
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • position_ids (torch.Tensor de forma (batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango [0, config.n_positions - 1].

    ¿Qué son los IDs de posición?

Devuelve

BaseModelOutput o tuple(torch.Tensor)

Un BaseModelOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (Nemotron3DiarizationConfig) y las entradas.

El método forward del Nemotron3DiarizationAudioModel sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.

  • hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.

  • attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Nemotron3DiarizationModel

clase transformers.Nemotron3DiarizationModel

< >

( config: Nemotron3DiarizationConfig )

Parámetros

  • config (Nemotron3DiarizationConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

El modelo Nemotron3Diarization sin el clasificador de hablantes: codifica un fragmento (con sus fotogramas en caché) y reinterpola los fotogramas del codificador a la tasa de fotogramas del espectrograma. No mantiene ningún estado de transmisión; consulte Nemotron3DiarizationForAudioFrameClassification para la propagación por fragmentos.

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.Tensor)

Parámetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim), opcional) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando NemotronAsrStreamingFeatureExtractor. Consulte NemotronAsrStreamingFeatureExtractor.__call__() para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios).
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • position_ids (torch.Tensor de forma (batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango [0, config.n_positions - 1].

    ¿Qué son los IDs de posición?

Devuelve

BaseModelOutput o tuple(torch.Tensor)

Un BaseModelOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (Nemotron3DiarizationConfig) y las entradas.

El método forward de Nemotron3DiarizationModel reemplaza el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.

  • hidden_states (tuple(torch.Tensor), opcional, devuelto cuando se pasa output_hidden_states=True o cuando config.output_hidden_states=True) — Tupla de torch.Tensor (una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.

  • attentions (tuple(torch.Tensor), opcional, se devuelve cuando se pasa output_attentions=True o cuando config.output_attentions=True) — Tupla de torch.Tensor (una por cada capa) de forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.

Nemotron3DiarizationProcessor

clase transformers.Nemotron3DiarizationProcessor

< >

( feature_extractorsubsampling_factor = 8streaming_modes = Nonestreaming_mode = 'low_latency' )

Parámetros

  • feature_extractor (NemotronAsrStreamingFeatureExtractor) — El extractor de características es una entrada obligatoria.
  • subsampling_factor (int, opcional, valor predeterminado 8) — Número de cuadros mel por cuadro del codificador, que refleja Nemotron3DiarizationAudioConfig.subsampling_factor.
  • streaming_modes (dict[str, tuple[int, int]], opcional) — Modos de streaming que admite el checkpoint, de nombre a (chunk_length, chunk_right_context) en fotogramas del codificador. El procesador es la única fuente de verdad para este conjunto: set_streaming_mode() lo valida contra él. Por defecto, los modos de la tarjeta del modelo, "low_latency" (9, 4), "very_low_latency" (6, 2) y "ultra_low_latency" (3, 1).
  • streaming_mode (str, opcional, valor predeterminado "low_latency") — Modo de streaming de las sesiones, uno de streaming_modes; cámbielo con set_streaming_mode(). El uso sin conexión lo ignora.

Construye un Nemotron3DiarizationProcessor que envuelve un extractor de características en un único procesador.

Nemotron3DiarizationProcessor ofrece todas las funcionalidades de NemotronAsrStreamingFeatureExtractor. Consulte ~NemotronAsrStreamingFeatureExtractor para obtener más información.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]sampling_rate: int | None = Noneis_streaming: bool = Falseis_first_audio_chunk: bool = Trueis_last_audio_chunk: bool = False**kwargs: *<class 'transformers.models.nemotron3_diarization.processing_nemotron3_diarization.Nemotron3DiarizationProcessorKwargs'> ) → BatchFeature

Parámetros

  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]) — El audio o lote de audios que se va a preparar. Cada audio puede ser un array de NumPy o un tensor de PyTorch. En el caso de un array de NumPy/tensor de PyTorch, cada audio debe tener la forma (C, T), donde C es el número de canales y T es la longitud de la muestra del audio.
  • sampling_rate (int, opcional) — La tasa de muestreo del audio de entrada en Hz. Se valida contra la tasa de muestreo esperada por el extractor de características (16000 Hz) cuando se proporciona.
  • is_streaming (bool, opcional, valor predeterminado False) — Indica si el audio es un fragmento de una sesión de streaming, donde is_first_audio_chunk y is_last_audio_chunk identifican el primer y el último fragmento, respectivamente. Los tamaños de los fragmentos son los de streaming_mode, que se modifican con set_streaming_mode(). Cada fragmento, excepto el último, debe contener exactamente num_samples_first_audio_chunk muestras de audio en el caso del primero y num_samples_per_audio_chunk en los posteriores.
  • is_first_audio_chunk (bool, opcional, valor predeterminado True) — Indica si este es el primer fragmento de una sesión de streaming. El extractor de características centra las ventanas de análisis (center=True) para el primer fragmento y para el uso sin streaming, y no lo hace (center=False) para los fragmentos posteriores, de modo que el espectrograma por fragmento reproduzca, cuadro a cuadro, una única pasada de la frase completa. Debe ser True cuando is_streaming=False.
  • is_last_audio_chunk (bool, opcional, valor predeterminado False) — Indica si este fragmento finaliza la sesión de streaming. Un fragmento de una sesión termina con marcos del codificador de contexto de antelación chunk_right_context que el modelo puntúa solo en el siguiente paso y con los que comienza su siguiente fragmento. El último fragmento no tiene un siguiente paso, por lo que todos sus marcos se puntúan, independientemente de su número, y su final se rellena con ceros de la misma manera que una pasada de enunciado completo rellena el final del audio, de modo que produzca los últimos marcos del enunciado. Debe ser False cuando is_streaming=False.
  • return_tensors (str o TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:
    • 'pt': Devuelve objetos torch.Tensor de PyTorch.
    • 'np': Devuelve objetos np.ndarray de NumPy.
  • **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.

Devuelve

BatchFeature

las salidas del extractor de características, input_features y attention_mask. En el modo de transmisión, se descartan los fotogramas finales cuya ventana de análisis se extiende más allá de un bloque que no sea el último, por lo que input_features contiene exactamente los fotogramas del bloque y puede pasarse al modelo tal cual, y todos los bloques excepto el último también incluyen num_lookahead_frames, el número de sus fotogramas finales de anticipación del codificador, lo que pone al modelo en modo de transmisión.

Nemotron3DiarizationSpeakerCache

clase transformers.Nemotron3DiarizationSpeakerCache

< >

( config: Nemotron3DiarizationStreamingConfigfifo_length: int | None = Nonespeaker_cache_update_period: int | None = None )

Parámetros

  • config (Nemotron3DiarizationStreamingConfig) — Política de caché de hablantes y tamaños FIFO del modo de streaming.
  • fifo_length (int, opcional) — Capacidad de la cola FIFO de los fotogramas de codificador más recientes. El valor predeterminado es config.fifo_length.
  • speaker_cache_update_period (int, opcional) — Número de fotogramas del codificador que se mueven de la cola FIFO a la caché del hablante cuando la cola se desborda. El valor predeterminado es config.speaker_cache_update_period.

Estado de streaming de Nemotron3DiarizationForAudioFrameClassification: la Caché de Oradores por Orden de Llegada y la cola FIFO de los marcos de codificador más recientes, a los que atiende cada fragmento.

actualizar

< >

( chunk_input_embeds: Tensorchunk_logits: Tensorsilence_embeds: Tensornum_chunk_frames: intmask: typing.Optional[torch.Tensor] = Nonenum_lookback_frames: int = 0 )

Parámetros

  • chunk_input_embeds (torch.Tensor de forma (batch_size, num_input_frames, hidden_size)) — Entrada del codificador del paso: los fotogramas en caché devueltos por get_embeds, los fotogramas de retroceso, el bloque y su anticipación.
  • chunk_logits (torch.Tensor de forma (batch_size, num_input_frames * subsampling_factor, num_speakers)) — Logits de los hablantes del paso, utilizados para puntuar los fotogramas cuando la caché de hablantes se comprime.
  • silence_embeds (torch.Tensor de forma (hidden_size,)) — Incrustado de silencio aprendido que rellena los espacios de silencio reservados de una caché comprimida.
  • num_chunk_frames (int) — Número de fotogramas de bloque que siguen a los fotogramas en caché y de retroceso en chunk_input_embeds. Solo estos se unen a la cola FIFO: los fotogramas de anticipación que los siguen se vuelven a alimentar en el siguiente paso.
  • mask (torch.Tensor de forma (batch_size, num_input_frames), opcional) — Marcos válidos de chunk_input_embeds, cuyos marcos de relleno se asignan una probabilidad de hablante cero.
  • num_lookback_frames (int, opcional, valor predeterminado 0) — Número de fotogramas de retroceso entre los fotogramas en caché y el bloque en chunk_input_embeds: fotogramas del bloque anterior que se vuelven a enviar, ya empujados con él.

Envía un fragmento procesado a la cola FIFO, moviendo sus fotogramas más antiguos a la caché del altavoz cuando se desborda.

Nemotron3DiarizationOutput

clase transformers.Nemotron3DiarizationOutput

< >

( logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Nonespeaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = None )

Parámetros

  • logits (torch.Tensor de forma (batch_size, num_frames, config.head_config.num_speakers)) — Logits de actividad de hablantes por cuadro a la tasa de cuadros del espectrograma. logits.sigmoid() da la probabilidad de que cada hablante esté activo en cada cuadro; los hablantes se ordenan por su primera aparición en el audio.
  • hidden_states (tuple[torch.Tensor, ...], opcional, se devuelve cuando output_hidden_states=True) — Estados ocultos del codificador de cada fragmento, en orden de fragmento: el codificador se ejecuta una vez por fragmento, por lo que la tupla contiene config.audio_config.num_hidden_layers + 1 tensores por fragmento. Su longitud de secuencia es la del fragmento, incluidas las marcos de caché y de anticipación.
  • attentions (tuple[torch.Tensor, ...], opcional, se devuelve cuando output_attentions=True) — Pesos de atención del codificador de cada fragmento, en orden de fragmentos, config.audio_config.num_hidden_layers tensores por fragmento.
  • speaker_cache (Nemotron3DiarizationSpeakerCache, opcional, devuelto en modo de transmisión) — Estado de transmisión actualizado, para pasarlo al forward del siguiente fragmento de audio de los mismos flujos.

Salida de Nemotron3DiarizationForAudioFrameClassification.

Nemotron3DiarizationForAudioFrameClassification

clase transformers.Nemotron3DiarizationForAudioFrameClassification

< >

( config: Nemotron3DiarizationConfig )

Parámetros

  • config (Nemotron3DiarizationConfig) — Clase de configuración del modelo con todos los parámetros del modelo. Inicializar con un archivo de configuración no carga los pesos asociados con el modelo, solo la configuración. Consulte el método from_pretrained() para cargar los pesos del modelo.

Modelo de diarización de hablantes Streaming Sortformer: predice, para cada cuadro del espectrograma, la actividad de hasta config.head_config.num_speakers hablantes ordenados por su llegada inicial. El audio se procesa por bloques, donde cada bloque atiende a unos pocos cuadros de anticipación y a la Arrival-Order Speaker Cache y a la cola FIFO que se transportan en una Nemotron3DiarizationSpeakerCache. Una grabación completa se divide en bloques mediante el propio forward (modo offline); un flujo se alimenta con un bloque por forward (modo streaming).

Este modelo hereda de PreTrainedModel. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos sus modelos (como la descarga o el guardado, el redimensionamiento de las incrustaciones de entrada, la poda de cabezas, etc.).

Este modelo también es una subclase de torch.nn.Module de PyTorch. Úsalo como un módulo de PyTorch regular y consulta la documentación de PyTorch para todo lo relacionado con el uso y el comportamiento generales.

forward

< >

( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonespeaker_cache: transformers.models.nemotron3_diarization.modeling_nemotron3_diarization.Nemotron3DiarizationSpeakerCache | None = Nonenum_lookahead_frames: int | None = Nonenum_lookback_frames: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Nemotron3DiarizationOutput or tuple(torch.Tensor)

Parámetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim)) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando NemotronAsrStreamingFeatureExtractor. Consulte NemotronAsrStreamingFeatureExtractor.__call__() para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios).
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

    ¿Qué son las máscaras de atención?

  • speaker_cache (Nemotron3DiarizationSpeakerCache, opcional) — Estado de streaming devuelto por el forward del fragmento anterior de los mismos flujos de audio.
  • num_lookahead_frames (int, opcional) — Modo de streaming: número de cuadros del codificador al final de la entrada que son solo de anticipación (look-ahead). Se les presta atención, pero no se devuelven sus logits y no se incorporan a la cola FIFO, ya que abren el siguiente bloque. Nemotron3DiarizationProcessor lo establece para cada bloque excepto el último de una sesión.

    Estos argumentos y num_lookback_frames seleccionan el modo. Modo de streaming, un bloque por pasada: num_lookahead_frames o num_lookback_frames dados (un primer bloque crea la speaker_cache, los bloques posteriores la reciben), o speaker_cache dado por sí solo (el último bloque de la sesión, sin anticipación). La entrada menos sus marcos de retroceso y anticipación es un bloque, sea cual sea su longitud, que se envía completo a la cola FIFO dimensionada por config.streaming_config. Modo offline, ninguno dado: la entrada es una grabación completa, dividida por la pasada en bloques de config.chunk_length marcos del codificador que toman hasta config.chunk_left_context marcos de retroceso de los anteriores y hasta config.chunk_right_context marcos de anticipación de los siguientes, con una cola FIFO dimensionada por config.fifo_length; no se devuelve ninguna caché.

  • num_lookback_frames (int, opcional) — Modo de streaming: número de fotogramas iniciales del codificador de la entrada que son solo de look-back, el final del bloque anterior que se vuelve a alimentar antes de este, además de los fotogramas de speaker_cache. Se les presta atención, pero no se devuelven sus logits y no vuelven a unirse a la cola FIFO. El valor predeterminado es 0.

Devuelve

Nemotron3DiarizationOutput o tuple(torch.Tensor)

Un Nemotron3DiarizationOutput o una tupla de torch.Tensor (si se pasa return_dict=False o cuando config.return_dict=False) que comprende varios elementos según la configuración (Nemotron3DiarizationConfig) y las entradas.

El método forward de Nemotron3DiarizationForAudioFrameClassification sobrescribe el método especial __call__.

Aunque la receta para la pasada hacia adelante debe definirse dentro de esta función, se debe llamar a la instancia de Module después en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.

  • logits (torch.Tensor de forma (batch_size, num_frames, config.head_config.num_speakers)) — Logits de actividad de hablantes por cuadro a la tasa de cuadros del espectrograma. logits.sigmoid() da la probabilidad de que cada hablante esté activo en cada cuadro; los hablantes se ordenan por su primera aparición en el audio.
  • hidden_states (tuple[torch.Tensor, ...], opcional, se devuelve cuando output_hidden_states=True) — Estados ocultos del codificador de cada fragmento, en orden de fragmento: el codificador se ejecuta una vez por fragmento, por lo que la tupla contiene config.audio_config.num_hidden_layers + 1 tensores por fragmento. Su longitud de secuencia es la del fragmento, incluidos los marcos de caché y de anticipación.
  • attentions (tuple[torch.Tensor, ...], opcional, se devuelve cuando output_attentions=True) — Pesos de atención del codificador de cada fragmento, en orden de fragmentos, config.audio_config.num_hidden_layers tensores por fragmento.
  • speaker_cache (Nemotron3DiarizationSpeakerCache, opcional, devuelto en modo de transmisión) — Estado de transmisión actualizado, para pasarlo al forward del siguiente fragmento de audio de los mismos flujos.

Ejemplo:

>>> from transformers import AutoModelForAudioFrameClassification, AutoProcessor
>>> from transformers.audio_utils import load_audio

>>> model_id = "nvidia/Nemotron-3-Diarization"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = AutoModelForAudioFrameClassification.from_pretrained(model_id, device_map="auto")

>>> sampling_rate = processor.feature_extractor.sampling_rate
>>> audio = load_audio(
...     "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/en-Alice_woman.wav",
...     sampling_rate=sampling_rate,
... )
>>> inputs = processor(audio, sampling_rate=sampling_rate).to(model.device, dtype=model.dtype)
>>> probabilities = model(**inputs).logits.sigmoid()  # (1, num_frames, 8), one frame every 10 ms
Update on GitHub