Entendendo as mensagens de transcrição - Amazon Chime SDK

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á.

Entendendo as mensagens de transcrição

O SDK serviço Amazon Chime compartilha informações de transcrição com os participantes TranscriptEvent enviando objetos em mensagens de dados. Um TranscriptEvent entrega uma Transcript ou um TranscriptionStatus.

Uma Transcript inclui resultados com registro de data e hora, palavras atribuídas pelo usuário e pontuação. Um resultado pode ser “parcial”; nesse caso, o sistema geralmente o atualiza em um TranscriptEvent posterior. Isso permite que você veja as transcrições rapidamente e aplique atualizações em linha posteriormente, conforme necessário.

Um TranscriptStatus pode realizar um dos eventos TranscriptionStatusType, listados no exemplo na próxima seção.

As versões mais recentes do Amazon SDKs Chime incluem tipos de dados adicionais e funções auxiliares para processamento comum a. TranscriptEvent

TranscriptEvent

Este exemplo mostra um evento de transcrição típico.

type TranscriptEvent = Transcript | TranscriptionStatus; export class TranscriptEventConverter { static from(dataMessage: DataMessage): TranscriptEvent[] { // convert DataMessage to TranscriptEvents return ... } } export default class TranscriptionStatus { type: TranscriptionStatusType; eventTimeMs: number; transcriptionRegion: string; transcriptionConfiguration: string; message?: string; } enum TranscriptionStatusType { STARTED = 'started', INTERRUPTED = 'interrupted', RESUMED = 'resumed', STOPPED = 'stopped', FAILED = 'failed', } export default class Transcript { results: TranscriptResult[]; // at least one } export class TranscriptResult { resultId: string; isPartial: boolean; startTimeMs: number; endTimeMs: number; alternatives: TranscriptAlternative[]; // most confident first } export default class TranscriptAlternative { items: TranscriptItem[]; // in start time order transcript: string; //concatenated transcript items entities?: TranscriptEntity[]; } export default class TranscriptItem { type: TranscriptItemType; startTimeMs: number; endTimeMs: number; attendee: Attendee; content: string; vocabularyFilterMatch?: boolean; confidence?: number; stable?: boolean; } enum TranscriptItemType { PRONUNCIATION = 'pronunciation',// content is a word PUNCTUATION = 'punctuation',// content is punctuation } export default class TranscriptEntity { category: string; confidence: number; content: string; endTimeMs: number; startTimeMs: number; type?: string; } // This is an existing SDK model export default class Attendee { attendeeId: string; externalUserId: string; }

Diretrizes de dados

Lembre-se dessas diretrizes à medida que avança.

  1. transcription.results pode apresentar mais de um resultado.

  2. Se transcription.results[i].isPartial = true, pode haver uma atualização para todo o resultado. A atualização é provável, mas não garantida. A atualização tem o mesmo transcript.result[i].resultId. Se você quiser evitar transcrições de baixa confiança, pode ignorar completamente os resultados parciais. Se quiser resultados de baixa latência, você pode exibir resultados parciais e, em seguida, sobrescrever completamente quando a atualização chegar.

  3. transcription.results[i].alternatives sempre contém pelo menos uma entrada. Se contiver mais de uma entrada, a entrada mais confiável será a primeira na lista. Na maioria dos casos, você pode pegar a primeira entrada em transcription.results[i].alternatives e ignorar as outras.

  4. transcription.results[i].alternatives[j].items inclui uma entrada para cada palavra ou sinal de pontuação.

  5. O conteúdo transcription.results[i].alternatives[j].items[k]. é o que foi falado.

  6. transcription.results[i].alternatives[j].items[k].attendee é a atribuição do conteúdo pelo usuário (quem).

  7. transcription.results[i].alternatives[j].items[k].startTimeMs é o "quando" do conteúdo. Isso permite a word-by-word renderização da transcrição atribuída pelo usuário em diferentes usuários na ordem em que as palavras foram faladas.

  8. Geralmente, o campo transcription.results[i].alternatives[j].items[k].endTimeMs pode ser ignorado, mas é fornecido para determinar quem disse o quê e quando.

  9. transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch é verdadeiro se o conteúdo corresponder a uma palavra no filtro, caso contrário, é falso.

  10. transcription.results[i].alternatives[j].items[k].confidence é um valor entre 0 e 1. Isso indica a confiança do mecanismo de que o conteúdo do item corresponde corretamente à palavra falada, com 0 sendo a menor confiança e 1 sendo a maior confiança.

  11. transcription.results[i].alternatives[j].items[k].stable indica se a palavra atual será alterada em futuras atualizações parciais de resultados. Esse valor só pode ser verdadeiro se você ativar o atributo de estabilização parcial de resultados configurando EnablePartialResultsStabilization como true em sua solicitação.

  12. transcription.results[i].alternatives[j].entities inclui uma entrada para cada entidade que os atributos de identificação ou redação de conteúdo detectam. A lista só será preenchida se você ativar a Identificação ou Redação de conteúdo. Uma entidade pode ser dados como informações de identificação pessoal ou informações de saúde. Você pode usar entidades para destacar ou agir sobre palavras de interesse durante a transcrição.

  13. transcription.results[i].alternatives[j].entities[k].category é a categoria da entidade. É igual ao tipo de identificação ou redação de conteúdo, como "" ou PII "PHI“, que é fornecido na solicitação.

  14. transcription.results[i].alternatives[j].entities[k].confidence mede o quão forte é o mecanismo para que o conteúdo específico seja realmente uma entidade. Observe que isso é diferente da confiança no nível do item, que mede a confiança do mecanismo na exatidão das palavras em si.

  15. transcription.results[i].alternatives[j].entities[k].content é o texto real que compõe a entidade. Isso pode ser vários itens, como um endereço.

  16. transcription.results[i].alternatives[j].entities[k].startTimeMs captura a hora em que a entidade começou a ser falada.

  17. transcription.results[i].alternatives[j].entities[k].endTimeMs captura a hora em que a entidade parou de ser falada.

  18. transcription.results[i].alternatives[j].entities[k].type só é compatível com o mecanismo de Transcrição e fornece o subtipo da entidade. Esses são valores como `ADDRESS`, `CREDIT_ DEBIT _NUMBER` e assim por diante.

Registrando manipuladores de eventos para TranscriptEvents

Os exemplos a seguir usam a biblioteca de SDK cliente Amazon Chime para. JavaScript No entanto, o padrão é consistente em todo o Amazon ChimeSDKs.

O TranscriptionController no RealtimeController e no RealtimeControllerFacade inclui funções específicas para adicionar um manipulador que processa TranscriptionEvents:

/** * Returns the [[TranscriptionController]] for this real-time controller. */ readonly transcriptionController?: TranscriptionController;

O TranscriptionController tem duas funções para gerenciar a assinatura e o cancelamento da assinatura de retornos de chamada de TranscriptionEvent:

import TranscriptEvent from './TranscriptEvent'; export default interface TranscriptionController { /** * Subscribe a callback to handle received transcript event */ subscribeToTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void; /** * Unsubscribe a callback from receiving transcript event */ unsubscribeFromTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void; }
Como usar o TranscriptionController opcional

Nós fornecemos uma implementação-padrão da interface TranscriptionController chamada DefaultTranscriptionController. A implementação-padrão em DefaultRealtimeController e DefaultAudioVideoFacade retorna um objeto DefaultTranscriptionController:

/** get transcriptionController(): TranscriptionController { return this.realtimeController.transcriptionController; }

O DefaultRealtimeController também usa um objeto TranscriptionController opcional em seu construtor. Isso permite que você anule o comportamento DefaultTranscriptionController. Os aplicativos do desenvolvedor assinam e cancelam a assinatura de um ou mais retornos de chamada por meio do objeto TranscriptionController do objeto AudioVideoFacade:

// Subscribe this.audioVideo.transcriptionController?.subscribeToTranscriptEvent(this.transcriptEventHandler); // Unsubscribe this.audioVideo.transcriptionController?.unsubscribeFromTranscriptEvent(this.transcriptEventHandler););