了解转录消息 - Amazon Chime SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

了解转录消息

Amazon Chime SDK 服务通过在数据消息中发送TranscriptEvent对象,与与会者共享转录信息。TranscriptEvent 传递 TranscriptTranscriptionStatus

Transcript 包括带有时间戳、用户归属单词和标点符号的结果。结果可能是“部分的”,在这种情况下,系统通常会在后续 TranscriptEvent 中对其进行更新。这使您可以快速查看转录,并在以后根据需要应用内联更新。

TranscriptStatus 可能会传递其中一个 TranscriptionStatusType 事件,如以下部分示例中所列。

较新版本的 Amazon Chime SDKs 包括用于常见处理的其他数据类型和辅助函数 a. 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 始终至少包含一个条目。如果包含多个条目,则最确定的条目位于列表的第一位。在大多数情况下,您可以选择 transcription.results[i].alternatives 中的第一个条目而忽略其他条目。

  4. transcription.results[i].alternatives[j].items 包括每个单词或标点符号的条目。

  5. transcription.results[i].alternatives[j].items[k]. 内容为所说的内容。

  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 为真,否则为假。

  10. transcription.results[i].alternatives[j].items[k].confidence 是 0 到 1 之间的值。它表示引擎对项目内容与所说单词正确匹配的置信度,其中 0 表示置信度最低,1 表示置信度最高。

  11. transcription.results[i].alternatives[j].items[k].stable 表示当前单词是否会在后续部分结果更新中发生变化。仅当您在请求中将 EnablePartialResultsStabilization 设置为 true 以启用部分结果的稳定性功能时,此值才可为真。

  12. transcription.results[i].alternatives[j].entities 包括内容识别或编修功能检测到的每个实体的条目。只有启用内容识别或编修后,才会填充该列表。实体可以是个人身份信息或个人健康信息等数据。在转录过程中,您可以使用实体来突出显示感兴趣的单词或对其采取行动。

  13. transcription.results[i].alternatives[j].entities[k].category 是实体的类别。它等于请求中提供的内容标识或密文类型,例如 PHI “PII” 或 “”。

  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 仅支持 Transcribe 引擎并提供实体的子类型。这些是诸如 `ADDRESS`、`CREDIT_ DEBIT _ NUMBER `之类的值。

为注册事件处理程序 TranscriptEvents

以下示例使用了 Amazon Chime SDK 客户端库。 JavaScript但是,所有亚马逊 Ch SDKs ime 的模式都是一致的。

RealtimeControllerRealtimeControllerFacade 中的 TranscriptionController 包括用于添加处理 TranscriptionEvents 的处理程序的特定函数:

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

TranscriptionController 有两个函数,用于管理对 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; }
使用可选 TranscriptionController

我们提供了名为 DefaultTranscriptionControllerTranscriptionController 接口的默认实现。DefaultRealtimeControllerDefaultAudioVideoFacade 中的默认实现会返回一个 DefaultTranscriptionController 对象:

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

DefaultRealtimeController 也在其构造函数中使用一个可选 TranscriptionController 对象。这允许您覆盖 DefaultTranscriptionController 行为。开发人员应用程序通过 AudioVideoFacade 对象的 TranscriptionController 对象订阅和取消订阅一个或多个回调:

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