기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
트랜스크립션 메시지
Amazon Chime SDK 서비스는 트랜스크립션 정보를 전송하여 참석자와 트랜스크립션 정보를 공유합니다.TranscriptEvent
데이터 메시지의 객체. ATranscriptEvent
를 제공합니다Transcript
또는TranscriptionStatus
.
ATranscript
타임스탬프가 지정된 사용자 지정 단어와 구두점이 포함된 결과를 포함합니다. 결과는 “부분적”일 수 있으며, 이 경우 시스템은 일반적으로 후속 단계에서 결과를 업데이트합니다.TranscriptEvent
. 이렇게 하면 트랜스크립션을 빠르게 확인하고 나중에 필요에 따라 인라인 업데이트를 적용할 수 있습니다.
ATranscriptStatus
다음 중 하나를 제공할 수 있습니다.TranscriptionStatusType
이벤트는 다음 섹션의 예제에 나열되어 있습니다.
최신 버전의 Amazon Chime SDK에는 일반적인 처리를 위한 추가 데이터 유형과 도우미 함수가 포함되어 있습니다.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
내용이 필터의 단어와 일치하면 true이고, 그렇지 않으면 false입니다.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 엔진에서만 지원되며 개체의 하위 유형을 제공합니다. 이러한 값은 '주소', '신용_직불_번호' 등과 같은 값입니다.
에 대한 이벤트 핸들러 등록TranscriptEvents
다음 예제에서는 Amazon Chime SDK 클라이언트 라이브러리를 다음 용도로 사용합니다.JavaScript. 하지만 이 패턴은 모든 아마존 차임 SDK에서 동일합니다.
더TranscriptionController
에서RealtimeController
과RealtimeControllerFacade
처리하는 핸들러를 추가하기 위한 특정 함수를 포함합니다.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
. 의 기본 구현DefaultRealtimeController
과DefaultAudioVideoFacade
a를 반환합니다.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););