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