Я использовал инструкции по быстрому запуску:
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.