轉錄消息 - Amazon Chime SDK

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

轉錄消息

Amazon Chime SDK 服務會在資料訊息中傳送TranscriptEvent物件,與出席者共用轉錄資訊。A TranscriptEvent 提供TranscriptTranscriptionStatus.

A Transcript 包含具有時間戳記、使用者屬性字詞和標點符號的結果。結果可能是「部分」,在這種情況下,系統通常在後續更新它TranscriptEvent。這可讓您快速查看轉錄內容,並在稍後視需要套用內嵌更新。

A TranscriptStatus 可以傳遞其中一個TranscriptionStatusType事件,在下一節的範例中列出。

較新版本的 Amazon Chime 開發套件包含額外的資料類型和協助函數,可用於常見的處理。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如果內容與過濾器中的單詞匹配,則為 true,否則為 false。

  10. transcription.results[i].alternatives[j].items[k].confidence是介於 0 和 1 之間的值。它表示引擎的信心,項目內容正確匹配口語的單詞,0 是最低的可信度,1 是最高的可信度。

  11. transcription.results[i].alternatives[j].items[k].stable指出目前的單字是否會在 future 的部分結果更新中變更。只有true在您的要求中將設定EnablePartialResultsStabilization為以啟用部分結果穩定功能時,才能使用此值。

  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僅支援「Transcribe」引擎,並提供實體的子類型。這些都是值,如「地址」、「借記號碼」等。

註冊事件處理常式 TranscriptEvents

下列範例會針 JavaScript對使用 Amazon Chime SDK 用戶端程式庫。不過,該模式在所有 Amazon Chime 開發套件之間都是一致的。

TranscriptionController中的RealtimeControllerRealtimeControllerFacade包含用於新增處理程式的特定函數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

我們提供了一個名為TranscriptionController接口的默認實現DefaultTranscriptionController。中的默認實現DefaultRealtimeControllerDefaultAudioVideoFacade返回一個DefaultTranscriptionController對象:

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

DefaultRealtimeController在其構造函數中也需要一個可選TranscriptionController對象。這允許您覆蓋行DefaultTranscriptionController為。開發人員應用程式透過TranscriptionController物件的物件訂閱和取消訂閱一或多個回呼:AudioVideoFacade

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