Protocolo

A API GRPC utiliza um conjunto de chamadas da api definidas no protobuf. A conexão entre cliente e servidor é estabelecida através da abertura de um canal de comunicação iniciado pelo cliente. Após a abertura do canal, executar as chamadas da api definidas no protobuf.

A versão atual da API GRPC possui dois métodos de serviço, um assíncrono e outro síncrono.

Table 13 Métodos da API GRPC

Método

Descrição

Recognize

Realiza o reconhecimento de fala de um áudio enviado para o serviço. O conteúdo do áudio deve ser enviado no corpo da requisição GRPC. O reconhecimento é realizado de forma síncrona e o resultado devolvido na resposta GRPC.

StreamingRecognize

Realiza o reconhecimento de fala de um áudio enviado para o serviço. A configuração do reconhecimento deve ser enviado no corpo da requisição GRPC antes do áudio ser enviado. Após realizada a configuração, novas chamadas deste método podem ser realizadas enviando apenas o áudio no corpo da requisição GRPC. O reconhecimento é realizado de forma assíncrona e o resultado devolvido na resposta GRPC.

Para utilização dos serviços basta utilizar o modelo do protobuf a seguir:

O diagrama a seguir ilustra uma sequencia de uso das chamadas da API que permite realizar um serviço de reconhecimento de fala assíncrono.

../_images/cenario-uso-api-grpc.png

Fig. 16 Cenário de uso da API GRPC.

  • A aplicação cliente abre um canal GRPC com o Servidor CPQD ASR;

  • Após a abertura, o cliente deve enviar uma requisição de configuração (CONFIG_REQUEST) para iniciar uma sessão de reconhecimento, que é alocada exclusivamente para aquela conexão. Esta requisição deve ter um campo config especificado no arquivo .proto. A quantidade de sessões que podem ser criadas depende da quantidade de licenças disponíveis no servidor;

  • O cliente deve iniciar a captura do áudio e enviar o stream de áudio em blocos de pequena duração, por exemplo, 200ms, através da requisição de envio de audio (SEND_AUDIO). Esta requisição deve ter um campo media do tipo array de bytes do audio. Se usado o serviço StreamingRecognize, a requisição também deve conter o campo last_packet. Este campo indica o fim do envio de audios. O servidor irá analisar continuamente as amostras de áudio recebidas, identificando o segmento de fala;

  • Quando o servidor detectar o início da fala, o mesmo enviará uma resposta com um evento START OF SPEECH. Durante o processamento do segmento de fala, o servidor poderá enviar resultados parciais do reconhecimento através da resposta PARTIAL RECOGNITION RESULT, ou seja, final_result = false;

  • Quando o servidor detectar o fim da fala, a resposta com um evento END OF SPEECH será enviada. O servidor irá gerar o resultado final do reconhecimento para esse segmento, enviando novamente uma resposta RECOGNITION RESULT; Se nesta resposta o campo last_segment for igual a TRUE, o cliente deve encerrar a chamada.

  • Para realizar um novo reconhecimento, o cliente deverá enviar novamente uma requisição de configuração;

  • A comunicação com o servidor é encerrada quando o cliente encerrar o canal.