Transformers documentation
Nemotron 3.5 ASR
Ce modèle a été contribué à Hugging Face Transformers le 2026-06-27.
Nemotron 3.5 ASR
Aperçu
Nemotron 3.5 ASR est un modèle de reconnaissance vocale multilingue de 600 millions de paramètres développé par NVIDIA, conçu pour une transcription de haute qualité dans des configurations à faible latence en flux continu et à haut débit par lots, avec une ponctuation et une majuscule natives. Pour le flux continu, il propose des tailles de blocs configurables—80 ms, 160 ms, 560 ms et 1120 ms—permettant aux utilisateurs d'ajuster le compromis entre latence et précision selon leur application. Son architecture FastConformer-RNNT sensible au cache est au cœur de cette capacité : contrairement au flux continu par tampon traditionnel, qui re-traite de manière répétée des fenêtres audio superposées, le modèle ne traite que chaque nouveau bloc entrant tout en réutilisant le contexte encodeur mis en cache des blocs précédents. Cela élimine les calculs redondants, améliore considérablement l'efficacité et minimise la latence de bout en bout sans sacrifier la précision, ce qui le rend particulièrement adapté aux charges de travail de transcription en temps réel.
Utilisation
Transcription hors ligne
from transformers import pipeline
pipe = pipeline(
"automatic-speech-recognition",
model="nvidia/nemotron-3.5-asr-streaming-0.6b",
)
out = pipe("https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3")
print(out)Le pipeline utilise le prompt de langue par défaut (index 0,
en-US). Pour un conditionnement explicite de la langue ou une détection automatique, passez l'argumentlanguagedu processeur (voir l'onglet AutoModel).
Le prompt de langage est créé par le processeur, de sorte que le langage voyage avec les entrées jusqu'à generate.
from transformers import AutoModelForRNNT, AutoProcessor
from transformers.audio_utils import load_audio
model_id = "nvidia/nemotron-3.5-asr-streaming-0.6b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForRNNT.from_pretrained(model_id, device_map="auto")
audio = load_audio(
"https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3",
sampling_rate=processor.feature_extractor.sampling_rate,
)
# Condition on a known language ...
inputs = processor(audio, sampling_rate=processor.feature_extractor.sampling_rate, language="en-US")
inputs.to(model.device, dtype=model.dtype)
output = model.generate(**inputs, return_dict_in_generate=True)
print(processor.decode(output.sequences, skip_special_tokens=True))
# ... or let the model detect it and keep the emitted <xx-XX> language tag.
inputs = processor(audio, sampling_rate=processor.feature_extractor.sampling_rate) # equiv to ..., language="auto"
inputs.to(model.device, dtype=model.dtype)
output = model.generate(**inputs, return_dict_in_generate=True)
print(processor.decode(output.sequences, skip_special_tokens=False))Transcription en streaming
Il s'agit d'une fonctionnalité expérimentale et l'API est susceptible d'évoluer.
Pour la transcription en temps réel, l’audio est découpé en segments selon :
from threading import Thread
from transformers import AutoModelForRNNT, AutoProcessor, TextIteratorStreamer
from transformers.audio_utils import load_audio
model_id = "nvidia/nemotron-3.5-asr-streaming-0.6b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForRNNT.from_pretrained(model_id, device_map="auto")
processor.set_num_lookahead_tokens(6)
print(f"Streaming latency: {processor.streaming_latency_ms} ms")
# The language prompt rides along on every chunk; use a locale (e.g. "de-DE") or "auto".
language = "en-US"
sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
"https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/obama.mp3",
sampling_rate=sampling_rate,
)
first_chunk_inputs = processor(
audio[: processor.num_samples_first_audio_chunk],
sampling_rate=sampling_rate,
is_streaming=True,
is_first_audio_chunk=True,
language=language,
return_tensors="pt",
)
first_chunk_inputs = first_chunk_inputs.to(model.device, dtype=model.dtype)
def input_features_generator():
yield first_chunk_inputs.input_features[:, : processor.num_mel_frames_first_audio_chunk, :]
mel_frame_idx = processor.num_mel_frames_first_audio_chunk
hop_length = processor.feature_extractor.hop_length
n_fft = processor.feature_extractor.n_fft
start_idx = mel_frame_idx * hop_length - n_fft // 2
while (end_idx := start_idx + processor.num_samples_per_audio_chunk) < audio.shape[0]:
inputs = processor(
audio[start_idx:end_idx],
sampling_rate=sampling_rate,
is_streaming=True,
is_first_audio_chunk=False,
language=language,
return_tensors="pt",
)
inputs = inputs.to(model.device, dtype=model.dtype)
yield inputs.input_features
mel_frame_idx += processor.num_mel_frames_per_audio_chunk
start_idx = mel_frame_idx * hop_length - n_fft // 2
streamer = TextIteratorStreamer(processor.tokenizer, skip_special_tokens=True)
generate_kwargs = {
**first_chunk_inputs,
"input_features": input_features_generator(),
"streamer": streamer,
}
thread = Thread(target=model.generate, kwargs=generate_kwargs)
thread.start()
# Iterate over the streamer to get text chunks as they are generated
print("Model output (streaming):", end=" ", flush=True)
for text_chunk in streamer:
print(text_chunk, end="", flush=True)
thread.join()Latence de streaming
La latence est définie par num_lookahead_tokens, le contexte d’attention adéquat (lookahead, dans les trames d’encodeur sous-échantillonnées) que chaque bloc attend avant d’être émis. Une valeur plus élevée permet à chaque bloc de voir plus d’audio futur : meilleure précision au prix d’une latence plus élevée. Inspectez les compromis pris en charge, sélectionnez-en un, puis lisez la latence résultante :
from transformers import AutoProcessor
processor = AutoProcessor.from_pretrained("nvidia/nemotron-3.5-asr-streaming-0.6b")
# Each supported `num_lookahead_tokens` mapped to its streaming latency in milliseconds:
print(processor.supported_streaming_latencies_ms)
# {3: 320, 0: 80, 6: 560, 13: 1120}
# Select a right attention context (this also re-derives the streaming chunk sizes used above):
processor.set_num_lookahead_tokens(6)
# Latency of the current selection:
print(processor.streaming_latency_ms)
# 560set_num_lookahead_tokens détermine la taille des blocs émis par le processeur, et le num_lookahead_tokens correspondant doit parvenir à generate (dans l’exemple ci-dessus, il transite par **inputs/**first_chunk_inputs, qui transporte num_lookahead_tokens). Le generate en streaming lève une erreur s’il est omis.
Nemotron3_5AsrConfig
classe transformers.Nemotron3_5AsrConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 13088decoder_hidden_size: int = 640num_decoder_layers: int = 2hidden_act: str = 'relu'max_symbols_per_step: int = 10encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepad_token_id: int = 0blank_token_id: int = 13087num_prompts: int = 128prompt_intermediate_size: int = 2048default_prompt_id: int = 101 )
Paramètres
- is_encoder_decoder (
bool, facultatif, valeur par défautTrue) — Indique si le modèle est utilisé comme encodeur/décodeur ou non. - vocab_size (
int, facultatif, par défaut 13088) — Taille du vocabulaire de la sortie du réseau conjoint (y compris le jeton vide). - decoder_hidden_size (
int, facultatif, valeur par défaut 640) — Taille cachée du réseau de prédiction LSTM (pred_hiddende NeMo). - num_decoder_layers (
int, facultatif, valeur par défaut 2) — Nombre de couches LSTM dans le réseau de prédiction. - hidden_act (
str, facultatif, par défaut"relu") — Fonction d'activation dans le réseau conjoint. - max_symbols_per_step (
int, facultatif, valeur par défaut 10) — Nombre maximal de symboles non vides émis par pas de temps de l’encodeur lors du décodage glouton. - encoder_config (
Union[dict, NemotronAsrStreamingEncoderConfig], facultatif) — L’objet de configuration ou le dictionnaire de l’encodeur. Réutilise directement NemotronAsrStreamingEncoderConfig, puisque l’encodeur est identique à celui deNemotronAsrStreaming. - pad_token_id (
int, facultatif, par défaut0) — Identifiant du jeton utilisé pour le bourrage dans le vocabulaire. - blank_token_id (
int, facultatif, valeur par défaut 13087) — Identifiant du jeton vide pour le décodage RNN-T. - num_prompts (
int, facultatif, valeur par défaut 128) — Nombre de slots de prompts de langue. La langue cible est encodée sous forme de vecteur one-hot de cette taille, diffusée sur l’axe temporel de l’encodeur et concaténée avec la sortie de l’encodeur avant le MLP de fusionprompt_kernel. - prompt_intermediate_size (
int, facultatif, par défaut 2048) — Taille cachée du MLP de fusionprompt_kernel(Linear(hidden + num_prompts -> intermediate) -> ReLU -> Linear(intermediate -> hidden)). - default_prompt_id (
int, facultatif, par défaut 101) — Index de prompt utilisé pour conditionner le modèle lorsqueprompt_idsn’est pas fourni. Par défaut, il correspond à l’emplacement de détection de langueauto(index 101 dans le dictionnaire de prompts NeMo), ce qui est cohérent avec la valeur par défaut de NeMo,target_lang="auto": le modèle détecte lui-même la langue et émet un tag<xx-XX>.
Ceci est la classe de configuration destinée à stocker la configuration d'un Nemotron3_5AsrForRNNT. Elle est utilisée pour instancier un modèle Nemotron 3.5 Asr 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.5-asr-streaming-0.6b
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.
Nemotron3_5AsrProcessor
classe transformers.Nemotron3_5AsrProcessor
< source >( feature_extractortokenizerblank_token = '<blank>'decoder_type = Nonesupported_num_lookahead_tokens = Nonedefault_num_lookahead_tokens = Noneprompt_dictionary = Nonenum_prompts = 128 )
Paramètres
- feature_extractor (
NemotronAsrStreamingFeatureExtractor) — L'extracteur de caractéristiques est une entrée obligatoire. - tokenizer (
ParakeetTokenizer) — Le tokenizer est une entrée obligatoire. - blank_token (
str, facultatif, par défaut"<blank>") — Jeton vide pour le décodage RNN-T. - decoder_type (
str, facultatif) — Mode de décodage/émission des horodatages (par ex."ctc","rnnt","tdt"). SiNone, le type de décodeur est inféré automatiquement pour la compatibilité ascendante. - supported_num_lookahead_tokens (
list[int], facultatif) — Contextes d'attention à droite pris en charge (lookaheads, dans les trames d'encodeur sous-échantillonnées), reflétantNemotronAsrStreamingEncoderConfig.supported_num_lookahead_tokens. Utilisé pour validerstreaming_latency_mset pour dériver lenum_lookahead_tokensrenvoyé. - default_num_lookahead_tokens (
int, facultatif) — Le contexte droit utilisé lorsquestreaming_latency_msn’est pas fourni. Par défaut, il s’agit de la première entrée desupported_num_lookahead_tokens. - prompt_dictionary (
dict[str, int], facultatif) — Correspondance entre une chaîne de caractères de langue cible (par ex."en-US","de-DE", le code seul"de", ou"auto") et son index de prompt. Par défaut, le dictionnaire de prompts du point de contrôle NeMo est utilisé. - num_prompts (
int, facultatif, valeur par défaut 128) — Nombre de slots de prompts de langue (taille du vecteur one-hot de prompt), reflétantNemotron3_5AsrConfig.num_prompts.
Construit un Nemotron3_5AsrProcessor qui encapsule un extracteur de caractéristiques et un tokenizer en un seul processeur.
Nemotron3_5AsrProcessor offre toutes les fonctionnalités de NemotronAsrStreamingFeatureExtractor et de ParakeetTokenizer. Consultez ~NemotronAsrStreamingFeatureExtractor et ~ParakeetTokenizer pour plus d’informations.
Transmet les arguments à decode() et post-traite les horodatages au niveau des jetons (si durations sont fournis), comme dans la bibliothèque NeMo.
Sélectionnez le contexte d'attention approprié (anticipation, dans les trames d'encodeur sous-échantillonnées) utilisé pour le streaming.
Définit default_num_lookahead_tokens, de sorte que chaque propriété de streaming dérivée (num_mel_frames_first_audio_chunk, num_mel_frames_per_audio_chunk, num_samples_first_audio_chunk, num_samples_per_audio_chunk) est recalculée à partir de la nouvelle valeur. num_lookahead_tokens doit être l'un des éléments de supported_num_lookahead_tokens.
Transmettez la même valeur de num_lookahead_tokens à model.generate afin que le contexte droit de l’attention utilisé dans le forward corresponde aux tailles de blocs produites ici ; sinon, le generate en streaming lève une erreur.
Nemotron3_5AsrRNNTOutput
classe transformers.Nemotron3_5AsrRNNTOutput
< source >( last_hidden_state: typing.Optional[torch.Tensor] = Nonepooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneloss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = Nonedecoder_cache: transformers.models.nemotron3_5_asr.generation_nemotron3_5_asr.Nemotron3_5AsrRNNTDecoderCache | None = Noneencoder_past_key_values: transformers.cache_utils.Cache | None = Nonepadding_cache: NemotronAsrStreamingEncoderCausalConvPaddingCache | None = None )
Paramètres
- 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. - pooler_output (
torch.Tensorde forme(batch_size, hidden_size)) — État caché de la dernière couche du premier jeton de la séquence (jeton de classification) après un traitement supplémentaire à travers les couches utilisées pour la tâche de pré-entraînement auxiliaire. Par exemple, pour les modèles de la famille BERT, cela renvoie le jeton de classification après traitement à travers une couche linéaire et une fonction d'activation tanh. Les poids de la couche linéaire sont entraînés à partir de l'objectif de prédiction de la phrase suivante (classification) pendant le pré-entraînement. - 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.
- loss (
torch.Tensor, facultatif, renvoyé lorsquelabelsest fourni) — Perte du transducteur RNN-T. - logits (
torch.Tensorde forme(batch_size, encoder_length, decoder_length, vocab_size + 1)) — Scores du réseau conjoint sur le vocabulaire plus le symbole vide, pour chaque paire de trames encodeur/décodeur. - decoder_cache (
Nemotron3_5AsrRNNTDecoderCache, facultatif) — Mise à jour du cache LSTM du décodeur. Réutilisé lors des prédictions vides pour passer l’étape LSTM. - encoder_past_key_values (
Cache, facultatif) — Mise à jour du cache de fenêtre glissante des K/V de l’attention de l’encodeur, renvoyée lors de l’encodage d’audio avecuse_cache=True(streaming conscient du cache). À transmettre au forward du prochain fragment. - padding_cache (
NemotronAsrStreamingEncoderCausalConvPaddingCache, facultatif) — Mise à jour du cache de convolution unifié pour le streaming (Conv2d de sous-échantillonnage + Conv1d en profondeur du conformer), renvoyé lors de l’encodage audio avecuse_cache=True. À transmettre au forward du chunk suivant.
Nemotron3_5AsrForRNNT
classe transformers.Nemotron3_5AsrForRNNT
< source >( config: Nemotron3_5AsrConfig )
Paramètres
- config (Nemotron3_5AsrConfig) — 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.
Encodeur Nemotron3_5Asr avec une tête RNN-T (Recurrent Neural Network Transducer) et un conditionnement par prompt d'identification de la langue.
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] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_cache: transformers.models.nemotron3_5_asr.generation_nemotron3_5_asr.Nemotron3_5AsrRNNTDecoderCache | None = Noneuse_decoder_cache: bool | None = Noneencoder_outputs: transformers.modeling_outputs.BaseModelOutputWithPooling | None = Nonelabels: typing.Optional[torch.Tensor] = Nonenum_lookahead_tokens: int | None = Noneprompt_ids: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Nemotron3_5AsrRNNTOutput 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 defeature_extractor_class. Consultezfeature_extractor_class.__call__pour plus de détails (processor_classutilisefeature_extractor_classpour 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.
- decoder_input_ids (
torch.LongTensorde forme(batch_size, 1), facultatif) — Identifiants des jetons d’entrée du décodeur pour une inférence en une étape. - decoder_cache (
Nemotron3_5AsrRNNTDecoderCache, facultatif) — Cache du LSTM du décodeur. Réutilisé lors des prédictions vides pour passer l’étape du LSTM. - use_decoder_cache (
bool, facultatif) — Indique s'il faut allouer et utiliser un cache de décodeur lorsqu'aucun n'est fourni. - encoder_outputs (
tuple(torch.Tensor), facultatif) — Sorties de l’encodeur précalculées (last_hidden_state, pooler_output, …). - labels (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Étiquettes pour le calcul de la perte de modélisation de langage masquée. Les indices doivent être dans[0, ..., config.vocab_size]ou -100 (voir la docstring deinput_ids). Les jetons dont l'indice est défini sur-100sont ignorés (masqués), la perte n'est calculée que pour les jetons dont l'étiquette est dans[0, ..., config.vocab_size]. - num_lookahead_tokens (
int, facultatif) — Contexte d'attention à droite (lookahead, en trames d'encodeur sous-échantillonnées) transmis à l'encodeur. Valeur par défaut :config.encoder_config.default_num_lookahead_tokens. - prompt_ids (
torch.LongTensorde forme(batch_size,), facultatif) — Indices de prompt de langue pour le conditionnement par identifiant de langue. Générés par le processeur à partir delanguage. Convertis en one-hot diffusé, consommé parprompt_projector.
Retourne
Nemotron3_5AsrRNNTOutput ou tuple(torch.Tensor)
Un Nemotron3_5AsrRNNTOutput 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 (None) et des entrées.
La méthode forward de Nemotron3_5AsrForRNNT 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.pooler_output (
torch.Tensorde forme(batch_size, hidden_size)) — État caché de la dernière couche du premier jeton de la séquence (jeton de classification) après un traitement supplémentaire par les couches utilisées pour la tâche de pré-entraînement auxiliaire. Par exemple, pour les modèles de la famille BERT, cela renvoie le jeton de classification après traitement par une couche linéaire et une fonction d'activation tanh. Les poids de la couche linéaire sont entraînés à partir de l'objectif de prédiction de la phrase suivante (classification) pendant le pré-entraînement.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.
loss (
torch.Tensor, facultatif, renvoyé lorsquelabelsest fourni) — Perte du transducteur RNN-T.logits (
torch.Tensorde forme(batch_size, encoder_length, decoder_length, vocab_size + 1)) — Scores du réseau conjoint sur le vocabulaire plus le symbole vide, pour chaque paire de trames encodeur/décodeur.decoder_cache (
Nemotron3_5AsrRNNTDecoderCache, facultatif) — Cache LSTM du décodeur mis à jour. Réutilisé lors des prédictions vides pour passer l’étape LSTM.encoder_past_key_values (
Cache, facultatif) — Mise à jour du cache de fenêtre glissante des K/V de l’attention de l’encodeur, renvoyée lors de l’encodage d’audio avecuse_cache=True(streaming conscient du cache). À transmettre au forward du chunk suivant.padding_cache (
NemotronAsrStreamingEncoderCausalConvPaddingCache, facultatif) — Cache unifié de convolution streaming mis à jour (Conv2d de sous-échantillonnage + Conv1d en profondeur du conformer), renvoyé lors de l’encodage audio avecuse_cache=True. Transmettez-le au forward du chunk suivant.
Exemple :
>>> from transformers import AutoProcessor, Nemotron3_5AsrForRNNT
>>> from datasets import load_dataset, Audio
>>> model_id = "nvidia/nemotron-3.5-asr-streaming-0.6b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = Nemotron3_5AsrForRNNT.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"], language="en-US")
>>> outputs = model(**inputs)