QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

Qwen-ASR SDK Python em tempo real

Qwen Streaming ASR Python

Para modelos suportados, recursos e código de exemplo completo, consulte Reconhecimento de fala em tempo real.

Parâmetros de solicitação

Construtor OmniRealtimeConversation

Crie um OmniRealtimeConversation instância.

Clique para ver o código de amostra.

from dashscope.audio.qwen_omni import OmniRealtimeConversation, OmniRealtimeCallback

class MyCallback(OmniRealtimeCallback):
  """Callback for real-time recognition"""
  def __init__(self, conversation):
    self.conversation = conversation
    self.handlers = {
      'session.created': self._handle_session_created,
      'conversation.item.input_audio_transcription.completed': self._handle_final_text,
      'conversation.item.input_audio_transcription.text': self._handle_stash_text,
      'input_audio_buffer.speech_started': lambda r: print('======Speech Start======'),
      'input_audio_buffer.speech_stopped': lambda r: print('======Speech Stop======')
    }

  def on_open(self):
    print('Connection opened')

  def on_close(self, code, msg):
    print(f'Connection closed, code: {code}, msg: {msg}')

  def on_event(self, response):
    try:
      handler = self.handlers.get(response['type'])
      if handler:
        handler(response)
    except Exception as e:
      print(f'[Error] {e}')

  def _handle_session_created(self, response):
    print(f"Start session: {response['session']['id']}")

  def _handle_final_text(self, response):
    print(f"Final recognized text: {response['transcript']}")

  def _handle_stash_text(self, response):
    print(f"Got stash result: {response['stash']}")

conversation = OmniRealtimeConversation(
    model='qwen3-asr-flash-realtime',
    url='wss://maas.qwencloudapi.com/api-ws/v1/realtime',
    callback=MyCallback(conversation=None)  # Temporarily pass None and inject it later.
  )
# Inject self into the callback.
conversation.callback.conversation = conversation
Parâmetro Tipo Obrigatório Descrição
model str Sim Nome do modelo.
callback OmniRealtimeCallback Sim Objeto de retorno de chamada que manipula eventos do servidor.
url str Sim Ponto de extremidade WebSocket: wss://maas.qwencloudapi.com/api-ws/v1/realtime

Configuração da sessão

Defina os parâmetros da sessão após conectar.

Clique para ver o código de amostra.

from dashscope.audio.qwen_omni import MultiModality
from dashscope.audio.qwen_omni.omni_realtime import TranscriptionParams

transcription_params = TranscriptionParams(
  language='zh',
  sample_rate=16000,
  input_audio_format="pcm"
)

conversation.update_session(
  output_modalities=[MultiModality.TEXT],
  enable_turn_detection=True,
  turn_detection_type="server_vad",
  turn_detection_threshold=0.0,
  turn_detection_silence_duration_ms=400,
  enable_input_audio_transcription=True,
  transcription_params=transcription_params
)
Parâmetro Tipo Obrigatório Descrição
output_modalities List[MultiModality] Sim Tipo de saída. Corrigido para [MultiModality.TEXT].
enable_turn_detection bool Não Ativa o VAD do lado do servidor. Padrão: True. Se False, ligue commit() manualmente para acionar o reconhecimento.
turn_detection_type str Não Tipo VAD. Corrigido para server_vad.
turn_detection_threshold float Não Sensibilidade do DAV. Padrão: 0.2. Recomendado: 0.0. Alcance: [-1, 1]. Valores mais baixos aumentam a sensibilidade, mas podem desencadear ruído. Valores mais altos reduzem gatilhos falsos.
turn_detection_silence_duration_ms int Não Duração do silêncio (ms) que marca o fim de uma instrução. Padrão: 800. Recomendado: 400. Alcance: [200, 6000]. Valores mais baixos respondem mais rapidamente, mas podem dividir as pausas. Valores mais altos lidam com pausas longas, mas adicionam latência.
transcription_params TranscriptionParams Não Configurações de reconhecimento. Consulte TranscriptionParams.

TranscriçãoParams

Defina opções de reconhecimento com TranscriptionParams.

Clique para ver o código de amostra.

transcription_params = TranscriptionParams(
  language='zh',
  sample_rate=16000,
  input_audio_format="pcm"
)
Parâmetro Tipo Obrigatório Descrição
language str Não Linguagem de áudio. Valores suportados: zh (chinês: mandarim, sichuanês, minnan, wu), yue (Cantonês), en (Inglês), ja (japonês), ko (coreano), de (Alemão), fr (francês), es (Espanhol), pt (português), it (italiano), ru (Russo), ar (Árabe), hi (hindi), id (indonésio), th (tailandês), tr (Turco), uk (ucraniano), vi (vietnamita), cs (Tcheco), da (dinamarquês), fi (finlandês), fil (Filipino), is (islandês), ms (malaio), no (norueguês), pl (polonês), sv (sueco)
sample_rate int Não Taxa de amostragem de áudio (Hz). Padrão: 16000. Suportado: 16000, 8000. O servidor aumenta a amostragem de 8 kHz para 16 kHz, o que adiciona menor latência. Usar 8000 apenas para fontes de 8 kHz, como áudio de telefone.
input_audio_format str Não Formato de áudio. Padrão: pcm. Suportado: pcm, opus.
corpus Dict[str, Any] Não Configuração de polarização contextual como dicionário. Para uma interface de string mais simples, use corpus_text em vez disso.
corpus_text str Não Texto de referência para polarização contextual (como entidades ou vocabulário de domínio). Máximo: 10.000 tokens. Consulte Viés contextual.

Interfaces principais

Classe OmniRealtimeConversation

from dashscope.audio.qwen_omni import OmniRealtimeConversation
Método Evento de resposta do servidor Descrição
connect() session.created, session.updated Abre uma conexão WebSocket.
update_session(...) session.updated Define parâmetros de sessão. Ligar depois connect(). Os padrões se aplicam se omitidos. Consulte Configuração da sessão.
append_audio(audio_b64: str) Nenhum Envia áudio codificado em Base64 para o buffer de entrada. Com enable_turn_detection=True, o servidor confirma automaticamente nos limites de fala. Com False, o cliente controla os commits. Máximo de 15 MiB por evento. Pedaços menores melhoram a capacidade de resposta do VAD.
commit() input_audio_buffer.committed Confirma áudio em buffer para reconhecimento. Retorna um erro se o buffer estiver vazio. Desativado quando enable_turn_detection=True.
end_session(timeout: int = 20) session.finished Termina a sessão após a conclusão do reconhecimento final. No modo VAD (padrão), ligue após enviar o áudio. No modo manual, ligue depois commit(). Variante assíncrona: end_session_async.
close() Nenhum Interrompe a tarefa e fecha a conexão.
get_session_id() Nenhum Retorna o ID da sessão.
get_last_response_id() Nenhum Retorna o ID de resposta mais recente.

###Interface OmniRealtimeCallback

Subclasse OmniRealtimeCallback para lidar com eventos do servidor.

from dashscope.audio.qwen_omni import OmniRealtimeCallback
Método Parâmetros Descrição
on_open() Nenhum Chamado quando a conexão WebSocket é aberta.
on_event(message: dict) message: um evento do servidor Chamado quando um evento do servidor chega.
on_close(close_status_code, close_msg) close_status_code: código de status; close_msg: mensagem de registro Chamado quando a conexão WebSocket é fechada.