本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
是实体的类别。它等同于请求中提供的内容识别或编修类型,例如“PII”或“PHI”。 -
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 引擎并提供实体的子类型。这些是诸如“地址”、“CREDIT_DEBIT_NUMBER”等值。
为注册事件处理程序 TranscriptEvents
以下示例使用适用于 Amazon Chime 软件开发工具包的客户端库。 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););