Google речь к тексту API Тайм-аут - PullRequest
0 голосов
/ 06 ноября 2018

Хотелось бы узнать, есть ли способ установить время ожидания при вызове Google речь в текстовый API. Из документации ниже приведен код для получения теста из файла WAV. Однако мне нужно установить время ожидания для этого вызова API. Я не хочу вечно ждать ответа от Google API. В максимуме я хочу подождать 5 секунд, и если я не получаю результат менее 5 секунд, я хочу выдать ошибку и перейти к дальнейшему выполнению.

static object SyncRecognize(string filePath)
{
    var speech = SpeechClient.Create();
    var response = speech.Recognize(new RecognitionConfig()
    {
        Encoding = RecognitionConfig.Types.AudioEncoding.Linear16,
        SampleRateHertz = 16000,
        LanguageCode = "en",
    }, RecognitionAudio.FromFile(filePath));
    foreach (var result in response.Results)
    {
        foreach (var alternative in result.Alternatives)
        {
            Console.WriteLine(alternative.Transcript);
        }
    }
    return 0;
}

1 Ответ

0 голосов
/ 06 ноября 2018

Как прервать длительный метод? Оригинальный код найден здесь

Поток будет работать в течение заданного вами времени, а затем прервать его. Вы можете указать обработку исключений или регистратор в операторе if. Длительный метод только для демонстрационных целей.

   class Program
    {
        static void Main(string[] args)
        {

            //Method will keep on printing forever as true is true trying to simulate a long runnning method
            void LongRunningMethod()
            {
                while (true)
                {
                    Console.WriteLine("Test");
                }
            }


            //New thread runs for set amount of time then aborts the operation after the time in this case 1 second.
           void StartThread()
            {
                Thread t = new Thread(LongRunningMethod);
                t.Start();
                if (!t.Join(1000)) // give the operation 1s to complete
                {
                    Console.WriteLine("Aborted");
                    // the thread did not complete on its own, so we will abort it now
                    t.Abort();

                }
            }

            //Calling the start thread method.
            StartThread();

        }
    }
...