PHP Google речь API проблемы - таймауты, ошибка SSL - PullRequest
0 голосов
/ 29 сентября 2018

Я играю с Google Speech API, однако он действительно нестабилен и практически не используется.

Я пробовал службу синхронизации / асинхронизации API, но результаты те же.

Вот пример моего кода, который использует асинхронный сервис для транскрипции аудио:

    putenv('GOOGLE_APPLICATION_CREDENTIALS=E:\PHP\google.json');

    # Your Google Cloud Platform project ID
    $projectId = 'xxx';

    # Instantiates a client
    $speech = new SpeechClient([
        'projectId' => $projectId,
        'languageCode' => 'en-GB',
        'requestTimeout' => 30
    ]);

    # The audio file's encoding and sample rate
    $options = [
        'encoding' => 'LINEAR16',
        'model' => 'default',
    ];

    # Detects speech in the audio file

    var_dump('beginRecognizeOperation:before');
    $operation = $speech->beginRecognizeOperation(fopen($fileName, 'rb'), $options);
    var_dump('beginRecognizeOperation:after');

    $bIsComplete = $operation->isComplete();

    while (!$bIsComplete) {
        sleep(1);
        $operation->reload();
        $bIsComplete = $operation->isComplete();
    }


    $results = $operation->results()[0];

    var_dump($results->topAlternative());

Обычно он зависает при "beginRecognizeOperation", и если я не устанавливаю тайм-аут в конструкторе SpeechClient, он там виситнавсегда.

Итак, первая проблема - это тайм-ауты.Я часто (75%) получаю эту ошибку с тайм-аутом, установленным на 30 секунд.

PHP Fatal error:  Uncaught Google\Cloud\Core\Exception\ServiceException: cURL error 28: Operation timed out after 30015 milliseconds with 0 bytes received (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in \composer\vendor\google\cloud-core\src\RequestWrapper.php:263
Stack trace:
#0 \composer\vendor\google\cloud-core\src\RequestWrapper.php(168): Google\Cloud\Core\RequestWrapper->convertToGoogleException(Object(GuzzleHttp\Exception\ConnectException))
#1 \composer\vendor\google\cloud-core\src\RestTrait.php(95): Google\Cloud\Core\RequestWrapper->send(Object(GuzzleHttp\Psr7\Request), Array)
#2 \composer\vendor\google\cloud-speech\src\Connection\Rest.php(70): Google\Cloud\Speech\Connection\Rest->send('speech', 'longrunningreco...', Array)
#3 \composer\vendor\google\cloud-speech\src\SpeechClient.php(348): Google\Cloud\Speech\Connection\Rest->longRunningRecognize(Array)
#4 \lib\Google\SpeechToTextAsync.php(42): Google\Cloud\Speech\ in \composer\vendor\google\cloud-core\src\RequestWrapper.php on line 263

Вторая ошибка, которую я иногда (10%) получаю, связана с SSL.

Fatal error: Uncaught Google\Cloud\Core\Exception\ServiceException: cURL error 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in composer\vendor\google\cloud-core\src\RequestWrapper.php:263
Stack trace:
#0 composer\vendor\google\cloud-core\src\RequestWrapper.php(168): Google\Cloud\Core\RequestWrapper->convertToGoogleException(Object(GuzzleHttp\Exception\RequestException))
#1 composer\vendor\google\cloud-core\src\RestTrait.php(95): Google\Cloud\Core\RequestWrapper->send(Object(GuzzleHttp\Psr7\Request), Array)
#2 composer\vendor\google\cloud-speech\src\Connection\Rest.php(70): Google\Cloud\Speech\Connection\Rest->send('speech', 'longrunningreco...', Array)
#3 composer\vendor\google\cloud-speech\src\SpeechClient.php(348): Google\Cloud\Speech\Connection\Rest->longRunningRecognize(Array)
#4 lib\Google\SpeechToTextAsync.php(42): Google\Cloud\Speech\SpeechClient->begi in composer\vendor\google\cloud-core\src\RequestWrapper.php on line 263
PHP Fatal error:  Uncaught Google\Cloud\Core\Exception\ServiceException: cURL error 56: OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in composer\vendor\google\cloud-core\src\RequestWrapper.php:263

Остальные 15% попыток - это успешные вызовы с возвращением правильного транскрибированного текста.Таким образом, это подтверждает, что служба настроена правильно, но не работает надежно.

У меня стабильное интернет-соединение, и я не превышаю никаких ограничений в консоли Google API.Аудиофайл (WAV), который я пытаюсь записать, имеет длину ~ 5 МБ и 1 минуту.

Существует несколько CSV "Ошибки по API method.csv", которые можно загрузить в консоли API Google, которые могут содержать некоторые полезныеИнформация.Тем не менее, у Google это сломалось - когда я пытаюсь загрузить его, просто запускается какой-то загрузчик, но ничего не загружается, хотя согласно графику, есть некоторые ошибки.Другие отчеты CSV работают нормально.

Что не так с API?

...