

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memahami pesan transkripsi langsung Amazon Chime SDK
<a name="process-msgs"></a>

Layanan Amazon Chime SDK membagikan informasi transkripsi dengan peserta dengan mengirimkan objek dalam pesan data. `TranscriptEvent` A `TranscriptEvent` memberikan a `Transcript` atau a. `TranscriptionStatus` 

A `Transcript` termasuk hasil dengan cap waktu, kata dan tanda baca yang dikaitkan dengan pengguna. Hasilnya mungkin “sebagian”, dalam hal ini sistem biasanya memperbaruinya selanjutnya`TranscriptEvent`. Ini memungkinkan Anda untuk melihat transkripsi dengan cepat dan menerapkan pembaruan sebaris nanti jika diperlukan.

A `TranscriptStatus` dapat mengirimkan salah satu `TranscriptionStatusType` acara, tercantum dalam contoh di bagian berikutnya.

Versi yang lebih baru dari Amazon SDKs Chime menyertakan tipe data tambahan dan fungsi pembantu untuk pemrosesan umum a. `TranscriptEvent`

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

Contoh ini menunjukkan peristiwa transkripsi yang khas.

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

## Pedoman data
<a name="data-guidelines"></a>

Ingatlah pedoman ini saat Anda pergi.

1. `transcription.results`mungkin memiliki lebih dari satu hasil.

1. Jika`transcription.results[i].isPartial = true`, maka mungkin ada pembaruan untuk seluruh hasil. Pembaruan mungkin, tetapi tidak dijamin. Pembaruan memiliki hal yang sama`transcript.result[i].resultId`. Jika Anda ingin menghindari transkripsi kepercayaan rendah, Anda dapat melewatkan sebagian hasil sepenuhnya. Jika Anda menginginkan hasil latensi rendah, Anda dapat menampilkan sebagian hasil, lalu menimpa sepenuhnya saat pembaruan tiba.

1. `transcription.results[i].alternatives`Selalu berisi setidaknya satu entri. Jika berisi lebih dari satu entri, entri yang paling percaya diri adalah yang pertama dalam daftar. Dalam kebanyakan kasus, Anda dapat mengambil entri pertama `transcription.results[i].alternatives` dan mengabaikan yang lain.

1. `transcription.results[i].alternatives[j].items`termasuk entri untuk setiap kata atau tanda baca.

1. `transcription.results[i].alternatives[j].items[k].`konten adalah apa yang diucapkan.

1. `transcription.results[i].alternatives[j].items[k].attendee`adalah atribusi pengguna (siapa) dari konten.

1. `transcription.results[i].alternatives[j].items[k].startTimeMs`adalah “kapan” konten. Ini memungkinkan word-by-word rendering transkripsi yang dikaitkan dengan pengguna di seluruh pengguna yang berbeda dalam urutan kata-kata diucapkan.

1. `transcription.results[i].alternatives[j].items[k].endTimeMs`Bidang umumnya dapat diabaikan, tetapi disediakan untuk kelengkapan siapa yang mengatakan kapan.

1. `transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch`benar jika konten cocok dengan kata di filter, jika tidak maka salah.

1. `transcription.results[i].alternatives[j].items[k].confidence`adalah nilai antara 0 dan 1. Ini menunjukkan keyakinan mesin bahwa konten item dengan benar cocok dengan kata yang diucapkan, dengan 0 menjadi kepercayaan terendah dan 1 adalah kepercayaan tertinggi.

1. `transcription.results[i].alternatives[j].items[k].stable`menunjukkan apakah kata saat ini akan berubah dalam pembaruan hasil paral di masa mendatang. Nilai ini hanya bisa benar jika Anda mengaktifkan fitur stabilisasi hasil paral dengan menyetel `EnablePartialResultsStabilization` ke `true` dalam permintaan Anda.

1. `transcription.results[i].alternatives[j].entities`menyertakan entri untuk setiap entitas yang terdeteksi oleh fitur Identifikasi Konten atau Redaksi. Daftar ini hanya diisi jika Anda mengaktifkan Identifikasi Konten atau Redaksi. Entitas dapat berupa data seperti informasi yang dapat diidentifikasi secara pribadi atau informasi kesehatan pribadi. Anda dapat menggunakan entitas untuk menyorot, atau mengambil tindakan atas, kata-kata yang menarik selama transkripsi.

1. `transcription.results[i].alternatives[j].entities[k].category`adalah kategori entitas. Ini sama dengan jenis Identifikasi Konten atau Redaksi, seperti “PII” atau “PHI”, yang disediakan dalam permintaan.

1. `transcription.results[i].alternatives[j].entities[k].confidence`mengukur seberapa kuat mesin bahwa konten tertentu benar-benar suatu entitas. Perhatikan bahwa ini berbeda dari kepercayaan tingkat item, yang mengukur seberapa yakin mesin dalam kebenaran kata-kata itu sendiri.

1. `transcription.results[i].alternatives[j].entities[k].content`adalah teks aktual yang membentuk entitas. Ini bisa berupa beberapa item, seperti alamat.

1. `transcription.results[i].alternatives[j].entities[k].startTimeMs`menangkap waktu di mana entitas mulai berbicara.

1. `transcription.results[i].alternatives[j].entities[k].endTimeMs`menangkap waktu di mana entitas selesai diucapkan.

1. `transcription.results[i].alternatives[j].entities[k].type`hanya didukung untuk mesin Transcribe dan menyediakan sub-tipe entitas. Ini adalah nilai-nilai seperti `ADDRESS`, `CREDIT\$1DEBIT\$1NUMBER`, dan sebagainya.

## Mendaftarkan event handler untuk TranscriptEvents
<a name="register-handler"></a>

Contoh berikut menggunakan library klien Amazon Chime SDK untuk. JavaScript Namun, polanya konsisten di semua Amazon SDKs Chime.

`TranscriptionController`Dalam `RealtimeController` dan `RealtimeControllerFacade` termasuk fungsi khusus untuk menambahkan handler yang memproses`TranscriptionEvents`:

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

Ini `TranscriptionController` memiliki dua fungsi untuk mengelola berlangganan dan berhenti berlangganan callback: `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;
}
```

**Menggunakan opsional `TranscriptionController`**  
Kami menyediakan implementasi default `TranscriptionController` antarmuka bernama`DefaultTranscriptionController`. Implementasi default dalam `DefaultRealtimeController` dan `DefaultAudioVideoFacade` mengembalikan `DefaultTranscriptionController` objek:

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

`DefaultRealtimeController`juga mengambil `TranscriptionController` objek opsional dalam konstruktornya. Itu memungkinkan Anda untuk mengesampingkan `DefaultTranscriptionController` perilaku. Aplikasi pengembang berlangganan dan berhenti berlangganan satu atau lebih panggilan balik melalui `TranscriptionController` objek objek: `AudioVideoFacade`

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

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