Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichten einer Streaming-Transkription
Dieser Abschnitt erweitert den Hauptabschnitt über Streaming. Es soll Informationen für Benutzer bereitstellen, die ihren Stream mit HTTP/2 oder WebSockets direkt und nicht mit einem AWS SDK einrichten möchten. Die Informationen in diesem Abschnitt können auch zur Erstellung eines eigenen SDKs verwendet werden.
Wichtig
Wir empfehlen dringend, SDKs zu verwenden, anstatt HTTP/2 und WebSockets direkt zu verwenden. SDKs sind die einfachste und zuverlässigste Methode zur Transkription von Datenströmen. Informationen zum Starten des Streamings mithilfe eines AWS SDK finden Sie unterTranskribieren mit dem AWS SDKs.
Die wichtigsten Komponenten für ein HTTP/2 Protokoll
-
Ein Header-Frame. Es enthält die HTTP/2 Header für Ihre Anfrage und eine Signatur im Autorisierungsheader, die als Startsignatur zum Signieren der Datenrahmen Amazon Transcribe verwendet wird.
-
Ein oder mehrere Nachrichtenframe(s) in Ereignisstromkodierung, der/die Metadaten und Roh-Audio-Bytes enthält/enthalten.
-
Ein Endframe. Hierbei handelt es sich um eine signierte Nachricht in der Ereignis-Stream-Kodierung mit einem leeren Text.
Anmerkung
Amazon Transcribe unterstützt nur einen Stream pro HTTP/2 Sitzung. Wenn Sie versuchen, mehrere Streams zu verwenden, schlägt Ihre Transkriptionsanfrage fehl.
-
Fügen Sie der IAM Rolle, die die Anfrage stellt, die folgende Richtlinie hinzu. Weitere Informationen finden Sie unter IAM Richtlinien hinzufügen.
-
Um die Sitzung zu starten, senden Sie eine HTTP/2 Anfrage an Amazon Transcribe.
POST /stream-transcription HTTP/2 host: transcribestreaming.us-west-2.amazonaws.com X-Amz-Target: com.amazonaws.transcribe.Transcribe.StartStreamTranscriptionContent-Type: application/vnd.amazon.eventstream X-Amz-Content-Sha256:stringX-Amz-Date:YYYYMMDDTHHMMSSZ Authorization: AWS4-HMAC-SHA256 Credential=access-key/YYYYMMDD/us-west-2/transcribe/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date;x-amz-target;x-amz-security-token, Signature=stringx-amzn-transcribe-language-code:en-USx-amzn-transcribe-media-encoding:flacx-amzn-transcribe-sample-rate:16000transfer-encoding: chunkedZusätzliche Operationen und Parameter sind in der API-Referenz aufgeführt. Parameter, die allen AWS -API-Operationen gemeinsam sind, werden im Abschnitt Allgemeine Parameter aufgeführt.
Amazon Transcribe sendet die folgende Antwort:
HTTP/2.0 200 x-amzn-transcribe-language-code: en-US x-amzn-transcribe-media-encoding: flac x-amzn-transcribe-sample-rate: 16000 x-amzn-request-id: 8a08df7d-5998-48bf-a303-484355b4ab4e x-amzn-transcribe-session-id: b4526fcf-5eee-4361-8192-d1cb9e9d6887 content-type: application/json -
Erstellen Sie ein Audio-Ereignis, das Ihre Audiodaten enthält. Kombinieren Sie die in der folgenden Tabelle beschriebenen Headern mit einem Chunk von Audio-Bytes in einer ereigniskodierten Nachricht. Nutzen Sie einen Puffer im Rohbyteformat, um die Nutzlast für die Ereignisnachricht zu erstellen.
Bytelänge des Header-Namens Header-Name (Zeichenfolge) Werttyp des Header Bytelänge der Wertzeichenfolge Wert string (UTF-8) 13 :content-type 7 24 application/octet-streamen 11 :event-type 7 10 AudioEvent 13 :message-type 7 5 event Die binären Daten in dieser Beispielanfrage sind base64-kodiert. Bei einer tatsächlichen Anfrage sind die Daten Rohbytes.
:content-type: "application/vnd.amazon.eventstream" :event-type: "AudioEvent" :message-type: "event" UklGRjzxPQBXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YVTwPQAAAAAAAAAAAAAAAAD//wIA/f8EAA== -
Erstellen Sie eine Audionachricht, die Ihre Audiodaten enthält.
-
Ihr Audionachrichten-Datenrahmen enthält Ereigniscodierungs-Header, die das aktuelle Datum und eine Signatur für den Audiochunk und das Audioereignis enthalten.
Bytelänge des Header-Namens Header-Name (Zeichenfolge) Werttyp des Header Bytelänge der Wertzeichenfolge Wert 16 :chunk-signature 6 variiert generierte Signatur 5 :date 8 8 Zeitstempel Die binären Daten in dieser Anfrage sind base64-kodiert. Bei einer tatsächlichen Anfrage sind die Daten Rohbytes.
:date: 2019-01-29T01:56:17.291Z :chunk-signature:signatureAAAA0gAAAIKVoRFcTTcjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0LOmV2ZW50LXR5 cGUHAApBdWRpb0V2ZW50DTptZXNzYWdlLXR5cGUHAAVldmVudAxDb256ZW50LVR5cGUHABphcHBsaWNhdGlv bi94LWFtei1qc29uLTEuMVJJRkY88T0AV0FWRWZtdCAQAAAAAQABAIA+AAAAfQAAAgAQAGRhdGFU8D0AAAAA AAAAAAAAAAAA//8CAP3/BAC7QLFf -
Konstruieren Sie eine zu signierende Zeichenfolge, wie unter Erstellen einer zu signierenden Zeichenfolge für Signature Version 4 beschrieben. Ihre Zeichenkette hat dieses Format:
String stringToSign = "AWS4-HMAC-SHA256" + "\n" +DateTime+ "\n" +Keypath+ "\n" + Hex(priorSignature) + "\n" + HexHash(nonSignatureHeaders) + "\n" + HexHash(payload);-
DateTime: Datum und Uhrzeit der Erstellung der Signatur. Das Format ist JJJJMMTTTHHMMSSZ, wobei JJJJ=Jahr, MM=Monat, TT=Tag, HH=Stunde, MM=Minute, SS=Sekunden und „T“ und „Z“ feste Zeichen sind. Weitere Informationen finden Sie unter Handhabung von Daten in Signature Version 4.
-
Keypath: Der Signaturbereich im Format
date/region/service/aws4_request. Beispiel,20220127/us-west-2/transcribe/aws4_request. -
Hex: Eine Funktion, die Eingaben in eine hexadezimale Darstellung kodiert.
-
priorSignature: Die Signatur für den vorherigen Frame. Verwenden Sie die Signatur des Header-Frames für den ersten Datenframe.
-
HexHash: Eine Funktion, die zuerst einen SHA-256 Hash ihrer Eingabe erstellt und dann die Hex-Funktion verwendet, um den Hash zu kodieren.
-
non SignatureHeaders: Der DateTime Header ist als Zeichenfolge kodiert.
-
payload: Der Byte-Puffer, der die Audio-Ereignisdaten enthält.
-
-
Leiten Sie aus Ihrem AWS geheimen Zugriffsschlüssel einen Signaturschlüssel ab und signieren Sie ihn damit.
stringToSignFür ein höheres Maß an Schutz ist der abgeleitete Schlüssel spezifisch für das Datum, den Service und AWS-Region. Weitere Informationen finden Sie unter Berechnen der Signatur für AWS Signature Version 4.Stellen Sie sicher, dass Sie die Funktion
GetSignatureKeyimplementieren, um Ihren Signaturschlüssel abzuleiten. Wenn Sie noch keinen Signaturschlüssel abgeleitet haben, lesen Sie den Abschnitt Beispiele für die Ableitung eines Signaturschlüssels für die Signature Version 4.String signature = HMACSHA256(derivedSigningKey, stringToSign);-
HMACSHA256: Eine Funktion, die mithilfe der Hash-Funktion eine Signatur erstellt. SHA-256
-
abgeleitet SigningKey: Der Signaturschlüssel von Signature Version 4.
-
string ToSign: Die Zeichenfolge, die Sie für den Datenrahmen berechnet haben.
Nachdem Sie die Signatur für den Data Frame berechnet haben, erstellen Sie einen Bytepuffer, der das Datum, die Signatur und die Nutzlast des Audioereignisses enthält. Senden Sie das Byte-Array zur Transkription an Amazon Transcribe .
-
-
-
Um anzuzeigen, dass der Audiostream vollständig ist, senden Sie einen End-Frame (einen leeren Datenrahmen), der nur das Datum und die Signatur enthält. Sie konstruieren diesen Endframe auf die gleiche Weise wie einen Data Frame.
Amazon Transcribe antwortet mit einem Stream von Transkriptionsereignissen, die an Ihre Anwendung gesendet werden. Diese Antwort ist Ereignisstreamkodiert. Sie enthält die Standardeinleitung und die folgenden Header:
Bytelänge des Header-Namens Header-Name (Zeichenfolge) Werttyp des Header Bytelänge der Wertzeichenfolge Wertzeichenfolge () UTF-8 13 :content-type 7 16 application/json 11 :event-type 7 15 TranscriptEvent 13 :message-type 7 5 event Die Ereignisse werden im Rohbyteformat gesendet. In diesem Beispiel sind die Bytes base64-kodiert.
AAAAUwAAAEP1RHpYBTpkYXRlCAAAAWiXUkMLEDpjaHVuay1zaWduYXR1cmUGACCt6Zy+uymwEK2SrLp/zVBI 5eGn83jdBwCaRUBJA+eaDafqjqI=Um die Transkriptionsergebnisse zu sehen, dekodieren Sie die rohen Bytes mit der Ereignisstreamkodierung.
:content-type: "application/vnd.amazon.eventstream" :event-type: "TranscriptEvent" :message-type: "event" { "Transcript": { "Results": [results] } } -
Um Ihren Stream zu beenden, senden Sie ein leeres Audioereignis an Amazon Transcribe. Erstellen Sie das Audioereignis genau wie jedes andere (Ausnahme: leere Nutzlast). Signieren Sie das Ereignis und fügen Sie die Signatur wie folgt in den Header
:chunk-signatureein::date: 2019-01-29T01:56:17.291Z :chunk-signature:signature
Umgang mit HTTP/2 Streaming-Fehlern
Wenn bei der Verarbeitung Ihres Medienstreams ein Fehler auftritt, Amazon Transcribe sendet eine Ausnahmeantwort. Die Antwort ist Ereignis-Stream-kodiert.
Die Antwort enthält die Standardeinleitung und die folgenden Header:
| Bytelänge des Header-Namens | Header-Name (Zeichenfolge) | Werttyp des Header | Bytelänge der Wertzeichenfolge | Wertzeichenfolge (UTF-8) |
|---|---|---|---|---|
| 13 | :content-type | 7 | 16 | application/json |
| 11 | :event-type | 7 | 19 | BadRequestException |
| 13 | :message-type | 7 | 9 | Ausnahme |
Wenn die Ausnahmeantwort kodiert ist, enthält sie die folgenden Informationen:
:content-type: "application/vnd.amazon.eventstream" :event-type: "BadRequestException" :message-type: "exception"Exception message
Die wichtigsten Komponenten eines WebSocketProtokolls
-
Die Upgrade-Anforderung. Es enthält die Abfrageparameter für Ihre Anfrage und eine Signatur, die als Startsignatur zum Signieren der Datenrahmen Amazon Transcribe verwendet wird.
-
Ein oder mehrere Nachrichtenframe(s) in Ereignisstromkodierung, der/die Metadaten und Roh-Audio-Bytes enthält/enthalten.
-
Ein Endframe. Hierbei handelt es sich um eine signierte Nachricht in der Ereignis-Stream-Kodierung mit einem leeren Text.
Anmerkung
Amazon Transcribe unterstützt nur einen Stream pro WebSocket Sitzung. Wenn Sie versuchen, mehrere Streams zu verwenden, schlägt Ihre Transkriptionsanfrage fehl.
-
Fügen Sie der IAM Rolle, die die Anfrage stellt, die folgende Richtlinie hinzu. Weitere Informationen finden Sie unter IAM Richtlinien hinzufügen.
-
Um die Sitzung zu starten, erstellen Sie eine vordefinierte URL in folgendem Format. Für eine bessere Lesbarkeit werden Zeilenumbrüche hinzugefügt.
GET wss://transcribestreaming.us-west-2.amazonaws.com:8443/stream-transcription-websocket? &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=access-key%2FYYYYMMDD%2Fus-west-2%2Ftranscribe%2Faws4_request &X-Amz-Date=YYYYMMDDTHHMMSSZ &X-Amz-Expires=300&X-Amz-Security-Token=security-token&X-Amz-Signature=string&X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-date &language-code=en-US&media-encoding=flac&sample-rate=16000Anmerkung
Der Höchstwert für
X-Amz-Expiresist 300 (5 Minuten).Zusätzliche Operationen und Parameter sind in der API-Referenz aufgeführt. Parameter, die allen AWS -API-Operationen gemeinsam sind, werden im Abschnitt Allgemeine Parameter aufgeführt.
Um die URL für Ihre Anfrage zu konstruieren und die Signature Version 4 zu erstellen, führen Sie die folgenden Schritte aus. Die Beispiele sind in Pseudocode.
-
Erstellen Sie eine kanonische Anforderung. Eine kanonische Anfrage ist eine Zeichenfolge, die Informationen aus Ihrer Anfrage in einem standardisierten Format enthält. Dadurch wird sichergestellt, dass beim AWS Empfang der Anfrage dieselbe Signatur berechnet werden kann, die Sie für Ihre URL erstellt haben. Weitere Informationen finden Sie unter Erstellen eines kanonischen Antrags für Signature Version 4.
# HTTP verb method = "GET" # Service name service = "transcribe" # Region region = "us-west-2" # Amazon Transcribe streaming endpoint endpoint = "wss://transcribestreaming.us-west-2.amazonaws.com:8443" # Host host = "transcribestreaming.us-west-2.amazonaws.com:8443" # Date and time of request amz-date =YYYYMMDDTHHMMSSZ # Date without time for credential scope datestamp =YYYYMMDD -
Erstellen Sie einen kanonischen URI, d. h. den Teil des URI, der zwischen der Domain und dem Abfrage-String liegt.
canonical_uri = "/stream-transcription-websocket" -
Erstellen Sie die kanonischen Header und signierten Header. Beachten Sie das abschließende
\nin den kanonischen Headern.-
Fügen Sie den Namen des Headers in Kleinbuchstaben gefolgt von einem Doppelpunkt ( : ) an.
-
Fügen Sie eine durch Komma getrennte Liste der Werte für diesen Header an. Sortieren Sie keine Werte in Headern, die mehrere Werte enthalten.
-
Eine neue Zeile anfügen (
\n).
canonical_headers = "host:" + host + "\n" signed_headers = "host" -
-
Gleichen Sie den Algorithmus mit dem Hash-Algorithmus ab. Verwenden Sie
SHA-256.algorithm = "AWS4-HMAC-SHA256" -
Erstellen Sie den Berechtigungsbereich, der den abgeleiteten Schlüssel auf das Datum, AWS-Region und den Service ausdehnt. Beispiel,
.20220127/us-west-2/transcribe/aws4_requestcredential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request" -
Erstellen Sie die kanonische Abfragezeichenfolge. Die Werte der Abfragezeichenfolge müssen URI-encoded nach Namen sortiert sein.
-
Sortieren Sie die Parameternamen nach Zeichencodepunkt in aufsteigender Reihenfolge. Parameter mit doppelten Namen sollten nach Wert sortiert werden. So wird beispielsweise ein Parametername, der mit dem Großbuchstaben F beginnt, einem Parameternamen, der mit dem Kleinbuchstaben b beginnt, vorangestellt.
-
Verwenden Sie URI-encode keines der nicht reservierten Zeichen, die in RFC 3986 definiert sind: A-Z, a-z, 0-9, Bindestrich (-), Unterstrich (_), Punkt (.) und Tilde (~).
-
Percent-encode alle anderen Zeichen mit %XY, wobei X und Y Hexadezimalzeichen (0-9 und Großbuchstaben) sind. A-F Beispielsweise muss das Leerzeichen als %20 codiert sein (kein '+' enthalten, wie es bei einigen Kodierungsschemata der Fall ist); erweiterte UTF-8 Zeichen müssen die Form %XY%ZA%BC haben.
-
Double-encode alle Gleichheitszeichen (=) in Parameterwerten.
canonical_querystring = "X-Amz-Algorithm=" + algorithm canonical_querystring += "&X-Amz-Credential="+ URI-encode(access key + "/" + credential_scope) canonical_querystring += "&X-Amz-Date=" + amz_date canonical_querystring += "&X-Amz-Expires=300" canonical_querystring += "&X-Amz-Security-Token=" + token canonical_querystring += "&X-Amz-SignedHeaders=" + signed_headers canonical_querystring += "&language-code=en-US&media-encoding=flac&sample-rate=16000" -
-
Erstellen Sie ein Hash der Nutzlast. Bei einer Anfrage an
GETist die Nutzlast eine leere Zeichenkette.payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest() -
Kombinieren Sie die folgenden Elemente, um die kanonische Anfrage zu erstellen.
canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash
-
-
Erstellen Sie die zu signierende Zeichenkette, die Metainformationen über Ihre Anfrage enthält. Sie verwenden die zu signierende Zeichenfolge im nächsten Schritt, wenn Sie die Anforderungssignatur berechnen. Weitere Informationen finden Sie unter Erstellen einer zu signierenden Zeichenfolge für Signature Version 4.
string_to_sign=algorithm + "\n" + amz_date + "\n" + credential_scope + "\n" + HashSHA256(canonical_request.Encode("utf-8")).HexDigest() -
Berechnen Sie die Signatur. Um dies zu tun, leiten Sie einen Signaturschlüssel aus Ihrem AWS geheimen Zugriffsschlüssel ab. Für ein höheres Maß an Schutz ist der abgeleitete Schlüssel spezifisch für das Datum, den Service und AWS-Region. Verwenden Sie diesen abgeleiteten Schlüssel, um die Anfrage zu signieren. Weitere Informationen finden Sie unter AWS Signatur für Signaturversion 4 berechnen.
Stellen Sie sicher, dass Sie die Funktion
GetSignatureKeyimplementieren, um Ihren Signaturschlüssel abzuleiten. Wenn Sie noch keinen Signaturschlüssel abgeleitet haben, lesen Sie den Abschnitt Beispiele für die Ableitung eines Signaturschlüssels für die Signature Version 4.#Create the signing key signing_key = GetSignatureKey(secret_key, datestamp, region, service) # Sign the string_to_sign using the signing key signature = HMAC.new(signing_key, (string_to_sign).Encode("utf-8"), Sha256()).HexDigestDie Funktion
HMAC(key, data)stellt eine HMAC-SHA256 Funktion dar, die Ergebnisse im Binärformat zurückgibt. -
Fügen Sie der Anfrage Signierinformationen hinzu und erstellen Sie die Anfrage-URL.
Nachdem Sie die Signatur berechnet haben, fügen Sie sie zur Abfragezeichenfolge hinzu. Weitere Informationen finden Sie unter Hinzufügen der Signatur zur Anfrage.
Fügen Sie zunächst die Authentifizierungsinformationen in die Abfragezeichenfolge ein.
canonical_querystring += "&X-Amz-Signature=" + signatureZweitens: Erstellen Sie die URL für die Anfrage.
request_url = endpoint + canonical_uri + "?" + canonical_querystringVerwenden Sie die Anforderungs-URL zusammen mit Ihrer WebSocket Bibliothek, an die Sie die Anfrage richten möchten Amazon Transcribe.
-
Die Anfrage an Amazon Transcribe muss die folgenden Header enthalten. In der Regel werden diese Header von Ihrer WebSocket Client-Bibliothek verwaltet.
Host: transcribestreaming.us-west-2.amazonaws.com:8443 Connection: Upgrade Upgrade: websocket Origin:URI-of-WebSocket-clientSec-WebSocket-Version:13Sec-WebSocket-Key:randomly-generated-string -
Wenn Ihre Amazon Transcribe WebSocket Anfrage eingeht, antwortet sie mit einer WebSocket Upgrade-Antwort. In der Regel verwaltet Ihre WebSocket Bibliothek diese Antwort und richtet einen Socket für die Kommunikation mit ein Amazon Transcribe.
Das Folgende ist die Antwort von Amazon Transcribe. Für eine bessere Lesbarkeit werden Zeilenumbrüche hinzugefügt.
HTTP/1.1 101 WebSocket Protocol Handshake Connection: upgrade Upgrade: websocket websocket-origin: wss://transcribestreaming.us-west-2.amazonaws.com:8443 websocket-location: transcribestreaming.us-west-2.amazonaws.com:8443/stream-transcription-websocket? &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20220208%2Fus-west-2%2Ftranscribe%2Faws4_request &X-Amz-Date=20220208T235959Z &X-Amz-Expires=300 &X-Amz-Signature=Signature Version 4 signature&X-Amz-SignedHeaders=host &language-code=en-US &session-id=String&media-encoding=flac &sample-rate=16000 x-amzn-RequestId:RequestIdStrict-Transport-Security: max-age=31536000sec-websocket-accept:hash-of-the-Sec-WebSocket-Key-header -
Stellen Sie Ihre WebSocket Streaming-Anfrage.
Nachdem die WebSocket Verbindung hergestellt wurde, kann der Client mit dem Senden einer Sequenz von Audioframes beginnen, die jeweils mithilfe der Event-Stream-Kodierung codiert sind.
Jeder Datenrahmen enthält drei Header, die mit einem Teil der Rohdaten kombiniert werden; die folgende Tabelle beschreibt diese Header.
Bytelänge des Header-Namens Header-Name (Zeichenfolge) Werttyp des Header Bytelänge der Wertzeichenfolge Wert: Zeichenfolge () UTF-8 13 :content-type 7 24 application/octet-streamen 11 :event-type 7 10 AudioEvent 13 :message-type 7 5 event -
Um den Datenströmen zu beenden, senden Sie einen leeren Audiochunk in einer ereignisstromkodierten Nachricht.
Die Antwort enthält Ereignis-Stream-kodierte Rohbytes in der Nutzlast. Sie enthält die Standardeinleitung und die folgenden Header:
Bytelänge des Header-Namens Header-Name (Zeichenfolge) Werttyp des Header Bytelänge der Wertzeichenfolge Wert: Zeichenfolge () UTF-8 13 :content-type 7 16 application/json 11 :event-type 7 15 TranscriptEvent 13 :message-type 7 5 event Wenn Sie die binäre Antwort dekodieren, erhalten Sie eine JSON-Struktur, die die Transkriptionsergebnisse enthält.
Umgang mit WebSocket Streaming-Fehlern
Wenn bei der Bearbeitung Ihrer Anfrage eine Ausnahme auftritt, Amazon Transcribe antwortet die Antwort mit einem WebSocket Terminalframe, der eine in einem Eventstream kodierte Antwort enthält. Diese Antwort enthält die in der folgenden Tabelle beschriebenen Header. Der Hauptteil der Antwort enthält eine beschreibende Fehlermeldung. Amazon Transcribe Sendet nach dem Senden der Ausnahmeantwort einen geschlossenen Frame.
| Bytelänge des Header-Namens | Header-Name (Zeichenfolge) | Werttyp des Header | Bytelänge der Wertzeichenfolge | Wertzeichenfolge (UTF-8) |
|---|---|---|---|---|
| 13 | :content-type | 7 | 16 | application/json |
| 15 | :exception-type | 7 | variiert | variiert, siehe unten |
| 13 | :message-type | 7 | 9 | Ausnahme |
Der exception-type-Header enthält einen der folgenden Werte.
-
BadRequestException: Bei der Erstellung des Streams ist ein Client-Fehler aufgetreten, oder es ist ein Fehler beim Streaming von Daten aufgetreten. Stellen Sie sicher, dass Ihr Client bereit ist, Daten zu akzeptieren, und versuchen Sie es erneut. -
InternalFailureException: Amazon Transcribe hatte ein Problem beim Handshake mit dem Client. Versuchen Sie es erneut. -
LimitExceededException: Der Client hat das Limit für gleichzeitige Streams überschritten. Weitere Informationen finden Sie unter Amazon Transcribe Limits. Reduzieren Sie die Anzahl der Streams, die Sie transkribieren. -
UnrecognizedClientException: Die WebSocket Upgrade-Anfrage wurde mit einem falschen Zugriffs- oder Geheimschlüssel signiert. Vergewissern Sie sich, dass Sie den Zugriffsschlüssel korrekt erstellt haben, und versuchen Sie Ihre Anfrage erneut.
Amazon Transcribe kann auch alle gängigen Servicefehler zurückgeben. Eine Liste finden Sie unter Häufige Fehler.
Ereignis-Stream-Kodierung
Amazon Transcribe verwendet ein Format namens Event Stream Encoding für Streaming-Transkriptionen.
Die Ereignis-Stream-Kodierung stellt eine bidirektionale Kommunikation zwischen einem Client und einem Server bereit. Datenframes, die an den Amazon Transcribe Streaming-Dienst gesendet werden, werden in diesem Format codiert. Die Antwort von verwendet Amazon Transcribe ebenfalls diese Kodierung.
Jede Nachricht besteht aus zwei Abschnitten: der Einleitung und den Daten. Die Einleitung setzt sich folgendermaßen zusammen:
-
Die Byte-Länge der Nachricht
-
Die kombinierte Bytelänge aller Header
Der Datenabschnitt setzt sich folgendermaßen zusammen:
-
Kopfzeilen
-
Nutzlast
Jeder Abschnitt endet mit einer 4-Byte-Big-Endian-Integer-CRC-Prüfsumme (Cyclic Redundancy Check). Die Meldung CRC-Prüfsumme gilt sowohl für den Einleitungsabschnitt als auch für den Datenabschnitt. Amazon Transcribe verwendet CRC32 (oft als GZIP CRC32 bezeichnet), um beide CRCs zu berechnen. Weitere Informationen zu CRC32 finden Sie unter GZIP-Dateiformatspezifikation Version 4.3
Der gesamte Nachrichten-Overhead, einschließlich der Einleitung und beider Prüfsummen, beträgt 16 Bytes.
Das folgende Diagramm zeigt die Komponenten, aus denen eine Nachricht und ein Header bestehen. Pro Nachricht gibt es mehrere Header.
Jede Nachricht enthält die folgenden Komponenten:
-
Prelude: Besteht aus zwei 4-Byte-Feldern, also insgesamt 8 Byte.
-
Die ersten 4 Bytes: Die Big-Endian-Integer-Byte-Länge der gesamten Nachricht, einschließlich dieses 4-Byte-Längenfeldes.
-
Zweite 4 Bytes: Die Big-Endian-Integer-Byte-Länge des „Header"-Teils der Nachricht, mit Ausnahme des „Header"-Längenfelds selbst.
-
-
Einleitungs-CRC: die 4-Byte-CRC-Prüfsumme des Einleitungsteils der Nachricht, mit Ausnahme der CRC selbst. Das Prelude hat einen von der Nachricht getrennten CRC. Dadurch wird sichergestellt, dass beschädigte Informationen mit Bytelänge sofort erkannt werden Amazon Transcribe können, ohne dass es zu Fehlern wie Pufferüberläufen kommt.
-
Header: Metadaten, die die Nachricht annotieren, z. B. Nachrichtentyp und Inhaltstyp. Nachrichten haben mehrere Header, bei denen es sich um Schlüssel/Wert-Paare handelt, wobei der Schlüssel eine Zeichenfolge ist. UTF-8 Header können in beliebiger Reihenfolge im „Header“-Teil der Nachricht erscheinen, und jeder Header darf nur einmal vorkommen.
-
Nutzlast: die zu transkribierenden Audioinhalte.
-
Nachrichten-CRC: die 4-Byte-CRC-Prüfsumme vom Beginn der Nachricht bis zum Beginn der Prüfsumme. Also alles in der Nachricht bis auf die CRC selbst.
Der Header-Frame ist der Autorisierungs-Frame für die Streaming-Transkription. Amazon Transcribe verwendet den Wert des Autorisierungsheaders als Ausgangswert für die Generierung einer Kette von Autorisierungsheadern für die Datenframes in der Anfrage.
Jeder Header enthält die folgenden Komponenten; es gibt mehrere Header pro Frame.
-
Byte-Länge des Header-Namens: die Byte-Länge des Header-Namens.
-
Header-Name: Der Name des Headers, der den Header-Typ angibt. Gültige Werte finden Sie in den folgenden Frame-Beschreibungen.
-
Typ des Header-Werts: Eine Zahl, die den Header-Wert angibt. Die folgende Liste zeigt die möglichen Werte für den Header und was sie bedeuten.
-
0– WAHR -
1– FALSCH -
2– BYTE -
3– KURZ -
4– INTEGER -
5– LANG -
6– BYTE ARRAY -
7– Zeichenfolge -
8– ZEITSTEMPEL -
9– UUID
-
-
Byte-Länge der Wertzeichenfolge: die Byte-Länge der Header-Wertzeichenfolge.
-
Header-Wert: der Wert der Header-Zeichenfolge. Gültige Werte für dieses Feld sind vom Header-Typ abhängig. Weitere Informationen finden Sie unter Einen HTTP/2 Stream einrichten oder Einen WebSocket Stream einrichten.
Datenframes
Jede Streaming-Anfrage enthält einen oder mehrere Data Frames. Zum Erstellen eines Datenframes sind die folgenden zwei Schritte erforderlich:
-
Kombinieren Sie Audio-Rohdaten mit Metadaten, um die Nutzdaten Ihrer Anfrage zu erstellen.
-
Kombinieren Sie die Nutzlast mit einer Signatur, um die Ereignisnachricht zu erstellen, die an Amazon Transcribe gesendet wird.
In der folgenden Abbildung ist diese Funktionsweise dargestellt.