Реализация Amazon Polly с использованием PHP SDK

Я пытаюсь интегрировать веб-сервис Amazon Polly в один из моих проектов, используя Amazon SDK PHP. Но когда я использовал PollyClient SDK, в клиенте был реализован только один метод createSynthesizeSpeechPreSignedUrl() и он возвращает URL, а не аудиоклип. Когда я пытаюсь вставить URL в окне браузера, я получаю следующую ошибку: "message": "The security token included in the request is invalid."

Пожалуйста, посмотрите мой фрагмент кода:

error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-Type: text/plain; charset=utf-8');
require_once 'app/aws/aws-autoloader.php';
use Aws\Polly\PollyClient;

class TestPolly extends Base {
public function newPolly () {
$connection = [
'region'      => 'us-west-2',
'version'     => 'latest',
'debug'       => true,
'scheme'      => 'http',
'credentials' => [
'key'    => 'XXXXX',
'secret' => 'XXXXXX',
],
];
$client     = new PollyClient($connection);
$polly_args = [
'OutputFormat' => 'mp3',
'Text'         => 'My Input text',
'TextType'     => 'text',
'VoiceId'      => 'Brain',
];
$result     = $client->synthesizeSpeech($polly_args);

echo '<pre>';
print_r($result);
exit;
}
}

Я получаю ошибку PHP:

Fatal error Uncaught exception 'Aws\Polly\Exception\PollyException' with message 'Error executing &quot;SynthesizeSpeech on http://polly.us-west-2.amazonaws.com/v1/speech

AWS HTTP error: cURL error 7: Failed to connect to polly.us-west-2.amazonaws.com port 80: Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)'

exception 'GuzzleHttp\Exception\ConnectException' with message 'cURL error 7: Failed to connect to polly.us-west-2.amazonaws.com port 80: Connection refused (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)' in D:\xampp\htdocs\sim_aws\aws\GuzzleHttp\Handler\CurlFactory.php:186
Stack trace:

Интересно то, что я смог сгенерировать аудиоклип с помощью Node.js SDK, поэтому я совершенно уверен, что ключ доступа и секретный ключ работают нормально.

Было бы здорово, если бы кто-нибудь мог указать, как PHP SDK можно использовать с примером кода или полезными ссылками.

3

Решение

Вот пример кода для загрузки TTS в виде файла .mp3 в браузере, критическая часть которого $result->get('AudioStream')->getContents(), это то, что получает фактические данные .mp3.

require_once 'app/aws/aws-autoloader.php';
$awsAccessKeyId = 'XXXXXXX';
$awsSecretKey   = 'XXXXXXX';
$credentials    = new \Aws\Credentials\Credentials($awsAccessKeyId, $awsSecretKey);
$client         = new \Aws\Polly\PollyClient([
'version'     => '2016-06-10',
'credentials' => $credentials,
'region'      => 'us-east-1',
]);
$result         = $client->synthesizeSpeech([
'OutputFormat' => 'mp3',
'Text'         => "My input text",
'TextType'     => 'text',
'VoiceId'      => 'Joanna',
]);
$resultData     = $result->get('AudioStream')->getContents();

header('Content-Transfer-Encoding: binary');
header('Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3');
header('Content-length: ' . strlen($resultData));
header('Content-Disposition: attachment; filename="pollyTTS.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');

echo $resultData;

Что касается ссылок, вот несколько:

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector