O Qwen-ASR-Realtime recebe fluxos de áudio e transcreve a fala em tempo real via WebSocket. O service oferece suporte a dois modos de interação: VAD mode e Manual mode .
Guia do usuário: Para obter visões gerais dos modelos e orientações de seleção, consulte Speech-to-text. Para códigos de exemplo, veja Real-time speech recognition.
Limites de taxa: As chamadas de modelo estão sujeitas a limites de taxa. Quando um limite é excedido, o servidor retorna o erro Requests rate limit exceeded, please try again later. Reduza sua taxa de solicitações ou a simultaneidade e tente novamente. Para verificar os limites de cada modelo, consulte Rate limiting.
Endpoint do service
Utilize a seguinte URL WebSocket. O parâmetro de consulta model especifica o modelo. Substitua <model_name> pelo nome do modelo desejado:
Singapore
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
Substitua {WorkspaceId} pelo seu Workspace ID real.
China (Beijing)
wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
Substitua {WorkspaceId} pelo seu Workspace ID real.
ImportanteO Alibaba Cloud Model Studio lançou domínios específicos por workspace para as regiões China (Beijing) e Singapore. Os novos domínios dedicados oferecem desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos a migração para os novos domínios:
- China (Beijing): de
dashscope.aliyuncs.compara{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapore: de
dashscope-intl.aliyuncs.compara{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Substitua {WorkspaceId} pelo seu Workspace ID real. Os domínios existentes permanecem totalmente funcionais.
ImportanteUse o esquema wss://. Defina a autorização nos cabeçalhos da solicitação (consulte Request headers). Especifique o modelo por meio do parâmetro de consulta model.
Cabeçalhos da solicitação
Inclua os seguintes campos nos cabeçalhos da solicitação:
Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token de autenticação no formato |
user-agent | string | Não | Identificador do cliente que auxilia o servidor a rastrear as origens das solicitações. |
X-DashScope-WorkSpace | string | Não | O workspace ID do Alibaba Cloud Model Studio. |
X-DashScope-DataInspection | string | Não | Indica se a inspeção de dados deve ser ativada. Omita este cabeçalho, a menos que a inspeção seja necessária; nesse caso, defina o valor como |
ImportanteA autorização é verificada durante o handshake do WebSocket. Se a chave de API for inválida ou estiver ausente, o handshake falhará com um erro HTTP 401 ou 403.
Fluxos de interação
Para detalhes sobre eventos do cliente e do servidor, consulte Client events for Qwen-ASR-Realtime e Server events.
O Qwen-ASR-Realtime oferece suporte a dois modos de interação:
- Modo VAD (padrão): O servidor utiliza detecção de atividade de voz (VAD) para identificar automaticamente o início e o fim de cada enunciado. Este modo é ideal para conversas em tempo real, transcrição de reuniões e cenários semelhantes.
- Modo manual: O cliente controla os limites do enunciado. Utilize esta opção quando o cliente puder determinar esses limites explicitamente, como ao enviar uma mensagem de voz em um aplicativo de mensagens.
Modo VAD (padrão)
O servidor detecta automaticamente o início e o fim de cada enunciado. Envie o fluxo de áudio continuamente; o servidor retornará a transcrição final de cada enunciado assim que detectar seu término. Recomenda-se este modo para conversas em tempo real, transcrição de reuniões e casos de uso similares.
Para ativar: Configure o parâmetro session.turn_detection no evento session.update do cliente.
-
O cliente envia eventos input_audio_buffer.append para adicionar áudio ao buffer.
-
O servidor retorna um evento input_audio_buffer.speech_started ao detectar fala.
Nota: Caso o cliente envie session.finish para encerrar a sessão antes da chegada desse evento, o servidor retornará imediatamente um evento session.finished. Em seguida, o cliente deve fechar a conexão.
-
O cliente continua enviando eventos input_audio_buffer.append para submeter o áudio.
-
Após enviar todo o áudio, o cliente envia um evento session.finish para finalizar a sessão.
AvisoNo modo VAD, o cliente precisa enviar um evento
session.finishantes de fechar a conexão. Se o cliente encerrar a conexão WebSocket sem antes enviarsession.finish, o servidor descartará o item em andamento atual e eventos comoconversation.item.input_audio_transcription.completednão serão entregues. Envie{"type":"session.finish"}antes de chamarws.Close()e aguarde o eventosession.finishedantes de fechar a conexão. -
Um evento input_audio_buffer.speech_stopped é retornado pelo servidor ao detectar o fim da fala.
-
O servidor responde com um evento input_audio_buffer.committed.
-
Em seguida, o servidor envia um evento conversation.item.created.
-
Resultados parciais da transcrição são fornecidos via evento conversation.item.input_audio_transcription.text.
-
O resultado final da transcrição chega através de um evento conversation.item.input_audio_transcription.completed.
-
Por fim, o servidor retorna um evento session.finished sinalizando que o reconhecimento foi concluído. O cliente deve então fechar a conexão.
Modo manual
Neste modo, o cliente gerencia os limites dos enunciados. Depois de transmitir o áudio correspondente a um enunciado completo, o cliente dispara um evento input_audio_buffer.commit para notificar o servidor. Essa abordagem é indicada quando o cliente consegue determinar tais limites de forma explícita, por exemplo, ao gravar e enviar uma mensagem de voz em um aplicativo de chat.
Para ativar: Defina session.turn_detection como null no evento session.update do cliente.
- Eventos input_audio_buffer.append são enviados pelo cliente para acrescentar áudio ao buffer.
- O cliente dispara um evento input_audio_buffer.commit para confirmar o buffer de áudio de entrada. Essa confirmação cria um novo item de mensagem do usuário na conversa.
- Um evento session.finish é emitido pelo cliente para encerrar a sessão.
- O servidor devolve um evento input_audio_buffer.committed.
- Transcrições parciais chegam por meio de um evento conversation.item.input_audio_transcription.text.
- O resultado definitivo da transcrição é entregue num evento conversation.item.input_audio_transcription.completed.
- Para indicar o fim do reconhecimento, o servidor retorna um evento session.finished. Nesse momento, o cliente deve fechar a conexão.