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