本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
了解转录消息
Amazon Chime SDK 服务通过在数据消息中发送TranscriptEvent
对象,与与会者共享转录信息。TranscriptEvent
传递 Transcript
或 TranscriptionStatus
。
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; }
数据准则
请记住这些准则。
transcription.results
可能有多个结果。如果为
transcription.results[i].isPartial = true
,则可能会更新整个结果。可能会更新,但不能保证。更新具有相同的transcript.result[i].resultId
。如果您要避免低置信度转录,则可以完全跳过部分结果。如果您要低延迟结果,则可以显示部分结果,然后在更新时完全覆盖。transcription.results[i].alternatives
始终至少包含一个条目。如果包含多个条目,则最确定的条目位于列表的第一位。在大多数情况下,您可以选择transcription.results[i].alternatives
中的第一个条目而忽略其他条目。transcription.results[i].alternatives[j].items
包括每个单词或标点符号的条目。transcription.results[i].alternatives[j].items[k].
内容为所说的内容。transcription.results[i].alternatives[j].items[k].attendee
为内容的用户归属(谁)。transcription.results[i].alternatives[j].items[k].startTimeMs
为内容的“时间”。这样可以按照单词的说话顺序在不同的用户之间 word-by-word呈现用户归因的转录。通常可以忽略
transcription.results[i].alternatives[j].items[k].endTimeMs
字段,但该字段旨在完整说明谁在何时说了什么内容。如果内容与过滤器中的单词匹配,则
transcription.results[i].alternatives[j].items[k].vocabularyFilterMatch
为真,否则为假。transcription.results[i].alternatives[j].items[k].confidence
是 0 到 1 之间的值。它表示引擎对项目内容与所说单词正确匹配的置信度,其中 0 表示置信度最低,1 表示置信度最高。transcription.results[i].alternatives[j].items[k].stable
表示当前单词是否会在后续部分结果更新中发生变化。仅当您在请求中将EnablePartialResultsStabilization
设置为true
以启用部分结果的稳定性功能时,此值才可为真。transcription.results[i].alternatives[j].entities
包括内容识别或编修功能检测到的每个实体的条目。只有启用内容识别或编修后,才会填充该列表。实体可以是个人身份信息或个人健康信息等数据。在转录过程中,您可以使用实体来突出显示感兴趣的单词或对其采取行动。transcription.results[i].alternatives[j].entities[k].category
是实体的类别。它等于请求中提供的内容标识或密文类型,例如 PHI “PII” 或 “”。transcription.results[i].alternatives[j].entities[k].confidence
衡量特定内容真正成为实体的引擎有多强大。请注意,这与项目级别的置信度不同,后者衡量引擎对单词本身正确性的信心。transcription.results[i].alternatives[j].entities[k].content
是构成实体的实际文本。这可以是多个项目,例如地址。transcription.results[i].alternatives[j].entities[k].startTimeMs
捕获实体开始讲话的时间。transcription.results[i].alternatives[j].entities[k].endTimeMs
捕获实体结束讲话的时间。transcription.results[i].alternatives[j].entities[k].type
仅支持 Transcribe 引擎并提供实体的子类型。这些是诸如 `ADDRESS`、`CREDIT_ DEBIT _ NUMBER `之类的值。
为注册事件处理程序 TranscriptEvents
以下示例使用了 Amazon Chime SDK 客户端库。 JavaScript但是,所有亚马逊 Ch SDKs ime 的模式都是一致的。
RealtimeController
和 RealtimeControllerFacade
中的 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
我们提供了名为 DefaultTranscriptionController
的 TranscriptionController
接口的默认实现。DefaultRealtimeController
和 DefaultAudioVideoFacade
中的默认实现会返回一个 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););