Transformers documentation
Nemotron 3 Diarization
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_mode | Latencia¹ |
|---|---|
"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) | float32 | bfloat16 |
|---|---|---|
| streaming, por paso | 1.2x | 4.4x |
| offline, grabación de 488 s | 1.3x | 2.8x |
Nemotron3DiarizationConfig
clase transformers.Nemotron3DiarizationConfig
< source >( 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 (
Nemotron3DiarizationAudioConfigodict, opcional) — Configuración del codificador de audio del transformer. El valor predeterminado esNemotron3DiarizationAudioConfig(). - head_config (
Nemotron3DiarizationHeadConfigodict, opcional) — Configuración de la cabeza de hablante. El valor predeterminado esNemotron3DiarizationHeadConfig(). - streaming_config (
Nemotron3DiarizationStreamingConfigodict, opcional) — Política de caché de hablantes y tamaños FIFO del modo de streaming. El valor predeterminado esNemotron3DiarizationStreamingConfig(). - 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 esnum_lookahead_framesde 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 esnum_lookback_framesde 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 utilizastreaming_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 utilizastreaming_config.speaker_cache_update_period. - initializer_range (
float, opcional, valor predeterminado0.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
< source >( 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 predeterminado512) — Dimensión de las representaciones ocultas. - intermediate_size (
int, opcional, valor predeterminado2048) — Dimensión de las representaciones del MLP. - num_hidden_layers (
int, opcional, valor predeterminado31) — Número de capas ocultas en el decodificador Transformer. - num_attention_heads (
int, opcional, valor predeterminado8) — 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. Sinum_key_value_heads=num_attention_heads, el modelo utilizará Multi Head Attention (MHA); sinum_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 predeterminadogelu) — 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 predeterminado5000) — La longitud máxima de secuencia con la que se podría utilizar este modelo. - initializer_range (
float, opcional, valor predeterminado0.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 pararope_thetay, opcionalmente, los parámetros utilizados para el escalado en caso de que desee usar RoPE conmax_position_embeddingsmás largos. - attention_dropout (
Union[float, int], opcional, valor predeterminado0.0) — La proporción de dropout para las probabilidades de atención. - num_mel_bins (
int, opcional, valor predeterminado128) — Número de características mel utilizadas por cada cuadro de entrada. Debe corresponder al valor utilizado en la claseAutoFeatureExtractor. - 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
< source >( 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 conNemotron3DiarizationAudioConfig.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 conNemotron3DiarizationAudioConfig.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
< source >( 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 utilizaNemotron3DiarizationConfig.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 utilizaNemotron3DiarizationConfig.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 conNemotron3DiarizationHeadConfig.num_speakers. - subsampling_factor (
int, opcional, valor predeterminado 8) — Número de fotogramas de probabilidad de hablante por fotograma del codificador. Debe coincidir conNemotron3DiarizationAudioConfig.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
< source >( 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
< source >( 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.Tensorde 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. ConsulteNemotronAsrStreamingFeatureExtractor.__call__()para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios). - attention_mask (
torch.Tensorde 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.
- inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - position_ids (
torch.Tensorde 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].
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
Moduledespué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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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
< source >( 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.Tensorde 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. ConsulteNemotronAsrStreamingFeatureExtractor.__call__()para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios). - attention_mask (
torch.Tensorde 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.
- inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - position_ids (
torch.Tensorde 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].
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
Moduledespué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.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.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 pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.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
< source >( 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 reflejaNemotron3DiarizationAudioConfig.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 destreaming_modes; cámbielo conset_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__
< source >( 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 predeterminadoFalse) — Indica si el audio es un fragmento de una sesión de streaming, dondeis_first_audio_chunkyis_last_audio_chunkidentifican el primer y el último fragmento, respectivamente. Los tamaños de los fragmentos son los destreaming_mode, que se modifican conset_streaming_mode(). Cada fragmento, excepto el último, debe contener exactamentenum_samples_first_audio_chunkmuestras de audio en el caso del primero ynum_samples_per_audio_chunken los posteriores. - is_first_audio_chunk (
bool, opcional, valor predeterminadoTrue) — 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 serTruecuandois_streaming=False. - is_last_audio_chunk (
bool, opcional, valor predeterminadoFalse) — 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ónchunk_right_contextque 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 serFalsecuandois_streaming=False. - return_tensors (
stro TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde 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
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
< source >( 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 esconfig.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 esconfig.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
< source >( 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.Tensorde forma(batch_size, num_input_frames, hidden_size)) — Entrada del codificador del paso: los fotogramas en caché devueltos porget_embeds, los fotogramas de retroceso, el bloque y su anticipación. - chunk_logits (
torch.Tensorde 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.Tensorde 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 enchunk_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.Tensorde forma(batch_size, num_input_frames), opcional) — Marcos válidos dechunk_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 enchunk_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
< source >( 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.Tensorde 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 cuandooutput_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 contieneconfig.audio_config.num_hidden_layers + 1tensores 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 cuandooutput_attentions=True) — Pesos de atención del codificador de cada fragmento, en orden de fragmentos,config.audio_config.num_hidden_layerstensores 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.
Nemotron3DiarizationForAudioFrameClassification
clase transformers.Nemotron3DiarizationForAudioFrameClassification
< source >( 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
< source >( 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.Tensorde 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. ConsulteNemotronAsrStreamingFeatureExtractor.__call__()para más detalles (Nemotron3DiarizationProcessor utiliza NemotronAsrStreamingFeatureExtractor para procesar audios). - attention_mask (
torch.Tensorde 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.
- 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_framesseleccionan el modo. Modo de streaming, un bloque por pasada:num_lookahead_framesonum_lookback_framesdados (un primer bloque crea laspeaker_cache, los bloques posteriores la reciben), ospeaker_cachedado 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 porconfig.streaming_config. Modo offline, ninguno dado: la entrada es una grabación completa, dividida por la pasada en bloques deconfig.chunk_lengthmarcos del codificador que toman hastaconfig.chunk_left_contextmarcos de retroceso de los anteriores y hastaconfig.chunk_right_contextmarcos de anticipación de los siguientes, con una cola FIFO dimensionada porconfig.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 despeaker_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
Moduledespué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.Tensorde 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 cuandooutput_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 contieneconfig.audio_config.num_hidden_layers + 1tensores 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 cuandooutput_attentions=True) — Pesos de atención del codificador de cada fragmento, en orden de fragmentos,config.audio_config.num_hidden_layerstensores 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