{"id":25178,"date":"2021-06-02T12:33:00","date_gmt":"2021-06-02T09:33:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25178"},"modified":"2021-10-18T02:35:02","modified_gmt":"2021-10-17T23:35:02","slug":"speech-to-text-mit-amazon-transcribe-in-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/speech-to-text-mit-amazon-transcribe-in-php\/","title":{"rendered":"Speech-to-Text mit Amazon Transcribe in PHP"},"content":{"rendered":"<p>K\u00fcrzlich arbeitete ich an einem Projekt, bei dem mir der <a href=\"https:\/\/aws.amazon.com\/transcribe\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Amazon Transcribe-<\/a> Dienst vorgestellt wurde. Wir wollten in unserer Anwendung die Funktion zum Konvertieren von Sprache in Text hinzuf\u00fcgen. Und wir haben festgestellt, dass Amazon Transcribe daf\u00fcr am besten geeignet ist. Amazon Transcribe verwendet einen Deep-Learning-Prozess namens automatische Spracherkennung (ASR), um Sprache schnell und genau in Text umzuwandeln.<\/p>\n<p>In diesem Artikel zeige ich Ihnen, wie Sie mit Amazon Transcribe in PHP Sprache in Text umwandeln. Wir werden das offizielle AWS SDK-Paket verwenden, das f\u00fcr die PHP-Programmierung entwickelt wurde.<\/p>\n<h3>Einstieg<\/h3>\n<p>Um loszulegen, sollten Sie \u00fcber ein <a href=\"https:\/\/aws.amazon.com\/console\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS-Konto<\/a> verf\u00fcgen. Melden Sie sich bei Ihrem AWS-Konto an und rufen Sie Ihre Sicherheitsanmeldeinformationen ab. Wir werden diese Anmeldeinformationen im sp\u00e4teren Teil des Tutorials ben\u00f6tigen.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20376-6081e7c8394ba.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20376-6081e7c8394ba.png\" alt=\"Speech-to-Text mit Amazon Transcribe in PHP\" ><\/a><\/p>\n<p>Installieren Sie anschlie\u00dfend die <a href=\"https:\/\/github.com\/aws\/aws-sdk-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">AWS SDK PHP-<\/a> Bibliothek mit dem Composer-Befehl:<\/p>\n<pre><code>composer require aws\/aws-sdk-php<\/code><\/pre>\n<p>Um die Sprache in Text umzuwandeln, ben\u00f6tigen Sie Ihre Mediendateien. Erlaubte Medienformate sind <code>mp3 | mp4 | wav | flac<\/code>. Dar\u00fcber hinaus stehen Ihnen mehrere Sprachen zur Verf\u00fcgung, um Ihre Sprache in Text umzuwandeln. Sie k\u00f6nnen alle unterst\u00fctzten Sprachen und grundlegende Dinge zu Parametern in ihrer <a href=\"https:\/\/docs.aws.amazon.com\/transcribe\/latest\/dg\/API_StartTranscriptionJob.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Dokumentation sehen<\/a>. Der Benutzer kann die Sprache unterst\u00fctzter Sprachen in den Text umwandeln.<\/p>\n<p>Bei der Integration von Amazon Transcribe in die Anwendung m\u00fcssen wir den Flow wie folgt aufbauen:<\/p>\n<ul>\n<li>Laden Sie die Mediendatei in den S3-Bucket hoch.<\/li>\n<li>Instanziieren Sie einen Amazon Transcribe-Client.<\/li>\n<li>Starten Sie einen Transkriptionsjob von Amazon Transcribe, indem Sie die Medien-URL von S3 und eine eindeutige Job-ID \u00fcbergeben.<\/li>\n<li>Der Amazon Transcribe-Service kann einige Minuten dauern, bis der \u00dcbersetzungsvorgang abgeschlossen ist. Also warte darauf.<\/li>\n<li>Laden Sie die Textdatei herunter, nachdem AWS den Transkriptionsjob abgeschlossen hat.<\/li>\n<\/ul>\n<p>Sehen wir uns an, wie Sie diesen Fluss mit dem tats\u00e4chlichen PHP-Code handhaben k\u00f6nnen.<\/p>\n<h3>Speech-to-Text mit Amazon Transcribe in PHP<\/h3>\n<p>Erstellen Sie zun\u00e4chst ein HTML-Formular, in dem Benutzer die Mediendatei durchsuchen und auf die Schaltfl\u00e4che Senden klicken k\u00f6nnen. Nach dem Einreichen nehmen wir die Mediendatei zur Weiterverarbeitung und senden schlie\u00dflich einen \u00dcbersetzungstext im Dateiformat &#8218;.txt&#8216; an den Browser zur\u00fcck.<\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"audio\" accept=\"audio\/*,video\/*\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Auf PHP-Seite m\u00fcssen Sie die Mediendatei zur Verarbeitung an den AWS-Service senden, also binden Sie die AWS-Umgebung wie folgt ein.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse AwsS3S3Client;\nuse AwsTranscribeServiceTranscribeServiceClient;\n\u00a0\n\/\/ submission code<\/code><\/pre>\n<p>Laden Sie anschlie\u00dfend die Mediendatei in den S3-Bucket hoch. Und nimm die S3-URL des hochgeladenen Mediums.<\/p>\n<pre><code>if (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_mime_types = ['audio\/wav', 'audio\/mpeg', 'video\/mp4', 'audio\/x-flac'];\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['audio']['type'], $arr_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0die('File type is not allowed');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$region = 'PASS_REGION';\n\u00a0\u00a0\u00a0\u00a0$access_key = 'ACCESS_KEY';\n\u00a0\u00a0\u00a0\u00a0$secret_access_key = 'SECRET_ACCESS_KEY';\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Instantiate an Amazon S3 client.\n\u00a0\u00a0\u00a0\u00a0$s3 = new S3Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'region'\u00a0 =&gt; $region,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; $access_key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; $secret_access_key\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$bucketName = 'PASS_BUCKET_NAME';\n\u00a0\u00a0\u00a0\u00a0$key = basename($_FILES['audio']['name']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ upload file on S3 Bucket\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $s3-&gt;putObject([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Key'\u00a0\u00a0\u00a0 =&gt; $key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Body'\u00a0\u00a0 =&gt; fopen($_FILES['audio']['tmp_name'], 'r'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$audio_url = $result-&gt;get('ObjectURL');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Amazon Transcribe service start here\n\u00a0\u00a0\u00a0\u00a0}\u00a0 catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Stellen Sie sicher, dass Sie die Platzhalter durch die tats\u00e4chlichen Werte ersetzen. Als N\u00e4chstes m\u00fcssen wir die hochgeladene Medien-URL an den Amazon Transcribe-Dienst \u00fcbergeben. Es erfordert auch eine eindeutige Job-ID, die ich mit der <code>uniqid()<\/code>Methode erstellen werde .<\/p>\n<pre><code>\/\/ Create Amazon Transcribe Client\n$awsTranscribeClient = new TranscribeServiceClient([\n\u00a0\u00a0\u00a0\u00a0'region' =&gt; $region,\n\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; $access_key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; $secret_access_key\n\u00a0\u00a0\u00a0\u00a0]\n]);\n\u00a0\n\/\/ Start a Transcription Job\n$job_id = uniqid();\n$transcriptionResult = $awsTranscribeClient-&gt;startTranscriptionJob([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'LanguageCode' =&gt; 'en-US',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Media' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'MediaFileUri' =&gt; $audio_url,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'TranscriptionJobName' =&gt; $job_id,\n]);\n\u00a0\n$status = array();\nwhile(true) {\n\u00a0\u00a0\u00a0\u00a0$status = $awsTranscribeClient-&gt;getTranscriptionJob([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'TranscriptionJobName' =&gt; $job_id\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($status-&gt;get('TranscriptionJob')['TranscriptionJobStatus'] == 'COMPLETED') {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0sleep(5);\n}\n\u00a0\n\/\/ download the txt file<\/code><\/pre>\n<p>Im obigen Code instanziieren wir Amazon Transcribe Client und starten den Transkriptionsjob. Es kann einige Minuten dauern, bis der \u00dcbersetzungsvorgang abgeschlossen ist. Ich habe es mit der while-Schleife und der sleep()-Methode behandelt. Ich \u00fcberpr\u00fcfe alle 5 Sekunden, ob der Vorgang abgeschlossen ist und unterbreche die Schleife, wenn der Vorgang abgeschlossen ist.<\/p>\n<p>Sie k\u00f6nnen diesen Transkriptionsprozess im AWS-Dashboard unter den <strong>Amazon Transcribe-&gt;Transcription-Jobs sehen,<\/strong> wie im Screenshot unten gezeigt.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20376-6081e7c8394ba.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20376-6081e7c8394ba.png\" alt=\"Speech-to-Text mit Amazon Transcribe in PHP\" ><\/a><\/p>\n<p>Laden Sie abschlie\u00dfend die Datei mit dem folgenden Code herunter.<\/p>\n<pre><code>$url = $status-&gt;get('TranscriptionJob')['Transcript']['TranscriptFileUri'];\n$curl = curl_init();\ncurl_setopt($curl, CURLOPT_URL, $url);\ncurl_setopt($curl, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($curl, CURLOPT_HEADER, false);\n$data = curl_exec($curl);\nif (curl_errno($curl)) {\n\u00a0\u00a0\u00a0\u00a0$error_msg = curl_error($curl);\n\u00a0\u00a0\u00a0\u00a0echo $error_msg;\n}\ncurl_close($curl);\n$arr_data = json_decode($data);\n\u00a0\n\/\/ download a file\n$file = $job_id.\".txt\";\n$txt = fopen($file, \"w\") or die(\"Unable to open file!\");\nfwrite($txt, $arr_data-&gt;results-&gt;transcripts[0]-&gt;transcript);\nfclose($txt);\n\u00a0\nheader('Content-Description: File Transfer');\nheader('Content-Disposition: attachment; filename='.basename($file));\nheader('Expires: 0');\nheader('Cache-Control: must-revalidate');\nheader('Pragma: public');\nheader('Content-Length: '. filesize($file));\nheader(\"Content-Type: text\/plain\");\nreadfile($file);\nexit();<\/code><\/pre>\n<p>Dieser Code sendet die generierte Textdatei an den Browser, damit der Benutzer sie herunterladen kann.<\/p>\n<h3>Endg\u00fcltiger Beispielcode<\/h3>\n<p>Der oben geschriebene Code ist in Bl\u00f6cken. Wenn Sie einen ganzen Code zusammen haben m\u00f6chten, ist dies wie folgt.<\/p>\n<pre><code>&lt;?php\nset_time_limit(0);\n\u00a0\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse AwsS3S3Client;\nuse AwsTranscribeServiceTranscribeServiceClient;\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_mime_types = ['audio\/wav', 'audio\/mpeg', 'video\/mp4', 'audio\/x-flac'];\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['audio']['type'], $arr_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0die('File type is not allowed');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$region = 'PASS_REGION';\n\u00a0\u00a0\u00a0\u00a0$access_key = 'ACCESS_KEY';\n\u00a0\u00a0\u00a0\u00a0$secret_access_key = 'SECRET_ACCESS_KEY';\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ Instantiate an Amazon S3 client.\n\u00a0\u00a0\u00a0\u00a0$s3 = new S3Client([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'region'\u00a0 =&gt; $region,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; $access_key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; $secret_access_key\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$bucketName = 'PASS_BUCKET_NAME';\n\u00a0\u00a0\u00a0\u00a0$key = basename($_FILES['audio']['name']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ upload file on S3 Bucket\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $s3-&gt;putObject([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Bucket' =&gt; $bucketName,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Key'\u00a0\u00a0\u00a0 =&gt; $key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Body'\u00a0\u00a0 =&gt; fopen($_FILES['audio']['tmp_name'], 'r'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'ACL'\u00a0\u00a0\u00a0 =&gt; 'public-read',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$audio_url = $result-&gt;get('ObjectURL');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Create Amazon Transcribe Client\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$awsTranscribeClient = new TranscribeServiceClient([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'region' =&gt; $region,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'version' =&gt; 'latest',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'credentials' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'key'\u00a0\u00a0\u00a0 =&gt; $access_key,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; $secret_access_key\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Start a Transcription Job\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$job_id = uniqid();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$transcriptionResult = $awsTranscribeClient-&gt;startTranscriptionJob([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'LanguageCode' =&gt; 'en-US',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Media' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'MediaFileUri' =&gt; $audio_url,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'TranscriptionJobName' =&gt; $job_id,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$status = array();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0while(true) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$status = $awsTranscribeClient-&gt;getTranscriptionJob([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'TranscriptionJobName' =&gt; $job_id\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($status-&gt;get('TranscriptionJob')['TranscriptionJobStatus'] == 'COMPLETED') {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0sleep(5);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$url = $status-&gt;get('TranscriptionJob')['Transcript']['TranscriptFileUri'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$curl = curl_init();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_setopt($curl, CURLOPT_URL, $url);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_setopt($curl, CURLOPT_HEADER, false);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = curl_exec($curl);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (curl_errno($curl)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$error_msg = curl_error($curl);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $error_msg;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0curl_close($curl);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_data = json_decode($data);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ download a file\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file = $job_id.\".txt\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$txt = fopen($file, \"w\") or die(\"Unable to open file!\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fwrite($txt, $arr_data-&gt;results-&gt;transcripts[0]-&gt;transcript);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0fclose($txt);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Content-Description: File Transfer');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Content-Disposition: attachment; filename='.basename($file));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Expires: 0');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Cache-Control: must-revalidate');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Pragma: public');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header('Content-Length: '. filesize($file));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0header(\"Content-Type: text\/plain\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0readfile($file);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit();\n\u00a0\u00a0\u00a0\u00a0}\u00a0 catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"audio\" accept=\"audio\/*,video\/*\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Ich hoffe, Sie verstehen, wie Sie mit Amazon Transcribe in PHP Sprache in Text umwandeln. Bitte teilen Sie Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten mit.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/text-to-speech-mit-amazon-polly-in-php\/\" title=\"Text-to-Speech mit Amazon Polly in PHP\">Text-to-Speech mit Amazon Polly in PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/hochladen-von-dateien-auf-amazon-s3-mit-aws-php-sdk\/\" title=\"Hochladen von Dateien auf Amazon S3 mit AWS PHP SDK\">Hochladen von Dateien auf Amazon S3 mit AWS PHP SDK<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-laden-sie-eine-datei-mit-dem-laravel-dateisystem-auf-s3-hoch\/\" title=\"So laden Sie eine Datei mit dem Laravel-Dateisystem auf S3 hoch\">So laden Sie eine Datei mit dem Laravel-Dateisystem auf S3 hoch<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie mit Amazon Transcribe in PHP Sprache in Text umwandeln? Amazon Transcribe verwendet einen Deep-Learning-Prozess namens automatische Sprache<\/p>\n","protected":false},"author":1,"featured_media":21623,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[272],"tags":[845],"class_list":["post-25178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25178"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25178\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}