Получение результата потоковой передачи Google Speech, когда значение SingleUtterance равно true - PullRequest
0 голосов
/ 10 сентября 2018

Я использую Google Speech API для расшифровки потокового аудио. Я хотел бы получить расшифровку стенограммы. Я установил MaxAlternatives = 0, чтобы не получать промежуточные результаты, только окончательный результат транскрипции. Я также установил SingleUtterance = true. Насколько я понимаю, я получу первый ответ как SpeechEventType = EndOfSingleUtterance, а затем второй и последний ответ будет содержать результаты, где я могу получить доступ к транскрипции. Ниже приведен код, который я тестировал (слегка адаптированный из документов: https://cloud.google.com/speech-to-text/docs/streaming-recognize). Однако, два цикла foreach не очень элегантны, и я думаю, что это будет необходимо, только если InterimResults = true. Так как я могу получить одиночный результат транскрипции из запроса потоковой передачи, как описано выше? Я замечаю, что между окончанием разговора и получением транскрипта проходит около трех секунд, поэтому я думаю, что что-то не так с тем, как я читаю результаты.

while (await streamingCall.ResponseStream.MoveNext(default(CancellationToken)))
{
    foreach (var result in streamingCall.ResponseStream.Current.Results)
    {
        foreach (var alternative in result.Alternatives)
            {
                //Do stuff with alternatvie.Transcript
            }
    }
}
...