Google Speech Api - получите промежуточные результаты от длительного распознавания - PullRequest
0 голосов
/ 30 сентября 2018

Я использую Google Speech API для C # и использую LongRunningRecognize для получения таких результатов:

var speech = SpeechClient.Create();
var longOperation = speech.LongRunningRecognize(new RecognitionConfig()
{
    Encoding = GlobalVariables.Encoding,
    SampleRateHertz = GlobalVariables.SampleRateHz,
    LanguageCode = GlobalVariables.Language,
}, RecognitionAudio.FromStorageUri("gs://bucketname/" + TargetFileName));
longOperation = longOperation.PollUntilCompleted();
var response = longOperation.Result;

StringBuilder tw = new StringBuilder();

foreach (var result in response.Results)
{
    foreach (var alternative in result.Alternatives)
    {
        Console.WriteLine($"Transcript: { alternative.Transcript}");
        tw.AppendLine(alternative.Transcript);
    }
}

TranslatedText = tw.ToString();

Это хорошо работает, и я получаю результаты - но: я использую довольно большойфайлы (около 20-30 минут аудио файлов), и я хотел бы видеть промежуточные результаты.Поэтому я понял, что могу просто использовать асинхронный метод как-то так:

Task analyze = Task.Run(async () =>
{
    var speech = SpeechClient.Create();
    Task<Operation<LongRunningRecognizeResponse, LongRunningRecognizeMetadata>> longOperation = speech.LongRunningRecognizeAsync(new RecognitionConfig()
    {
        Encoding = GlobalVariables.Encoding,
        SampleRateHertz = GlobalVariables.SampleRateHz,
        LanguageCode = GlobalVariables.Language,
    }, RecognitionAudio.FromStorageUri("gs://bucketname/" + TargetFileName));

    while (!longOperation.IsCompleted)
    {
        if(longOperation.Result != null && longOperation.Result.Metadata != null)
        {
            LongRunningRecognizeMetadata meta = longOperation.Result.Metadata;
            ProgressValue = meta.ProgressPercent;

            //Add results to variable "TranslatedText" here -how?
        }
    }
});

await analyze;

Я не могу заставить это работать, хотя речевой API не очень хорошо документирован в этом случае, по крайней мере,Я не нашел ничего такого, что могло бы охватить такую ​​ситуацию.

Может ли кто-нибудь помочь мне в этом?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...