Класс storageclient не найден?

110
14

Я отчаянно пытаюсь понять, как создать простой скрипт транскрипции аудио (для более длинных аудиофайлов) через PHP (единственный язык, который я знаю). Я получаю сообщение об ошибке "Google\Cloud\Storage\StorageClient" не найден

Я использую редактор кода консоли gcloud, и все должно быть установлено (если только отдельная компоновка не устанавливается только для облачного хранилища, хотя я не смог ничего найти в документации, если есть).

Я также вошел в gcloud auth application-default print-access-token, который распечатывал токен доступа, но я не знаю, что (если есть), я должен делать с тем, что было "командой GOOGLE_APPLICATION_CREDENTIALS", которую я скопировал и вставить в командной строке консоли.

Здесь php-код:

<?php
namespace Google\Cloud\Samples\Speech;
require __DIR__ . '/vendor/autoload.php';
use Exception;
# [START speech_transcribe_async_gcs]
use Google\Cloud\Speech\SpeechClient;
use Google\Cloud\Storage\StorageClient;
use Google\Cloud\Core\ExponentialBackoff;

$projectId = 'xxxx';
$speech = new SpeechClient([
'projectId' => $projectId,
'languageCode' => 'en-US',
]);

$filename = "20180925_184741_L.mp3";

# The audio file encoding and sample rate
$options = [
'encoding' => 'LINEAR16',
'sampleRateHertz' => 16000,
'languageCode' => 'en-US',
'enableWordTimeOffsets' => false,
'enableAutomaticPunctuation' => true,
'model' => 'video',
];

function transcribe_async_gcs($bucketName, $objectName, $languageCode = 'en-US', $options = [])
{
// Create the speech client
$speech = new SpeechClient([
'languageCode' => $languageCode,
]);
// Fetch the storage object
$storage = new StorageClient();
$object = $storage->bucket($bucketName)->object($objectName);
// Create the asyncronous recognize operation
$operation = $speech->beginRecognizeOperation(
$object,
$options
);
// Wait for the operation to complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($operation) {
print('Waiting for operation to complete' . PHP_EOL);
$operation->reload();
if (!$operation->isComplete()) {
throw new Exception('Job has not yet completed', 500);
}
});
// Print the results
if ($operation->isComplete()) {
$results = $operation->results();
foreach ($results as $result) {
$alternative = $result->alternatives()[0];
printf('Transcript: %s' . PHP_EOL, $alternative['transcript']);
printf('Confidence: %s' . PHP_EOL, $alternative['confidence']);
}
}
}
# [END speech_transcribe_async_gcs]

transcribe_async_gcs("session_audio", $filename, "en-US", $options);

спросил(а) 2021-01-19T08:22:48+03:00 6 месяцев, 2 недели назад
1
Решение
110

С извинениями, PHP не является языком, которым я владею, но я подозреваю, что у вас нет (и необходимо) установить клиентскую библиотеку для облачного хранилища, чтобы ваш код мог получить к ней доступ. Это объясняет его отчет о том, что класс отсутствует.

Клиентская библиотека PHP страница включает в себя два варианта. Один из них применяется, если вы используете Composer, второй - возможно, что вы хотите - прямая загрузка, которая вам понадобится для правильного пути для вашего кода.

Некоторое время назад я написал короткий блоге пост, обеспечивающий простой пример ( с помощью Cloud Storage) для каждого из поддерживаемых языков Google. Возможно, это тоже поможет.

ответил(а) 2021-01-19T08:22:48+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема