Configurar uma transcrição de streaming - Amazon Transcribe

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar uma transcrição de streaming

Esta seção expande a seção principal de streaming. O objetivo é fornecer informações para usuários que desejam configurar seu stream com HTTP /2 ou WebSockets diretamente, em vez de com um AWS SDK. As informações nesta seção também podem ser usadas para criar suas própriasSDK.

Importante

É altamente recomendável usar SDKs em vez de usar HTTP /2 e WebSockets diretamente. SDKssão o método mais simples e confiável para transcrever fluxos de dados. Para começar a transmitir usando um AWS SDK, consulteTranscrevendo com os SDKs AWS.

Os principais componentes de um protocolo HTTP /2 para streaming de solicitações de transcrição são: Amazon Transcribe

  • Um quadro de cabeçalho. Ele contém os cabeçalhos HTTP /2 da sua solicitação e uma assinatura no cabeçalho de autorização que é Amazon Transcribe usada como assinatura inicial para assinar os quadros de dados.

  • Um ou mais quadros de mensagens na codificação de fluxo de eventos que contêm metadados e bytes de áudio bruto.

  • Um quadro final. Essa é uma mensagem assinada na codificação de fluxo de eventos com um corpo vazio.

nota

Amazon Transcribe suporta apenas um stream por sessão HTTP /2. Se você tentar usar vários fluxos, sua solicitação de transcrição falhará.

  1. Anexe a política a seguir à IAM função que faz a solicitação. Consulte Adicionar IAM políticas para obter mais informações.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-http2-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscription", "Resource": "*" } ] }
  2. Para iniciar a sessão, envie uma solicitação HTTP /2 para o. 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

    Operações e parâmetros adicionais estão listados na APIReferência; os parâmetros comuns a todas as AWS API operações estão listados na seção Parâmetros comuns.

    Amazon Transcribe envia a seguinte resposta:

    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. Crie um evento de áudio que contenha os dados de áudio. Combine os cabeçalhos descritos na tabela a seguir com um bloco de bytes de áudio em uma mensagem codificada por evento. Para criar a carga para a mensagem do evento, use um buffer no formato de byte bruto.

    Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
    13 :content-type 7 24 application/octet-stream
    11 :event-type 7 10 AudioEvent
    13 : message-type 7 5 evento

    Os dados binários nessa solicitação de exemplo são codificados em base64. Em uma solicitação real, os dados são bytes brutos.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "AudioEvent" :message-type: "event" UklGRjzxPQBXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YVTwPQAAAAAAAAAAAAAAAAD//wIA/f8EAA==
  4. Crie uma mensagem de áudio que contenha seus dados de áudio.

    1. O quadro de dados da mensagem de áudio contém cabeçalhos de codificação de eventos que incluem a data atual e uma assinatura para o bloco de áudio e o evento de áudio.

      Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Valor
      16 :chunk-signature 6 varia assinatura gerada
      5 :date 8 8 timestamp

      Os dados binários nessa solicitação são codificados em base64. Em uma solicitação real, os dados são bytes brutos.

      :date: 2019-01-29T01:56:17.291Z :chunk-signature: signature AAAA0gAAAIKVoRFcTTcjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0LOmV2ZW50LXR5 cGUHAApBdWRpb0V2ZW50DTptZXNzYWdlLXR5cGUHAAVldmVudAxDb256ZW50LVR5cGUHABphcHBsaWNhdGlv bi94LWFtei1qc29uLTEuMVJJRkY88T0AV0FWRWZtdCAQAAAAAQABAIA+AAAAfQAAAgAQAGRhdGFU8D0AAAAA AAAAAAAAAAAA//8CAP3/BAC7QLFf
    2. Construa uma string para assinar, conforme descrito em Criar uma string para assinar para o for Signature Version 4. A string segue este formato:

      String stringToSign = "AWS4-HMAC-SHA256" + "\n" + DateTime + "\n" + Keypath + "\n" + Hex(priorSignature) + "\n" + HexHash(nonSignatureHeaders) + "\n" + HexHash(payload);
      • DateTime: a data e a hora em que a assinatura foi criada. O formato éYYYYMMDDTHHMMSSZ, onde YYYY =ano, MM=mês, DD=dia, HH=hora, MM=minuto, SS=segundos e 'T' e 'Z' são caracteres fixos. Para obter mais informações, consulte Handling Dates in Signature Version 4.

      • Keypath: o escopo da assinatura no formato date/region/service/aws4_request. Por exemplo, 20220127/us-west-2/transcribe/aws4_request.

      • Hex: uma função que codifica a entrada em uma representação hexadecimal.

      • priorSignature: A assinatura do quadro anterior. Para o primeiro quadro de dados, use a assinatura do quadro do cabeçalho.

      • HexHash: uma função que primeiro cria um hash SHA -256 de sua entrada e depois usa a função hexadecimal para codificar o hash.

      • nonSignatureHeaders: o DateTime cabeçalho codificado como uma string.

      • payload: o buffer de bytes que contém os dados do evento de áudio.

    3. Derive uma chave de assinatura da sua chave de acesso AWS secreta e use-a para assinar o. stringToSign Para aumentar o nível de proteção, a chave derivada é específica para a data, o serviço e a Região da AWS. Para obter mais informações, consulte Calcular a assinatura para o AWS Signature Version 4.

      Implemente a função GetSignatureKey para derivar sua chave de assinatura. Se você ainda não derivou uma chave de assinatura, consulte exemplos sobre como derivar uma chave de assinatura para o Signature Version 4.

      String signature = HMACSHA256(derivedSigningKey, stringToSign);
      • HMACSHA256: uma função que cria uma assinatura usando a função de hash SHA -256.

      • derivedSigningKey: A chave de assinatura Signature Version 4.

      • stringToSign: a string que você calculou para o quadro de dados.

      Depois de calcular a assinatura do quadro de dados, crie um buffer de bytes que contenha a data, a assinatura e a carga útil do evento de áudio. Envie a matriz de bytes para o Amazon Transcribe para transcrição.

  5. Para indicar que o fluxo de áudio está completo, envie um quadro final (um quadro de dados vazio) que contenha apenas a data e a assinatura. Você cria esse quadro final da mesma forma que constrói um quadro de dados.

    Amazon Transcribe responde com um fluxo de eventos de transcrição, enviado ao seu aplicativo. Essa resposta é codificada por fluxo de eventos. Ela contém o prelúdio padrão e os seguintes cabeçalhos:

    Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
    13 :content-type 7 16 application/json
    11 :event-type 7 15 TranscriptEvent
    13 : message-type 7 5 evento

    Os eventos são enviados no formato de byte bruto. Neste exemplo, os bytes são codificados em base64.

    AAAAUwAAAEP1RHpYBTpkYXRlCAAAAWiXUkMLEDpjaHVuay1zaWduYXR1cmUGACCt6Zy+uymwEK2SrLp/zVBI 5eGn83jdBwCaRUBJA+eaDafqjqI=

    Para ver os resultados da transcrição, decodifique os bytes brutos usando a codificação de fluxo de eventos.

    :content-type: "application/vnd.amazon.eventstream" :event-type: "TranscriptEvent" :message-type: "event" { "Transcript": { "Results": [ results ] } }
  6. Para encerrar sua transmissão, envie um evento de áudio vazio para o Amazon Transcribe. Crie o evento de áudio exatamente como qualquer outro, mas com uma carga vazia. Assine o evento e inclua a assinatura no cabeçalho :chunk-signature, da seguinte forma:

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

Tratamento de HTTP erros de streaming /2

Se ocorrer um erro ao processar seu stream de mídia, Amazon Transcribe envia uma resposta de exceção. A resposta tem codificação de fluxo de evento.

A resposta contém o prelúdio padrão e os seguintes cabeçalhos:

Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
13 :content-type 7 16 application/json
11 :event-type 7 19 BadRequestException
13 : message-type 7 9 exception

Quando a resposta de exceção é decodificada, ela contém as seguintes informações:

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

Os principais componentes de um WebSocketprotocolo para streaming de solicitações de transcrição Amazon Transcribe são:

  • A solicitação de upgrade. Ele contém os parâmetros de consulta para sua solicitação e uma assinatura que é Amazon Transcribe usada como assinatura inicial para assinar os quadros de dados.

  • Um ou mais quadros de mensagens na codificação de fluxo de eventos que contêm metadados e bytes de áudio bruto.

  • Um quadro final. Essa é uma mensagem assinada na codificação de fluxo de eventos com um corpo vazio.

nota

Amazon Transcribe suporta apenas um stream por WebSocket sessão. Se você tentar usar vários fluxos, sua solicitação de transcrição falhará.

  1. Anexe a política a seguir à IAM função que faz a solicitação. Consulte Adicionar IAM políticas para obter mais informações.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "my-transcribe-websocket-policy", "Effect": "Allow", "Action": "transcribe:StartStreamTranscriptionWebSocket", "Resource": "*" } ] }
  2. Para iniciar a sessão, crie um pré-assinado URL no formato a seguir. Quebras de linha foram adicionadas para uma melhor leitura.

    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
    nota

    O valor máximo para X-Amz-Expires é 300 (5 minutos).

    Operações e parâmetros adicionais estão listados na APIReferência; os parâmetros comuns a todas as AWS API operações estão listados na seção Parâmetros comuns.

    Para criar o URL para sua solicitação e criar a assinatura Signature Version 4, consulte as etapas a seguir. Os exemplos estão em pseudocódigo.

    1. Cria uma solicitação canônica. Uma solicitação canônica é uma string que inclui informações da solicitação em um formato padronizado. Isso garante que, ao AWS receber a solicitação, ela possa calcular a mesma assinatura que você criou para suaURL. Para obter mais informações, consulte Criar uma solicitação canônica para o 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
    2. Crie uma canônicaURI, que é a parte URI entre o domínio e a sequência de caracteres de consulta.

      canonical_uri = "/stream-transcription-websocket"
    3. Crie cabeçalhos canônicos e cabeçalhos assinados. Observe o \n que aparece no final dos cabeçalhos canônicos.

      • Acrescente o nome do cabeçalho em letras minúsculas seguido de dois-pontos ( : ).

      • Anexe uma lista separada por vírgulas de valores para esse cabeçalho. Não classifique valores em cabeçalhos que tenham vários valores.

      • Anexe uma nova linha (\n).

      canonical_headers = "host:" + host + "\n" signed_headers = "host"
    4. Faça uma correspondência entre o algoritmo e o algoritmo de hash. Usar SHA-256.

      algorithm = "AWS4-HMAC-SHA256"
    5. Crie o escopo da credencial, que define o escopo da chave derivada para a data, a Região da AWS e o serviço. Por exemplo, 20220127/us-west-2/transcribe/aws4_request.

      credential_scope = datestamp + "/" + region + "/" + service + "/" + "aws4_request"
    6. Crie a string de consulta canônica. Os valores da sequência de caracteres de consulta devem ser URI codificados e classificados por nome.

      • Classifique os nomes de parâmetro por ponto de código de caracteres em ordem ascendente. Parâmetros com nomes duplicados devem ser classificados pelo valor. Por exemplo, um nome de parâmetro que começa com a letra maiúscula F precede um nome de parâmetro que começa com a letra minúscula b.

      • Não URI codifique nenhum dos caracteres não reservados definidos por RFC 3986: A-Z, a-z, 0-9, hífen (-), sublinhado (_), ponto (.) e til (~).

      • Codifique em percentual todos os outros caracteres com %XY, em que X e Y são caracteres hexadecimais (de 0 a 9 e maiúsculas de A a F). Por exemplo, o caractere de espaço deve ser codificado como %20 (não inclua '+', como fazem alguns esquemas de codificação); os caracteres UTF -8 estendidos devem estar no formato %XY%ZA%BC.

      • Codifique duas vezes todos os caracteres de sinal de igual (=) em valores de parâmetro.

      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. Crie um hash da carga útil. Para uma solicitação GET, a carga útil é uma string vazia.

      payload_hash = HashSHA256(("").Encode("utf-8")).HexDigest()
    8. Combine os elementos a seguir para criar a solicitação canônica.

      canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash
  3. Crie a string para assinar, que contém metainformações sobre a solicitação. Você usará a string para assinar na próxima etapa, quando calcular a assinatura da solicitação. Para obter mais informações, consulte Criar uma string para assinar para o Signature Version 4.

    string_to_sign=algorithm + "\n" + amz_date + "\n" + credential_scope + "\n" + HashSHA256(canonical_request.Encode("utf-8")).HexDigest()
  4. Calcule a assinatura. Para fazer isso, obtenha uma chave de assinatura da sua chave de acesso AWS secreta. Para aumentar o nível de proteção, a chave derivada é específica para a data, o serviço e a Região da AWS. Use essa chave derivada para assinar a solicitação. Para obter mais informações, consulte Calcular a assinatura para a versão 4 do AWS Signature.

    Implemente a função GetSignatureKey para derivar sua chave de assinatura. Se você ainda não derivou uma chave de assinatura, consulte exemplos sobre como derivar uma chave de assinatura para o 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

    A função HMAC(key, data) representa uma SHA256 função HMAC - que retorna resultados em formato binário.

  5. Adicione informações de assinatura à solicitação e crie a solicitaçãoURL.

    Depois de calcular a assinatura, adicione-a à string de consulta. Para obter mais informações, consulte Adicionar a assinatura à solicitação.

    Primeiro, adicione as informações de autenticação à string de consulta.

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

    Em segundo lugar, crie o URL para a solicitação.

    request_url = endpoint + canonical_uri + "?" + canonical_querystring

    Use a solicitação URL com sua WebSocket biblioteca para fazer a solicitação para Amazon Transcribe.

  6. A solicitação Amazon Transcribe deve incluir os seguintes cabeçalhos. Normalmente, esses cabeçalhos são gerenciados pela sua biblioteca WebSocket cliente.

    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. Quando Amazon Transcribe recebe sua WebSocket solicitação, ela responde com uma resposta de WebSocket upgrade. Normalmente, sua WebSocket biblioteca gerencia essa resposta e configura um soquete para comunicação com Amazon Transcribe.

    A seguir está a resposta de Amazon Transcribe. Quebras de linha foram adicionadas para uma melhor leitura.

    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. Faça sua solicitação WebSocket de streaming.

    Depois que a WebSocket conexão é estabelecida, o cliente pode começar a enviar uma sequência de quadros de áudio, cada um codificado usando a codificação de fluxo de eventos.

    Cada quadro de dados contém três cabeçalhos combinados com um bloco de bytes de áudio bruto. A tabela a seguir descreve esses cabeçalhos.

    Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
    13 :content-type 7 24 application/octet-stream
    11 :event-type 7 10 AudioEvent
    13 : message-type 7 5 evento
  9. Para encerrar o fluxo de dados, envie um bloco de áudio vazio em uma mensagem codificada de fluxo de eventos.

    A resposta contém bytes brutos com codificação de fluxo de evento na carga. Ela contém o prelúdio padrão e os seguintes cabeçalhos:

    Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
    13 :content-type 7 16 application/json
    11 :event-type 7 15 TranscriptEvent
    13 : message-type 7 5 evento

    Ao decodificar a resposta binária, você acaba com uma JSON estrutura contendo os resultados da transcrição.

Tratamento de erros WebSocket de streaming

Se ocorrer uma exceção ao processar sua solicitação, Amazon Transcribe responderá com um WebSocket quadro de terminal contendo uma resposta codificada de fluxo de eventos. Essa resposta contém os cabeçalhos descritos na tabela a seguir; o corpo da resposta contém uma mensagem de erro descritiva. Depois de enviar a resposta da exceção, Amazon Transcribe envia um quadro fechado.

Comprimento em bytes do nome do cabeçalho Nome do cabeçalho (string) Tipo de valor de cabeçalho Comprimento em bytes da string do valor Cadeia de valores (UTF-8)
13 :content-type 7 16 application/json
15 :exception-type 7 varia varia, veja abaixo
13 : message-type 7 9 exception

O cabeçalho exception-type contém um dos seguintes valores:

  • BadRequestException: houve um erro do cliente quando o fluxo foi criado ou ocorreu um erro durante o fluxo de dados. Certifique-se de que seu cliente esteja pronto para aceitar dados e tente sua solicitação novamente.

  • InternalFailureException: Amazon Transcribe teve um problema durante o aperto de mão com o cliente. Tente sua solicitação novamente.

  • LimitExceededException: o cliente excedeu o limite de fluxo simultâneo. Para obter mais informações, consulte Amazon Transcribe Limites. Reduza o número de fluxos que você está transcrevendo.

  • UnrecognizedClientException: a solicitação de WebSocket upgrade foi assinada com uma chave de acesso ou chave secreta incorreta. Verifique se você está criando corretamente a chave de acesso e tente fazer a solicitação novamente.

Amazon Transcribe também pode retornar qualquer um dos erros comuns de serviço. Para obter uma lista, consulte Erros comuns.

Codificação de fluxo de eventos

Amazon Transcribe usa um formato chamado codificação de fluxo de eventos para transcrições de streaming.

A codificação de fluxo de eventos fornece comunicação bidirecional entre um cliente e um servidor. Os quadros de dados enviados para o serviço de Amazon Transcribe streaming são codificados nesse formato. A resposta de Amazon Transcribe também usa essa codificação.

Cada mensagem consiste em duas seções: o prelúdio e os dados. O prelúdio consiste em:

  1. O comprimento de byte total da mensagem

  2. O comprimento total em bytes de todos os cabeçalhos

A seção de dados consiste em:

  1. Cabeçalhos

  2. Carga útil

Cada seção termina com uma soma de verificação check () de redundância cíclica inteira big-endian de 4 bytes. CRC A CRC soma de verificação da mensagem é tanto para a seção de prelúdio quanto para a seção de dados. Amazon Transcribe usa CRC32 (geralmente chamado de GZIPCRC32) para calcular ambosCRCs. Para obter mais informações sobreCRC32, consulte a versão 4.3 da especificação de formato de GZIP arquivo.

O total de sobrecarga de mensagem, incluindo o prelúdio e ambas as somas de verificação, é de 16 bytes.

O diagrama a seguir mostra os componentes que formam uma mensagem e um cabeçalho. Há vários cabeçalhos por mensagem.

Um esquema dos componentes de uma mensagem e um cabeçalho para uma transcrição de streaming.

Cada mensagem contém os seguintes componentes:

  • Prelúdio: consiste em dois campos de 4 bytes, para um total fixo de 8 bytes.

    • Primeiros 4 bytes: o comprimento em bytes do inteiro big-endian da mensagem inteira, incluindo esse campo de comprimento de 4 bytes.

    • Segundo 4 bytes: o comprimento em bytes do inteiro big-endian da parte “headers” da mensagem, excluindo o próprio campo de comprimento “headers”.

  • Prelúdio CRC: a CRC soma de verificação de 4 bytes para a parte do prelúdio da mensagem, excluindo a própria. CRC O prelúdio tem uma mensagem separada CRC da mensagem. CRC Isso garante que seja Amazon Transcribe possível detectar informações corrompidas de comprimento de bytes imediatamente sem causar erros, como sobrecarga de buffer.

  • Cabeçalhos: metadados que anotam a mensagem; por exemplo, tipo de mensagem e tipo de conteúdo. As mensagens têm vários cabeçalhos, que são pares chave-valor, em que a chave é uma UTF string -8. Os cabeçalhos podem aparecer em qualquer ordem na parte “headers” da mensagem, e cada cabeçalho pode aparecer apenas uma vez.

  • Carga útil: o conteúdo de áudio a ser transcrito.

  • Mensagem CRC: A CRC soma de verificação de 4 bytes do início da mensagem até o início da soma de verificação. Ou seja, tudo na mensagem, exceto a CRC própria mensagem.

O quadro do cabeçalho é o quadro de autorização para a transcrição do streaming. Amazon Transcribe usa o valor do cabeçalho de autorização como semente para gerar uma cadeia de cabeçalhos de autorização para os quadros de dados na solicitação.

Cada cabeçalho contém os componentes a seguir; há vários cabeçalhos por quadro.

  • O comprimento de byte do nome do cabeçalho: o comprimento de bytes do nome do cabeçalho.

  • Nome do cabeçalho: o nome do cabeçalho que indica o tipo de cabeçalho. Para valores válidos, consulte as seguintes descrições de quadro.

  • Tipo de valor do cabeçalho: um número que indica o valor do cabeçalho. A lista a seguir mostra os valores possíveis para o cabeçalho e o que eles indicam.

    • 0 – TRUE

    • 1 – FALSE

    • 2 – BYTE

    • 3 – SHORT

    • 4 – INTEGER

    • 5 – LONG

    • 6 – BYTE ARRAY

    • 7 – STRING

    • 8 – TIMESTAMP

    • 9 – UUID

  • Comprimento em bytes da string: o comprimento em bytes da string do cabeçalho.

  • Valor do cabeçalho: o valor da string do cabeçalho. Os valores válidos para esse campo dependem do tipo de cabeçalho. Consulte Configurando um stream HTTP /2 ou Configurando um WebSocket stream para obter mais informações.

Quadros de dados

Cada solicitação de streaming contém um ou mais quadros de dados. Existem duas etapas para criar um quadro de dados:

  1. Combine dados de áudio brutos com metadados para criar a carga útil da solicitação.

  2. Combine a carga com uma assinatura para formar a mensagem de evento enviada para o Amazon Transcribe.

O diagrama a seguir mostra como isso funciona.

Os componentes de um quadro de dados para uma transcrição de streaming.