Тайм-аут API речи Google

Я пытаюсь использовать API-интерфейсы клиента Speech API для преобразования аудиофайла в текст.

Пока мне удалось преобразовать короткий аудиоклип, но теперь с более длинным файлом (10 минут) я получаю эту ошибку:

Retry total timeout exceeded before anyresponse was received

Я читал в документах, что при асинхронных вызовах максимальное количество минут составляет 60. за вызов, и я загрузил файл в Google Cloud Storage, так как он необходим для файлов длиннее 1 минуты.

Так что я действительно не понимаю, почему я получаю эту ошибку, любая помощь?


person don    schedule 13.03.2017    source источник


Ответы (3)


По умолчанию системный тайм-аут составляет 10 минут. Это известная проблема для других облачных сервисов Google, но предложенное там исправление у меня не сработало, я предполагаю, что это что-то еще, что нужно установить, когда вы запускаете свой код и запускаете соединение.

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

Как написано в документации

Асинхронное распознавание речи запускает длительную операцию обработки звука.

Здесь я буду ссылаться на пример node.js, аналогичные концепции применимы и к другим. Итак, когда вы получите свой ответ (не используйте обещанную версию), передайте ему обратный вызов, как описано здесь, и вместо

operation
    .on('error', function(err) {})
    .on('complete', function(transcript) {
      // transcript = "how old is the Brooklyn Bridge"
    });

просто сделай что-нибудь вроде

console.log(operation)

запишите имя операции, а затем используйте метод операции

Вы можете протестировать их на площадке Google oauth

person Kuzeko    schedule 16.03.2017

Для всех, у кого возникла эта проблема, Google исправил эту ошибку, удалив значение тайм-аута. См. https://github.com/googleapis/gax-nodejs/pull/140/files Мои речевые API-запросы теперь успешно работают после обновления до последней версии пакета npm google-gax.

person Daniel King    schedule 12.06.2017

Я не нашел подходящего способа установить время ожидания более 10 минут, поэтому я изменил node_modules/google-gax/lib/longrunning.js напрямую. Существует переменная с именем backoffSettings, которая содержит значения времени ожидания, это вызов функции createBackoffSettings в node_modules/google-gax/lib/gax.js. До того, как я изменил эту переменную, она была такой:

backoffSettings =
        createBackoffSettings(100, 1.3, 60000, null, null, null, 600000);

Я изменил его для обработки 1-часового тайм-аута:

backoffSettings =
        createBackoffSettings(100, 1.3, 60000, null, null, null, 3600000);

Последний параметр в вызове функции createBackoffSettings равен totalTimeoutMillis и, как вы видите, по умолчанию равен 10 минутам.

Если кто-то знает лучший способ справиться с этим, пожалуйста, поделитесь. Надеюсь, поможет.

person Vanikad    schedule 29.05.2017