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.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo foi publicado no HF papers em 29/01/2026 e contribuído para o Hugging Face Transformers em 26/06/2026.

Qwen3 ASR

FlashAttention SDPA

Visão geral

O Qwen3 ASR é um modelo de reconhecimento automático de fala da equipe Qwen da Alibaba que combina um codificador de áudio no estilo Whisper com um decodificador de modelo de linguagem Qwen3 para transcrição de fala em texto. O modelo suporta detecção automática de idioma e transcrição multilíngue.

Um modelo de alinhador forçado também está incluído. Ele pode ser usado para atribuir timestamps a uma transcrição e ao áudio fornecidos. Ele utiliza o mesmo modelo de codificador de áudio com uma cabeça de classificação que prevê o comprimento de uma palavra. Este modelo pode ser usado com a transcrição de qualquer modelo de ASR (veja o exemplo abaixo com Parakeet CTC).

Checkpoints disponíveis:

Os seguintes idiomas são suportados:

  • Qwen3-ASR-1.7B e Qwen3-ASR-0.6B: chinês (zh), inglês (en), cantonês (yue), árabe (ar), alemão (de), francês (fr), espanhol (es), português (pt), indonésio (id), italiano (it), coreano (ko), russo (ru), tailandês (th), vietnamita (vi), japonês (ja), turco (tr), hindi (hi), malaio (ms), holandês (nl), sueco (sv), dinamarquês (da), finlandês (fi), polonês (pl), tcheco (cs), filipino (fil), persa (fa), grego (el), húngaro (hu), macedônio (mk), romeno (ro).
  • Qwen3-ForcedAligner-0.6B: chinês (zh), inglês (en), cantonês (yue), francês (fr), alemão (de), italiano (it), japonês (ja), coreano (ko), português (pt), russo (ru), espanhol (es).

Veja o repositório original em QwenLM/Qwen3-ASR e o relatório para mais detalhes.

Este modelo foi contribuído por Eric Bezzam e Muhammed Tariq.

Uso

Transcrição simples

A maneira mais simples de transcrever áudio é com apply_transcription_request, que trata do formatação do chat template para você, ou seja, é um wrapper de conveniência para apply_chat_template (veja Chat template abaixo).

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.
"""

Forçando o idioma

Você pode forçar o idioma da transcrição, conforme mostrado abaixo.

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 / palavras-chave

Você pode passar um contexto livre (por exemplo, vocabulário específico do domínio, nomes ou informações de contexto) via prompt para direcionar a transcrição.

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])

Inferência em lote

A inferência em lote é possível ao passar uma lista de áudios e, se fornecidas, uma lista de idiomas e/ou 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}")

Modelo de chat

O Qwen3 ASR também aceita entradas de modelo de chat. O uso de apply_transcription_request acima é um wrapper de conveniência para apply_chat_template.

A linguagem pode ser forçada por meio do modelo de chat, pré-preenchendo a vez do assistente com language <NAME><asr_text> e passando continue_final_message=True, o que é o que apply_transcription_request faz por baixo dos panos. Observe que, ao forçar a linguagem, um pré-preenchimento deve ser definido para todos os áudios em um lote (conforme mostrado abaixo).

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)

Treinamento

Passe os transcritos-alvo para apply_transcription_request com transcription para obter os labels usados para calcular a perda.

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()

Alinhamento forçado (carimbo de tempo em nível de palavra)

Use Qwen3ASRForTokenClassification para obter timestamps no nível de palavra a partir de uma transcrição. Primeiro, transcreva com o modelo de ASR e, em seguida, alinhe com o alinhador forçado.

Os seguintes idiomas são suportados: chinês (zh), inglês (en), cantonês (yue), francês (fr), alemão (de), italiano (it), japonês (ja), coreano (ko), português (pt), russo (ru), espanhol (es).

O japonês requer a biblioteca nagisa, enquanto o coreano requer a biblioteca soynlp:

pip install nagisa soynlp

Com o 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
...
"""

Com outro modelo de ASR

O alinhador forçado é agnóstico em relação ao modelo, o que significa que é possível fornecer transcrições de qualquer sistema de ASR. Abaixo, há um exemplo de inferência em lote usando NVIDIA Parakeet CTC para transcrição.

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 os modelos de ASR quanto os de alinhamento forçado suportam torch.compile para inferência mais rápida. O alinhador forçado é especialmente adequado para compilação, pois executa um único passo de propagação direta (sem decodificação autoregressiva). Isso o torna ideal para carimbo de tempo em lote de áudio: transcreva com qualquer modelo de ASR e, em seguida, alinhe em lote com o alinhador forçado compilado para obter o máximo de rendimento.

Alinhador forçado

Em uma A100, observamos uma aceleração de ~1,2 para um tamanho 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 transcrição autoregressiva, torch.compile acelera as passadas de frente por token dentro de generate, fornecendo um objeto CompileConfig.

Em uma A100, observamos uma aceleração de ~3,8 para um tamanho 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 do 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

classe 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) — O objeto de configuração ou dicionário do backbone de áudio.
  • text_config (Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — O objeto de configuração ou dicionário do backbone de texto.
  • audio_token_id (int, opcional, padrão 151676) — O id do token de áudio para codificar o prompt de áudio.
  • timestamp_token_id (int, optional, padrão 151705) — ID do token do marcador <timestamp> no vocabulário do tokenizer. Esses marcadores delimitam as fronteiras de palavras na sequência de entrada de alinhamento forçado.
  • pad_token_id (int, opcional, padrão 151645) — ID do token usado para preenchimento no vocabulário.
  • eos_token_id (Union[list[int], tuple[int, …], int], opcional, padrão (151643, 151645)) — ID do token usado para o fim do fluxo no vocabulário.
  • initializer_range (float, opcional, padrão 0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • tie_word_embeddings (bool, opcional, padrão True) — Se deve vincular as embeddings de pesos de acordo com o mapeamento tied_weights_keys do modelo.
  • token_classification_bias (bool, opcional, padrão é False) — Se a cabeça de classificação de tokens para alinhamento forçado deve ter um termo de viés.

Esta é a classe de configuração para armazenar a configuração de um Qwen3ASRModel. Ela é usada para instanciar um modelo Qwen3 Asr de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do Qwen/Qwen3-ASR-1.7B-hf

Os objetos de configuração herdam de [PreTrainedConfig] e podem ser usados para controlar as saídas do modelo. Leia a documentação de [PreTrainedConfig] para mais informações.

Exemplo:

>>> 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

classe 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, padrão 128) — Número de recursos mel usados por quadro de entrada. Deve corresponder ao valor utilizado na classe AutoFeatureExtractor.
  • encoder_layers (int, opcional, padrão 24) — Número de camadas ocultas no codificador do Transformer. Usará o mesmo valor de num_layers se não for definido.
  • encoder_attention_heads (int, opcional, padrão 16) — Número de cabeças de atenção para cada camada de atenção no codificador do Transformer.
  • encoder_ffn_dim (int, opcional, padrão 4096) — Dimensão da camada “intermediária” (frequentemente chamada de feed-forward) no encoder.
  • d_model (int, opcional, padrão 1024) — Tamanho das camadas do codificador e da camada pooler.
  • dropout (Union[float, int], opcional, padrão 0.0) — A proporção para todas as camadas de dropout.
  • attention_dropout (Union[float, int], opcional, padrão 0.0) — A taxa de dropout para as probabilidades de atenção.
  • activation_function (str, opcional, padrão gelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo, “gelu”, “relu”, “silu”, etc.
  • activation_dropout (Union[float, int], opcional, padrão 0.0) — A taxa de dropout para as ativações dentro da camada totalmente conectada.
  • scale_embedding (bool, opcional, padrão False) — Se as embeddings devem ser escalonadas dividindo por sqrt(d_model).
  • initializer_range (float, opcional, padrão 0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos.
  • n_window (int, opcional, padrão 50) — Metade do número de quadros mel em um chunk do codificador. Cada chunk processado pela pilha de convoluções possui 2 * n_window quadros mel (1 segundo de áudio a 16 kHz com um hop de 10 ms).
  • output_dim (int, opcional, padrão 3584) — Dimensão da saída.
  • n_window_infer (int, opcional, padrão 800) — Número de quadros mel de áudio sobre os quais cada janela de atenção se estende. Deve ser um múltiplo de n_window * 2 para que as janelas de atenção se alinhem com os blocos do codificador.
  • downsample_hidden_size (int, opcional, padrão 480) — Tamanho oculto da pilha de downsampling convolucional.
  • max_position_embeddings (int, opcional, padrão 13) — O comprimento máximo de sequência com o qual este modelo pode ser utilizado.

Esta é a classe de configuração para armazenar a configuração de um Qwen3ASRModel. Ela é usada para instanciar um modelo Qwen3 Asr de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do Qwen/Qwen3-ASR-1.7B-hf

Os objetos de configuração herdam de [PreTrainedConfig] e podem ser usados para controlar as saídas do modelo. Leia a documentação de [PreTrainedConfig] para mais informações.

Qwen3ASRFeatureExtractor

classe 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, padrão 128) — Número de bancos de filtros mel.
  • sampling_rate (int, opcional, padrão 16000) — Taxa de amostragem de áudio em Hz.
  • hop_length (int, opcional, padrão 160) — Comprimento das janelas sobrepostas para a STFT usada para obter os coeficientes de Frequência Mel.
  • chunk_length (int, opcional, padrão 30) — Comprimento máximo do áudio (em segundos) usado para cortar/preencher quando padding="max_length".
  • n_fft (int, opcional, padrão 400) — Tamanho da transformada de Fourier.
  • padding_value (float, opcional, padrão 0.0) — Valor de preenchimento usado para preencher o áudio bruto.
  • dither (float, opcional, padrão 0.0) — Se for diferente de zero, adiciona ruído gaussiano (std = dither) a cada quadro STFT.
  • return_attention_mask (bool, opcional, padrão True) — Se deve retornar a máscara de atenção correspondente aos quadros mel preenchidos.
  • n_window (int, opcional, padrão 50) — Metade do tamanho do bloco de quadros mel usado para preenchimento. O eixo de tempo log-mel é preenchido à direita até um múltiplo de 2 * n_window.
  • min_length (int, opcional, padrão 8000) — Número mínimo de amostras para cada clipe de áudio. Clipes mais curtos que isso são preenchidos com zeros, seguindo o comportamento original da biblioteca Qwen3-ASR.

Constrói um extrator de recursos ASR do Qwen3.

Extrai recursos log-mel de 128 bins a partir do áudio bruto e, em seguida, aplica padding à direita no eixo do tempo dos mel até um 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]]) — A sequência ou lote de sequências a serem preenchidas. Somente áudio mono-canal.
  • pad_to_multiple_of (int, optional) — Se definido, aplica padding ao áudio bruto para que seu tamanho seja um múltiplo deste valor (em amostras). Diferente de n_window, que se aplica ao eixo dos quadros mel.
  • n_window (int, opcional) — Substitui o n_window da instância para esta chamada. O eixo mel é preenchido até um múltiplo de 2 * n_window. Defina como 0 para pular completamente o preenchimento do eixo mel.
  • device (str, opcional, padrão “cpu”) — Dispositivo usado para calcular o espectrograma log-mel.

Prepare recursos log-mel a partir de uma ou várias sequências de áudio.

Qwen3ASRProcessor

classe transformers.Qwen3ASRProcessor

< >

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

Parâmetros

  • feature_extractor (Qwen3ASRFeatureExtractor) — O extrator de recursos é uma entrada obrigatória.
  • tokenizer (Qwen2Tokenizer) — O tokenizer é uma entrada obrigatória.
  • chat_template (str) — Um modelo Jinja para converter listas de mensagens em um chat em uma string tokenizável.
  • timestamp_segment_time (float, opcional) — Milissegundos por classe de timestamp. O valor padrão é 80 ms.

Constrói um Qwen3ASRProcessor que encapsula um extrator de recursos e um tokenizador em um único processador.

Qwen3ASRProcessor oferece todas as funcionalidades de Qwen3ASRFeatureExtractor e Qwen2Tokenizer. Consulte ~Qwen3ASRFeatureExtractor e ~Qwen2Tokenizer para mais informações.

__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]]) — A sequência ou lote de sequências a ser codificada. Cada sequência pode ser uma string ou uma lista de strings (string pré-tokenizada). Se você passar uma entrada pré-tokenizada, defina is_split_into_words=True para evitar ambiguidade com entradas em lote.
  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]) — O áudio ou lote de áudios a ser preparado. Cada áudio pode ser um array NumPy ou um tensor PyTorch. No caso de um array NumPy/tensor PyTorch, cada áudio deve ter a forma (C, T), onde C é o número de canais e T é o comprimento de amostragem do áudio.
  • output_labels (bool, opcional, padrão=False) — Se deve retornar rótulos para o treinamento.
  • return_tensors (str ou TensorType, opcional) — Se definido, retornará tensors de um framework específico. Os valores aceitos são:
    • 'pt': Retorna objetos torch.Tensor do PyTorch.
    • 'np': Retorna objetos np.ndarray do NumPy.
  • **kwargs (ProcessingKwargs, opcional) — Opções de processamento adicionais para cada modalidade (texto, imagens, vídeos, áudio). Os parâmetros específicos do modelo estão listados acima; consulte a classe TypedDict para a lista completa de argumentos suportados.

Retorna

BatchFeature

Um dicionário com texto tokenizado (input_ids, attention_mask) e recursos de áudio (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 ou list[AudioInput]) — Áudio a ser transcrito. Pode ser uma string de URL, um caminho local, um array numpy ou uma lista desses.
  • language (str ou list[str], opcional) — Idioma(s) a serem forçados para a transcrição. Aceita nomes completos (ex.: "English", "Chinese") ou códigos ISO (ex.: "en", "zh"). Uma lista deve ter o mesmo comprimento que o lote de áudio. Seguindo a implementação original, o idioma é forçado ao anexar language <NAME><asr_text> após o prompt de geração, de modo que o modelo gere apenas o texto da transcrição. Quando None, o modelo realiza detecção automática de idioma e ele mesmo produz language <NAME><asr_text>....
  • prompt (str ou list[str], opcional) — Contexto/palavras-chave para incluir como prompt de sistema, por exemplo, palavras ou frases específicas do domínio para direcionar a transcrição. Uma lista deve ter o mesmo tamanho que o lote de áudio. Quando None, o prompt de sistema é deixado vazio.
  • transcription (str ou list[str], opcional) — Transcrição(ões) de referência para o treinamento, uma para cada áudio. Quando fornecida, cada transcrição é escrita como a resposta do assistente e labels são retornadas (veja output_labels em [~Qwen3ASRProcessor.call]). Com um language, a transcrição é prefixada com language <NAME><asr_text> para corresponder ao formato de saída do modelo. Sem ele, ela é escrita como está, portanto, já deve estar nesse formato para preservar o comportamento pré-treinado.
  • tokenize (bool, opcional, padrão True) — Se deve tokenizar os prompts e processar o áudio. Se False, o áudio não é carregado e os prompts são retornados como strings com placeholders de áudio não expandidos. Passá-los com o áudio para o processador, processor(text=prompts, audio=audio), produz as mesmas saídas que tokenize=True.
  • **kwargs — Argumentos de palavra-chave adicionais encaminhados para [~Qwen3ASRProcessor.apply_chat_template]. Os kwargs do Processor (por exemplo, text_kwargs, audio_kwargs, …) devem ser passados como processor_kwargs={…}.

Retorna

[BatchFeature] ou list[str]

Um prompt por áudio quando tokenize=False; caso contrário, o processador gera a saída pronta para ser passada a [Qwen3ASRForConditionalGeneration.generate], ou a [Qwen3ASRForConditionalGeneration.forward] para calcular a perda quando transcription é fornecida.

Prepare os dados de entrada para reconhecimento automático de fala sem escrever manualmente o modelo de chat, seja para inferência ou, quando transcription for fornecido, para treinamento.

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) — Entrada(s) de áudio. Aceita caminhos, URLs, arrays numpy ou uma lista desses.
  • transcript (str ou list[str]) — Transcrição(s) para alinhar com o áudio.
  • language (str, list[str] ou None, opcional) — Dica(s) de idioma. Atualmente não é utilizada na tokenização, mas está reservada para tokenizadores específicos de idioma (por exemplo, japonês, coreano).
  • **kwargs — Argumentos de palavra-chave adicionais encaminhados para [~Qwen3ASRProcessor.apply_chat_template].

Retorna

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

  • inputs: Um [BatchFeature] com input_ids, attention_mask, input_features e input_features_mask prontos para o modelo de alinhamento forçado.
  • word_lists: Uma lista (uma por amostra) de listas de tokens em nível de palavra usadas para construir a entrada. Passe esses dados para [~Qwen3ASRProcessor.decode_forced_alignment] para associar os timestamps às palavras.

Prepare os inputs para o modelo de alinhamento forçado.

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 classificação de [Qwen3ASRForTokenClassification].
  • input_ids (torch.LongTensor de forma (batch_size, seq_len)) — IDs de tokens de entrada usados para a passagem direta.
  • word_lists (list[list[str]]) — Listas de tokens em nível de palavra, conforme retornadas por [~Qwen3ASRProcessor.prepare_forced_aligner_inputs].
  • timestamp_token_id (int) — ID do token do marcador <timestamp> (de model.config.timestamp_token_id).
  • timestamp_segment_time (float, opcional) — Milissegundos por classe de timestamp. Se não for fornecido, usa self.timestamp_segment_time.

Retorna

list[list[dict]]

Uma lista por amostra. Cada lista interna contém dicionários com as chaves "text" (str), "start_time" (float, segundos) e "end_time" (float, segundos).

Decodifique as saídas do modelo de alinhador forçado em timestamps no nível de palavra.

decode

< >

( *argsreturn_format = 'raw'**kwargs )

Parâmetros

  • return_format (str, opcional, padrão é “raw”) — Opções:
    • "raw": Retorna as strings decodificadas brutas do tokenizer.
    • "parsed": Retorna um dict (ou lista de dicts) com as chaves "language" e "transcription".
    • "transcription_only": Extrai apenas o texto transcrito (após <asr_text>).

    skip_special_tokens é definido como True para "parsed" e "transcription_only".

Encaminha os argumentos para o método decode do tokenizer e, opcionalmente, analisa a saída do ASR.

O Qwen3 ASR gera a transcrição no formato: language <LANG><asr_text>transcribed text

Qwen3ASREncoder

classe transformers.Qwen3ASREncoder

< >

( config: Qwen3ASREncoderConfig )

Parâmetros

  • config (Qwen3ASREncoderConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O modelo de áudio para Qwen3 ASR, sem nenhum head ou projeção no topo.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

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)) — Os tensors correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para mais detalhes (Qwen3ASRProcessor usa Qwen3ASRFeatureExtractor para processar áudios).
  • input_features_mask (torch.LongTensor de forma (batch_size, padded_feature_length)) — 1 para quadros mel válidos e 0 para preenchimento.

Retorna

BaseModelOutputWithPooling ou tuple(torch.Tensor)

Um BaseModelOutputWithPooling ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (Qwen3ASRConfig) e das entradas.

O método forward do Qwen3ASREncoder sobrescreve o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

  • last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.

  • pooler_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto da última camada do primeiro token da sequência (token de classificação) após processamento adicional através das camadas usadas para a tarefa de pré-treinamento auxiliar. Por exemplo, para a família de modelos BERT, isso retorna o token de classificação após o processamento através de uma camada linear e uma função de ativação tanh. Os pesos da camada linear são treinados a partir do objetivo de previsão da próxima frase (classificação) durante o pré-treinamento.

  • hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.

  • attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.

Qwen3ASRModel

classe transformers.Qwen3ASRModel

< >

( config: Qwen3ASRConfig )

Parâmetros

  • config (Qwen3ASRConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O modelo Qwen3ASR (codificador Whisper ajustado finamente, projetor multimodal, modelo de linguagem Qwen2), sem uma cabeça de modelagem de linguagem.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

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 dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim), opcional) — Os tensors correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para mais detalhes (Qwen3ASRProcessor usa Qwen3ASRFeatureExtractor para processar áudios).
  • input_features_mask (torch.Tensor de forma (batch_size, feature_sequence_length)) — Máscara para evitar a execução de atenção nos índices de recurso de preenchimento.
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em [0, 1]:
    • 1 para tokens que não estão mascarados,
    • 0 para tokens que estão mascarados.

    O que são máscaras de atenção?

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo [0, config.n_positions - 1].

    O que são IDs de posição?

  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste no past_key_values retornado pelo modelo em uma etapa anterior da decodificação, quando use_cache=True ou config.use_cache=True.

    Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum past_key_values for passado, DynamicCache será inicializado por padrão.

    O modelo sairá no mesmo formato de cache que é fornecido como entrada.

    Se past_key_values forem usados, espera-se que o usuário insira apenas os input_ids não processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma (batch_size, unprocessed_length), em vez de todos os input_ids com a forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar input_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices de input_ids nos vetores associados do que a matriz de busca de incorporação interna do modelo.
  • use_cache (bool, opcional) — Se definido como True, os estados de chave-valor past_key_values são retornados e podem ser usados para acelerar a decodificação (veja past_key_values).

Retorna

Qwen3ASRModelOutputWithPast ou tuple(torch.Tensor)

Um Qwen3ASRModelOutputWithPast ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False), contendo vários elementos dependendo da configuração (Qwen3ASRConfig) e das entradas.

O método forward do Qwen3ASRModel substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

  • audio_hidden_states (torch.Tensor, opcional) — Estados ocultos de áudio projetados.

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)) — Os tensors correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para mais detalhes (Qwen3ASRProcessor usa Qwen3ASRFeatureExtractor para processar áudios).
  • input_features_mask (torch.LongTensor de forma (batch_size, padded_feature_length)) — 1 para quadros mel válidos e 0 para preenchimento.

Retorna

BaseModelOutputWithPooling ou tuple(torch.Tensor)

Um BaseModelOutputWithPooling ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (Qwen3ASRConfig) e das entradas.

Este método é usado para obter os embeddings de áudio a partir das características de entrada (um log mel espectrograma).

  • last_hidden_state (torch.Tensor de forma (batch_size, sequence_length, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.

  • pooler_output (torch.Tensor de forma (batch_size, hidden_size)) — Estado oculto da última camada do primeiro token da sequência (token de classificação) após processamento adicional através das camadas usadas para a tarefa de pré-treinamento auxiliar. Por exemplo, para a família de modelos BERT, isso retorna o token de classificação após o processamento através de uma camada linear e uma função de ativação tanh. Os pesos da camada linear são treinados a partir do objetivo de previsão da próxima frase (classificação) durante o pré-treinamento.

  • hidden_states (tuple(torch.Tensor), opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.

  • attentions (tuple(torch.Tensor), opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.

get_placeholder_mask

< >

( input_ids: LongTensorinputs_embeds: Tensoraudio_features: Tensor )

Obtém a máscara de placeholder multimodal a partir de input_ids ou inputs_embeds e verifica se a contagem de tokens de placeholder é igual ao comprimento dos recursos multimodais. Se os comprimentos forem diferentes, um erro é lançado.

Qwen3ASRForConditionalGeneration

classe transformers.Qwen3ASRForConditionalGeneration

< >

( config: Qwen3ASRConfig )

Parâmetros

  • config (Qwen3ASRConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O modelo Qwen3ASR, que consiste em um codificador de áudio e um modelo de linguagem.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

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 dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • input_features (torch.Tensor de forma (batch_size, sequence_length, feature_dim), opcional) — Os tensores correspondentes às características de áudio de entrada. As características de áudio podem ser obtidas usando Qwen3ASRFeatureExtractor. Consulte Qwen3ASRFeatureExtractor.call() para mais detalhes (Qwen3ASRProcessor usa Qwen3ASRFeatureExtractor para processar áudios).
  • input_features_mask (torch.Tensor de forma (batch_size, feature_sequence_length)) — Máscara para evitar a execução de atenção nos índices de recurso de preenchimento.
  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em [0, 1]:
    • 1 para tokens que não estão mascarados,
    • 0 para tokens que estão mascarados.

    O que são máscaras de atenção?

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo [0, config.n_positions - 1].

    O que são IDs de posição?

  • past_key_values (~cache_utils.Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste no past_key_values retornado pelo modelo em uma etapa anterior da decodificação, quando use_cache=True ou config.use_cache=True.

    Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum past_key_values for passado, DynamicCache será inicializado por padrão.

    O modelo sairá no mesmo formato de cache que é fornecido como entrada.

    Se past_key_values forem usados, espera-se que o usuário insira apenas os input_ids não processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma (batch_size, unprocessed_length), em vez de todos os input_ids com a forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar input_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices de input_ids nos vetores associados do que a matriz de busca de incorporação interna do modelo.
  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de modelagem de linguagem mascarada.
  • use_cache (bool, opcional) — Se definido como True, os estados de chave-valor past_key_values são retornados e podem ser usados para acelerar a decodificação (veja past_key_values).
  • logits_to_keep (Union[int, torch.Tensor], opcional, padrão 0) — Se for um int, calcula os logits para os últimos logits_to_keep tokens. Se for 0, calcula os logits para todos os input_ids (caso especial). Apenas os logits do último token são necessários para a geração, e calculá-los apenas para esse token pode economizar memória, o que se torna bastante significativo para sequências longas ou tamanho de vocabulário grande. Se for um torch.Tensor, deve ser 1D, correspondendo aos índices a serem mantidos na dimensão de comprimento da sequência. Isso é útil ao usar o formato de tensor empacotado (uma única dimensão para lote e comprimento da sequência).

Retorna

Qwen3ASRCausalLMOutputWithPast ou tuple(torch.Tensor)

Um Qwen3ASRCausalLMOutputWithPast ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (Qwen3ASRConfig) e das entradas.

O método forward de Qwen3ASRForConditionalGeneration substitui o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

  • loss (torch.Tensor de forma (1,), opcional, retornado quando labels é fornecido) — Perda de modelagem de linguagem (para previsão do próximo token).

  • logits (torch.Tensor de forma (batch_size, sequence_length, config.vocab_size)) — Pontuações de previsão da cabeça de modelagem de linguagem.

  • past_key_values (Cache, opcional, retornado quando use_cache=True é passado ou quando config.use_cache=True) — É uma instância de Cache.

  • hidden_states (tuple[torch.Tensor], opcional, retornado quando output_hidden_states=True é passado ou quando config.output_hidden_states=True) — Tupla de torch.Tensor (um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma (batch_size, sequence_length, hidden_size).

    Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.

  • attentions (tuple[torch.Tensor], opcional, retornado quando output_attentions=True é passado ou quando config.output_attentions=True) — Tupla de torch.Tensor (um para cada camada) com forma (batch_size, num_heads, sequence_length, sequence_length).

    Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.

  • audio_hidden_states (torch.Tensor, opcional) — Estados ocultos do codificador de áudio após a projeção.

Exemplo:

>>> 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

classe transformers.Qwen3ASRForTokenClassification

< >

( config )

Parâmetros

  • config ([[``GenericForTokenClassification``]]) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O modelo Qwen3 ASR com uma cabeça de classificação de tokens para previsão de timestamps (alinhamento forçado).

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

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 dos tokens da sequência de entrada no vocabulário. O padding será ignorado por padrão.

    Os índices podem ser obtidos usando AutoTokenizer. Consulte PreTrainedTokenizer.encode() e PreTrainedTokenizer.call() para mais detalhes.

    O que são IDs de entrada?

  • attention_mask (torch.Tensor de forma (batch_size, sequence_length), opcional) — Máscara para evitar a execução de atenção nos índices de tokens de preenchimento. Valores de máscara selecionados em [0, 1]:
    • 1 para tokens que não estão mascarados,
    • 0 para tokens que estão mascarados.

    O que são máscaras de atenção?

  • position_ids (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Índices das posições dos tokens de cada sequência de entrada nos embeddings de posição. Selecionados no intervalo [0, config.n_positions - 1].

    O que são IDs de posição?

  • past_key_values (Cache, opcional) — Estados ocultos pré-computados (chaves e valores nos blocos de autoatenção e nos blocos de atenção cruzada) que podem ser usados para acelerar a decodificação sequencial. Isso geralmente consiste no past_key_values retornado pelo modelo em uma etapa anterior da decodificação, quando use_cache=True ou config.use_cache=True.

    Apenas uma instância de Cache é permitida como entrada, consulte nosso guia de cache de kv. Se nenhum past_key_values for passado, DynamicCache será inicializado por padrão.

    O modelo sairá no mesmo formato de cache que é fornecido como entrada.

    Se past_key_values forem usados, espera-se que o usuário insira apenas os input_ids não processados (aqueles que não têm seus estados de chave e valor passados fornecidos a este modelo) com a forma (batch_size, unprocessed_length), em vez de todos os input_ids com a forma (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor de forma (batch_size, sequence_length, hidden_size), opcional) — Opcionalmente, em vez de passar input_ids, você pode escolher passar diretamente uma representação incorporada. Isso é útil se você quiser ter mais controle sobre como converter os índices de input_ids nos vetores associados do que a matriz de busca de incorporação interna do modelo.
  • labels (torch.LongTensor de forma (batch_size, sequence_length), opcional) — Rótulos para o cálculo da perda de classificação de tokens. Os índices devem estar em [0, ..., config.num_labels - 1].
  • use_cache (bool, opcional) — Se definido como True, os estados de chave-valor past_key_values são retornados e podem ser usados para acelerar a decodificação (veja past_key_values).

Retorna

TokenClassifierOutput

O método forward de GenericForTokenClassification sobrescreve o método especial __call__.

Embora a receita para a passagem direta precise ser definida dentro desta função, deve-se chamar a instância de Module em seguida, em vez desta, pois a primeira cuida da execução das etapas de pré e pós-processamento, enquanto a segunda as ignora silenciosamente.

Update on GitHub