Transformers documentation
Qwen3 ASR
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
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.7ByQwen3-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 soynlpCon 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
< 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: 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.configQwen3ASREncoderConfig
clase transformers.Qwen3ASREncoderConfig
< 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 = 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_windowcuadros 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 * 2para 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
< source >( 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__
< source >( 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_windowde la instancia para esta llamada. El eje mel se rellena hasta un múltiplo de2 * n_window. Establezca0para 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
< source >( 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__
< source >( 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, establezcais_split_into_words=Truepara 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 (
stro TensorType, opcional) — Si se establece, devolverá tensores de un marco de trabajo específico. Los valores aceptables son:'pt': Devuelve objetostorch.Tensorde PyTorch.'np': Devuelve objetosnp.ndarrayde NumPy.
- **kwargs (ProcessingKwargs, opcional) — Opciones de procesamiento adicionales para cada modalidad (texto, imágenes, videos, audio). Los parámetros específicos del modelo se enumeran arriba; consulte la clase TypedDict para obtener la lista completa de argumentos admitidos.
Devuelve
Un diccionario con texto tokenizado (input_ids, attention_mask) y
características de audio (input_features, input_features_mask).
apply_transcription_request
< source >( 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ñadiendolanguage <NAME><asr_text>después del prompt de generación, de modo que el modelo genere solo el texto de la transcripción. Cuando esNone, el modelo realiza detección automática de idioma y generalanguage <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
< source >( 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] coninput_ids,attention_mask,input_featuresyinput_features_masklistos 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
< source >( 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>(demodel.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
< source >( *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_tokensse fija de forma estricta enTruepara"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
< source >( 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
< source >( input_features: Tensorinput_features_mask: Tensor**kwargs ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parámetros
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim)) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios). - input_features_mask (
torch.LongTensorde 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
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
last_hidden_state (
torch.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.pooler_output (
torch.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
Qwen3ASRModel
clase transformers.Qwen3ASRModel
< source >( 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
< source >( 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.LongTensorde 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.
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim), opcional) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios). - input_features_mask (
torch.Tensorde forma(batch_size, feature_sequence_length)) — Máscara para evitar realizar atención en los índices de características de relleno. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde 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]. - 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_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
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
- audio_hidden_states (
torch.Tensor, opcional) — Estados ocultos de audio proyectados.
get_audio_features
< source >( input_features: Tensorinput_features_mask: LongTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPooling or tuple(torch.Tensor)
Parámetros
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim)) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios). - input_features_mask (
torch.LongTensorde 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.Tensorde forma(batch_size, sequence_length, hidden_size)) — Secuencia de estados ocultos en la salida de la última capa del modelo.pooler_output (
torch.Tensorde 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 pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple(torch.Tensor), opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
get_placeholder_mask
< source >( 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
< source >( 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
< source >( 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.LongTensorde 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.
- input_features (
torch.Tensorde forma(batch_size, sequence_length, feature_dim), opcional) — Los tensores correspondientes a las características de audio de entrada. Las características de audio se pueden obtener utilizando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para más detalles (Qwen3ASRProcessor utiliza Qwen3ASRFeatureExtractor para procesar audios). - input_features_mask (
torch.Tensorde forma(batch_size, feature_sequence_length)) — Máscara para evitar realizar atención en los índices de características de relleno. - attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde 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]. - 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 lapast_key_valuesdevuelta por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde forma(batch_size, sequence_length), opcional) — Etiquetas para calcular la pérdida de modelado de lenguaje enmascarado. - use_cache (
bool, opcional) — Si se establece enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_key_values). - logits_to_keep (
Union[int, torch.Tensor], opcional, valor predeterminado0) — Si es unint, calcula los logits para los últimoslogits_to_keeptokens. Si es0, calcula los logits para todos losinput_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 untorch.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
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.
loss (
torch.Tensorde forma(1,), opcional, se devuelve cuando se proporcionalabels) — Pérdida de modelado de lenguaje (para la predicción del siguiente token).logits (
torch.Tensorde 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 pasause_cache=Trueo cuandoconfig.use_cache=True) — Es una instancia de Cache.hidden_states (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_hidden_states=Trueo cuandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(una para la salida de las incrustaciones, si el modelo tiene una capa de incrustaciones, + una para la salida de cada capa) de forma(batch_size, sequence_length, hidden_size).Estados ocultos del modelo en la salida de cada capa más las salidas opcionales de la incrustación inicial.
attentions (
tuple[torch.Tensor], opcional, se devuelve cuando se pasaoutput_attentions=Trueo cuandoconfig.output_attentions=True) — Tupla detorch.Tensor(una por cada capa) de forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atención tras el softmax de atención, utilizados para calcular la media ponderada en las cabezas de autoatención.
audio_hidden_states (
torch.Tensor, opcional) — Estados ocultos del codificador de audio después de la proyección.
Qwen3ASRForTokenClassification
clase transformers.Qwen3ASRForTokenClassification
< source >( 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
< source >( 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.LongTensorde 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.
- attention_mask (
torch.Tensorde forma(batch_size, sequence_length), opcional) — Máscara para evitar realizar atención en los índices de tokens de relleno. Valores de máscara seleccionados en[0, 1]:- 1 para los tokens que no están enmascarados,
- 0 para los tokens que están enmascarados.
- position_ids (
torch.LongTensorde 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]. - 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 lospast_key_valuesdevueltos por el modelo en una etapa anterior de la decodificación, cuandouse_cache=Trueoconfig.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 losinput_idsno 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 losinput_idscon forma(batch_size, sequence_length). - inputs_embeds (
torch.Tensorde forma(batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, en lugar de pasarinput_ids, puedes elegir pasar directamente una representación incrustada. Esto es útil si deseas tener más control sobre cómo convertir los índices deinput_idsen los vectores asociados que en la matriz de búsqueda de incrustaciones interna del modelo. - labels (
torch.LongTensorde 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 enTrue, se devuelven los estados de clave-valor depast_key_valuesy pueden usarse para acelerar la decodificación (verpast_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
Moduledespués en lugar de a esta, ya que la primera se encarga de ejecutar los pasos de pre y postprocesamiento, mientras que la segunda los ignora silenciosamente.