트랜스크립션 메시지 이해 - Amazon Chime SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

트랜스크립션 메시지 이해

Amazon Chime SDK 서비스는 데이터 메시지로 TranscriptEvent 객체를 전송하여 참석자와 트랜스크립션 정보를 공유합니다. TranscriptEventTranscript 또는 TranscriptionStatus를 전달합니다.

Transcript에는 타임스탬프가 표시되고 사용자 속성이 지정된 단어 및 문장 부호를 포함한 결과가 있습니다. 결과는 ‘부분적’일 수 있으며, 이 경우 시스템은 보통 후속 TranscriptEvent에서 이를 업데이트합니다. 이렇게 하면 트랜스크립션을 빠르게 확인하고 나중에 필요에 따라 인라인 업데이트를 적용할 수 있습니다.

TranscriptStatus는 다음 섹션의 예제에 나열된 TranscriptionStatusType 이벤트 중 하나를 전달할 수 있습니다.

최신 버전의 Amazon Chime에는 일반적인 처리를 위한 추가 데이터 유형과 도우미 함수가 SDKs 포함되어 있습니다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에서는 향후 일부 결과 업데이트에서 현재 단어를 변경할지 여부를 나타냅니다. 이 값은 요청에서 EnablePartialResultsStabilizationtrue로 설정하여 일부 결과 안정화 기능을 활성화한 경우에만 true일 수 있습니다.

  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 에서 일관됩니다SDKs.

RealtimeControllerRealtimeControllerFacadeTranscriptionController에는 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 인터페이스의 기본 구현을 제공하고 있습니다. 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););