Transformers documentation

Qwen3 ASR

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

and get access to the augmented documentation experience

to get started

Este modelo se publicó en HF papers el 29 de enero de 2026 y se contribuyó a Hugging Face Transformers el 26 de junio de 2026.

Qwen3 ASR

FlashAttention SDPA

Resumen

Qwen3 ASR es un modelo de reconocimiento automático de voz del equipo Qwen de Alibaba que combina un codificador de audio estilo Whisper con un decodificador de modelo de lenguaje Qwen3 para la transcripción de voz a texto. El modelo admite la detección automática de idioma y la transcripción multilingüe.

También se incluye un modelo de alineador forzado. Puede utilizarse para asignar marcas de tiempo a una transcripción y su audio proporcionados. Utiliza el mismo modelo de codificador de audio con una cabeza de clasificación que predice la longitud de una palabra. Este modelo puede usarse con la transcripción de cualquier modelo de ASR (vea el ejemplo a continuación con Parakeet CTC).

Puntos de control disponibles:

Los siguientes idiomas están admitidos:

  • Qwen3-ASR-1.7B y Qwen3-ASR-0.6B: chino (zh), inglés (en), cantonés (yue), árabe (ar), alemán (de), francés (fr), español (es), portugués (pt), indonesio (id), italiano (it), coreano (ko), ruso (ru), tailandés (th), vietnamita (vi), japonés (ja), turco (tr), hindi (hi), malayo (ms), neerlandés (nl), sueco (sv), danés (da), finés (fi), polaco (pl), checo (cs), filipino (fil), persa (fa), griego (el), húngaro (hu), macedonio (mk), rumano (ro).
  • Qwen3-ForcedAligner-0.6B: chino (zh), inglés (en), cantonés (yue), francés (fr), alemán (de), italiano (it), japonés (ja), coreano (ko), portugués (pt), ruso (ru), español (es).

Consulte el repositorio original en QwenLM/Qwen3-ASR y el informe para obtener más detalles.

Este modelo fue aportado por Eric Bezzam y Muhammed Tariq.

Uso

Transcripción simple

La forma más sencilla de transcribir audio es con apply_transcription_request, que gestiona el formato de la plantilla de chat por ti; en concreto, es un envoltorio de conveniencia para apply_chat_template (consulta Plantilla de chat a continuación).

from transformers import AutoProcessor, AutoModelForMultimodalLM

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")
print(f"Model loaded on {model.device} with dtype {model.dtype}")

inputs = processor.apply_transcription_request(
    audio="https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
).to(model.device, model.dtype)

output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]

# Raw output includes language tag and <asr_text> marker
raw = processor.decode(generated_ids)[0]
print(f"Raw: {raw}")

# Parsed output: dict with "language" and "transcription"
parsed = processor.decode(generated_ids, return_format="parsed")[0]
print(f"Parsed: {parsed}")

# Extract only the transcription text
transcription = processor.decode(generated_ids, return_format="transcription_only")[0]
print(f"Transcription: {transcription}")

"""
Raw: language English<asr_text>Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.
Parsed: {'language': 'English', 'transcription': 'Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'}
Transcription: Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.
"""

Forzar el idioma

Puede forzar el idioma de transcripción como se muestra a continuación.

from transformers import AutoProcessor, AutoModelForMultimodalLM

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

# Without language hint (auto-detect)
inputs = processor.apply_transcription_request(
    audio="https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(f"Auto-detect: {processor.decode(generated_ids, return_format='transcription_only')[0]}")

# With forced language
inputs = processor.apply_transcription_request(
    audio="https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
    language="Chinese",  # or language code "zh"
).to(model.device, model.dtype)
output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(f"Forced:      {processor.decode(generated_ids, return_format='transcription_only')[0]}")

Contexto / palabras clave

Puede pasar un contexto libre (por ejemplo, vocabulario específico del dominio, nombres o información de fondo) a través de prompt para sesgar la transcripción.

from transformers import AutoProcessor, AutoModelForMultimodalLM

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

inputs = processor.apply_transcription_request(
    audio="https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
    prompt="Vocabulary: Quilter, apostle, gospel.",
    language="English",
).to(model.device, model.dtype)

output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
print(processor.decode(generated_ids, return_format="transcription_only")[0])

Inferencia por lotes

La inferencia por lotes es posible pasando una lista de audios y, si se proporcionan, una lista de idiomas y/o prompts.

from transformers import AutoProcessor, AutoModelForMultimodalLM

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
audio = [
    "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
]

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, device_map="auto")

inputs = processor.apply_transcription_request(
    audio,
    prompt=["Vocabulary: Quilter, apostle, gospel.", None],
    language=[None, "zh"],  # language codes ("zh") and full names ("Chinese") are both accepted
).to(model.device, model.dtype)

output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
transcriptions = processor.decode(generated_ids, return_format="transcription_only")

for i, text in enumerate(transcriptions):
    print(f"Audio {i + 1}: {text}")

Plantilla de chat

Qwen3 ASR también acepta entradas de plantilla de chat. El uso de apply_transcription_request anterior es un envoltorio de conveniencia para apply_chat_template.

El idioma puede forzarse a través de la plantilla de chat mediante prefill del turno del asistente con language <NAME><asr_text> y pasando continue_final_message=True, que es lo que hace apply_transcription_request internamente. Tenga en cuenta que, si se fuerza el idioma, se debe establecer un prefill para todo el audio de un lote (como se muestra a continuación).

from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3ASRForConditionalGeneration.from_pretrained(model_id, device_map="auto")

chat_template = [
    [
        # Context/hotwords as system message
        {"role": "system", "content": [{"type": "text", "text": "Vocabulary: Quilter, apostle, gospel."}]},
        {
            "role": "user",
            "content": [
                {
                    "type": "audio",
                    "path": "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
                },
            ],
        },
        # empty prefill since forcing language in the other sample
        {"role": "assistant", "content": [{"type": "text", "text": ""}]},
    ],
    [
        {
            "role": "user",
            "content": [
                {
                    "type": "audio",
                    "path": "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/mandarin_voxcpm_zh.wav",
                },
            ],
        },
        {"role": "assistant", "content": [{"type": "text", "text": "language Chinese<asr_text>"}]},
    ],
]

inputs = processor.apply_chat_template(
    chat_template, tokenize=True, return_dict=True, continue_final_message=True,
).to(model.device, model.dtype)

output_ids = model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
transcriptions = processor.decode(generated_ids, return_format="transcription_only")
for text in transcriptions:
    print(text)

Entrenamiento

Pase los transcripciones objetivo a apply_transcription_request con transcription para obtener las labels utilizadas para calcular la pérdida.

from datasets import Audio, load_dataset
from transformers import AutoProcessor, Qwen3ASRForConditionalGeneration

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
NUM_SAMPLES = 2

processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3ASRForConditionalGeneration.from_pretrained(model_id, device_map="auto")
model.train()

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))
speech_samples = [el["array"] for el in ds["audio"][:NUM_SAMPLES]]
text_samples = ds["text"][:NUM_SAMPLES]

inputs = processor.apply_transcription_request(speech_samples, language="en", transcription=text_samples)
inputs.to(model.device, dtype=model.dtype)

loss = model(**inputs).loss
print("Loss:", loss.item())
loss.backward()

Alineación forzada (marcas de tiempo a nivel de palabra)

Use Qwen3ASRForTokenClassification para obtener marcas de tiempo a nivel de palabra a partir de una transcripción. Primero, transcribe con el modelo ASR y luego alinea con el alineador forzado.

Los siguientes idiomas son compatibles: chino (zh), inglés (en), cantonés (yue), francés (fr), alemán (de), italiano (it), japonés (ja), coreano (ko), portugués (pt), ruso (ru), español (es).

El japonés requiere la biblioteca nagisa, mientras que el coreano requiere la biblioteca soynlp:

pip install nagisa soynlp

Con Qwen3 ASR

import torch
from transformers import AutoProcessor, AutoModelForMultimodalLM, AutoModelForTokenClassification

asr_model_id = "Qwen/Qwen3-ASR-0.6B-hf"
aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"

asr_processor = AutoProcessor.from_pretrained(asr_model_id)
asr_model = AutoModelForMultimodalLM.from_pretrained(asr_model_id, device_map="auto")

aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
    aligner_model_id, dtype=torch.bfloat16, device_map="auto"
)

audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"

# Step 1: Transcribe
inputs = asr_processor.apply_transcription_request(audio=audio_url)
inputs = inputs.to(asr_model.device, asr_model.dtype)
output_ids = asr_model.generate(**inputs, max_new_tokens=256)
generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
parsed = asr_processor.decode(generated_ids, return_format="parsed")[0]
transcript = parsed["transcription"]
language = parsed["language"] or "English"

# Step 2: Prepare alignment inputs
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
    audio=audio_url, transcript=transcript, language=language,
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)

# Step 3: Run forced aligner
with torch.inference_mode():
    outputs = aligner_model(**aligner_inputs)

# Step 4: Decode timestamps
timestamps = aligner_processor.decode_forced_alignment(
    logits=outputs.logits,
    input_ids=aligner_inputs["input_ids"],
    word_lists=word_lists,
    timestamp_token_id=aligner_model.config.timestamp_token_id,
)[0]

for item in timestamps:
    print(f"{item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")

"""
Word                  Start (s)    End (s)
------------------------------------------
Mr                        0.560      0.800
Quilter                   0.800      1.280
is                        1.280      1.440
the                       1.440      1.520
apostle                   1.520      2.080
...
"""

Con otro modelo de ASR

El alineador forzado es agnóstico al modelo, lo que significa que se pueden proporcionar transcripciones de cualquier sistema ASR. A continuación se muestra un ejemplo de inferencia por lotes que utiliza NVIDIA Parakeet CTC para la transcripción.

import torch
from datasets import Audio, load_dataset
from transformers import AutoModelForCTC, AutoProcessor, AutoModelForTokenClassification

parakeet_processor = AutoProcessor.from_pretrained("nvidia/parakeet-ctc-1.1b")
parakeet_model = AutoModelForCTC.from_pretrained(
    "nvidia/parakeet-ctc-1.1b", dtype="auto", device_map="auto",
)

aligner_model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
aligner_processor = AutoProcessor.from_pretrained(aligner_model_id)
aligner_model = AutoModelForTokenClassification.from_pretrained(
    aligner_model_id, dtype=torch.bfloat16, device_map="auto",
)

ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=parakeet_processor.feature_extractor.sampling_rate))
audio_arrays = [ds[i]["audio"]["array"] for i in range(3)]
sr = ds[0]["audio"]["sampling_rate"]

# Batch transcribe with Parakeet
inputs = parakeet_processor(audio_arrays, sampling_rate=sr, return_tensors="pt", padding=True).to(
    parakeet_model.device, dtype=parakeet_model.dtype
)
with torch.inference_mode():
    outputs = parakeet_model.generate(**inputs)
transcripts = parakeet_processor.decode(outputs)

# Batch align with Qwen3 Forced Aligner
aligner_inputs, word_lists = aligner_processor.prepare_forced_aligner_inputs(
    audio=audio_arrays, transcript=transcripts, language="English",
)
aligner_inputs = aligner_inputs.to(aligner_model.device, aligner_model.dtype)

with torch.inference_mode():
    aligner_outputs = aligner_model(**aligner_inputs)

batch_timestamps = aligner_processor.decode_forced_alignment(
    logits=aligner_outputs.logits,
    input_ids=aligner_inputs["input_ids"],
    word_lists=word_lists,
    timestamp_token_id=aligner_model.config.timestamp_token_id,
)

for i, (transcript, timestamps) in enumerate(zip(transcripts, batch_timestamps)):
    print(f"\n[Sample {i}] {transcript}")
    for item in timestamps[:5]:
        print(f"  {item['text']:<20} {item['start_time']:>8.3f}s → {item['end_time']:>8.3f}s")
    if len(timestamps) > 5:
        print(f"  ... ({len(timestamps) - 5} more words)")

Torch compile

Tanto los modelos de ASR como los de alineación forzada admiten torch.compile para una inferencia más rápida. El alineador forzado es especialmente adecuado para la compilación porque ejecuta una única pasada hacia adelante (sin decodificación autoregresiva). Esto lo hace ideal para la marcaje de tiempo por lotes de audio: transcribe con cualquier modelo de ASR y luego alinea por lotes con el alineador forzado compilado para obtener el máximo rendimiento.

Alineador forzado

En una A100, observamos una aceleración de ~1.2 para un tamaño de lote de 4 (script).

import torch
from transformers import AutoProcessor, AutoModelForTokenClassification

model_id = "Qwen/Qwen3-ForcedAligner-0.6B-hf"
num_warmup = 5
batch_size = 4

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForTokenClassification.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda")

# Prepare a batch of 4 samples
audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
transcript = "Mr. Quilter is the apostle of the middle classes."

aligner_inputs, word_lists = processor.prepare_forced_aligner_inputs(
    audio=[audio_url] * batch_size,
    transcript=[transcript] * batch_size,
    language=["English"] * batch_size,
)
aligner_inputs = aligner_inputs.to(model.device, torch.bfloat16)

# Warm-up and apply model
model = torch.compile(model)
with torch.no_grad():
    for _ in range(num_warmup):
        _ = model(**aligner_inputs)
with torch.no_grad():
    _ = model(**aligner_inputs)

Modelo de ASR (generate)

Para la transcripción autoregresiva, torch.compile acelera las pasadas hacia adelante por token dentro de generate al proporcionar un objeto CompileConfig.

En una A100, observamos una aceleración de ~3.8 para un tamaño de lote de 4 (script).

import torch
from transformers import AutoProcessor, AutoModelForMultimodalLM, CompileConfig

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
num_warmup = 3
max_new_tokens = 256

processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForMultimodalLM.from_pretrained(model_id, dtype=torch.bfloat16).to("cuda").eval()

audio_url = "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav"
inputs = processor.apply_transcription_request(
    audio=[audio_url] * 4,  # batch of 4
).to(model.device, torch.bfloat16)

compile_config = CompileConfig()

# Warmup
with torch.inference_mode():
    for _ in range(num_warmup):
        _ = model.generate(
            **inputs, max_new_tokens=max_new_tokens, do_sample=False,
            cache_implementation="static", compile_config=compile_config,
        )
torch.cuda.synchronize()

# Apply model
with torch.inference_mode():
    output_ids = model.generate(
        **inputs, max_new_tokens=max_new_tokens, do_sample=False,
        cache_implementation="static", compile_config=compile_config,
    )
generated_ids = output_ids[:, inputs["input_ids"].shape[1] :]
text_compiled = processor.decode(generated_ids, return_format="transcription_only")[0]
print(f"Output:  {text_compiled}")

Uso de Pipeline

from transformers import pipeline

model_id = "Qwen/Qwen3-ASR-1.7B-hf"
pipe = pipeline("any-to-any", model=model_id, device_map="auto")

chat_template = [
    {
        "role": "user",
        "content": [
            {
                "type": "audio",
                "path": "https://huggingface.co/datasets/bezzam/audio_samples/resolve/main/librispeech_mr_quilter.wav",
            },
        ],
    }
]
outputs = pipe(text=chat_template, return_full_text=False)
raw_text = outputs[0]["generated_text"]
print(f"Raw: {raw_text}")

# Use processor helper to extract transcription
transcription = pipe.processor.extract_transcription(raw_text)
print(f"Transcription: {transcription}")

Qwen3ASRConfig

clase transformers.Qwen3ASRConfig

< >

( 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: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneaudio_token_id: int = 151676timestamp_token_id: int = 151705pad_token_id: int = 151645eos_token_id: list[int] | tuple[int, ...] | int = (151643, 151645)initializer_range: float = 0.02tie_word_embeddings: bool = Truetoken_classification_bias: bool = False )

Parámetros

  • audio_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de audio.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — El objeto de configuración o el diccionario del backbone de texto.
  • audio_token_id (int, optional, por defecto 151676) — El identificador del token de audio para codificar el prompt de audio.
  • timestamp_token_id (int, optional, por defecto 151705) — ID del token del marcador <timestamp> en el vocabulario del tokenizer. Estos marcadores delimitan los límites de las palabras en la secuencia de entrada de alineación forzada.
  • pad_token_id (int, opcional, valor predeterminado 151645) — Id del token utilizado para el relleno en el vocabulario.
  • eos_token_id (Union[list[int], tuple[int, …], int], opcional, valor predeterminado (151643, 151645)) — Id del token utilizado para el fin de la secuencia en el vocabulario.
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • tie_word_embeddings (bool, opcional, valor predeterminado True) — Si se deben vincular las matrices de pesos de embeddings según el mapeo tied_weights_keys del modelo.
  • token_classification_bias (bool, opcional, predeterminado en False) — Si la cabeza de clasificación de tokens para alineación forzada debe tener un término de sesgo.

Esta es la clase de configuración para almacenar la configuración de un Qwen3ASRModel. Se utiliza para instanciar un modelo Qwen3 Asr 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 Qwen/Qwen3-ASR-1.7B-hf

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.

Ejemplo:

>>> from transformers import Qwen3ASRForConditionalGeneration, Qwen3ASRConfig

>>> # Initializing a Qwen3ASR style configuration
>>> configuration = Qwen3ASRConfig()

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

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

Qwen3ASREncoderConfig

clase transformers.Qwen3ASREncoderConfig

< >

( 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 = Nonenum_mel_bins: int = 128encoder_layers: int = 24encoder_attention_heads: int = 16encoder_ffn_dim: int = 4096d_model: int = 1024dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_function: str = 'gelu'activation_dropout: float | int = 0.0scale_embedding: bool = Falseinitializer_range: float = 0.02n_window: int = 50output_dim: int = 3584n_window_infer: int = 800downsample_hidden_size: int = 480max_position_embeddings: int = 13 )

Parámetros

  • num_mel_bins (int, opcional, valor predeterminado 128) — Número de características mel utilizadas por cada entrada de fotograma. Debe corresponder al valor utilizado en la clase AutoFeatureExtractor.
  • encoder_layers (int, opcional, valor predeterminado 24) — Número de capas ocultas en el codificador del Transformer. Usará el mismo valor que num_layers si no se establece.
  • encoder_attention_heads (int, opcional, valor predeterminado 16) — Número de cabezas de atención para cada capa de atención en el codificador Transformer.
  • encoder_ffn_dim (int, opcional, valor predeterminado 4096) — Dimensionalidad de la capa “intermedia” (a menudo denominada feed-forward) del codificador.
  • d_model (int, opcional, valor predeterminado 1024) — Tamaño de las capas del codificador y de la capa pooler.
  • dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción para todas las capas de dropout.
  • attention_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las probabilidades de atención.
  • activation_function (str, opcional, por defecto gelu) — La función de activación no lineal (función o cadena de caracteres) en el decodificador. Por ejemplo, “gelu”, “relu”, “silu”, etc.
  • activation_dropout (Union[float, int], opcional, valor predeterminado 0.0) — La proporción de dropout para las activaciones dentro de la capa totalmente conectada.
  • scale_embedding (bool, opcional, por defecto False) — Si se deben escalar los embeddings dividiendo por sqrt(d_model).
  • initializer_range (float, opcional, valor predeterminado 0.02) — La desviación estándar del truncated_normal_initializer para inicializar todas las matrices de pesos.
  • n_window (int, opcional, valor predeterminado 50) — Mitad del número de cuadros mel en un bloque del codificador. Cada bloque procesado por la pila de convoluciones tiene 2 * n_window cuadros mel (1 segundo de audio a 16 kHz con un salto de 10 ms).
  • output_dim (int, opcional, valor predeterminado 3584) — Dimensionalidad de la salida.
  • n_window_infer (int, opcional, valor predeterminado 800) — Número de cuadros mel de audio sobre los que se extiende cada ventana de atención. Debe ser un múltiplo de n_window * 2 para que las ventanas de atención se alineen con los bloques del codificador.
  • downsample_hidden_size (int, opcional, valor predeterminado 480) — Tamaño oculto de la pila de muestreo descendente convolucional.
  • max_position_embeddings (int, opcional, valor predeterminado 13) — La longitud máxima de secuencia con la que se podría utilizar este modelo.

Esta es la clase de configuración para almacenar la configuración de un Qwen3ASRModel. Se utiliza para instanciar un modelo Qwen3 Asr 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 Qwen/Qwen3-ASR-1.7B-hf

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.

Qwen3ASRFeatureExtractor

clase transformers.Qwen3ASRFeatureExtractor

< >

( feature_size = 128sampling_rate = 16000hop_length = 160chunk_length = 30n_fft = 400padding_value = 0.0dither = 0.0return_attention_mask = Truen_window = 50min_length = 8000**kwargs )

Parámetros

  • feature_size (int, opcional, valor predeterminado 128) — Número de bancos de filtros mel.
  • sampling_rate (int, opcional, valor predeterminado 16000) — Tasa de muestreo de audio en Hz.
  • hop_length (int, opcional, valor predeterminado 160) — Longitud de las ventanas superpuestas para la STFT utilizada para obtener los coeficientes de Frecuencia Mel.
  • chunk_length (int, opcional, valor predeterminado 30) — Longitud máxima de audio (en segundos) utilizada para recortar/rellenar cuando padding="max_length".
  • n_fft (int, opcional, valor predeterminado 400) — Tamaño de la transformada de Fourier.
  • padding_value (float, opcional, valor predeterminado 0.0) — Valor de relleno utilizado para rellenar el audio sin procesar.
  • dither (float, opcional, valor predeterminado 0.0) — Si es distinto de cero, añade ruido gaussiano (std = dither) a cada cuadro STFT.
  • return_attention_mask (bool, opcional, valor predeterminado True) — Si se debe devolver la máscara de atención correspondiente a los fotogramas mel rellenos.
  • n_window (int, opcional, valor predeterminado 50) — Mitad del tamaño del bloque de cuadros mel utilizado para el relleno. El eje temporal log-mel se rellena a la derecha hasta un múltiplo de 2 * n_window.
  • min_length (int, opcional, valor predeterminado 8000) — Número mínimo de muestras para cada clip de audio. Los clips más cortos que este valor se rellenan con ceros, coincidiendo con el comportamiento de la biblioteca original Qwen3-ASR.

Construye un extractor de características ASR de Qwen3.

Extrae características log-mel de 128 bins del habla en bruto y luego rellena a la derecha el eje temporal mel hasta un múltiplo de 2 * n_window.

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]truncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_tensors: str | None = 'pt'return_attention_mask: bool | None = Nonepadding: str | None = 'max_length'max_length: int | None = Nonesampling_rate: int | None = Nonen_window: int | None = Nonedevice: str | None = 'cpu'**kwargs )

Parámetros

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — La secuencia o lote de secuencias que se deben rellenar. Solo audio de canal mono.
  • pad_to_multiple_of (int, optional) — Si se establece, rellena el audio crudo hasta un múltiplo de este valor (en muestras). Independiente de n_window, que se aplica al eje de los fotogramas mel.
  • n_window (int, opcional) — Sobrescribe la n_window de la instancia para esta llamada. El eje mel se rellena hasta un múltiplo de 2 * n_window. Establezca 0 para omitir por completo el relleno del eje mel.
  • device (str, opcional, por defecto “cpu”) — Dispositivo utilizado para calcular el espectrograma log-mel.

Prepara características log-mel a partir de una o varias secuencias de audio.

Qwen3ASRProcessor

clase transformers.Qwen3ASRProcessor

< >

( feature_extractor = Nonetokenizer = Nonechat_template = Nonetimestamp_segment_time: float = 80 )

Parámetros

  • feature_extractor (Qwen3ASRFeatureExtractor) — El extractor de características es una entrada obligatoria.
  • tokenizer (Qwen2Tokenizer) — El tokenizador es una entrada obligatoria.
  • chat_template (str) — Plantilla de Jinja para convertir listas de mensajes de un chat en una cadena tokenizable.
  • timestamp_segment_time (float, opcional) — Milisegundos por clase de marca de tiempo. El valor predeterminado es 80 ms.

Construye un Qwen3ASRProcessor que envuelve un extractor de características y un tokenizador en un único procesador.

Qwen3ASRProcessor ofrece todas las funcionalidades de Qwen3ASRFeatureExtractor y Qwen2Tokenizer. Consulte ~Qwen3ASRFeatureExtractor y ~Qwen2Tokenizer para obtener más información.

__call__

< >

( text: str | list[str]audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]output_labels: bool | None = False**kwargs: *<class 'transformers.models.qwen3_asr.processing_qwen3_asr.Qwen3ASRProcessorKwargs'> ) → BatchFeature

Parámetros

  • text (Union[str, list[str]]) — La secuencia o lote de secuencias que se van a codificar. Cada secuencia puede ser una cadena de caracteres o una lista de cadenas de caracteres (cadenas pretokenizadas). Si se pasa una entrada pretokenizada, establezca is_split_into_words=True para evitar ambigüedad con las entradas por lotes.
  • 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.
  • output_labels (bool, opcional, default=False) — Si se deben devolver etiquetas para el entrenamiento.
  • return_tensors (str o TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:
    • 'pt': Devuelve objetos torch.Tensor de PyTorch.
    • 'np': Devuelve objetos np.ndarray de NumPy.
  • **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.

Devuelve

BatchFeature

Un diccionario con texto tokenizado (input_ids, attention_mask) y características de audio (input_features, input_features_mask).

apply_transcription_request

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor'], list[typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]]]language: str | list[str] | None = Noneprompt: str | list[str] | None = Nonetranscription: str | list[str] | None = Nonetokenize: bool = True**kwargs: *<class 'transformers.models.qwen3_asr.processing_qwen3_asr.Qwen3ASRProcessorKwargs'> ) → [BatchFeature] or list[str]

Parámetros

  • audio (AudioInput o list[AudioInput]) — Audio para transcribir. Puede ser una cadena de URL, una ruta local, un array de numpy o una lista de estos.
  • language (str o list[str], opcional) — Idioma(s) que se deben forzar para la transcripción. Acepta nombres completos (p. ej. "English", "Chinese") o códigos ISO (p. ej. "en", "zh"). Una lista debe tener la misma longitud que el lote de audio. Siguiendo la implementación original, el idioma se fuerza añadiendo language <NAME><asr_text> después del prompt de generación, de modo que el modelo genere solo el texto de la transcripción. Cuando es None, el modelo realiza detección automática de idioma y genera language <NAME><asr_text>... por sí mismo.
  • prompt (str o list[str], opcional) — Contexto o palabras clave para incluir como prompt de sistema, por ejemplo, palabras o frases específicas del dominio para sesgar la transcripción hacia ellas. Una lista debe tener la misma longitud que el lote de audio. Cuando es None, el prompt de sistema se deja vacío.
  • transcription (str o list[str], opcional) — Transcripción o transcripciones objetivo para el entrenamiento, una por audio. Cuando se proporciona, cada transcripción se escribe como el turno del asistente y se devuelven las labels (ver output_labels en [~Qwen3ASRProcessor.call]). Con un language, la transcripción se antepone con language <NAME><asr_text> para coincidir con el formato de salida del modelo. Sin uno, se escribe tal cual, por lo que ya debe estar en ese formato para preservar el comportamiento preentrenado.
  • tokenize (bool, opcional, valor predeterminado True) — Si se deben tokenizar los prompts y procesar el audio. Si es False, el audio no se carga y los prompts se devuelven como cadenas de texto con marcadores de posición de audio sin expandir. Pasarlos con el audio al procesador, processor(text=prompts, audio=audio), produce las mismas salidas que tokenize=True.
  • **kwargs — Argumentos de palabra clave adicionales que se reenvían a [~Qwen3ASRProcessor.apply_chat_template]. Los kwargs del procesador (por ejemplo, text_kwargs, audio_kwargs, …) deben pasarse como processor_kwargs={…}.

Devuelve

[BatchFeature] o list[str]

Un prompt por audio cuando tokenize=False, de lo contrario el procesador devuelve la salida lista para pasarse a [Qwen3ASRForConditionalGeneration.generate], o a [Qwen3ASRForConditionalGeneration.forward] para calcular la pérdida cuando se proporciona transcription.

Prepara las entradas para el reconocimiento automático de voz sin escribir manualmente la plantilla de chat, ya sea para inferencia o, cuando se proporciona transcription, para entrenamiento.

prepare_forced_aligner_inputs

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]transcript: str | list[str]language: str | list[str] | None = None**kwargs ) → tuple[BatchFeature, list[list[str]]]

Parámetros

  • audio (AudioInput) — Audio input(s). Accepts paths, URLs, numpy arrays, or a list of these.
  • transcript (str o list[str]) — Transcripción(s) para alinear con el audio.
  • language (str, list[str] o None, opcional) — Indicador(es) de idioma. Actualmente no se utiliza en la tokenización, pero está reservado para tokenizadores específicos de idioma (p. ej., japonés, coreano).
  • **kwargs — Argumentos de palabra clave adicionales que se reenvían a [~Qwen3ASRProcessor.apply_chat_template].

Devuelve

tuple[BatchFeature, list[list[str]]]

  • inputs: Un [BatchFeature] con input_ids, attention_mask, input_features y input_features_mask listos para el modelo de alineación forzada.
  • word_lists: Una lista (una por muestra) de listas de tokens a nivel de palabra utilizadas para construir la entrada. Pásalas a [~Qwen3ASRProcessor.decode_forced_alignment] para asociar marcas de tiempo con palabras.

Prepara las entradas para el modelo de alineación forzada.

decode_forced_alignment

< >

( logitsinput_idsword_lists: listtimestamp_token_id: inttimestamp_segment_time: float | None = None ) → list[list[dict]]

Parámetros

  • logits (torch.Tensor de forma (batch_size, seq_len, num_labels)) — Logits de clasificación de [Qwen3ASRForTokenClassification].
  • input_ids (torch.LongTensor de forma (batch_size, seq_len)) — IDs de tokens de entrada utilizados para la pasada hacia adelante.
  • word_lists (list[list[str]]) — Listas de tokens a nivel de palabra, tal como las devuelve [~Qwen3ASRProcessor.prepare_forced_aligner_inputs].
  • timestamp_token_id (int) — ID del token del marcador <timestamp> (de model.config.timestamp_token_id).
  • timestamp_segment_time (float, opcional) — Milisegundos por clase de marca de tiempo. Si no se proporciona, usa self.timestamp_segment_time.

Devuelve

list[list[dict]]

Una lista por muestra. Cada lista interna contiene diccionarios con las claves "text" (str), "start_time" (float, segundos) y "end_time" (float, segundos).

Decodifica las salidas del modelo de alineador forzado en marcas de tiempo a nivel de palabra.

decode

< >

( *argsreturn_format = 'raw'**kwargs )

Parámetros

  • return_format (str, opcional, por defecto “raw”) — Opciones:
    • "raw": Devuelve cadenas decodificadas sin procesar del tokenizador.
    • "parsed": Devuelve un diccionario (o una lista de diccionarios) con las claves "language" y "transcription".
    • "transcription_only": Extrae solo el texto transcrito (después de <asr_text>).

    skip_special_tokens se fija de forma estricta en True para "parsed" y "transcription_only".

Transmite los argumentos al método decode del tokenizador y, opcionalmente, analiza la salida del ASR.

Qwen3 ASR genera la transcripción en el formato: language <LANG><asr_text>transcribed text

Qwen3ASREncoder

clase transformers.Qwen3ASREncoder

< >

( config: Qwen3ASREncoderConfig )

Parámetros

  • config (Qwen3ASREncoderConfig) — 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 audio para Qwen3 ASR sin ninguna cabeza ni proyección en la parte superior.

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

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

forward

< >

( input_features: Tensorinput_features_mask: Tensor**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Parámetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim)) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios).
  • input_features_mask (torch.LongTensor de forma (batch_size, padded_feature_length)) — 1 para los fotogramas mel válidos y 0 para el relleno.

Devuelve

BaseModelOutputWithPooling o tuple(torch.Tensor)

Un BaseModelOutputWithPooling 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 (Qwen3ASRConfig) y las entradas.

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

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

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

  • pooler_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto de la última capa del primer token de la secuencia (token de clasificación) después de un procesamiento adicional a través de las capas utilizadas para la tarea de preentrenamiento auxiliar. Por ejemplo, para la familia de modelos BERT, esto devuelve el token de clasificación después de procesarlo a través de una capa lineal y una función de activación tanh. Los pesos de la capa lineal se entrenan a partir del objetivo de predicción de la siguiente oración (clasificación) durante el preentrenamiento.

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

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

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

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

Qwen3ASRModel

clase transformers.Qwen3ASRModel

< >

( config: Qwen3ASRConfig )

Parámetros

  • config (Qwen3ASRConfig) — 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 Qwen3ASR (codificador Whisper afinado, proyector multimodal, modelo de lenguaje Qwen2), sin una cabeza de modelado de lenguaje.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Qwen3ASRModelOutputWithPast or tuple(torch.Tensor)

Parámetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

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

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

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango [0, config.n_positions - 1].

    ¿Qué son los IDs de posición?

  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en la past_key_values devuelta por el modelo en una etapa anterior de la decodificación, cuando use_cache=True o config.use_cache=True.

    Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan past_key_values, DynamicCache se inicializará de forma predeterminada.

    El modelo generará el mismo formato de caché que se proporciona como entrada.

    Si se utilizan past_key_values, se espera que el usuario introduzca únicamente los input_ids no procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma (batch_size, unprocessed_length) en lugar de todos los input_ids con forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

Qwen3ASRModelOutputWithPast o tuple(torch.Tensor)

Un Qwen3ASRModelOutputWithPast 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 (Qwen3ASRConfig) y las entradas.

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

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

  • audio_hidden_states (torch.Tensor, opcional) — Estados ocultos de audio proyectados.

get_audio_features

< >

( input_features: Tensorinput_features_mask: LongTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)

Parámetros

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim)) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios).
  • input_features_mask (torch.LongTensor de forma (batch_size, padded_feature_length)) — 1 para los fotogramas mel válidos y 0 para el relleno.

Devuelve

BaseModelOutputWithPooling o tuple(torch.Tensor)

Un BaseModelOutputWithPooling 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 (Qwen3ASRConfig) y las entradas.

Este método se utiliza para obtener las incrustaciones de audio a partir de las características de entrada (un espectrograma mel logarítmico).

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

  • pooler_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto de la última capa del primer token de la secuencia (token de clasificación) después de un procesamiento adicional a través de las capas utilizadas para la tarea de preentrenamiento auxiliar. Por ejemplo, para la familia de modelos BERT, esto devuelve el token de clasificación después de procesarlo a través de una capa lineal y una función de activación tanh. Los pesos de la capa lineal se entrenan a partir del objetivo de predicción de la siguiente oración (clasificación) durante el preentrenamiento.

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

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

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

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

get_placeholder_mask

< >

( input_ids: LongTensorinputs_embeds: Tensoraudio_features: Tensor )

Obtiene la máscara de marcador de posición multimodal a partir de input_ids o inputs_embeds y comprueba que la cantidad de tokens de marcador de posición sea igual a la longitud de las características multimodales. Si las longitudes son diferentes, se genera un error.

Qwen3ASRForConditionalGeneration

clase transformers.Qwen3ASRForConditionalGeneration

< >

( config: Qwen3ASRConfig )

Parámetros

  • config (Qwen3ASRConfig) — 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 Qwen3ASR, que consta de un codificador de audio y un modelo de lenguaje.

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneinput_features: typing.Optional[torch.Tensor] = Noneinput_features_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Nonelogits_to_keep: typing.Union[int, torch.Tensor] = 0**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Qwen3ASRCausalLMOutputWithPast or tuple(torch.Tensor)

Parámetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

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

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

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango [0, config.n_positions - 1].

    ¿Qué son los IDs de posición?

  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en la past_key_values devuelta por el modelo en una etapa anterior de la decodificación, cuando use_cache=True o config.use_cache=True.

    Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan past_key_values, DynamicCache se inicializará de forma predeterminada.

    El modelo generará el mismo formato de caché que se proporciona como entrada.

    Si se utilizan past_key_values, se espera que el usuario introduzca únicamente los input_ids no procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma (batch_size, unprocessed_length) en lugar de todos los input_ids con forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado.
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).
  • logits_to_keep (Union[int, torch.Tensor], opcional, valor predeterminado 0) — Si es un int, calcula los logits para los últimos logits_to_keep tokens. Si es 0, calcula los logits para todos los input_ids (caso especial). Solo se necesitan los logits del último token para la generación, y calcularlos solo para ese token puede ahorrar memoria, lo cual se vuelve bastante significativo para secuencias largas o un tamaño de vocabulario grande. Si es un torch.Tensor, debe ser de 1D y corresponder a los índices a conservar en la dimensión de longitud de secuencia. Esto es útil al usar el formato de tensor empaquetado (una sola dimensión para el lote y la longitud de secuencia).

Devuelve

Qwen3ASRCausalLMOutputWithPast o tuple(torch.Tensor)

Un Qwen3ASRCausalLMOutputWithPast 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 (Qwen3ASRConfig) y las entradas.

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

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

  • loss (torch.Tensor de forma (1,), opcional, se devuelve cuando se proporciona labels) — Pérdida de modelado de lenguaje (para la predicción del siguiente token).

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Puntuaciones de predicción de la cabeza de modelado de lenguaje.

  • past_key_values (Cache, opcional, se devuelve cuando se pasa use_cache=True o cuando config.use_cache=True) — Es una instancia de Cache.

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

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

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

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

  • audio_hidden_states (torch.Tensor, opcional) — Estados ocultos del codificador de audio después de la proyección.

Ejemplo:

>>> from transformers import Qwen3ASRForConditionalGeneration, AutoProcessor

>>> model_id = "Qwen/Qwen3-ASR-1.7B-hf"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = Qwen3ASRForConditionalGeneration.from_pretrained(model_id, device_map="auto")

get_audio_features

< >

( input_featuresinput_features_mask**kwargs )

Qwen3ASRForTokenClassification

clase transformers.Qwen3ASRForTokenClassification

< >

( config )

Parámetros

  • config ([[``GenericForTokenClassification``]]) — 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 Qwen3 ASR con una cabeza de clasificación de tokens para la predicción de marcas de tiempo (alineación forzada).

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

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

forward

< >

( input_ids: torch.LongTensor | None = Noneattention_mask: torch.Tensor | None = Noneposition_ids: torch.LongTensor | None = Nonepast_key_values: Cache | None = Noneinputs_embeds: torch.Tensor | None = Nonelabels: torch.LongTensor | None = Noneuse_cache: bool | None = None**kwargs: Unpack[TransformersKwargs] ) → TokenClassifierOutput

Parámetros

  • input_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de los tokens de la secuencia de entrada en el vocabulario. El relleno se ignorará de forma predeterminada.

    Los índices se pueden obtener usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() y PreTrainedTokenizer.call() para más detalles.

    ¿Qué son los IDs de entrada?

  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en [0, 1]:
    • 1 para los tokens que no están enmascarados,
    • 0 para los tokens que están enmascarados.

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

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices de las posiciones de los tokens de cada secuencia de entrada en los embeddings de posición. Seleccionados en el rango [0, config.n_positions - 1].

    ¿Qué son los IDs de posición?

  • past_key_values (Cache, opcional) — Estados ocultos precalculados (claves y valores en los bloques de autoatención y en los bloques de atención cruzada) que se pueden usar para acelerar la decodificación secuencial. Esto generalmente consiste en los past_key_values devueltos por el modelo en una etapa anterior de la decodificación, cuando use_cache=True o config.use_cache=True.

    Solo se permite una instancia de Cache como entrada, consulte nuestra guía de caché kv. Si no se pasan past_key_values, DynamicCache se inicializará de forma predeterminada.

    El modelo generará el mismo formato de caché que se proporciona como entrada.

    Si se utilizan past_key_values, se espera que el usuario introduzca únicamente los input_ids no procesados (aquellos que no tienen sus estados de clave y valor pasados proporcionados a este modelo) con forma (batch_size, unprocessed_length) en lugar de todos los input_ids con forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasar input_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices de input_ids en los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo.
  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de clasificación de tokens. Los índices deben estar en [0, ..., config.num_labels - 1].
  • use_cache (bool, opcional) — Si se establece en True, se devuelven los estados de clave-valor de past_key_values y pueden usarse para acelerar la decodificación (ver past_key_values).

Devuelve

TokenClassifierOutput

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

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

Update on GitHub