Modo Assíncrono

Para aplicar o modo assíncrono utilize o método StreamingRecognizeRequest. Este modo é mais indicado para reconhecimento de fala em tempo real.

A API GRPC permite o uso do modo contínuo no reconhecimento de fala em ambos métodos de serviço (assincrono e síncrono).

Para usar o modo contínuo, a licença deve estar liberada e deve-se definir o parâmetro config.continuous_mode=true.

Para mais informações sobre o modo contínuo veja mais em Modo contínuo.

O uso do modo contínuo é apresentado no exemplo de requisição abaixo.

../_images/continuousmode_grpc1.png

O resultado do reconhecimento de cada segmento de fala é retornado a medida em que é processado:

../_images/continuousmode_grpc2.png

O envio do áudio pode ser finalizado definindo o parâmetro “LastPacket=true”. O resultado do último segmento de fala é retornado com parâmetro “last_segment=true”

../_images/continuousmode_grpc3.png

O resumo do fluxo do modo contínuo na API GRPC é apresentado abaixo:

  1. A aplicação cliente abre um canal GRPC com o Servidor ASR;

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

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

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

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

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

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