【发布时间】:2018-07-15 04:37:55
【问题描述】:
我需要一个脚本来获取我的文本,使用 AWS Polly API 将其转换为语音并将其作为 mp3 文件保存在我的服务器上。
目前,当我加载页面时,会出现一个播放器并播放语音剪辑,但没有下载任何文件。
我错过了什么?
require '../../../include/lib/aws/aws-autoloader.php';
// Creating Amazon Polly Client
use Aws\Polly\PollyClient;
$config = [
'version' => 'latest',
'region' => 'us-west-2', //region
'credentials' => [
'key' => 'MY_KEY',
'secret' => 'my_AWS_secret',
]];
$client = new PollyClient($config);
// Converting Text to Speech via Polly API
$args = [
'OutputFormat' => 'mp3',
'Text' => "<speak><prosody rate='medium'>My text goes here..</prosody></speak>",
'TextType' => 'ssml',
'VoiceId' => "Joanna",
];
$result = $client->synthesizeSpeech($args);
$resultData = $result->get('AudioStream')->getContents();
// Listening the text
$size = strlen($resultData); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
header('Content-Transfer-Encoding:chunked');
header("Content-Type: audio/mpeg");
header("Accept-Ranges: 0-$length");
header("Content-Range: bytes $start-$end/$size");
header("Content-Length: $length");
echo $resultData;
// Download the Text to Speech in MP3 Format
header('Content-length: ' . strlen($resultData));
header('Content-Disposition: attachment; filename="./myfile.mp3"');
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
echo $resultData;
【问题讨论】:
-
如果您切换“收听文本”和“以 MP3 格式下载文本到语音”部分代码的顺序,它会下载但不能播放? (如果是这样,您需要发出 2 个单独的请求,您不能像这样对单个请求发送 2 个响应)
-
哇,交换这两个确实成功了。为什么?
标签: amazon-web-services amazon-polly