Я играю с 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% попыток — это успешные вызовы с верным транскрибированным текстом. Таким образом, это подтверждает, что служба настроена правильно, но не работает надежно.
У меня стабильное интернет-соединение, и я не превышаю никаких ограничений в консоли API Google. Аудио (WAV) файл, который я пытаюсь расшифровать, имеет длину ~ 5 МБ и 1 минуту.
Существует несколько CSV «Ошибки по API method.csv», доступные для загрузки в консоли API Google, которые могут содержать некоторую полезную информацию. Тем не менее, у Google это сломалось — когда я пытаюсь загрузить его, просто запускается какой-то загрузчик, но ничего не загружается, хотя согласно графику, есть некоторые ошибки. Другие отчеты CSV работает нормально.
Что не так с API?
Задача ещё не решена.
Других решений пока нет …