Transkriptionsnachrichten verstehen - Amazon Chime SDK

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Transkriptionsnachrichten verstehen

Der Amazon Chime SDK Chime-Service gibt Transkriptionsinformationen an die Teilnehmer weiter, indem er TranscriptEvent Objekte in Datennachrichten sendet. A TranscriptEvent liefert ein Transcript oder ein. TranscriptionStatus

A Transcript beinhaltet Ergebnisse mit Zeitstempel, vom Benutzer zugewiesenen Wörtern und Satzzeichen. Ein Ergebnis kann „teilweise“ sein. In diesem Fall aktualisiert das System es in der Regel zu einem späteren Zeitpunkt. TranscriptEvent Auf diese Weise können Sie Transkriptionen schnell einsehen und bei Bedarf später Inline-Aktualisierungen vornehmen.

A TranscriptStatus kann eines der TranscriptionStatusType Ereignisse auslösen, die im Beispiel im nächsten Abschnitt aufgeführt sind.

Neuere Versionen von Amazon Chime SDKs enthalten zusätzliche Datentypen und Hilfsfunktionen für die allgemeine Verarbeitung a. TranscriptEvent

TranscriptEvent

Dieses Beispiel zeigt ein typisches Transkriptionsereignis.

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; }

Richtlinien für Daten

Behalten Sie diese Richtlinien stets im Hinterkopf.

  1. transcription.resultskann mehr als ein Ergebnis haben.

  2. Wenntranscription.results[i].isPartial = true, dann gibt es möglicherweise ein Update für das gesamte Ergebnis. Das Update ist wahrscheinlich, aber nicht garantiert. Das Update hat dasselbetranscript.result[i].resultId. Wenn Sie Transkriptionen mit geringer Zuverlässigkeit vermeiden möchten, können Sie Teilergebnisse komplett überspringen. Wenn Sie Ergebnisse mit niedriger Latenz wünschen, können Sie Teilergebnisse anzeigen und sie dann vollständig überschreiben, wenn das Update eintrifft.

  3. transcription.results[i].alternativesenthält immer mindestens einen Eintrag. Wenn es mehr als einen Eintrag enthält, steht der vertrauenswürdigste Eintrag an erster Stelle in der Liste. In den meisten Fällen können Sie den ersten Eintrag übernehmen transcription.results[i].alternatives und die anderen ignorieren.

  4. transcription.results[i].alternatives[j].itemsenthält einen Eintrag für jedes Wort oder Satzzeichen.

  5. transcription.results[i].alternatives[j].items[k].Inhalt ist das, was gesprochen wurde.

  6. transcription.results[i].alternatives[j].items[k].attendeeist die Benutzerzuweisung (wer) des Inhalts.

  7. transcription.results[i].alternatives[j].items[k].startTimeMsist das „Wann“ des Inhalts. Auf diese Weise kann die vom Benutzer zugeordnete Transkription für verschiedene Benutzer in der Reihenfolge word-by-word wiedergegeben werden, in der die Wörter gesprochen wurden.

  8. Das transcription.results[i].alternatives[j].items[k].endTimeMs Feld kann im Allgemeinen ignoriert werden, wird aber nur der Vollständigkeit halber angegeben, wer was wann gesagt hat.

  9. transcription.results[i].alternatives[j].items[k].vocabularyFilterMatchist wahr, wenn der Inhalt mit einem Wort im Filter übereinstimmt, andernfalls ist es falsch.

  10. transcription.results[i].alternatives[j].items[k].confidenceist ein Wert zwischen 0 und 1. Er gibt die Gewissheit der Engine an, dass der Inhalt des Elements korrekt mit dem gesprochenen Wort übereinstimmt, wobei 0 die niedrigste und 1 die höchste Konfidenz darstellt.

  11. transcription.results[i].alternatives[j].items[k].stablegibt an, ob sich das aktuelle Wort bei future Aktualisierungen von Teilergebnissen ändern wird. Dieser Wert kann nur wahr sein, wenn Sie die Funktion zur Stabilisierung von Teilergebnissen aktivieren, indem Sie true in Ihrer Anfrage EnablePartialResultsStabilization auf einstellen.

  12. transcription.results[i].alternatives[j].entitiesenthält einen Eintrag für jede Entität, die von den Funktionen zur Inhaltserkennung oder Redaktion erkannt wird. Die Liste wird nur aufgefüllt, wenn Sie die Option Inhaltsidentifizierung oder Schwärzung aktivieren. Bei einer Entität kann es sich um Daten wie personenbezogene Daten oder persönliche Gesundheitsinformationen handeln. Sie können Entitäten verwenden, um interessante Wörter während der Transkription hervorzuheben oder entsprechende Maßnahmen zu ergreifen.

  13. transcription.results[i].alternatives[j].entities[k].categoryist die Kategorie der Entität. Sie entspricht dem Typ Inhaltsidentifikation oder Redaktion, z. B. "PII" oder "PHI„, der in der Anfrage angegeben ist.

  14. transcription.results[i].alternatives[j].entities[k].confidencemisst, wie stark der Motor dafür ist, dass es sich bei dem jeweiligen Inhalt wirklich um eine Einheit handelt. Beachten Sie, dass dies etwas anderes ist als die Konfidenz auf Artikelebene, mit der gemessen wird, wie sicher die Engine von der Richtigkeit der Wörter selbst ist.

  15. transcription.results[i].alternatives[j].entities[k].contentist der eigentliche Text, aus dem die Entität besteht. Dies können mehrere Elemente sein, z. B. eine Adresse.

  16. transcription.results[i].alternatives[j].entities[k].startTimeMserfasst den Zeitpunkt, zu dem die Entität anfängt, gesprochen zu werden.

  17. transcription.results[i].alternatives[j].entities[k].endTimeMserfasst den Zeitpunkt, zu dem das Sprechen der Entität beendet wurde.

  18. transcription.results[i].alternatives[j].entities[k].typewird nur für die Transcribe-Engine unterstützt und stellt den Untertyp der Entität bereit. Dies sind Werte wie `ADDRESS`, `CREDITDEBIT_ _NUMBER` usw.

Registrierung von Event-Handlern für TranscriptEvents

In den folgenden Beispielen wird die Amazon Chime SDK Chime-Clientbibliothek für JavaScript verwendet. Das Muster ist jedoch in allen Amazon Chime SDKs einheitlich.

Das TranscriptionController im RealtimeController und RealtimeControllerFacade beinhaltet spezifische Funktionen zum Hinzufügen eines Handlers, der Folgendes verarbeitetTranscriptionEvents:

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

Der TranscriptionController hat zwei Funktionen zur Verwaltung des An- und Abmeldens von Callbacks: 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; }
Verwenden der optionalen TranscriptionController

Wir bieten eine Standardimplementierung der TranscriptionController Schnittstelle namedDefaultTranscriptionController. Die Standardimplementierung in DefaultRealtimeController und DefaultAudioVideoFacade gibt ein DefaultTranscriptionController Objekt zurück:

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

DefaultRealtimeControllernimmt auch ein optionales TranscriptionController Objekt in seinen Konstruktor auf. Dadurch können Sie das DefaultTranscriptionController Verhalten überschreiben. Entwickleranwendungen abonnieren oder kündigen einen oder mehrere Callbacks über das TranscriptionController Objekt des AudioVideoFacade Objekts:

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