Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Entender los mensajes de transcripción
El SDK servicio Amazon Chime comparte la información de transcripción con los asistentes mediante el envío de TranscriptEvent
objetos en mensajes de datos. Un TranscriptEvent
entrega un Transcript
o un TranscriptionStatus
.
Un Transcript
incluye los resultados con marcas de tiempo, palabras y signos de puntuación atribuidos al usuario. Un resultado puede ser «parcial», en cuyo caso el sistema normalmente lo actualiza en un TranscriptEvent
posterior. Esto le permite ver las transcripciones rápidamente y aplicar las actualizaciones en línea más adelante, según sea necesario.
Un TranscriptStatus
puede ofrecer uno de los eventos de TranscriptionStatusType
, que se enumeran en el ejemplo de la siguiente sección.
Las versiones más recientes de Amazon Chime SDKs incluyen tipos de datos adicionales y funciones de ayuda para el procesamiento común a. TranscriptEvent
TranscriptEvent
Este ejemplo muestra un evento de transcripción 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; }
Directrices de datos
Tenga en cuenta estas pautas a medida que avanza.
transcription.results
puede tener más de un resultado.Si
transcription.results[i].isPartial = true
, es posible que haya una actualización para todo el resultado. La actualización es probable, pero no está garantizada. La actualización tiene el mismotranscript.result[i].resultId
. Si desea evitar las transcripciones poco fiables, puede omitir por completo los resultados parciales. Si desea resultados de baja latencia, puede mostrar resultados parciales y sobrescribirlos por completo cuando llegue la actualización.transcription.results[i].alternatives
contiene siempre como mínimo una entrada. Si contiene más de una entrada, la entrada más segura será la primera de la lista. En la mayoría de los casos, puede realizar la primera entrada entranscription.results[i].alternatives
e ignorar las demás.transcription.results[i].alternatives[j].items
incluye una entrada para cada palabra o signo de puntuación.El contenido de
transcription.results[i].alternatives[j].items[k].
es lo que se ha dicho.transcription.results[i].alternatives[j].items[k].attendee
es la atribución (quién) del contenido por parte del usuario.transcription.results[i].alternatives[j].items[k].startTimeMs
es el «cuándo» del contenido. Esto permite word-by-word reproducir las transcripciones atribuidas al usuario entre diferentes usuarios en el orden en que se pronunciaron las palabras.Por lo general, el campo
transcription.results[i].alternatives[j].items[k].endTimeMs
se puede ignorar, pero se proporciona para completar quién dijo qué y cuándo.transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch
es verdadero si el contenido coincide con una palabra del filtro; de lo contrario, es falso.transcription.results[i].alternatives[j].items[k].confidence
es un valor comprendido entre 0 y 1. Indica la confianza del motor en que el contenido del elemento coincide correctamente con la palabra hablada, siendo 0 la confianza más baja y 1 la confianza más alta.transcription.results[i].alternatives[j].items[k].stable
indica si la palabra actual cambiará en futuras actualizaciones de resultados parciales. Este valor solo puede ser válido si habilita la característica de estabilización de resultados parciales configurandoEnablePartialResultsStabilization
comotrue
en su solicitud.transcription.results[i].alternatives[j].entities
incluye una entrada para cada entidad que detecten las características de identificación o redacción de contenido. La lista solo se rellena si habilita la identificación o la redacción del contenido. Una entidad puede ser información como información de identificación personal o información de salud personal. Puede utilizar entidades para resaltar palabras de interés o tomar medidas al respecto durante la transcripción.transcription.results[i].alternatives[j].entities[k].category
es la categoría de la entidad. Es igual a la identificación del contenido o al tipo de redacción, como «PII» o PHI «», que se proporciona en la solicitud.transcription.results[i].alternatives[j].entities[k].confidence
mide la potencia del motor para que el contenido en particular sea realmente una entidad. Tenga en cuenta que esto es diferente de la confianza a nivel de elemento, que mide la confianza del motor en la exactitud de las propias palabras.transcription.results[i].alternatives[j].entities[k].content
es el texto real que constituye la entidad. Pueden ser varios elementos, como una dirección.transcription.results[i].alternatives[j].entities[k].startTimeMs
captura el momento en el que se empezó a hablar con la entidad.transcription.results[i].alternatives[j].entities[k].endTimeMs
captura el momento en el que la entidad terminó de hablar.transcription.results[i].alternatives[j].entities[k].type
solo es compatible con el motor de transcripción y proporciona el subtipo de la entidad. Se trata de valores como ADDRESS ``, NUMBER `CREDITDEBIT_ _`, etc.
Registrar controladores de eventos para TranscriptEvents
Los siguientes ejemplos utilizan la biblioteca de SDK clientes Amazon Chime para. JavaScript Sin embargo, el patrón es uniforme en todos los Amazon ChimeSDKs.
El TranscriptionController
en el RealtimeController
y RealtimeControllerFacade
incluye funciones específicas para añadir un controlador que procese TranscriptionEvents
:
/** * Returns the [[TranscriptionController]] for this real-time controller. */ readonly transcriptionController?: TranscriptionController;
TranscriptionController
tiene dos funciones para gestionar la suscripción y la cancelación de la suscripción a las devoluciones de llamadas 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; }
Uso del TranscriptionController
opcional
Proporcionamos una implementación predeterminada de la interfaz de TranscriptionController
denominada DefaultTranscriptionController
. La implementación predeterminada en DefaultRealtimeController
y DefaultAudioVideoFacade
devuelve un objeto DefaultTranscriptionController
:
/** get transcriptionController(): TranscriptionController { return this.realtimeController.transcriptionController; }
DefaultRealtimeController
también toma un objeto de TranscriptionController
opcional en su constructor. Eso le permite anular el comportamiento de DefaultTranscriptionController
. Las aplicaciones para desarrolladores se suscriben y cancelan la suscripción a una o más llamadas mediante el objeto de TranscriptionController
del objeto AudioVideoFacade
:
// Subscribe this.audioVideo.transcriptionController?.subscribeToTranscriptEvent(this.transcriptEventHandler); // Unsubscribe this.audioVideo.transcriptionController?.unsubscribeFromTranscriptEvent(this.transcriptEventHandler););