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

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

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

이 섹션은 메인 스트리밍 섹션의 확장판으로, 스트림을 설정하는 대신 HTTP /2를 사용하거나 WebSockets 직접 설정하려는 사용자에게 정보를 제공하기 위한 것입니다. AWS SDK 이 섹션의 정보를 사용하여 직접 SDK 만들 수도 있습니다.

중요

HTTP/2를 WebSockets 직접 사용하는 SDKs 대신 사용하는 것이 좋습니다. SDKs데이터 스트림을 기록하는 가장 간단하고 신뢰할 수 있는 방법입니다. 를 사용하여 스트리밍을 시작하려면 AWS SDK 을 참조하십시오SDK를 AWS 사용한 트랜스크립션.

트랜스크립션 요청을 스트리밍하기 위한 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. 세션을 시작하려면 로 HTTP /2 요청을 보내십시오. 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

    추가 작업 및 파라미터는 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 해시를 만든 다음 Hex 함수를 사용하여 해시를 인코딩하는 함수입니다.

      • 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. 표준 쿼리 문자열을 생성합니다. 쿼리 문자열 값은 URI -인코딩되고 이름별로 정렬되어야 합니다.

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

      • RFC3986이 정의하는 예약되지 않은 문자 (A-Z, a-z, 0-9, 하이픈 (-), 밑줄 (_), 마침표 (.), 물결표 (~) 는 URI -인코딩하지 마십시오.

      • %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 리전에 고유합니다. 생성된 키를 사용하여 요청에 서명합니다. 자세한 내용은 AWS 서명 버전 4의 서명 계산을 참조하십시오.

    서명 키를 추출하는 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 - SHA256 함수를 HMAC(key, data) 나타냅니다.

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

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

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

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

    다음으로, URL 요청용 코드를 생성하십시오.

    request_url = endpoint + canonical_uri + "?" + canonical_querystring

    WebSocket 라이브러리의 요청을 URL 사용하여 요청하세요 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바이트 빅엔디안 정수 순환 리던던시 check () 체크섬으로 끝납니다. CRC 메시지 CRC 체크섬은 전주곡 섹션과 데이터 섹션 모두에 적용됩니다. Amazon Transcribe 를 사용하여 CRC32 (흔히 라고도 함 GZIPCRC32) 를 사용하여 두 가지를 모두 계산합니다. CRCs 에 대한 CRC32 자세한 내용은 GZIP파일 형식 사양 버전 4.3을 참조하십시오.

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

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

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

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

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

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

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

  • 전주곡 CRC: 메시지의 전주곡 부분에 대한 4바이트 CRC 체크섬 (자체 제외). CRC 전주곡에는 메시지와는 별개의 내용이 있습니다. CRC CRC 이렇게 하면 버퍼 오버런과 같은 오류가 발생하지 않고 손상된 바이트 길이 정보를 즉시 Amazon Transcribe 탐지할 수 있습니다.

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

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

  • 메시지CRC: 메시지 시작부터 CRC 체크섬 시작까지의 4바이트 체크섬입니다. 즉, 메시지 자체를 제외한 메시지의 모든 내용입니다. 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로 전송되는 이벤트 메시지를 만듭니다.

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

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