Protocolo

A API WebSocket utiliza um conjunto de mensagens para acionar as funções do reconhecimento de locutor. A conexão entre cliente e servidor é estabelecida de maneira padrão para essa tecnologia, ou seja, através de uma mensagem HTTP de handshake enviada pelo cliente, com indicação de upgrade da conexão para o protocolo WebSocket. O servidor irá responder o handshake e abrir uma conexão socket com o cliente. A partir desse momento, mensagens podem ser trocadas entre os dois endpoints.

Formato das Mensagens

As mensagens da API são transmitidas pela conexão WebSocket em formato binário e podem ter no máximo 2MB de tamanho. Toda mensagem é formada por linhas separadas pela sequência CR (0x0D) e LF (0x10), onde são declarados o tipo da mensagem e seus parâmetros (headers), e opcionalmente o corpo da mensagem. As primeiras linhas são interpretadas como texto codificado em UTF-8, enquanto que o formato e tamanho do corpo são definidos pelos headers Content-Type e Content-Length. Deve existir uma linha vazia terminada em CRLF entre a seção de headers e o corpo da mensagem.

Linha inicial: ASR <versão> <nome da mensagem> CRLF
Zero ou mais headers seguidor por CRLF
Linha vazia (indicando o fim dos headers) CRLF
Conteúdo opcional

A versão atual da API WebSocket é a 1.0. Ela é composta pelas mensagens descritas a seguir.

Mensagens enviadas pelo cliente.

Mensagem

Descrição

CREATE SESSION

Cria uma sessão de reconhecimento de locutor. Deve ser enviada pelo cliente após o estabelecimento de uma conexão WebSocket com o servidor.

SET PARAMETERS

Define parâmetros da sessão de reconhecimento. Deve ser enviada antes da mensagem VERIFY ou VERIFY FROM BUFFER.

GET PARAMETERS

Obtém o valor atual de parâmetros da sessão.

VERIFY

Inicia o reconhecimento de locutor. Deve ser enviado antes do início da captura do áudio pelo cliente.

START INPUT TIMERS

Inicia os temporizadores de detecção de fala e de reconhecimento, após o início de uma verificação.

VERIFY FROM BUFFER

Realiza uma verificação biométrica utilizando os áudios armazenados no buffer de verificação.

SEND AUDIO

Transporta uma amostra do áudio para o reconhecimento. Recomenda-se o envio de amostras pequenas para obter o resultado do reconhecimento mais próximo do tempo real e evitar o acúmulo de áudio no cliente.

STOP

Interrompe o reconhecimento e descarta qualquer resultado parcial.

RELEASE SESSION

Encerra a sessão de reconhecimento, liberando recursos alocados. Ao receber a mensagem, o servidor mantém a conexão WebSocket aberta.

VERIFY ROLLBACK

Descarta o último áudio armazenado no buffer de verificação.

QUERY VOICEPRINT

Verifica a existência do voiceprint de um usuário no repositório.

DELETE VOICEPRINT

Apaga um voiceprint de um usuário no repositório.

Mensagens enviadas pelo servidor.

Mensagem

Descrição

RESPONSE

Resposta do servidor para qualquer mensagem enviada pelo cliente, exceto a mensagem SEND AUDIO que é enviada apenas em caso de erro.

VERIFICATION RESULT

Resultado do reconhecimento de locutor para os áudios enviados.

START OF SPEECH

Indica que o servidor detectou o início da fala no áudio enviado pelo cliente. O cliente deve continuar enviando as amostras de áudio para o servidor.

END OF SPEECH

Indica que o servidor detectou o fim de fala no áudio. O cliente pode parar de enviar amostras de fala.

As mensagens do protocolo são detalhadas a seguir.