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