Transformers documentation
Nemotron 3 Diarization
Ce modèle a été contribué à Hugging Face Transformers le 2026-09-23.
Nemotron 3 Diarization
Aperçu
Nemotron 3 Diarization est un modèle de diarisation de locuteurs en flux à poids ouverts, conçu pour déterminer « qui a parlé quand » dans des audio réels. Il prend en charge l’inférence en flux et hors ligne, gère jusqu’à huit locuteurs et ordonne les sorties des locuteurs selon leur première apparition dans l’audio d’entrée.
Le modèle utilise le cache de locuteurs par ordre d’arrivée (AOSC) 1 et la file FIFO introduits pour Streaming Sortformer 1, 2. Un seul point de contrôle prend en charge des profils de latence configurables, allant d’un tampon d’entrée de 80 ms à un tampon de type hors ligne de 30,4 s, ainsi qu’une résolution de trame de sortie configurable par multiples de 10 ms. Avec une inférence par blocs, la durée maximale de l’audio n’est pas limitée.
Utilisation
Hors ligne
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
L’audio arrive par morceaux, et chaque appel de forward en traite un : le processeur le découpe pour son streaming_mode et
ajoute num_lookahead_frames, le nombre de frames de lookahead en fin de morceau auxquelles le modèle prête attention mais qu’il ne note pas, car
elles ouvrent le morceau suivant. Le forward renvoie le speaker_cache à transmettre à l’appel suivant. Le dernier morceau d’une
session est extrait avec is_last_audio_chunk=True : il n’a pas de lookahead, donc chaque frame restante est notée.
streaming_mode | Latence¹ |
|---|---|
"low_latency" (par défaut) | 1.04 s |
"very_low_latency" | 0.64 s |
"ultra_low_latency" | 0.32 s |
¹ Audio à attendre avant que le modèle ne s'exécute sur un fragment : le fragment plus son anticipation, en excluant le temps de calcul.
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}, ...]Faire tourner ça à plein régime
L’entrée de l’encodeur d’une étape de streaming est [speaker cache | FIFO | chunk], dont la longueur varie au fur et à mesure que le cache et le FIFO se remplissent et se vident : torch.compile recompilerait environ une centaine de fois par session. Rembourrer chaque étape jusqu’à la plus grande fenêtre du mode fixe la forme. Les positions repartent de zéro à chaque chunk, de sorte que le rembourrage à droite ne modifie pas les trames valides :
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))La boucle de streaming ci-dessus est alors compilée une seule fois. Le passage avant hors ligne effectue le même fractionnement, de sorte que le même wrapper s’applique avec config.fifo_length, config.chunk_left_context, config.chunk_length et config.chunk_right_context dans max_window.
| Accélération par rapport à l'exécution immédiate (A100, taille de lot 1) | float32 | bfloat16 |
|---|---|---|
| streaming, par étape | 1.2x | 4.4x |
| hors ligne, enregistrement de 488 s | 1.3x | 2.8x |
Nemotron3DiarizationConfig
classe 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 )
Paramètres
- audio_config (
Nemotron3DiarizationAudioConfigoudict, facultatif) — Configuration de l'encodeur audio du transformer. Par défaut,Nemotron3DiarizationAudioConfig(). - head_config (
Nemotron3DiarizationHeadConfigoudict, facultatif) — Configuration de la tête de locuteur. Par défaut,Nemotron3DiarizationHeadConfig(). - streaming_config (
Nemotron3DiarizationStreamingConfigoudict, facultatif) — Politique de cache des locuteurs et tailles des files FIFO du mode streaming. Valeur par défaut :Nemotron3DiarizationStreamingConfig(). - chunk_length (
int, facultatif, valeur par défaut 340) — Mode hors ligne : nombre de trames d’encodeur par bloc lorsqu’un enregistrement complet est traité en une seule passe avant. En mode streaming, le bloc correspond à l’entrée de chaque passe avant. - chunk_right_context (
int, facultatif, valeur par défaut 40) — Mode hors ligne : nombre de trames encodeur en avance que chaque bloc prend dans les blocs suivants. En mode streaming, l'avance est denum_lookahead_framespour chaque passe avant. - chunk_left_context (
int, facultatif, valeur par défaut 0) — Mode hors ligne : nombre de trames encodeur de retour en arrière que chaque bloc reprend des blocs précédents, insérées entre les trames mises en cache et le bloc. Comme le retour en avant, elles sont prises en compte mais ne sont ni notées ni poussées dans la file FIFO. En mode streaming, le retour en arrière estnum_lookback_framesde chaque passe avant. - fifo_length (
int, facultatif, valeur par défaut 40) — Mode hors ligne : capacité de la file FIFO des trames encodeur les plus récentes. Le mode en continu utilisestreaming_config.fifo_length. - speaker_cache_update_period (
int, facultatif, valeur par défaut 300) — Mode hors ligne : nombre de trames d’encodeur déplacées de la file FIFO vers le cache de locuteur lorsque la file déborde. Le mode en flux utilisestreaming_config.speaker_cache_update_period. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids.
Ceci est la classe de configuration destinée à stocker la configuration d'un Nemotron3DiarizationModel. Elle est utilisée pour instancier un modèle de diarisation Nemotron3 en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de nvidia/Nemotron-3-Diarization
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Nemotron3DiarizationAudioConfig
classe 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 )
Paramètres
- hidden_size (
int, facultatif, par défaut512) — Dimension des représentations cachées. - intermediate_size (
int, facultatif, par défaut2048) — Dimension des représentations du MLP. - num_hidden_layers (
int, facultatif, par défaut31) — Nombre de couches cachées dans le décodeur Transformer. - num_attention_heads (
int, facultatif, valeur par défaut8) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer. - num_key_value_heads (
int, facultatif) — Ceci est le nombre de têtes key_value à utiliser pour implémenter la Grouped Query Attention. Sinum_key_value_heads=num_attention_heads, le modèle utilisera la Multi Head Attention (MHA), sinum_key_value_heads=1le modèle utilisera la Multi Query Attention (MQA), sinon la GQA est utilisée. Lors de la conversion d'un checkpoint multi-têtes en checkpoint GQA, chaque tête clé et valeur de groupe doit être construite par moyennage (meanpooling) de toutes les têtes d'origine au sein de ce groupe. Pour plus de détails, consultez ce papier. S'il n'est pas spécifié, la valeur par défaut estnum_attention_heads. - hidden_act (
str, facultatif, par défautgelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple,"gelu","relu","silu", etc. - max_position_embeddings (
int, facultatif, par défaut5000) — La longueur de séquence maximale avec laquelle ce modèle pourrait être utilisé. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids. - rope_parameters (
dict, facultatif) — Dictionnaire contenant les paramètres de configuration des embeddings RoPE. Le dictionnaire doit contenir une valeur pourrope_thetaet, le cas échéant, les paramètres utilisés pour le mise à l’échelle si vous souhaitez utiliser RoPE avec desmax_position_embeddingsplus longs. - attention_dropout (
Union[float, int], facultatif, valeur par défaut0.0) — Le taux de dropout appliqué aux probabilités d'attention. - num_mel_bins (
int, facultatif, par défaut128) — Nombre de caractéristiques mel utilisées par trame d’entrée. Doit correspondre à la valeur utilisée dans la classeAutoFeatureExtractor. - subsampling_factor (
int, facultatif, valeur par défaut 8) — Nombre de trames consécutives du spectrogramme empilées en une trame d’encodeur. Le classifieur effectue un suréchantillonnage de ses sorties avec le même facteur, de sorte que l’activité des locuteurs est prédite à la fréquence des trames du spectrogramme.
Ceci est la classe de configuration destinée à stocker la configuration d'un Nemotron3DiarizationModel. Elle est utilisée pour instancier un modèle de diarisation Nemotron3 en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de nvidia/Nemotron-3-Diarization
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Nemotron3DiarizationHeadConfig
classe 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 )
Paramètres
- hidden_size (
int, facultatif, par défaut 192) — Taille cachée de la tête du locuteur : la sortie de l'encodeur est projetée sur cette taille, et l'upsampler et le classifieur la conservent. - num_speakers (
int, facultatif, valeur par défaut 8) — Nombre maximal d’orateurs, c’est-à-dire le nombre de sorties d’activité par trame. Les orateurs sont ordonnés selon leur première apparition dans l’audio. - audio_hidden_size (
int, facultatif, valeur par défaut 512) — Taille cachée de la sortie de l'encodeur à partir de laquelle la tête projette. Doit correspondre àNemotron3DiarizationAudioConfig.hidden_size. - subsampling_factor (
int, facultatif, valeur par défaut 8) — Facteur de suréchantillonnage de la tête, pour revenir au taux d'échantillonnage du spectrogramme. Doit correspondre àNemotron3DiarizationAudioConfig.subsampling_factor.
Ceci est la classe de configuration destinée à stocker la configuration d'un Nemotron3DiarizationModel. Elle est utilisée pour instancier un modèle de diarisation Nemotron3 en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de nvidia/Nemotron-3-Diarization
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Nemotron3DiarizationStreamingConfig
classe 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 )
Paramètres
- fifo_length (
int, facultatif, valeur par défaut 264) — Capacité de la file FIFO des trames encodeur les plus récentes en mode streaming (le mode hors ligne utiliseNemotron3DiarizationConfig.fifo_length). - speaker_cache_update_period (
int, facultatif, valeur par défaut 222) — Nombre de trames encodeur déplacées de la file FIFO vers le cache locuteur lorsque la file déborde, en mode streaming (le mode hors ligne utiliseNemotron3DiarizationConfig.speaker_cache_update_period). - speaker_cache_length (
int, facultatif, valeur par défaut 264) — Capacité du cache Arrival-Order Speaker. Doit être au moins(1 + speaker_cache_silence_frames_per_speaker) * num_speakers. - speaker_cache_silence_frames_per_speaker (
int, facultatif, valeur par défaut : 1) — Nombre d’emplacements de cache par locuteur réservés à l’embedding de silence appris lorsque le cache est compressé. - prediction_score_threshold (
float, facultatif, valeur par défaut 0,25) — Limite inférieure des probabilités des locuteurs avant de prendre leur logarithme dans les scores des trames du cache des locuteurs. - latest_frames_score_boost (
float, facultatif, valeur par défaut 0.05) — Bonus de score accordé aux frames nouvellement ajoutées au cache du locuteur lors de sa compression. - strong_boost_rate (
float, facultatif, valeur par défaut 0,75) — Fraction du budget de cache par locuteur dont les meilleures images reçoivent un renforcement de score important, afin que chaque locuteur conserve au moins ce nombre d’images dans le cache. - weak_boost_rate (
float, facultatif, valeur par défaut 1.5) — Fraction du budget de cache par locuteur dont les meilleures images reçoivent un bonus de score faible, ce qui empêche un locuteur de dominer le cache. - min_positive_scores_rate (
float, facultatif, valeur par défaut 0.5) — Fraction du budget de cache par locuteur : un locuteur ayant au moins ce nombre de frames positivement notés a ses frames non positifs (parole superposée) exclus du cache. - num_speakers (
int, facultatif, valeur par défaut 8) — Nombre d’orateurs suivis par le cache d’orateurs. Doit correspondre àNemotron3DiarizationHeadConfig.num_speakers. - subsampling_factor (
int, facultatif, valeur par défaut 8) — Nombre de trames de probabilité de locuteur par trame d’encodeur. Doit correspondre àNemotron3DiarizationAudioConfig.subsampling_factor.
Ceci est la classe de configuration destinée à stocker la configuration d'un Nemotron3DiarizationModel. Elle est utilisée pour instancier un modèle de diarisation Nemotron3 en fonction des arguments spécifiés, définissant ainsi l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de nvidia/Nemotron-3-Diarization
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Nemotron3DiarizationAudioModel
classe transformers.Nemotron3DiarizationAudioModel
< source >( config: Nemotron3DiarizationAudioConfig )
Paramètres
- config (Nemotron3DiarizationAudioConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle de diarisation Nemotron3 brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
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)
Paramètres
- input_features (
torch.Tensorde forme(batch_size, sequence_length, feature_dim), facultatif) — Les tenseurs correspondant aux caractéristiques audio d’entrée. Les caractéristiques audio peuvent être obtenues à l’aide de NemotronAsrStreamingFeatureExtractor. VoirNemotronAsrStreamingFeatureExtractor.__call__()pour plus de détails (Nemotron3DiarizationProcessor utilise NemotronAsrStreamingFeatureExtractor pour le traitement des audios). - attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle. - position_ids (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.n_positions - 1].
Retourne
BaseModelOutput ou tuple(torch.Tensor)
Un BaseModelOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (Nemotron3DiarizationConfig) et des entrées.
La méthode forward du modèle Nemotron3DiarizationAudioModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
last_hidden_state (
torch.Tensorde forme(batch_size, sequence_length, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du modèle.hidden_states (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
Nemotron3DiarizationModel
classe transformers.Nemotron3DiarizationModel
< source >( config: Nemotron3DiarizationConfig )
Paramètres
- config (Nemotron3DiarizationConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle Nemotron3Diarization sans le classificateur de locuteurs : encode un bloc (avec ses trames mises en cache) et rééchantillonne les trames de l'encodeur pour revenir au taux de trames du spectrogramme. Il ne conserve aucun état de streaming, voir Nemotron3DiarizationForAudioFrameClassification pour le calcul en avant par blocs.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
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)
Paramètres
- input_features (
torch.Tensorde forme(batch_size, sequence_length, feature_dim), facultatif) — Les tenseurs correspondant aux caractéristiques audio d’entrée. Les caractéristiques audio peuvent être obtenues à l’aide de NemotronAsrStreamingFeatureExtractor. VoirNemotronAsrStreamingFeatureExtractor.__call__()pour plus de détails (Nemotron3DiarizationProcessor utilise NemotronAsrStreamingFeatureExtractor pour le traitement des audios). - attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle. - position_ids (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.n_positions - 1].
Retourne
BaseModelOutput ou tuple(torch.Tensor)
Un BaseModelOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (Nemotron3DiarizationConfig) et des entrées.
La méthode forward du Nemotron3DiarizationModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
last_hidden_state (
torch.Tensorde forme(batch_size, sequence_length, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du modèle.hidden_states (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.Tensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.Tensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.Tensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
Nemotron3DiarizationProcessor
classe transformers.Nemotron3DiarizationProcessor
< source >( feature_extractorsubsampling_factor = 8streaming_modes = Nonestreaming_mode = 'low_latency' )
Paramètres
- feature_extractor (
NemotronAsrStreamingFeatureExtractor) — L'extracteur de caractéristiques est une entrée obligatoire. - subsampling_factor (
int, facultatif, valeur par défaut 8) — Nombre de trames mel par trame d’encodeur, reflétantNemotron3DiarizationAudioConfig.subsampling_factor. - streaming_modes (
dict[str, tuple[int, int]], facultatif) — Modes de streaming pris en charge par le point de contrôle, associant le nom à(chunk_length, chunk_right_context)en trames encodeur. Le processeur est la source unique de vérité pour cet ensemble :set_streaming_mode()valide à son encontre. Par défaut, les modes de la fiche modèle,"low_latency"(9, 4),"very_low_latency"(6, 2) et"ultra_low_latency"(3, 1). - streaming_mode (
str, facultatif, par défaut"low_latency") — Mode de streaming des sessions, l’un desstreaming_modes; modifiable avecset_streaming_mode(). L’utilisation hors ligne l’ignore.
Construit un Nemotron3DiarizationProcessor qui encapsule un extracteur de caractéristiques dans un processeur unique.
Nemotron3DiarizationProcessor offre toutes les fonctionnalités de NemotronAsrStreamingFeatureExtractor. Consultez ~NemotronAsrStreamingFeatureExtractor pour plus d’informations.
__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
Paramètres
- audio (
Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]) — L’audio ou le lot d’audios à préparer. Chaque audio peut être un tableau NumPy ou un tenseur PyTorch. Dans le cas d’un tableau NumPy/tenseur PyTorch, chaque audio doit avoir la forme (C, T), où C est le nombre de canaux et T est la longueur d’échantillonnage de l’audio. - sampling_rate (
int, facultatif) — Fréquence d’échantillonnage de l’audio d’entrée, en Hz. Validée par rapport à la fréquence d’échantillonnage attendue par l’extracteur de caractéristiques (16000 Hz) lorsqu’elle est fournie. - is_streaming (
bool, facultatif, par défautFalse) — Indique si l’audio est un fragment d’une session de streaming,is_first_audio_chunketis_last_audio_chunkpermettant de distinguer le premier et le dernier fragment des autres. Les tailles des fragments sont celles destreaming_mode, modifiables viaset_streaming_mode(). Tout fragment sauf le dernier doit contenir exactementnum_samples_first_audio_chunkéchantillons audio pour le premier, etnum_samples_per_audio_chunkpour les suivants. - is_first_audio_chunk (
bool, facultatif, par défautTrue) — Indique s'il s'agit du premier fragment d'une session de streaming. L'extracteur de caractéristiques centre les fenêtres d'analyse (center=True) pour le premier fragment et pour une utilisation hors ligne, et ne le fait pas (center=False) pour les fragments suivants, afin que le spectrogramme par fragment reproduise, frame par frame, un passage unique sur l'énoncé complet. Doit êtreTruelorsqueis_streaming=False. - is_last_audio_chunk (
bool, facultatif, par défautFalse) — Indique si ce fragment met fin à la session de streaming. Un fragment de session se termine par des trames d’encodeur de contexte avantchunk_right_contextque le modèle évalue uniquement à l’étape suivante, et avec lesquelles son fragment suivant s’ouvre. Le dernier fragment n’a pas d’étape suivante, donc chacune de ses trames est évaluée, quel que soit leur nombre, et sa fin est complétée par des zéros, de la même manière qu’un passage sur une énonciation complète remplit la fin de l’audio, afin de produire les dernières trames de l’énonciation. Doit êtreFalselorsqueis_streaming=False. - return_tensors (
strou TensorType, facultatif) — Si défini, renvoie des tenseurs d'un framework particulier. Les valeurs acceptées sont :'pt': Renvoie des objetstorch.Tensorde PyTorch.'np': Renvoie des objets NumPynp.ndarray.
- **kwargs (ProcessingKwargs, facultatif) — Options de traitement supplémentaires pour chaque modalité (texte, images, vidéos, audio). Les paramètres spécifiques au modèle sont répertoriés ci-dessus ; consultez la classe TypedDict pour la liste complète des arguments pris en charge.
Retourne
les sorties de l’extracteur de caractéristiques, input_features et attention_mask. En mode streaming, les trames de fin dont la fenêtre d’analyse dépasse un chunk autre que le dernier sont supprimées, de sorte que input_features contient exactement les trames du chunk et peut être transmis au modèle tel quel, et chaque chunk sauf le dernier porte également num_lookahead_frames, le nombre de ses trames de prévision de l’encodeur de fin, ce qui place le modèle en mode streaming.
Nemotron3DiarizationSpeakerCache
classe transformers.Nemotron3DiarizationSpeakerCache
< source >( config: Nemotron3DiarizationStreamingConfigfifo_length: int | None = Nonespeaker_cache_update_period: int | None = None )
Paramètres
- config (
Nemotron3DiarizationStreamingConfig) — Politique de cache des locuteurs et tailles des files FIFO du mode streaming. - fifo_length (
int, facultatif) — Capacité de la file FIFO des trames encodeur les plus récentes. Valeur par défaut :config.fifo_length. - speaker_cache_update_period (
int, facultatif) — Nombre de trames encodeur déplacées de la file FIFO vers le cache du locuteur lorsque la file déborde. La valeur par défaut estconfig.speaker_cache_update_period.
État du streaming de Nemotron3DiarizationForAudioFrameClassification : le cache de locuteurs par ordre d’arrivée et la file FIFO des trames encodeur les plus récentes, auxquelles chaque bloc est soumis.
update
< source >( chunk_input_embeds: Tensorchunk_logits: Tensorsilence_embeds: Tensornum_chunk_frames: intmask: typing.Optional[torch.Tensor] = Nonenum_lookback_frames: int = 0 )
Paramètres
- chunk_input_embeds (
torch.Tensorde forme(batch_size, num_input_frames, hidden_size)) — Entrée de l’encodeur de l’étape : les images mises en cache renvoyées parget_embeds, les images de retour en arrière, le bloc et son anticipation. - chunk_logits (
torch.Tensorde forme(batch_size, num_input_frames * subsampling_factor, num_speakers)) — Logits des locuteurs de l'étape, utilisés pour évaluer les images lorsque le cache des locuteurs est compressé. - silence_embeds (
torch.Tensorde forme(hidden_size,)) — Embedding de silence appris, servant à remplir les emplacements de silence réservés d'un cache compressé. - num_chunk_frames (
int) — Nombre de trames de chunk suivant les trames mises en cache et les trames de retour en arrière danschunk_input_embeds. Seules celles-ci rejoignent la file FIFO : les trames de prévision qui les suivent sont à nouveau fournies à l'étape suivante. - mask (
torch.Tensorde forme(batch_size, num_input_frames), facultatif) — Frames valides dechunk_input_embeds, dont les frames de bourrage reçoivent des probabilités de locuteur nulles. - num_lookback_frames (
int, facultatif, valeur par défaut 0) — Nombre de frames de retour en arrière entre les frames mises en cache et le chunk danschunk_input_embeds: frames du chunk précédent renvoyées, déjà poussées avec lui.
Pousse un bloc traité dans la file FIFO, en déplaçant ses trames les plus anciennes vers le cache du haut-parleur en cas de débordement.
Nemotron3DiarizationOutput
classe 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 )
Paramètres
- logits (
torch.Tensorde forme(batch_size, num_frames, config.head_config.num_speakers)) — Logits d'activité des locuteurs par trame, à la fréquence des trames du spectrogramme.logits.sigmoid()donne la probabilité que chaque locuteur soit actif dans chaque trame ; les locuteurs sont ordonnés selon leur première apparition dans l'audio. - hidden_states (
tuple[torch.Tensor, ...], facultatif, renvoyé lorsqueoutput_hidden_states=True) — États cachés de l’encodeur pour chaque bloc, dans l’ordre des blocs : l’encodeur s’exécute une fois par bloc, le tuple contient doncconfig.audio_config.num_hidden_layers + 1tenseurs par bloc. Leur longueur de séquence correspond à celle du bloc, cadres de cache et d’anticipation inclus. - attentions (
tuple[torch.Tensor, ...], facultatif, renvoyé lorsqueoutput_attentions=True) — Pondérations d'attention de l'encodeur pour chaque bloc, dans l'ordre des blocs,config.audio_config.num_hidden_layerstenseurs par bloc. - speaker_cache (
Nemotron3DiarizationSpeakerCache, facultatif, renvoyé en mode streaming) — État de streaming mis à jour, à passer au forward du prochain fragment audio des mêmes flux.
Nemotron3DiarizationForAudioFrameClassification
classe transformers.Nemotron3DiarizationForAudioFrameClassification
< source >( config: Nemotron3DiarizationConfig )
Paramètres
- config (Nemotron3DiarizationConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Modèle de diarisation des locuteurs Streaming Sortformer : prédit, pour chaque trame du spectrogramme, l’activité d’au plus config.head_config.num_speakers locuteurs ordonnés par ordre d’arrivée. L’audio est traité par blocs, chaque bloc portant attention sur quelques trames en avance ainsi que sur le Arrival-Order Speaker Cache et la file FIFO conservés dans un Nemotron3DiarizationSpeakerCache. Un enregistrement complet est découpé en blocs par le forward lui-même (mode hors ligne) ; un flux est alimenté un bloc par forward (mode streaming).
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
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)
Paramètres
- input_features (
torch.Tensorde forme(batch_size, sequence_length, feature_dim)) — Les tenseurs correspondant aux caractéristiques audio d’entrée. Les caractéristiques audio peuvent être obtenues à l’aide de NemotronAsrStreamingFeatureExtractor. ConsultezNemotronAsrStreamingFeatureExtractor.__call__()pour plus de détails (Nemotron3DiarizationProcessor utilise NemotronAsrStreamingFeatureExtractor pour le traitement des audios). - attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- speaker_cache (
Nemotron3DiarizationSpeakerCache, facultatif) — État de streaming renvoyé par le forward du chunk précédent des mêmes flux audio. - num_lookahead_frames (
int, facultatif) — Mode de streaming : nombre de trames encodeur de fin de l'entrée qui ne servent qu'à l'anticipation. Elles sont prises en compte, mais leurs logits ne sont pas renvoyés et elles ne rejoignent pas la file FIFO, car elles ouvrent le prochain bloc. Nemotron3DiarizationProcessor le définit pour chaque bloc sauf le dernier d'une session.Ces arguments et
num_lookback_framessélectionnent le mode. Mode streaming, un bloc par passe avant :num_lookahead_framesounum_lookback_framesest fourni (un premier bloc crée lespeaker_cache, les blocs suivants le reçoivent), ouspeaker_cacheest fourni seul (le dernier bloc de la session, sans anticipation). L’entrée, moins ses cadres de retour arrière et d’anticipation, constitue un bloc, quelle que soit sa longueur, poussé en entier dans la file FIFO dimensionnée parconfig.streaming_config. Mode hors ligne, aucun des deux n’est fourni : l’entrée est un enregistrement complet, découpé par la passe avant en blocs deconfig.chunk_lengthcadres encodeur qui prennent jusqu’àconfig.chunk_left_contextcadres de retour arrière des blocs précédents et jusqu’àconfig.chunk_right_contextcadres d’anticipation des blocs suivants, avec une file FIFO dimensionnée parconfig.fifo_length; aucun cache n’est renvoyé. - num_lookback_frames (
int, facultatif) — Mode streaming : nombre de cadres d’encodeur en tête de l’entrée qui ne servent qu’à la rétrovision, c’est-à-dire la fin du bloc précédent renvoyé avant celui-ci, en plus des cadres despeaker_cache. Ils sont pris en compte, mais leurs logits ne sont pas renvoyés et ils ne rejoignent pas à nouveau la file FIFO. Valeur par défaut : 0.
Retourne
Nemotron3DiarizationOutput ou tuple(torch.Tensor)
Un Nemotron3DiarizationOutput ou un tuple de
torch.Tensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers
éléments en fonction de la configuration (Nemotron3DiarizationConfig) et des entrées.
La méthode forward de Nemotron3DiarizationForAudioFrameClassification redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
- logits (
torch.Tensorde forme(batch_size, num_frames, config.head_config.num_speakers)) — Logits d'activité des locuteurs par image, à la fréquence des images du spectrogramme.logits.sigmoid()donne la probabilité que chaque locuteur soit actif dans chaque image ; les locuteurs sont ordonnés selon leur première apparition dans l'audio. - hidden_states (
tuple[torch.Tensor, ...], facultatif, renvoyé lorsqueoutput_hidden_states=True) — États cachés de l’encodeur pour chaque bloc, dans l’ordre des blocs : l’encodeur s’exécute une fois par bloc, le tuple contient doncconfig.audio_config.num_hidden_layers + 1tenseurs par bloc. Leur longueur de séquence est celle du bloc, cadres de cache et d’anticipation inclus. - attentions (
tuple[torch.Tensor, ...], facultatif, renvoyé lorsqueoutput_attentions=True) — Poids d'attention de l'encodeur pour chaque bloc, dans l'ordre des blocs,config.audio_config.num_hidden_layerstenseurs par bloc. - speaker_cache (
Nemotron3DiarizationSpeakerCache, facultatif, renvoyé en mode streaming) — État de streaming mis à jour, à passer au forward du prochain fragment audio des mêmes flux.
Exemple :
>>> 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