Невозможно создать аудиоданные с помощью Google Cloud-Text-To-Speech, используя клиентскую библиотеку php.Куда я иду не так? - PullRequest
0 голосов
/ 05 июля 2019

Я использовал инструкции по быстрому запуску: https://cloud.google.com/text-to-speech/docs/quickstart-client-libraries#client-libraries-install-php для настройки проекта Google Cloud Platform в Ubuntu 16.04 для создания речи из текста с использованием php.

Мне кажется, я успешно выполнил все инструкции:

  • включен API для преобразования текста в речь
  • настроить аутентификацию созданного ключа учетной записи службы
  • установить переменную среды GOOGLE_APPLICATION_CREDENTIALS в путь к файлу ключа и проверить это, введя echo $GOOGLE_APPLICATION_CREDENTIALS в командной строке.
  • установил Cloud SDK, запустил gcloud init и не получил ошибок
  • установил библиотеку с composer require google/cloud-text-to-speech

Теперь, когда я пытаюсь запустить пример php-кода ...

// includes the autoloader for libraries installed with composer
require __DIR__ . '/vendor/autoload.php';

// Imports the Cloud Client Library
use Google\Cloud\TextToSpeech\V1\AudioConfig;
use Google\Cloud\TextToSpeech\V1\AudioEncoding;
use Google\Cloud\TextToSpeech\V1\SsmlVoiceGender;
use Google\Cloud\TextToSpeech\V1\SynthesisInput;
use Google\Cloud\TextToSpeech\V1\TextToSpeechClient;
use Google\Cloud\TextToSpeech\V1\VoiceSelectionParams;

// instantiates a client
$client = new TextToSpeechClient();

// sets text to be synthesised
$synthesisInputText = (new SynthesisInput())
    ->setText('Hello, world!');

// build the voice request, select the language code ("en-US") and the ssml
// voice gender
$voice = (new VoiceSelectionParams())
    ->setLanguageCode('en-US')
    ->setSsmlGender(SsmlVoiceGender::FEMALE);

// Effects profile
$effectsProfileId = "telephony-class-application";

// select the type of audio file you want returned
$audioConfig = (new AudioConfig())
    ->setAudioEncoding(AudioEncoding::MP3)
    ->setEffectsProfileId(array($effectsProfileId));

// perform text-to-speech request on the text input with selected voice
// parameters and audio file type
$response = $client->synthesizeSpeech($synthesisInputText, $voice, $audioConfig);
$audioContent = $response->getAudioContent();

// the response's audioContent is binary
file_put_contents('output.mp3', $audioContent);
echo 'Audio content written to "output.mp3"' . PHP_EOL;

... я получаю

Неустранимая ошибка PHP: Uncaught DomainException: Не удалось загрузить учетные данные по умолчанию. Найдите https://developers.google.com/accounts/docs/application-default-credentials для дополнительной информации в /var/www/my-domain/folder/vendor/google/auth/src/ApplicationDefaultCredentials.php:168

Если я использую командную строку для создания аудио, она работает нормально, поэтому учетная запись, авторизация и SDK будут настроены правильно.

Я впервые использую GCP, поэтому я полностью ожидаю, что упускаю что-то очевидное. Помощь очень ценится.

EDIT:

Проблема решена добавлением:

putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/key/key.json');

после импорта облачной библиотеки и до создания экземпляра объекта client.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...