Попытка расшифровки аудиофайла, хранящегося в корзине S3, к которой у меня есть доступ, с помощью API-интерфейса AWS SDK PHP, как показано ниже, дает мне исключение регулирования: превышена скорость.
Я прочитал документацию десятки раз и не могу найти простой рабочий пример, который показывает, как успешно транскрибировать файл с помощью AWS transcribe и их PHP API.
date_default_timezone_set('America/New_York');
try
{
require '/var/www/html/aws/sdk/aws-autoloader.php';
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
use Aws\TranscribeService\TranscribeServiceClient;
$client = new Aws\TranscribeService\TranscribeServiceClient([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'xxxx',
'secret' => 'yyyy',
'curl.options' => array(CURLOPT_VERBOSE => true)
]
]);
$job_name = "tjob".date("mdyhisa");
$job_uri = "https://s3.amazonaws.com/....mp3";
$result = $client->startTranscriptionJob([
'LanguageCode' => 'en-US',
'Media' => [
'MediaFileUri' => "$job_uri",
],
'MediaFormat' => 'mp3',
'TranscriptionJobName' => "$job_name",
]);
/* removing this loop and the sleep() below would retrieve some structured response,
but of course the operation status is IN_PROGRESS */
while(true)
{
/* added to discover if holding a few seconds would work: it doesn't
and gives back a 504 Gateway Timeout */
sleep(rand(3,5));
/* -- */
$result = $client->getTranscriptionJob(['TranscriptionJobName' => "$job_name"]);
if ( ($result['TranscriptionJob']['TranscriptionJobStatus']=='COMPLETED') || ($result['TranscriptionJob']['TranscriptionJobStatus']=='FAILED'))
{
break;
}
}
var_dump($result);
Итак, вопрос: как получить вывод транскрипции?
Кстати, мне это не нужно асинхронно ... мой маленький проект может подождать, пока он его обработает и вернет.