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.
transcription.results
pode apresentar mais de um resultado.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 mesmotranscript.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.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 emtranscription.results[i].alternatives
e ignorar as outras.transcription.results[i].alternatives[j].items
inclui uma entrada para cada palavra ou sinal de pontuação.O conteúdo
transcription.results[i].alternatives[j].items[k].
é o que foi falado.transcription.results[i].alternatives[j].items[k].attendee
é a atribuição do conteúdo pelo usuário (quem).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.Geralmente, o campo
transcription.results[i].alternatives[j].items[k].endTimeMs
pode ser ignorado, mas é fornecido para determinar quem disse o quê e quando.transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch
é verdadeiro se o conteúdo corresponder a uma palavra no filtro, caso contrário, é falso.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.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 configurandoEnablePartialResultsStabilization
comotrue
em sua solicitação.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.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.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.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.transcription.results[i].alternatives[j].entities[k].startTimeMs
captura a hora em que a entidade começou a ser falada.transcription.results[i].alternatives[j].entities[k].endTimeMs
captura a hora em que a entidade parou de ser falada.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););