Qwen-Omni SDK Python
Qwen-Omni-Realtime SDK Python
Este tópico descreve as principais interfaces e parâmetros de solicitação para o Qwen-Omni-Realtime SDK Python do DashScope.
Pré-requisitos
A versão 1.26.5+ do SDK é necessária. Consulte Fluxo de interação multimodal em tempo real.
Para usar qwen3.8-omni-flash-realtime, defina o construtor da sessão model parâmetro para este nome de modelo. A voz padrão é Tina. Para obter exemplos de configuração de sessão do Python SDK e agregação de vídeo, consulte o guia em tempo real.
Parâmetros de solicitação
Defina os seguintes parâmetros de solicitação usando o método construtor (__init__) do OmniRealtimeConversation aula.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| modelo | O Qwen-Omni nome do modelo. Consulte Lista de modelos. | |
| retorno de chamada | OmniRealtimeCallback | A instância do objeto de retorno de chamada que manipula eventos do lado do servidor. |
| url | O endereço da chamada: wss://maas.qwencloudapi.com/api-ws/v1/realtime |
Configure os seguintes parâmetros de solicitação usando o comando update_session método.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| saída_modalidades | lista[MultiModalidade] | Modalidade de saída do modelo. Definir como [MultiModality.TEXT] apenas para texto ou [MultiModality.TEXT, MultiModality.AUDIO] para ambos. |
| voz | A voz para o áudio gerado pelo modelo. Aceita vozes predefinidas ou vozes clonadas (Qwen3.5-Omni-Realtime somente) criado por meio da API de clonagem de voz. Para obter uma lista de vozes predefinidas suportadas, consulte Lista de vozes. Vozes padrão: Qwen3.5-Omni-Realtime: "Tina". |
|
| entrada_áudio_formato | Formato de Áudio | O formato do áudio de entrada do usuário. Atualmente só suporta PCM_16000HZ_MONO_16BIT, que representa um fluxo de áudio PCM com uma taxa de amostragem de 16 kHz. |
| saída_áudio_formato | Formato de Áudio | O formato do áudio de saída do modelo. Atualmente só suporta PCM_24000HZ_MONO_16BIT, que representa um fluxo de áudio PCM com uma taxa de amostragem de 24 kHz. |
| suave_saída | bool | True: o modelo fornece uma resposta conversacional. False: o modelo fornece uma resposta mais formal e escrita (a qualidade pode ser inferior se o conteúdo for difícil de ler em voz alta). None (padrão): o modelo escolhe automaticamente entre estilos de resposta conversacional e formal. |
| instruções | Uma mensagem do sistema que define o objetivo ou a função do modelo. Por exemplo: "Você é um agente de IA de um hotel cinco estrelas. Responda às perguntas dos clientes sobre tipos de quartos, instalações, preços e políticas de reserva." | |
| ativar_entrada_áudio_transcrição | bool | Se o reconhecimento de fala deve ser ativado para áudio de entrada. |
| entrada_áudio_transcrição_modelo | Modelo de reconhecimento de fala para transcrever áudio de entrada. Sempre qwen3-asr-flash-realtime. Este parâmetro não é configurável. |
|
| turno_detecção_tipo | Tipo de detecção de atividade de voz (VAD) do lado do servidor. Valores válidos: server_vad (padrão): Detecta o final da fala do usuário com base nos recursos acústicos. semantic_vad: detecta o final da fala do usuário com base na validade semântica. Este modo pode filtrar falas sem sentido, como palavras de preenchimento e ruído de fundo. Este modo é suportado por qwen3.8-omni-flash-realtime e o qwen3.5-omni-realtime série. |
|
| turno_detecção_limiar | flutuar | O limite de detecção de VAD. Aumente este valor em ambientes ruidosos e diminua-o em ambientes silenciosos. Quanto mais próximo o valor estiver de -1, maior será a probabilidade de o ruído ser detectado como fala. Quanto mais próximo o valor estiver de 1, menor será a probabilidade de o ruído ser detectado como fala. Valor padrão: 0,2. Valores válidos: [-1,0, 1,0]. |
| turno_detecção_silêncio_duração_ms | interno | A duração do silêncio que indica o fim do discurso. Se esta duração for excedida, o modelo dispara uma resposta. Valor padrão: 800. Valores válidos: [200, 6000]. |
| virar_detecção_param | ditado | Adicional turn_detection parâmetros de configuração. Atualmente suporta idle_timeout_ms (int): o tempo limite de inatividade em milissegundos. Aplica-se apenas a qwen3.5-omni-plus-realtime e qwen3.5-omni-flash-realtime modelos em server_vad modo. Depois que o servidor terminar a reprodução de áudio e o usuário permanecer em silêncio além dessa duração (sem speech.started acionado), o modelo gera proativamente uma resposta para solicitar que o usuário continue a conversa. Intervalo válido: [5000, 30000]. Exemplo: turn_detection_param={'idle_timeout_ms': 5000} |
| temperatura | flutuar | A temperatura de amostragem controla a diversidade de conteúdo. Valores mais altos aumentam a diversidade e valores mais baixos aumentam o determinismo. Valores válidos: [0, 2). Porque ambos temperature e top_p controlar a diversidade de conteúdo, defina apenas um deles. Padrões: qwen3.8-omni-flash-realtime: 0.6, qwen3.5-omni-realtime série: 0,7. |
| topo_p | flutuar | O limite de probabilidade de amostragem de núcleo controla a diversidade de conteúdo. Valores mais altos aumentam a diversidade e valores mais baixos aumentam o determinismo. Valores válidos: (0, 1,0]. Porque ambos temperature e top_p controlar a diversidade de conteúdo, defina apenas um deles. Padrões: qwen3.8-omni-flash-realtime: 0.95, qwen3.5-omni-realtime série: 0,8. |
| topo_k | inteiro | O tamanho do conjunto candidato para amostragem durante a geração. Um valor maior aumenta a aleatoriedade. Um valor menor aumenta o determinismo. Se definido para None ou um valor superior a 100, o top_k política não está habilitada e apenas o top_p política entra em vigor. O valor deve ser maior ou igual a 0. Padrões: qwen3.8-omni-flash-realtime: 20, qwen3.5-omni-realtime série: 20. |
| máximo_tokens | inteiro | O número máximo de tokens a serem retornados para a solicitação atual. Este parâmetro não afeta a geração do modelo. Se a saída exceder max_tokens, o conteúdo truncado será retornado. Para qwen3.8-omni-flash-realtime, o intervalo válido é [1, 65536]. Para outros modelos, os valores padrão e máximo são o comprimento máximo de saída do modelo. O max_tokens O parâmetro é adequado para cenários em que você precisa limitar a contagem de palavras, controlar custos ou reduzir o tempo de resposta. |
| repetição_penalidade | flutuar | O grau de repetição em sequências consecutivas durante a geração do modelo. Um valor mais alto reduz a repetição. Um valor de 1,0 significa nenhuma penalidade. qwen3.8-omni-flash-realtime também aceita 0. Para outros modelos, o valor deve ser maior que 0. Padrões: qwen3.8-omni-flash-realtime: 0, qwen3.5-omni-realtime série: 1.0. |
| presença_penalidade | flutuar | Controla a repetição do conteúdo que o modelo gera. Valores válidos: [-2,0, 2,0]. Um valor positivo reduz a repetição e um valor negativo aumenta a repetição. Um valor mais alto é adequado para escrita criativa ou brainstorming. Um valor mais baixo é adequado para documentos técnicos ou documentos formais. Padrões: qwen3.8-omni-flash-realtime: 1, qwen3.5-omni-realtime série: 1,5. |
| semente | inteiro | Torna a geração de modelos mais determinística, garantindo resultados consistentes em todas as execuções. Se você passar o mesmo valor inicial e manter os outros parâmetros inalterados, o modelo retornará o mesmo resultado tanto quanto possível. Valores válidos: 0 a 2^31-1. Valor padrão: -1. |
| ativar_pesquisar | bool | Aplica-se a qwen3.8-omni-flash-realtime e qwen3.5-omni-realtime modelos. Se deve ativar a pesquisa na web. |
| pesquisa_opções | ditado | Opções de pesquisa na web. Só entra em vigor quando enable_search está habilitado. Atualmente, você só pode definir enable_source (Booleano), que controla se as fontes de resultados de pesquisa devem ser retornadas. Definir como true para habilitar. Exemplo: search_options={'enable_source': True}. |
| ferramentas | lista[dict] | Aplica-se a qwen3.8-omni-flash-realtime e qwen3.5-omni-realtime modelos. Definições de ferramentas. Quando fornecido, o modelo pode chamar ferramentas externas para responder às perguntas do usuário. Para Chamada de Função, o modelo não gera áudio e apenas retorna os parâmetros de chamada da ferramenta. qwen3.8-omni-flash-realtime suporta chamadas de função e ferramentas MCP na mesma sessão. Consulte eventos do cliente para configuração do MCP e limites de chamadas do MCP para cotas. tools e enable_search são mutuamente exclusivos, incluindo ferramentas MCP. Os campos a seguir descrevem ferramentas de chamada de função. Cada ferramenta é um dicionário com os seguintes campos: type (str, obrigatório): Deve ser definido como "function". function (dict, obrigatório): A definição da função da ferramenta, contendo name (str, obrigatório), description (str, opcional) e parameters (dict, opcional, formato JSON Schema com type, propertiese required campos). |
Chamada de ferramenta (tools) e pesquisa na web (enable_search) são incompatíveis. Você não pode ativar os dois ao mesmo tempo.
Interfaces principais
Classe OmniRealtimeConversation
Importe o OmniRealtimeConversation classe usando a instrução from dashscope.audio.qwen_omni import OmniRealtimeConversation.
conectar
def connect(self) -> None
Cria uma conexão com o servidor.
Eventos de resposta do servidor: session.created (Sessão criada), session.updated (Configuração da sessão atualizada).
atualização_sessão
def update_session(self,
output_modalities: list[MultiModality],
voice: str,
input_audio_format: AudioFormat = AudioFormat.PCM_16000HZ_MONO_16BIT,
output_audio_format: AudioFormat = AudioFormat.PCM_24000HZ_MONO_16BIT,
enable_input_audio_transcription: bool = True,
input_audio_transcription_model: str = None,
enable_turn_detection: bool = True,
turn_detection_type: str = 'server_vad',
prefix_padding_ms: int = 300,
turn_detection_threshold: float = 0.2,
turn_detection_silence_duration_ms: int = 800,
turn_detection_param: dict = None,
**kwargs) -> None
Atualiza a configuração da sessão. Após estabelecer a conexão, o servidor retorna as configurações padrão. Chame esse método imediatamente para substituir os padrões. O servidor valida os parâmetros e retorna um erro se for inválido. Para configurações de parâmetros, consulte Solicitar parâmetros seção.
Eventos de resposta do servidor: session.updated (Configuração da sessão atualizada).
anexar_audio
def append_audio(self, audio_b64: str) -> None
Acrescenta áudio codificado em Base64 ao buffer de entrada da nuvem (armazenamento temporário para confirmação posterior).
- Se
turn_detectionestá habilitado, o buffer de áudio é usado para detecção de voz e o servidor decide quando confirmar. - Se
turn_detectionestiver desabilitado, o cliente poderá escolher a quantidade de áudio a ser colocada em cada evento, até no máximo 15 MiB. O streaming de blocos menores de dados do cliente pode tornar o VAD mais responsivo.
Eventos de resposta do servidor: Nenhum.
anexar_video
def append_video(self, video_b64: str) -> None
Adiciona dados de imagem codificados em Base64 ao buffer de vídeo em nuvem (stream local ou em tempo real).
Os seguintes limites se aplicam à entrada de imagem:
- O formato da imagem deve ser JPG ou JPEG. A resolução de imagem recomendada é 480p ou 720p, com máximo de 1080p.
- Uma única imagem após codificação Base64 não deve exceder 256 KB. Recomendamos manter o tamanho da imagem bruta abaixo de 190 KB antes da codificação.
- Os dados da imagem devem ser codificados em Base64.
- Envie imagens para o servidor na frequência de 1 imagem/segundo.
Eventos de resposta do servidor: Nenhum.
limpar_appended_audio
def clear_appended_audio(self) -> None
Limpa o áudio do buffer da nuvem.
Eventos de resposta do servidor: input_audio_buffer.cleared (Limpa o áudio recebido pelo servidor).
confirmar
def commit(self) -> None
Confirma áudio e vídeo adicionados via append. Retorna um erro se o buffer estiver vazio.
-
Se
turn_detectionestiver habilitado, o cliente não precisará enviar este evento. O servidor confirma automaticamente o buffer de áudio. -
Se
turn_detectionestiver desativado, o cliente deverá confirmar o buffer de áudio para criar um item de mensagem do usuário.- Se a transcrição de áudio estiver configurada para a sessão usando
input_audio_transcription, o sistema transcreve o áudio. - A confirmação do buffer de áudio de entrada não cria uma resposta do modelo.
- Se a transcrição de áudio estiver configurada para a sessão usando
Eventos de resposta do servidor: input_audio_buffer.committed (O servidor recebeu o áudio confirmado).
criar_resposta
def create_response(self,
instructions: str = None,
output_modalities: list[MultiModality] = None) -> None
Instrui o servidor a criar uma resposta de modelo (automática quando turn_detection está habilitado).
Eventos de resposta do servidor: response.created, response.output_item.added, conversação.item.criado, response.content_part.added, response.audio_transcript.delta, response.audio.delta, response.audio_transcript.done, response.audio.done, response.content_part.done, response.output_item.done, resposta.concluído.
cancelar_resposta
def cancel_response(self) -> None
Cancela a resposta em andamento (retorna um erro se não existir).
Eventos de resposta do servidor: Nenhum.
criar_item
def create_item(self, item: dict) -> None
Envia um conversation.item.create evento para o servidor. Em cenários de chamada de ferramenta, use este método para enviar o resultado da execução da ferramenta de volta ao servidor.
O item parâmetro é um dicionário que deve conter os seguintes campos:
type: Deve ser"function_call_output".call_id: Ocall_iddoresponse.function_call_arguments.doneevento.output: uma string que contém o resultado da execução da ferramenta.
Eventos de resposta do servidor: Nenhum.
fechar
def close(self) -> None
Encerra a tarefa e fecha a conexão.
Eventos de resposta do servidor: Nenhum.
get_session_id
def get_session_id(self) -> str
Obtém o session_id da tarefa atual.
Eventos de resposta do servidor: Nenhum.
get_última_resposta_id
def get_last_response_id(self) -> str
Obtém o response_id da última resposta.
Eventos de resposta do servidor: Nenhum.
Interface de retorno de chamada (OmniRealtimeCallback)
O servidor retorna eventos e dados por meio de retornos de chamada. Implemente métodos de retorno de chamada para lidar com as respostas do servidor.
Importe a interface usando a instrução from dashscope.audio.qwen_omni import OmniRealtimeCallback.
| Método | Parâmetros | Valor de retorno | Descrição |
|---|---|---|---|
on_open(self) |
Nenhum | Nenhum | Chamado imediatamente após a conexão ser estabelecida. |
on_event(self, message: str) |
message: um evento de resposta do servidor. |
Nenhum | Lida com respostas de chamadas de interface e texto/áudio gerado por modelo. Consulte Eventos do servidor. |
on_close(self, close_status_code, close_msg) |
close_status_code: o código de status para fechar o WebSocket. close_msg: a mensagem de encerramento do WebSocket. |
Nenhum | Chamado depois que a conexão é fechada. |