@Override
public AIResponse voiceRequest(InputStream voiceStream, RequestExtras requestExtras,
AIServiceContext serviceContext) throws AIServiceException {
RecognizeResponse response;
try {
SpeechClient speechClient = SpeechClient.create();
RecognitionAudio recognitionAudio = createRecognitionAudio(voiceStream);
response = speechClient.recognize(config.getRecognitionConfig(), recognitionAudio);
} catch (IOException | StatusRuntimeException e) {
throw new AIServiceException("Failed to recognize speech", e);
}
if ((response.getResultsCount() == 0) || (response.getResults(0).getAlternativesCount() == 0)) {
throw new AIServiceException("No speech");
}
String transcript = response.getResults(0).getAlternatives(0).getTranscript();
AIRequest request = new AIRequest(transcript);
return request(request, requestExtras, serviceContext);
}