文字起こしメッセージ - Amazon Chime SDK

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

文字起こしメッセージ

Amazon Chime SDK サービスは、データメッセージで TranscriptEvent オブジェクトを送信することにより、文字起こし情報を参加者と共有します。TranscriptEventTranscript または TranscriptionStatus を配信します。

Transcript には、タイムスタンプとユーザー属性が付いた単語および句読点を含む結果が含まれます。結果が「部分的」なものになることもありますが、その場合は通常、後続の TranscriptEvent で更新されます。これにより、文字起こしをすばやく確認することができ、必要に応じて後でインラインで更新を適用することもできます。

TranscriptStatus は、次のセクションの例にリストされている TranscriptionStatusType イベントのいずれかを配信します。

新しいバージョンの Amazon Chime SDK には、TranscriptEvent の一般的な処理に使用する追加のデータ型とヘルパー関数が含まれています。

TranscriptEvent

この例は、典型的な文字起こしイベントを示しています。

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

データのガイドライン

これらのガイドラインに留意しながら作業を進めてください。

  1. transcription.results には複数の結果が含まれる場合があります。

  2. transcription.results[i].isPartial = true の場合、結果全体が更新される可能性があります。更新される可能性は高いですが、確実に更新されるわけではありません。更新後も transcript.result[i].resultId は同じです。信頼度の低い文字起こしを回避したい場合は、部分的な結果を完全にスキップできます。低レイテンシーの結果が必要な場合は、いったん部分的な結果を表示してから、後で更新が到着したときに完全に上書きすることができます。

  3. transcription.results[i].alternatives には、常に少なくとも 1 つのエントリが含まれます。複数のエントリが含まれる場合は、最も信頼度の高いエントリがリストの先頭に表示されます。ほとんどの場合、transcription.results[i].alternatives の最初のエントリを採用し、その他のエントリは無視できます。

  4. transcription.results[i].alternatives[j].items には、各単語または句読点のエントリが含まれます。

  5. transcription.results[i].alternatives[j].items[k]. content には、発言内容が含まれます。

  6. transcription.results[i].alternatives[j].items[k].attendee は、コンテンツのユーザー属性 (誰) です。

  7. transcription.results[i].alternatives[j].items[k].startTimeMs は、コンテンツの「いつ」です。これにより、単語が話された順序で、異なるユーザー間でユーザー属性の文字起こしを word-by-word レンダリングできます。

  8. transcription.results[i].alternatives[j].items[k].endTimeMs フィールドは通常は無視して構いませんが、誰がいつ何を言ったかを完全に把握できるように提供されています。

  9. transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch は、コンテンツがフィルター内の単語と一致した場合は true、それ以外の場合は false です。

  10. transcription.results[i].alternatives[j].items[k].confidence は、0~1 の値です。これは、項目のコンテンツが発言と正しく一致しているというエンジンの信頼度を示します。0 が最も低い信頼度、1 が最も高い信頼度を示します。

  11. transcription.results[i].alternatives[j].items[k].stable は、現在の単語が部分的な結果の更新によって将来的に変更されるかどうかを示します。この値が true になるのは、リクエストで EnablePartialResultsStabilizationtrue に設定して部分的な結果の安定化機能を有効にした場合だけです。

  12. transcription.results[i].alternatives[j].entities には、コンテンツ識別またはリダクション機能によって検出された各エンティティのエントリが含まれます。このリストには、コンテンツ識別またはリダクションを有効にした場合にのみ値が入ります。エンティティは、個人情報や個人の健康情報などのデータである可能性があります。エンティティを使用して、文字起こし中に関心のある単語に対して、強調表示したり、アクションを実行したりすることができます。

  13. transcription.results[i].alternatives[j].entities[k].category はエンティティのカテゴリです。これは、リクエストで提供されたコンテンツ識別またはリダクションのタイプ (「PII」や「PHI」などの) と同じです。

  14. transcription.results[i].alternatives[j].entities[k].confidence は、特定のコンテンツが本当にエンティティであることに対するエンジンの信頼度を示します。これは、単語そのものの正確さに対するエンジンの信頼度を示す項目レベルの信頼度とは異なることに注意してください。

  15. transcription.results[i].alternatives[j].entities[k].content は、エンティティを構成する実際のテキストです。これは、複数の項目 (住所など) である場合もあります。

  16. transcription.results[i].alternatives[j].entities[k].startTimeMs は、当該エンティティの発言が開始された時刻をキャプチャします。

  17. transcription.results[i].alternatives[j].entities[k].endTimeMs は、当該エンティティの発言が終了した時刻をキャプチャします。

  18. transcription.results[i].alternatives[j].entities[k].type は、文字起こしエンジンでのみサポートされ、エンティティのサブタイプを提供します。これらは、`ADDRESS`、`CREDIT_DEBIT_NUMBER` などの値です。

のイベントハンドラーの登録 TranscriptEvents

次の例では、 の Amazon Chime SDK クライアントライブラリを使用します JavaScript。ただし、パターンはすべての Amazon Chime SDK で一貫しています。

RealtimeController および RealtimeControllerFacadeTranscriptionController には、TranscriptionEvents を処理するハンドラーを追加するための特定の関数が含まれています。

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

TranscriptionController には、TranscriptionEvent コールバックのサブスクライブとサブスクライブ解除を管理する 2 つの関数があります。

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; }
オプションの TranscriptionController を使用する

TranscriptionController インターフェイスのデフォルト実装 (DefaultTranscriptionController という名前) が用意されています。DefaultRealtimeController および DefaultAudioVideoFacade のデフォルト実装では、DefaultTranscriptionController オブジェクトが返されます。

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

DefaultRealtimeController では、そのコンストラクターにオプションの TranscriptionController オブジェクトを指定することもできます。これにより、DefaultTranscriptionController の動作をオーバーライドできます。デベロッパーアプリケーションは、AudioVideoFacade オブジェクトの TranscriptionController オブジェクトを通じて、1 つ以上のコールバックをサブスクライブまたはサブスクライブ解除します。

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