

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.

# Live-Transkriptionsnachrichten des Amazon Chime SDK verstehen
<a name="process-msgs"></a>

Der Amazon Chime SDK-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 der Amazon Chime SDKs enthalten zusätzliche Datentypen und Hilfsfunktionen für die allgemeine Verarbeitung a. `TranscriptEvent`

## TranscriptEvent
<a name="transcript-event"></a>

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
<a name="data-guidelines"></a>

Behalten Sie diese Richtlinien stets im Hinterkopf.

1. `transcription.results`kann mehr als ein Ergebnis haben.

1. Wenn`transcription.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 dasselbe`transcript.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.

1. `transcription.results[i].alternatives`enthä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.

1. `transcription.results[i].alternatives[j].items`enthält einen Eintrag für jedes Wort oder Satzzeichen.

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

1. `transcription.results[i].alternatives[j].items[k].attendee`ist die Benutzerzuweisung (wer) des Inhalts.

1. `transcription.results[i].alternatives[j].items[k].startTimeMs`ist das „Wann“ des Inhalts. Auf diese Weise kann die vom Benutzer zugeordnete Transkription wortwörtlich für verschiedene Benutzer in der Reihenfolge wiedergegeben werden, in der die Wörter gesprochen wurden.

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

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

1. `transcription.results[i].alternatives[j].items[k].confidence`ist 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.

1. `transcription.results[i].alternatives[j].items[k].stable`gibt 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.

1. `transcription.results[i].alternatives[j].entities`enthä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.

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

1. `transcription.results[i].alternatives[j].entities[k].confidence`misst, wie stark der Motor dafür ist, dass der jeweilige Inhalt wirklich eine Einheit ist. 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.

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

1. `transcription.results[i].alternatives[j].entities[k].startTimeMs`erfasst den Zeitpunkt, zu dem die Entität anfängt, gesprochen zu werden.

1. `transcription.results[i].alternatives[j].entities[k].endTimeMs`erfasst den Zeitpunkt, zu dem das Sprechen der Entität beendet wurde.

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

## Registrierung von Event-Handlern für TranscriptEvents
<a name="register-handler"></a>

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

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

```
/** 
 * 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 named`DefaultTranscriptionController`. Die Standardimplementierung in `DefaultRealtimeController` und `DefaultAudioVideoFacade` gibt ein `DefaultTranscriptionController` Objekt zurück:

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

`DefaultRealtimeController`nimmt 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););
```