스트리밍 트랜스크립션 설정 - Amazon Transcribe

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

스트리밍 트랜스크립션 설정

이 섹션은 메인 스트리밍 섹션의 확장판으로, AWS SDK가 아닌 HTTP/2 또는 WebSockets로 직접 스트림을 설정하려는 사용자에게 정보를 제공하기 위한 것입니다. 이 섹션의 정보를 사용하여 자체 SDK를 빌드할 수도 있습니다.

중요

HTTP/2 및 WebSocket을 직접 사용하는 것보다 SDK를 사용하는 것을 적극 권장합니다. SDK는 데이터 스트림을 트랜스크립션하는 가장 간단하고 신뢰할 수 있는 방법입니다. AWS SDK를 사용하여 스트리밍을 시작하려면 섹션을 참조하세요AWS SDKs로 트랜스크립션.

를 사용하여 트랜스크립션 요청을 스트리밍하기 위한 HTTP/2 프로토콜의 주요 구성 요소는 다음과 Amazon Transcribe 같습니다.

  • 헤더 프레임. 여기에는 요청에 대한 HTTP/2 헤더와가 데이터 프레임에 서명하기 위해 시드 서명으로 Amazon Transcribe 사용하는 권한 부여 헤더의 서명이 포함됩니다.

  • 메타데이터와 원시 오디오 바이트가 포함된 이벤트 스트림 인코딩 내 하나 이상의 메시지 프레임.

  • 종료 프레임. 이벤트 스트림 인코딩의 본문이 비어 있는 서명된 메시지입니다.

참고

Amazon Transcribe 는 HTTP/2 세션당 하나의 스트림만 지원합니다. 스트림을 여러 개 사용하려고 하면 트랜스크립션 요청이 실패합니다.

  1. 요청을 수행하는 IAM 역할에 다음 정책을 연결합니다. 자세한 내용은 IAM 정책 추가를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-http2-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscription", "Resource": "*" } ] }
  2. 세션을 시작하려면 Amazon Transcribe로 HTTP/2 요청을 전송합니다.

    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

    추가 작업 및 파라미터는 API 참조에 나열되어 있으며, 모든 AWS API 작업에 공통적인 파라미터는 공통 파라미터 섹션에 나열되어 있습니다.

    Amazon Transcribe 는 다음 응답을 전송합니다.

    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. 오디오 데이터가 포함된 오디오 이벤트를 만듭니다. 다음 테이블에 설명된 헤더를 오디오 바이트 청크와 결합하여 이벤트 코딩된 메시지를 만듭니다. 이벤트 메시지에 대한 페이로드를 만들려면 원시 바이트 형식의 버퍼를 사용합니다.

    헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
    13 :content-type 7 24 application/octet-stream
    11 :event-type 7 10 AudioEvent
    13 :message-type 7 5 event

    이 예시의 이진 데이터는 base64로 인코딩됩니다. 실제 요청에서 데이터는 원시 바이트입니다.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "AudioEvent" :message-type: "event" UklGRjzxPQBXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YVTwPQAAAAAAAAAAAAAAAAD//wIA/f8EAA==
  4. 오디오 데이터가 포함된 오디오 메시지를 만듭니다.

    1. 오디오 메시지 데이터 프레임에는 오디오 청크 및 오디오 이벤트에 대한 현재 날짜와 서명이 포함된 이벤트 인코딩 헤더가 포함됩니다.

      헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이
      16 :청크 서명 6 varies 생성된 서명
      5 :날짜 8 8 타임스탬프

      이 요청의 이진 데이터는 base64로 인코딩됩니다. 실제 요청에서 데이터는 원시 바이트입니다.

      :date: 2019-01-29T01:56:17.291Z :chunk-signature: signature AAAA0gAAAIKVoRFcTTcjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0LOmV2ZW50LXR5 cGUHAApBdWRpb0V2ZW50DTptZXNzYWdlLXR5cGUHAAVldmVudAxDb256ZW50LVR5cGUHABphcHBsaWNhdGlv bi94LWFtei1qc29uLTEuMVJJRkY88T0AV0FWRWZtdCAQAAAAAQABAIA+AAAAfQAAAgAQAGRhdGFU8D0AAAAA AAAAAAAAAAAA//8CAP3/BAC7QLFf
    2. 서명 버전 4의 서명할 문자열 만들기에 설명된 대로 서명할 문자열을 구성합니다. 문자열은 다음 형식을 따릅니다.

      String stringToSign = "AWS4-HMAC-SHA256" + "\n" + DateTime + "\n" + Keypath + "\n" + Hex(priorSignature) + "\n" + HexHash(nonSignatureHeaders) + "\n" + HexHash(payload);
      • DateTime: 서명이 생성된 날짜 및 시간. 형식은 YYYYMMDDTHHMMSSZ입니다. 여기서 YYYY=년, MM=월, DD=일, HH=시간, MM=분, SS=초이고, 'T'와 'Z'는 고정 문자입니다. 자세한 내용은 서명 버전 4의 날짜 처리를 참조하세요.

      • Keypath: 서명은 date/region/service/aws4_request 형식으로 표시됩니다. 예: 20220127/us-west-2/transcribe/aws4_request.

      • Hex: 입력을 16진수 형식으로 인코딩하는 함수.

      • priorSignature: 이전 프레임의 서명. 첫 데이터 프레임에는 헤더 프레임의 서명을 사용합니다.

      • HexHash: 먼저 입력의 SHA-256 해시를 생성한 후 함수를 사용하여 해시를 인코딩하는 함수.

      • nonSignatureHeaders: 문자열로 인코딩된 DateTime 헤더.

      • payload: 오디오 이벤트 데이터가 포함된 바이트 버퍼.

    3. AWS 보안 액세스 키에서 서명 키를 파생하고 이를 사용하여에 서명합니다stringToSign. 생성된 키는 더 높은 수준의 보호를 위해 날짜, 서비스 및 AWS 리전에 고유합니다. 자세한 내용은 AWS서명 버전 4의 서명 계산을 참조하세요.

      서명 키를 추출하는 GetSignatureKey 함수를 구현했는지 확인합니다. 서명 키를 아직 추출하지 않은 경우 서명 버전 4에 대한 서명 키 생성 방법을 보여주는 예를 참조하세요.

      String signature = HMACSHA256(derivedSigningKey, stringToSign);
      • HMACSHA256: SHA-256 해시 함수를 사용하여 서명을 만드는 함수.

      • derivedSigningKey: 서명 버전 4 서명 키.

      • stringToSign: 데이터 프레임에 대해 계산된 문자열.

      데이터 프레임의 서명을 계산한 후 날짜, 서명 및 오디오 이벤트 페이로드가 포함된 바이트 버퍼를 구성합니다. 바이트 배열을 트랜스크립션을 수행할 Amazon Transcribe 로 보냅니다.

  5. 오디오 스트림의 완료를 알리기 위해 날짜와 서명만 포함된 빈 데이터 프레임을 전송합니다. 이 종료 프레임은 데이터 프레임을 구성한 것과 동일한 방식으로 구성합니다.

    Amazon Transcribe 는 애플리케이션으로 전송되는 트랜스크립션 이벤트 스트림으로 응답합니다. 이 응답은 이벤트 스트림 인코딩됩니다. 여기에는 표준 서문과 다음 헤더가 포함됩니다.

    헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
    13 :content-type 7 16 application/json
    11 :event-type 7 15 TranscriptEvent
    13 :message-type 7 5 event

    이벤트는 원시 바이트 형식으로 전송됩니다. 이 예에서 바이트는 base64로 인코딩됩니다.

    AAAAUwAAAEP1RHpYBTpkYXRlCAAAAWiXUkMLEDpjaHVuay1zaWduYXR1cmUGACCt6Zy+uymwEK2SrLp/zVBI 5eGn83jdBwCaRUBJA+eaDafqjqI=

    트랜스크립션 결과를 보려면 이벤트 스트림 인코딩을 사용하여 원시 바이트를 디코딩합니다.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "TranscriptEvent" :message-type: "event" { "Transcript": { "Results": [ results ] } }
  6. 스트리밍을 종료하려면 Amazon Transcribe로 빈 오디오 이벤트를 전송합니다. 빈 페이로드를 제외하고 오디오 이벤트는 다른 오디오 이벤트와 동일하게 만듭니다. 이벤트를 서명하고 서명을 다음과 같이 :chunk-signature 헤더에 포함합니다.

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

HTTP/2 스트리밍 오류 처리

미디어 스트림을 처리할 때 오류가 발생하면가 예외 응답을 Amazon Transcribe 보냅니다. 응답은 이벤트 스트림 인코딩됩니다.

응답에는 표준 서문과 다음 헤더가 포함됩니다.

헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
13 :content-type 7 16 application/json
11 :event-type 7 19 BadRequestException
13 :message-type 7 9 exception

예외 응답이 디코딩되면 다음 정보가 포함됩니다.

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

를 사용하여 트랜스크립션 요청을 스트리밍하기 위한 WebSocket 프로토콜의 주요 구성 요소는 다음과 Amazon Transcribe 같습니다.

  • 업그레이드 요청. 여기에는 요청에 대한 쿼리 파라미터와를 시드 서명으로 Amazon Transcribe 사용하여 데이터 프레임에 서명하는 서명이 포함됩니다.

  • 메타데이터와 원시 오디오 바이트가 포함된 이벤트 스트림 인코딩 내 하나 이상의 메시지 프레임.

  • 종료 프레임. 이벤트 스트림 인코딩의 본문이 비어 있는 서명된 메시지입니다.

참고

Amazon Transcribe 는 WebSocket 세션당 하나의 스트림만 지원합니다. 스트림을 여러 개 사용하려고 하면 트랜스크립션 요청이 실패합니다.

  1. 요청을 수행하는 IAM 역할에 다음 정책을 연결합니다. 자세한 내용은 IAM 정책 추가를 참조하세요.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-websocket-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscriptionWebSocket", "Resource": "*" } ] }
  2. 세션을 시작하려면 다음 형식으로 미리 서명된 URL을 만듭니다. 가독성을 높이기 위해 줄바꿈이 추가되었습니다.

    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
    참고

    X-Amz-Expires의 최대값은 300(5분)입니다.

    추가 작업 및 파라미터는 API 참조에 나열되어 있으며, 모든 AWS API 작업에 공통적인 파라미터는 공통 파라미터 섹션에 나열되어 있습니다.

    요청에 대한 URL과 서명 버전 4 서명을 생성하려면 다음 단계를 참조하세요. 유사 코드의 예시입니다.

    1. 표준 요청을 생성합니다. 표준 요청은 표준화된 형식으로 된 요청의 정보가 포함된 문자열입니다. 이렇게 하면가 요청을 AWS 수신할 때 URL에 대해 생성한 것과 동일한 서명을 계산할 수 있습니다. 자세한 내용은 서명 버전 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. 도메인과 쿼리 문자열 간의 URI 부분인 표준 URI를 생성합니다.

      canonical_uri = "/stream-transcription-websocket"
    3. 표준 헤더 및 서명된 헤더를 생성합니다. 표준 헤더의 후행 \n에 유의하세요.

      • 소문자 헤더 이름과 콜론( : )을 차례대로 추가합니다.

      • 헤더에 대한 쉼표로 구분된 값 목록을 추가합니다. 여러 값을 가진 헤더에서 값을 정렬하지 마세요.

      • 새 줄(\n)을 추가합니다.

      canonical_headers = "host:" + host + "\n" signed_headers = "host"
    4. 이 알고리즘을 해싱 알고리즘과 일치시킵니다. SHA-256를 사용합니다.

      algorithm = "AWS4-HMAC-SHA256"
    5. 생성된 키의 범위를 날짜, AWS 리전및 서비스로 지정하는 자격 증명 범위를 생성합니다. 예: 20220127/us-west-2/transcribe/aws4_request.

      credential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request"
    6. 표준 쿼리 문자열을 생성합니다. 쿼리 문자열 값은 URL로 인코딩되어야 하며 이름을 기준으로 정렬되어야 합니다.

      • 문자 코드 포인트를 기준으로 파라미터 이름을 오름차순으로 정렬합니다. ​중복된 이름을 가진 파라미터는 값별로 정렬해야 합니다. 예를 들어 대문자 F로 시작하는 파라미터 이름 앞에 소문자 b로 시작하는 파라미터 이름이 옵니다.

      • 예약되지 않은 문자는 URI로 인코딩하지 않습니다. RFC 3986에 정의된 예약되지 않은 문자는 A-Z, a-z, 0-9, 하이픈( - ), 밑줄( _ ), 마침표( . ) 및 물결표( ~ )입니다.

      • %XY와 같이 모든 기타 문자를 퍼센트 인코딩합니다. 여기서 X 및 Y는 16진 문자(0 ~ 9 및 대문자 A ~ F)입니다. 예를 들어 공백 문자는 %20(일부 인코딩 구조처럼 +를 넣지 말 것)로 인코딩되고, 확장 UTF-8 문자는 %XY%ZA%BC 형식이어야 합니다.

      • 매개변수 값에서 등호(=) 문자를 두 번 인코딩합니다.

      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. 페이로드의 해시를 생성합니다. GET 요청의 경우 페이로드는 빈 문자열입니다.

      payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()
    8. 다음 요소를 결합하여 표준 요청을 생성합니다.

      canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash
  3. 서명할 문자열을 생성합니다. 여기에는 요청에 대한 메타 정보가 포함됩니다. 요청 서명을 계산할 때 다음 단계의 서명할 문자열을 사용합니다. 자세한 내용은 서명 버전 4에 대한 서명할 문자열 생성을 참조하세요.

    string_to_sign=algorithm + "\n" + amz_date + "\n" + credential_scope + "\n" + HashSHA256(canonical_request.Encode("utf-8")).HexDigest()
  4. 서명을 계산합니다. 이렇게 하려면 AWS 보안 액세스 키에서 서명 키를 추출합니다. 생성된 키는 더 높은 수준의 보호를 위해 날짜, 서비스 및 AWS 리전에 고유합니다. 생성된 키를 사용하여 요청에 서명합니다. 자세한 내용은 서명 버전 4의 AWS 서명 계산을 참조하세요.

    서명 키를 추출하는 GetSignatureKey 함수를 구현했는지 확인합니다. 서명 키를 아직 추출하지 않은 경우 서명 버전 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

    HMAC(key, data) 함수는 결과를 이진 형식으로 반환하는 HMAC-SHA256 함수를 나타냅니다.

  5. 요청에 서명 정보를 추가하고 요청 URL을 생성합니다.

    서명을 계산한 후 쿼리 문자열에 추가합니다. 자세한 내용은 요청에 서명 추가를 참조하세요.

    첫째, 쿼리 문자열에 인증 정보를 추가합니다.

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

    둘째, 요청에 대한 URL을 생성합니다.

    request_url = endpoint + canonical_uri + "?" + canonical_querystring

    요청 URL을 WebSocket 라이브러리와 함께 사용하여 Amazon Transcribe에 대한 요청을 수행합니다.

  6. 에 대한 요청에는 다음 헤더가 포함되어야 Amazon Transcribe 합니다. 일반적으로 이러한 헤더는 WebSocket 클라이언트 라이브러리에서 관리합니다.

    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. 가 WebSocket 요청을 Amazon Transcribe 수신하면 WebSocket 업그레이드 응답으로 응답합니다. 일반적으로 WebSocket 라이브러리는이 응답을 관리하고 통신용 소켓을 설정합니다 Amazon Transcribe.

    다음은의 응답입니다 Amazon Transcribe. 가독성을 높이기 위해 줄바꿈이 추가되었습니다.

    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. WebSocket 스트리밍을 요청합니다.

    WebSocket 연결이 설정되면 클라이언트는 각각 이벤트 스트림 인코딩을 사용하여 인코딩한 오디오 프레임 시퀀스 전송을 시작할 수 있습니다.

    각 데이터 프레임에는 원시 오디오 바이트의 청크와 결합된 세 개의 헤더가 있으며, 다음 테이블은 이러한 헤더를 설명한 것입니다.

    헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
    13 :content-type 7 24 application/octet-stream
    11 :event-type 7 10 AudioEvent
    13 :message-type 7 5 event
  9. 데이터 스트림을 종료하려면 이벤트 스트림 인코딩 메시지에 빈 오디오 청크를 보냅니다.

    응답에는 페이로드의 이벤트 스트림 인코딩 원시 바이트가 포함되어 있습니다. 여기에는 표준 서문과 다음 헤더가 포함됩니다.

    헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
    13 :content-type 7 16 application/json
    11 :event-type 7 15 TranscriptEvent
    13 :message-type 7 5 event

    이진 응답을 디코딩할 때 트랜스크립션 결과가 포함된 JSON 구조로 종료합니다.

WebSocket 스트리밍 오류 처리

요청을 처리하는 동안 예외가 발생하면는 이벤트 스트림 인코딩 Amazon Transcribe 응답이 포함된 터미널 WebSocket 프레임으로 응답합니다. 이 응답에는 다음 테이블에 설명된 헤더가 포함되며, 응답 본문에는 서술적인 오류 메시지가 포함되어 있습니다. 예외 응답을 전송한 후가 닫힌 프레임을 Amazon Transcribe 전송합니다.

헤더 이름 바이트 길이 헤더 이름(문자열) 헤더 값 유형 값 문자열 바이트 길이 값 문자열(UTF-8)
13 :content-type 7 16 application/json
15 :exception-type 7 varies 다양함, 아래 참조
13 :message-type 7 9 exception

exception-type 헤더에는 다음 값 중 하나가 포함됩니다.

  • BadRequestException: 스트림을 생성할 때 클라이언트 오류가 발생했거나 데이터를 스트리밍하는 동안 오류가 발생했습니다 . 클라이언트가 데이터를 수락할 준비가 되어 있는지 확인하고 요청을 다시 시도하세요.

  • InternalFailureException:클라이언트와의 핸드셰이크 중에 문제가 Amazon Transcribe 발생했습니다. 요청을 다시 시도하세요.

  • LimitExceededException: 클라이언트가 동시 스트림 제한을 초과했습니다. 자세한 내용은 Amazon Transcribe 제한을 참조하세요. 트랜스크립션하는 스트림의 수를 줄입니다.

  • UnrecognizedClientException: WebSocket 업그레이드 요청이 잘못된 액세스 키 또는 보안 암호 키로 서명되었습니다. 액세스 키를 올바르게 생성하고 있는지 확인하고 요청을 다시 시도하세요.

Amazon Transcribe 는 일반적인 서비스 오류를 반환할 수도 있습니다. 목록은 일반 오류를 참조하세요.

이벤트 스트림 인코딩

Amazon Transcribe 는 스트리밍 트랜스크립션에 이벤트 스트림 인코딩이라는 형식을 사용합니다.

이벤트 스트림 인코딩은 클라이언트와 서버 간 양방향 통신 기능을 제공합니다 Amazon Transcribe 스트리밍 서비스로 전송된 데이터 프레임은이 형식으로 인코딩됩니다. 또한의 응답은이 인코딩 Amazon Transcribe 을 사용합니다.

각 메시지는 두 섹션(서문 및 데이터)으로 구성됩니다. 서문의 구성 요소는 다음과 같습니다.

  1. 메시지의 총 바이트 길이

  2. 모든 헤더의 바이트 길이 합계

데이터 섹션의 구성 요소는 다음과 같습니다.

  1. 헤더

  2. 페이로드

각 섹션은 4바이트 빅 엔디안 정수 CRC(순환 중복 검사) 체크섬으로 끝납니다. 메시지 CRC 체크섬은 서문 섹션과 데이터 섹션 모두에 대한 것입니다. Amazon Transcribe 는 CRC32(GZIP CRC32라고도 함)를 사용하여 두 CRC를 모두 계산합니다. CRC32에 대한 자세한 내용은 GZIP file format specification version 4.3을 참조하세요.

총 메시지 오버헤드(서문과 두 체크섬 포함)는 16바이트입니다.

다음 다이어그램은 메시지와 헤더를 구성하는 구성 요소를 보여줍니다. 메시지별로 여러 개의 헤더가 있습니다.

메시지 구성 요소의 개통도 및 스트리밍 트랜스크립션의 헤더.

각 메시지는 다음 구성 요소를 포함합니다.

  • 서문: 두 개의 4바이트 필드로 구성되어 있으며 총 8바이트는 고정됩니다.

    • 첫 번째 4바이트: 전체 메시지의 빅 엔디안 정수 바이트 길이이며 4바이트 길이의 이 필드는 포함됩니다.

    • 두 번째 4바이트: 메시지 헤더 부분의 빅 엔디안 정수 바이트 길이이며 헤더의 길이 필드 자체는 제외됩니다.

  • 서문 CRC: 메시지 서문 부분의 4바이트 CRC 체크섬이며 CRC 자체는 제외됩니다. 서문에는 메시지 CRC와 별도의 CRC가 있습니다. 이렇게 하면가 버퍼 오버런과 같은 오류를 일으키지 않고 손상된 바이트 길이 정보를 즉시 감지 Amazon Transcribe 할 수 있습니다.

  • 헤더: 메시지 유형, 콘텐츠 유형 등의 메시지 주석 메타데이터. 메시지에는 키:값 페어인 헤더가 여러 개 있으며, 여기서 키는 UTF-8 문자열입니다. 헤더는 메시지의 헤더 부분에 순서에 상관없이 표시되며 각 헤더는 한 번만 표시될 수 있습니다.

  • 페이로드: 트랜스크립션할 오디오 콘텐츠.

  • 메시지 CRC: 메시지 시작 부분부터 체크섬 시작 부분까지의 4바이트 CRC 체크섬. 즉 CRC 자체를 제외한 메시지의 전체입니다.

헤더 프레임은 스트리밍 트랜스크립션에 대한 권한 부여 프레임입니다.는 권한 부여 헤더의 값을 요청의 데이터 프레임에 대한 권한 부여 헤더 체인을 생성하기 위한 시드로 Amazon Transcribe 사용합니다.

각 헤더에는 다음과 같은 구성 요소가 포함되며, 프레임당 여러 개의 헤더가 있습니다.

  • 헤더 이름 바이트 길이: 헤더 이름의 바이트 길이.

  • 헤더 이름: 헤더 유형을 나타내는 헤더 이름. 유효한 값은 다음 프레임 설명을 참조하세요.

  • 헤더 값 유형: 헤더 값 유형을 나타내는 숫자. 다음 목록은 헤더에 사용할 수 있는 값과 해당 값의 의미를 보여줍니다.

    • 0 – TRUE(참)

    • 1 – FALSE(거짓)

    • 2 – BYTE(바이트)

    • 3 – SHORT(짧음)

    • 4 – INTEGER(정수)

    • 5 – LONG(김)

    • 6 – BYTE ARRAY(바이트 배열)

    • 7 – STRING(문자열)

    • 8 – TIMESTAMP(타임스탬프)

    • 9 – UUID

  • 값 문자열 바이트 길이: 헤더 값 문자열의 바이트 길이.

  • 헤더 값: 헤더 문자열의 값. 이 필드의 유효한 값은 헤더 유형에 따라 달라집니다. 자세한 내용은 HTTP/2 스트림 설정 또는 WebSocket 스트림 설정 섹션을 참조하세요.

데이터 프레임

각 스트리밍 요청에는 하나 이상의 데이터 프레임이 포함됩니다. 데이터 프레임을 생성하기 위해서는 두 가지 단계가 필요합니다.

  1. 원시 오디오 데이터를 메타데이터와 결합하여 요청의 페이로드를 생성합니다.

  2. 페이로드를 서명과 결합하여 Amazon Transcribe로 전송되는 이벤트 메시지를 만듭니다.

다음 다이어그램은 이 과정을 보여 줍니다.

스트리밍 트랜스크립션을 위한 데이터 프레임의 구성 요소.