View a markdown version of this page

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 memperluas bagian streaming utama. Ini dimaksudkan untuk memberikan informasi bagi pengguna yang ingin mengatur streaming mereka dengan HTTP/2 atau WebSockets secara langsung, bukan dengan AWS SDK. Informasi di bagian ini juga dapat digunakan untuk membangun SDK Anda sendiri.

penting

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

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

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

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

  • Bingkai akhir. Ini adalah pesan yang ditandatangani dalam pengkodean aliran acara dengan tubuh 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 Men ambahkan IAM kebijakan untuk informasi selengkapnya.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "myTranscribeHttp2Policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscription", "Resource": "*" } ] }
  2. Untuk memulai sesi, kirim HTTP/2 permintaan 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 Referensi API; parameter umum untuk semua operasi AWS API 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 dikodekan peristiwa. Untuk membuat payload untuk pesan acara, gunakan buffer dalam format raw-byte.

    Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang byte string Nilai string (UTF-8)
    13 :tipe konten 7 24 application/octet-aliran
    11 :tipe acara 7 10 AudioEvent
    13 :jenis 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 byte string Nilai
      16 :potongan 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 ditandatangani untuk Tanda Tangan Versi 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 adalah YYYYMMDDTHHMMSSZ, di mana YYYY=tahun, MM=bulan, DD = hari, HH=jam, MM=menit, SS=detik, dan 'T' dan 'Z' adalah karakter tetap. Untuk informasi selengkapnya, lihat Men angani 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 bingkai data pertama, gunakan tanda tangan dari bingkai header.

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

      • non SignatureHeaders: 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 menandatanganistringToSign. Untuk tingkat perlindungan yang lebih besar, kunci turunan khusus untuk tanggal, layanan, dan Wilayah AWS. Untuk informasi selengkapnya, lihat Mengh itung tanda tangan untuk T AWS anda 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 Tanda Tangan Versi 4.

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

      • diturunkan SigningKey: Kunci penandatanganan Signature Versi 4.

      • string ToSign: String yang Anda hitung untuk bingkai data.

      Setelah Anda menghitung tanda tangan untuk bingkai data, buat buffer byte yang berisi tanggal, tanda tangan, dan muatan peristiwa audio. Kirim array byte ke 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 dikodekan aliran peristiwa. Ini berisi pendahuluan standar dan header berikut.

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

    Acara 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, 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

Men HTTP/2 angani kesalahan streaming

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

Respons berisi pendahuluan standar dan header berikut:

Nama header panjang byte Nama header (string) Jenis nilai header Nilai panjang byte string Nilai string (UTF-8)
13 :tipe konten 7 16 application/json
11 :tipe acara 7 19 BadRequestException
13 :jenis 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 WebSocket protokol untuk streaming permintaan transkripsi Amazon Transcribe adalah:

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

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

  • Bingkai akhir. Ini adalah pesan yang ditandatangani dalam pengkodean aliran acara dengan tubuh 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 Men ambahkan IAM kebijakan untuk informasi selengkapnya.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "myTranscribeWebsocketPolicy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscriptionWebSocket", "Resource": "*" } ] }
  2. Untuk memulai sesi, buat URL yang telah ditandatangani sebelumnya dalam format berikut. Istirahat 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 Referensi API; parameter umum untuk semua operasi AWS API tercantum di bagian Parameter Umum.

    Untuk membuat URL untuk permintaan Anda dan membuat tanda tangan Signature Versi 4, lihat langkah-langkah berikut. Contohnya ada dalam 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 URL Anda. 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 URI kanonik, 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 banyak 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 kredensia, yang mencakup kunci turunan ke 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 di URI-encoded urutkan 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 gunakan karakter URI-encode tanpa syarat apa pun yang didefinisikan RFC 3986: A-Z, a-z, 0-9, tanda hubung (-), garis bawah (_), titik (.), dan tilde (~).

      • Percent-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 beberapa skema pengkodean); UTF-8 karakter yang diperpanjang harus dalam bentuk %XY%ZA%BC.

      • Double-encode setiap karakter 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 pada langkah berikutnya ketika Anda menghitung tanda tangan permintaan. Untuk informasi selengkapnya, lihat Membuat String untuk Menandatangani 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 Mengh itung Tanda Tangan untuk T AWS anda 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 Tanda Tangan Versi 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 HMAC(key, data) mewakili HMAC-SHA256 fungsi yang mengembalikan hasil dalam format biner.

  5. Tambahkan informasi penandatanganan ke permintaan dan buat URL permintaan.

    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 URL permintaan 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. Ketika Amazon Transcribe menerima WebSocket permintaan Anda, ia merespons dengan respons WebSocket peningkatan. Biasanya WebSocket perpustakaan Anda mengelola respons ini dan menyiapkan soket untuk komunikasi dengan Amazon Transcribe.

    Berikut ini adalah tanggapan dari Amazon Transcribe. Istirahat 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 frame audio, masing-masing dikodekan menggunakan pengkodean aliran peristiwa.

    Setiap bingkai 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 byte string Nilai string (UTF-8)
    13 :tipe konten 7 24 application/octet-aliran
    11 :tipe acara 7 10 AudioEvent
    13 :jenis pesan 7 5 kejadian
  9. Untuk mengakhiri aliran data, kirim potongan audio kosong dalam pesan yang dikodekan 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 byte string Nilai string (UTF-8)
    13 :tipe konten 7 16 application/json
    11 :tipe acara 7 15 TranscriptEvent
    13 :jenis pesan 7 5 kejadian

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

Men WebSocket angani kesalahan 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 mengirim bingkai tertutup.

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

exception-typeHeader berisi salah satu nilai berikut:

  • BadRequestException: Terjadi 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 streaming yang Anda transkripsikan.

  • UnrecognizedClientException: Per WebSocket mintaan peningkatan 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 Kes alahan Umum.

Pengkodean aliran acara

Amazon Transcribe menggunakan format yang disebut event stream encoding 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. Payload

Setiap bagian diakhiri dengan checksum 4-byte big-endian integer cyclical redundancy check (CRC). Pesan CRC checksum adalah untuk bagian pendahuluan dan bagian data. Amazon Transcribe menggunakan CRC32 (sering disebut sebagai GZIP CRC32) untuk menghitung kedua CRC. Untuk informasi selengkapnya tentang CRC32, lihat spesifikasi format file GZIP 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 big-endian dari seluruh pesan, termasuk bidang panjang 4-byte ini.

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

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

  • Header: Metadata yang membuat anotasi pesan; misalnya, jenis pesan dan jenis konten. Pesan memiliki beberapa header, yaitu pasangan kunci:nilai, di mana kuncinya adalah string. UTF-8 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: Checksum CRC 4-byte dari awal pesan hingga awal checksum. Artinya, semua yang ada di pesan kecuali CRC itu sendiri.

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

Setiap header berisi 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— BENAR

    • 1— SALAH

    • 2— BYTE

    • 3— PENDEK

    • 4— BILANGAN BULAT

    • 5— PANJANG

    • 6— ARRAY BYTE

    • 7— TALI

    • 8— STEMPEL WAKTU

    • 9— UUID

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

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

Bingkai data

Setiap permintaan streaming berisi satu atau lebih bingkai data. Ada dua langkah untuk membuat kerangka 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.