【发布时间】:2021-09-18 06:11:43
【问题描述】:
我正在尝试让 Polly 使用 PHP 为我阅读一些内容。
我创建了一个新项目,安装了 Amazon composer require aws/aws-sdk-php,然后使用来自 SDK documentation example 的代码创建了一个文件,并修改了一些小东西,例如将凭据从默认值更改为值,var_dump 到 var_export,最后保存了流到文件
<?php
require 'vendor/autoload.php';
use Aws\Exception\AwsException;
use Aws\Polly\PollyClient;
use Aws\Credentials\Credentials;
// Create a PollyClient
$client = new Aws\Polly\PollyClient([
//'profile' => 'default',
'credentials' => new Credentials('XXXXXXXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'),
'version' => '2016-06-10',
'region' => 'us-east-2'
]);
try {
$result = $client->synthesizeSpeech([
'Text' => 'Hello',
'OutputFormat' => 'json', //json|mp3|ogg_vorbis|pcm
'VoiceId' => 'Joanna',
]);
var_export($result);
$data = $result->get('AudioStream')->getContents();
echo "\n\n";
var_export($data);
$file = fopen('test.txt','w+');
fwrite($file,$data);
fclose($file);
} catch (AwsException $e) {
echo $e->getMessage() . "\n";
}
我得到的结果如下
Aws\Result::__set_state(array(
'data' => array (
'AudioStream' => GuzzleHttp\Psr7\Stream::__set_state(array(
'stream' => NULL,
'size' => NULL,
'seekable' => true,
'readable' => true,
'writable' => true,
'uri' => 'php://temp',
'customMetadata' => array (),
)),
'ContentType' => 'application/x-json-stream',
'RequestCharacters' => '5',
'@metadata' => array (
'statusCode' => 200,
'effectiveUri' => 'https://polly.us-east-2.amazonaws.com/v1/speech',
'headers' => array (
'x-amzn-requestid' => 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
'x-amzn-requestcharacters' => '5',
'content-type' => 'application/x-json-stream',
'transfer-encoding' => 'chunked',
'date' => 'Sat, 18 Sep 2021 05:11:20 GMT',
),
'transferStats' => array (
'http' => array (
0 => array (),
),
),
),
),
'monitoringEvents' => array (),
))
''
正如您所见,AudioStream 的大小为空(其中没有任何内容),并且创建的文件也是空的,因为流中没有任何内容可供读取。
如果我将凭据更改为无效字符串,我会收到错误,并且如果凭据有效,状态码是 200,这让我相信我的请求是成功的。 我将voiceId更改为任何其他有效或无效的ID,甚至将区域更改为其他有效值获得状态200并且无效值获得错误消息的区域,但我仍然没有从polly中得到任何东西,感觉不想说话!
注意:当我运行$arr_voices = $polly->describeVoices();时,我可以正确读取声音列表。
注意:我也遇到了与 .NET SDK 相同的问题,这让我认为我的请求有问题,或者 API 中缺少一些错误消息。
问题
我做错了什么?
【问题讨论】:
标签: php amazon-web-services amazon-polly