Menyiapkan transkripsi streaming - Amazon Transcribe

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyiapkan transkripsi streaming

Bagian ini meluas di bagian streaming utama. Ini dimaksudkan untuk memberikan informasi bagi pengguna yang ingin mengatur aliran mereka HTTP dengan/2 atau WebSockets secara langsung, bukan dengan file AWS SDK. Informasi di bagian ini juga dapat digunakan untuk membangun informasi Anda sendiriSDK.

penting

Kami sangat menyarankan menggunakan SDKs daripada menggunakan HTTP /2 dan WebSockets secara langsung. SDKsadalah metode paling sederhana dan paling dapat diandalkan untuk menyalin aliran data. Untuk memulai streaming menggunakan AWS SDK, lihatMentranskripsikan dengan SDK AWS.

Komponen kunci untuk protokol HTTP /2 untuk streaming permintaan transkripsi adalah: Amazon Transcribe

  • Bingkai header. Ini berisi header HTTP /2 untuk permintaan Anda, dan tanda tangan di header otorisasi yang Amazon Transcribe digunakan sebagai tanda tangan benih untuk menandatangani bingkai data.

  • Satu atau beberapa frame pesan dalam pengkodean aliran acara yang berisi metadata dan byte audio mentah.

  • Bingkai akhir. Ini adalah pesan yang ditandatangani dalam pengkodean aliran acara dengan badan kosong.

catatan

Amazon Transcribe hanya mendukung satu aliran per HTTP /2 sesi. Jika Anda mencoba menggunakan beberapa aliran, permintaan transkripsi Anda gagal.

  1. Lampirkan kebijakan berikut ke IAM peran yang membuat permintaan. Lihat Menambahkan IAM kebijakan untuk informasi selengkapnya.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-http2-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscription", "Resource": "*" } ] }
  2. Untuk memulai sesi, kirim permintaan HTTP /2 ke Amazon Transcribe.

    POST /stream-transcription HTTP/2 host: transcribestreaming.us-west-2.amazonaws.com X-Amz-Target: com.amazonaws.transcribe.Transcribe.StartStreamTranscription Content-Type: application/vnd.amazon.eventstream X-Amz-Content-Sha256: string X-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=string x-amzn-transcribe-language-code: en-US x-amzn-transcribe-media-encoding: flac x-amzn-transcribe-sample-rate: 16000 transfer-encoding: chunked

    Operasi dan parameter tambahan tercantum dalam APIReferensi; parameter umum untuk semua AWS API operasi tercantum di bagian Parameter Umum.

    Amazon Transcribe mengirimkan respons berikut:

    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
  3. Buat acara audio yang berisi data audio Anda. Gabungkan header—dijelaskan dalam tabel berikut—dengan potongan byte audio dalam pesan yang disandikan peristiwa. Untuk membuat payload pesan acara, gunakan buffer dalam format raw-byte.

    Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
    13 :tipe konten 7 24 aplikasi/oktet-aliran
    11 :tipe acara 7 10 AudioEvent
    13 :tipe pesan 7 5 kejadian

    Data biner dalam permintaan contoh ini dikodekan base64. Dalam permintaan aktual, data adalah byte mentah.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "AudioEvent" :message-type: "event" UklGRjzxPQBXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YVTwPQAAAAAAAAAAAAAAAAD//wIA/f8EAA==
  4. Buat pesan audio yang berisi data audio Anda.

    1. Bingkai data pesan audio Anda berisi header pengkodean peristiwa yang menyertakan tanggal saat ini dan tanda tangan untuk potongan audio dan acara audio.

      Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai
      16 :bongkahan tanda tangan 6 bervariasi tanda tangan yang dihasilkan
      5 :tanggal 8 8 timestamp

      Data biner dalam permintaan ini dikodekan base64. Dalam permintaan aktual, data adalah byte mentah.

      :date: 2019-01-29T01:56:17.291Z :chunk-signature: signature AAAA0gAAAIKVoRFcTTcjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0LOmV2ZW50LXR5 cGUHAApBdWRpb0V2ZW50DTptZXNzYWdlLXR5cGUHAAVldmVudAxDb256ZW50LVR5cGUHABphcHBsaWNhdGlv bi94LWFtei1qc29uLTEuMVJJRkY88T0AV0FWRWZtdCAQAAAAAQABAIA+AAAAfQAAAgAQAGRhdGFU8D0AAAAA AAAAAAAAAAAA//8CAP3/BAC7QLFf
    2. Buat string untuk ditandatangani, seperti yang diuraikan dalam Buat string untuk menandatangani Signature Version 4. String Anda mengikuti format ini:

      String stringToSign = "AWS4-HMAC-SHA256" + "\n" + DateTime + "\n" + Keypath + "\n" + Hex(priorSignature) + "\n" + HexHash(nonSignatureHeaders) + "\n" + HexHash(payload);
      • DateTime: Tanggal dan waktu tanda tangan dibuat. Formatnya adalahYYYYMMDDTHHMMSSZ, di mana YYYY =year, mm=month, dd=day, hh=hour, mm=minute, ss=seconds, dan 'T' dan 'Z' adalah karakter tetap. Untuk informasi selengkapnya, lihat Menangani Tanggal di Tanda Tangan Versi 4.

      • Keypath: Lingkup tanda tangan dalam formatdate/region/service/aws4_request. Misalnya, 20220127/us-west-2/transcribe/aws4_request.

      • Hex: Fungsi yang mengkodekan input ke dalam representasi heksadesimal.

      • priorSignature: Tanda tangan untuk frame sebelumnya. Untuk frame data pertama, gunakan tanda tangan dari frame header.

      • HexHash: Fungsi yang pertama membuat SHA -256 hash dari inputnya dan kemudian menggunakan fungsi Hex untuk menyandikan hash.

      • nonSignatureHeaders: DateTime Header dikodekan sebagai string.

      • payload: Buffer byte yang berisi data peristiwa audio.

    3. Dapatkan kunci penandatanganan dari kunci akses AWS rahasia Anda dan gunakan untuk menandatangani. stringToSign Untuk tingkat perlindungan yang lebih besar, kunci turunan khusus untuk tanggal, layanan, dan Wilayah AWS. Untuk informasi selengkapnya, lihat Menghitung tanda tangan untuk Versi AWS Tanda Tangan 4.

      Pastikan Anda menerapkan GetSignatureKey fungsi untuk mendapatkan kunci penandatanganan Anda. Jika Anda belum mendapatkan kunci penandatanganan, lihat Contoh cara mendapatkan kunci penandatanganan untuk Signature Version 4.

      String signature = HMACSHA256(derivedSigningKey, stringToSign);
      • HMACSHA256: Fungsi yang membuat tanda tangan menggunakan fungsi hash SHA -256.

      • derivedSigningKey: Kunci penandatanganan Signature Version 4.

      • stringToSign: String yang Anda hitung untuk bingkai data.

      Setelah menghitung tanda tangan untuk bingkai data, buat buffer byte yang berisi tanggal, tanda tangan, dan muatan peristiwa audio. Kirim array byte Amazon Transcribe untuk transkripsi.

  5. Untuk menunjukkan aliran audio selesai, kirim bingkai akhir (bingkai data kosong) yang hanya berisi tanggal dan tanda tangan. Anda membangun bingkai akhir ini dengan cara yang sama seperti Anda membangun bingkai data.

    Amazon Transcribe merespons dengan aliran peristiwa transkripsi, dikirim ke aplikasi Anda. Respons ini adalah aliran acara yang dikodekan. Ini berisi pendahuluan standar dan header berikut.

    Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
    13 :tipe konten 7 16 aplikasi/json
    11 :tipe acara 7 15 TranscriptEvent
    13 :tipe pesan 7 5 kejadian

    Peristiwa dikirim dalam format raw-byte. Dalam contoh ini, byte dikodekan base64.

    AAAAUwAAAEP1RHpYBTpkYXRlCAAAAWiXUkMLEDpjaHVuay1zaWduYXR1cmUGACCt6Zy+uymwEK2SrLp/zVBI 5eGn83jdBwCaRUBJA+eaDafqjqI=

    Untuk melihat hasil transkripsi, dekode byte mentah menggunakan pengkodean aliran peristiwa.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "TranscriptEvent" :message-type: "event" { "Transcript": { "Results": [ results ] } }
  6. Untuk mengakhiri streaming Anda, kirim acara audio kosong ke Amazon Transcribe. Buat acara audio persis seperti yang lain, kecuali dengan muatan kosong. Tanda tangani acara dan sertakan tanda tangan di :chunk-signature header, sebagai berikut:

    :date: 2019-01-29T01:56:17.291Z :chunk-signature: signature

Menangani HTTP kesalahan streaming /2

Jika terjadi kesalahan saat memproses aliran media Anda, Amazon Transcribe kirimkan respons pengecualian. Responsnya adalah aliran acara yang dikodekan.

Respons berisi pendahuluan standar dan header berikut:

Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
13 :tipe konten 7 16 aplikasi/json
11 :tipe acara 7 19 BadRequestException
13 :tipe pesan 7 9 pengecualian

Ketika respons pengecualian diterjemahkan, itu berisi informasi berikut:

:content-type: "application/vnd.amazon.eventstream" :event-type: "BadRequestException" :message-type: "exception" Exception message

Komponen kunci untuk WebSocketprotokol untuk streaming permintaan transkripsi Amazon Transcribe adalah:

  • Permintaan upgrade. Ini berisi parameter kueri untuk permintaan Anda, dan tanda tangan yang Amazon Transcribe digunakan sebagai tanda tangan benih untuk menandatangani bingkai data.

  • Satu atau beberapa frame pesan dalam pengkodean aliran acara yang berisi metadata dan byte audio mentah.

  • Bingkai akhir. Ini adalah pesan yang ditandatangani dalam pengkodean aliran acara dengan badan kosong.

catatan

Amazon Transcribe hanya mendukung satu aliran per WebSocket sesi. Jika Anda mencoba menggunakan beberapa aliran, permintaan transkripsi Anda gagal.

  1. Lampirkan kebijakan berikut ke IAM peran yang membuat permintaan. Lihat Menambahkan IAM kebijakan untuk informasi selengkapnya.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-websocket-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscriptionWebSocket", "Resource": "*" } ] }
  2. Untuk memulai sesi, buat presigned URL dalam format berikut. Jeda baris telah ditambahkan untuk keterbacaan.

    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=16000
    catatan

    Nilai maksimum untuk X-Amz-Expires adalah 300 (5 menit).

    Operasi dan parameter tambahan tercantum dalam APIReferensi; parameter umum untuk semua AWS API operasi tercantum di bagian Parameter Umum.

    Untuk membuat permintaan Anda dan membuat tanda tangan Versi Tanda Tangan 4, lihat langkah-langkah berikut. URL Contohnya ada di pseudocode.

    1. Membuat permintaan kanonik. Permintaan kanonik adalah string yang menyertakan informasi dari permintaan Anda dalam format standar. Ini memastikan bahwa ketika AWS menerima permintaan, itu dapat menghitung tanda tangan yang sama yang Anda buat untuk AndaURL. Untuk informasi selengkapnya, lihat Membuat Permintaan Kanonik untuk Tanda Tangan Versi 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
    2. Buat kanonikURI, yang merupakan bagian dari URI antara domain dan string kueri.

      canonical_uri = "/stream-transcription-websocket"
    3. Buat header kanonik dan header yang ditandatangani. Perhatikan trailing \n di header kanonik.

      • Tambahkan nama header huruf kecil diikuti dengan titik dua (:).

      • Tambahkan daftar nilai yang dipisahkan koma untuk header tersebut. Jangan mengurutkan nilai dalam header yang memiliki beberapa nilai.

      • Tambahkan baris baru (\n).

      canonical_headers = "host:" + host + "\n" signed_headers = "host"
    4. Cocokkan algoritma dengan algoritma hashing. Gunakan SHA-256.

      algorithm = "AWS4-HMAC-SHA256"
    5. Buat cakupan kredensi, yang mencakup kunci turunan untuk tanggal, Wilayah AWS, dan layanan. Misalnya, 20220127/us-west-2/transcribe/aws4_request.

      credential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request"
    6. Buat string kueri kanonik. Nilai string kueri harus URI -dikodekan dan diurutkan berdasarkan nama.

      • Urutkan nama parameter dengan titik kode karakter dalam urutan naik. Parameter dengan nama duplikat harus diurutkan berdasarkan nilai. Misalnya, nama parameter yang dimulai dengan huruf besar F mendahului nama parameter yang dimulai dengan huruf kecil b.

      • Jangan URI -encode salah satu karakter tanpa syarat yang didefinisikan RFC 3986: A-Z, a-z, 0-9, tanda hubung (-), garis bawah (_), periode (.), dan tilde (~).

      • Persen-encode semua karakter lain dengan %XY, di mana X dan Y adalah karakter heksadesimal (0-9 dan huruf besar A-F). Misalnya, karakter spasi harus dikodekan sebagai% 20 (jangan sertakan '+', seperti yang dilakukan beberapa skema pengkodean); karakter UTF -8 yang diperluas harus dalam bentuk %XY%ZA%BC.

      • Enkode ganda karakter yang sama dengan ( = ) dalam nilai parameter.

      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"
    7. Buat hash dari payload. Untuk GET permintaan, payload adalah string kosong.

      payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()
    8. Gabungkan elemen-elemen berikut untuk membuat permintaan kanonik.

      canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash
  3. Buat string untuk ditandatangani, yang berisi informasi meta tentang permintaan Anda. Anda menggunakan string untuk masuk ke langkah berikutnya ketika Anda menghitung tanda tangan permintaan. Untuk informasi selengkapnya, lihat Membuat String untuk Tanda Tangan Versi 4.

    string_to_sign=algorithm + "\n" + amz_date + "\n" + credential_scope + "\n" + HashSHA256(canonical_request.Encode("utf-8")).HexDigest()
  4. Hitung tanda tangannya. Untuk melakukan ini, dapatkan kunci penandatanganan dari kunci akses AWS rahasia Anda. Untuk tingkat perlindungan yang lebih besar, kunci turunan khusus untuk tanggal, layanan, dan Wilayah AWS. Gunakan kunci turunan ini untuk menandatangani permintaan. Untuk informasi selengkapnya, lihat Menghitung Tanda Tangan untuk AWS Tanda Tangan Versi 4.

    Pastikan Anda menerapkan GetSignatureKey fungsi untuk mendapatkan kunci penandatanganan Anda. Jika Anda belum mendapatkan kunci penandatanganan, lihat Contoh cara mendapatkan kunci penandatanganan untuk 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()).HexDigest

    Fungsi ini HMAC(key, data) mewakili HMAC - SHA256 fungsi yang mengembalikan hasil dalam format biner.

  5. Tambahkan informasi penandatanganan ke permintaan dan buat permintaanURL.

    Setelah Anda menghitung tanda tangan, tambahkan ke string kueri. Untuk informasi selengkapnya, lihat Menambahkan Tanda Tangan ke Permintaan.

    Pertama, tambahkan informasi otentikasi ke string kueri.

    canonical_querystring += "&X-Amz-Signature=" + signature

    Kedua, buat URL untuk permintaan.

    request_url = endpoint + canonical_uri + "?" + canonical_querystring

    Gunakan permintaan URL dengan WebSocket perpustakaan Anda untuk membuat permintaan Amazon Transcribe.

  6. Permintaan untuk Amazon Transcribe harus menyertakan header berikut. Biasanya header ini dikelola oleh pustaka WebSocket klien Anda.

    Host: transcribestreaming.us-west-2.amazonaws.com:8443 Connection: Upgrade Upgrade: websocket Origin: URI-of-WebSocket-client Sec-WebSocket-Version: 13 Sec-WebSocket-Key: randomly-generated-string
  7. Saat Amazon Transcribe menerima WebSocket permintaan Anda, itu merespons dengan respons WebSocket peningkatan. Biasanya WebSocket pustaka Anda mengelola respons ini dan menyiapkan soket untuk komunikasi dengannya Amazon Transcribe.

    Berikut ini adalah tanggapan dari Amazon Transcribe. Jeda baris telah ditambahkan untuk keterbacaan.

    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: RequestId Strict-Transport-Security: max-age=31536000 sec-websocket-accept: hash-of-the-Sec-WebSocket-Key-header
  8. Buat permintaan WebSocket streaming Anda.

    Setelah WebSocket koneksi dibuat, klien dapat mulai mengirim urutan bingkai audio, masing-masing dikodekan menggunakan pengkodean aliran acara.

    Setiap frame data berisi tiga header yang dikombinasikan dengan potongan byte audio mentah; tabel berikut menjelaskan header ini.

    Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
    13 :tipe konten 7 24 aplikasi/oktet-aliran
    11 :tipe acara 7 10 AudioEvent
    13 :tipe pesan 7 5 kejadian
  9. Untuk mengakhiri aliran data, kirim potongan audio kosong dalam pesan yang disandikan aliran acara.

    Respons berisi aliran peristiwa yang dikodekan byte mentah dalam payload. Ini berisi pendahuluan standar dan header berikut.

    Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
    13 :tipe konten 7 16 aplikasi/json
    11 :tipe acara 7 15 TranscriptEvent
    13 :tipe pesan 7 5 kejadian

    Saat Anda memecahkan kode respons biner, Anda berakhir dengan JSON struktur yang berisi hasil transkripsi.

Menangani kesalahan WebSocket streaming

Jika pengecualian terjadi saat memproses permintaan Anda, Amazon Transcribe merespons dengan WebSocket bingkai terminal yang berisi respons yang dikodekan aliran peristiwa. Respons ini berisi header yang dijelaskan dalam tabel berikut; isi respons berisi pesan kesalahan deskriptif. Setelah mengirim respons pengecualian, Amazon Transcribe kirimkan bingkai dekat.

Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang string byte Nilai string (UTF-8)
13 :tipe konten 7 16 aplikasi/json
15 :jenis pengecualian 7 bervariasi bervariasi, lihat di bawah
13 :tipe pesan 7 9 pengecualian

exception-typeHeader berisi salah satu nilai berikut:

  • BadRequestException: Ada kesalahan klien saat streaming dibuat, atau terjadi kesalahan saat streaming data. Pastikan klien Anda siap menerima data dan coba permintaan Anda lagi.

  • InternalFailureException: Amazon Transcribe memiliki masalah selama jabat tangan dengan klien. Coba permintaan Anda lagi.

  • LimitExceededException: Klien melebihi batas aliran bersamaan. Untuk informasi selengkapnya, lihat Amazon Transcribe Batasan-batasan. Kurangi jumlah stream yang Anda transkripsikan.

  • UnrecognizedClientException: Permintaan WebSocket pemutakhiran ditandatangani dengan kunci akses atau kunci rahasia yang salah. Pastikan Anda membuat kunci akses dengan benar dan coba permintaan Anda lagi.

Amazon Transcribe juga dapat mengembalikan salah satu kesalahan layanan umum. Untuk daftar, lihat Kesalahan Umum.

Pengkodean aliran acara

Amazon Transcribe menggunakan format yang disebut pengkodean aliran peristiwa untuk transkripsi streaming.

Event stream encoding menyediakan komunikasi dua arah antara klien dan server. Bingkai data yang dikirim ke layanan Amazon Transcribe streaming dikodekan dalam format ini. Respons dari Amazon Transcribe juga menggunakan pengkodean ini.

Setiap pesan terdiri dari dua bagian: pendahuluan dan data. Pendahuluan terdiri dari:

  1. Total panjang byte pesan

  2. Panjang byte gabungan dari semua header

Bagian data terdiri dari:

  1. Header

  2. Muatan

Setiap bagian diakhiri dengan checksum cek redundansi siklik () 4-byte big-endian integer. CRC CRCChecksum pesan adalah untuk bagian pendahuluan dan bagian data. Amazon Transcribe menggunakan CRC32 (sering disebut sebagai GZIPCRC32) untuk menghitung keduanyaCRCs. Untuk informasi selengkapnyaCRC32, lihat spesifikasi format GZIP file versi 4.3.

Total overhead pesan, termasuk pendahuluan dan kedua checksum, adalah 16 byte.

Diagram berikut menunjukkan komponen yang membentuk pesan dan header. Ada beberapa header per pesan.

Skema komponen pesan dan header untuk transkripsi streaming.

Setiap pesan berisi komponen-komponen berikut:

  • Prelude: Terdiri dari dua bidang 4-byte, dengan total tetap 8 byte.

    • 4 byte pertama: Panjang byte integer endian besar dari seluruh pesan, termasuk bidang panjang 4-byte ini.

    • 4 byte kedua: Panjang byte integer endian besar dari bagian 'header' pesan, tidak termasuk bidang panjang 'header' itu sendiri.

  • Prelude CRC: CRC Checksum 4-byte untuk bagian awal pesan, tidak termasuk itu sendiri. CRC Pendahuluan memiliki terpisah CRC dari pesan. CRC Itu memastikan bahwa Amazon Transcribe dapat mendeteksi informasi panjang byte yang rusak dengan segera tanpa menyebabkan kesalahan, seperti buffer overruns.

  • Header: Metadata yang menganotasi pesan; misalnya, jenis pesan dan jenis konten. Pesan memiliki beberapa header, yang merupakan pasangan key:value, di mana kuncinya adalah string -8. UTF Header dapat muncul dalam urutan apa pun di bagian 'header' pesan, dan setiap header hanya dapat muncul sekali.

  • Payload: Konten audio yang akan ditranskripsikan.

  • Pesan CRC: CRC Checksum 4-byte dari awal pesan hingga awal checksum. Artinya, segala sesuatu dalam pesan kecuali itu CRC sendiri.

Bingkai header adalah bingkai otorisasi untuk transkripsi streaming. Amazon Transcribe menggunakan nilai header otorisasi sebagai benih untuk menghasilkan rantai header otorisasi untuk frame data dalam permintaan.

Setiap header berisi komponen-komponen berikut; ada beberapa header per frame.

  • Nama header byte-length: Panjang byte dari nama header.

  • Nama header: Nama header yang menunjukkan jenis header. Untuk nilai yang valid, lihat deskripsi bingkai berikut.

  • Jenis nilai header: Angka yang menunjukkan nilai header. Daftar berikut menunjukkan nilai yang mungkin untuk header dan apa yang mereka tunjukkan.

    • 0 – TRUE

    • 1 – FALSE

    • 2 – BYTE

    • 3 – SHORT

    • 4 – INTEGER

    • 5 – LONG

    • 6 – BYTE ARRAY

    • 7 – STRING

    • 8 – TIMESTAMP

    • 9 – UUID

  • Nilai panjang string byte: Panjang byte dari string nilai header.

  • Nilai header: Nilai string header. Nilai yang valid untuk bidang ini tergantung pada jenis header. Lihat Menyiapkan aliran HTTP /2 atau Menyiapkan WebSocket aliran untuk informasi lebih lanjut.

Bingkai data

Setiap permintaan streaming berisi satu atau lebih bingkai data. Ada dua langkah untuk membuat bingkai data:

  1. Gabungkan data audio mentah dengan metadata untuk membuat muatan permintaan Anda.

  2. Gabungkan payload dengan tanda tangan untuk membentuk pesan acara yang dikirim ke Amazon Transcribe.

Diagram berikut menunjukkan bagaimana inii bekerja.

Komponen bingkai data untuk transkripsi streaming.