View a markdown version of this page

텍스트 전송 및 오디오 수신 - Amazon Polly

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

텍스트 전송 및 오디오 수신

양방향 스트리밍 세션에는 연결을 열고, 텍스트를 보내고, 오디오를 동시에 수신한 다음 입력이 완료되면 스트림을 닫는 작업이 포함됩니다. 다음 섹션에서는 각 단계를 자세히 설명합니다.

스트림 열기

애플리케이션은 SDK를 통해 StartSpeechSynthesisStream 작업을 호출하여 합성 파라미터(Engine, VoiceId, 및 OutputFormat선택적으로 LanguageCode, LexiconNames, )를 지정합니다SampleRate. SDK는 HTTP/2 연결을 설정하고 양방향 스트림은 입력 이벤트를 수락할 준비가 되었습니다.

텍스트 전송

클라이언트는 입력 스트림에서 하나 이상의 TextEvent 메시지를 보냅니다. 전체 입력이 준비될 때까지 기다리지 않고 텍스트를 사용할 수 있게 되는 즉시 각 이벤트를 전송할 수 있습니다. 텍스트 이벤트는 문장 또는 구두점 경계에 맞출 필요가 없습니다. Amazon Polly는 텍스트를 내부적으로 재어셈블하고 입력이 이벤트 간에 어떻게 분할되는지에 관계없이 자연 사운드 스피치를 생성합니다.

참고

SSML을 사용하는 경우 각 SSML 문서는 단일 내에 독립적으로 포함되어야 합니다TextEvent. SSML 태그를 여러 이벤트로 분할할 수 없습니다. 그러나 동일한 스트림 내에서 일반 텍스트 이벤트와 SSML 이벤트를 혼합할 수 있습니다.

스트림에는 다음과 같은 시간 제한이 적용됩니다.

  • 최대 스트림 지속 시간: 10분. Amazon Polly는 활동에 관계없이 10분 후에 스트림을 닫습니다. 콘텐츠에 시간이 더 필요한 경우 나머지 텍스트에 대해 새 스트림을 엽니다.

  • 연속 이벤트 간 유휴 제한 시간: 5초. 5초 동안 입력 이벤트가 전송되지 않으면 Amazon Polly가 스트림을 닫습니다. 텍스트 소스가 5초 이상 일시 중지된 경우 시간 초과를 방지하기 위해 빈 문자열 또는 공백 문자열과 TextEvent 함께 연결 유지를 전송합니다.

플러시로 버퍼링된 텍스트 강제 합성

기본적으로 Amazon Polly는 자연어 경계를 기반으로 버퍼링된 텍스트를 합성할 시기를 결정합니다. 이렇게 하면 최상의 오디오 품질이 생성되지만를 전송한 직후에 오디오가 반환되지 않을 수 있습니다TextEvent.

플러싱을 사용하면 합성이 수행되는 시기를 제어할 수 있습니다. 플러시할 때 Amazon Polly는 텍스트가 자연 경계로 끝나는지 여부에 관계없이 지금까지 버퍼링된 모든 텍스트를 즉시 합성합니다. 이는 텍스트 소스가 논리적 섹션 사이에서 일시 중지되고 지금까지 전송된 오디오를 전송하려는 경우에 유용합니다.

플러시하려면 FlushStreamConfiguration 파라미터를Force에서 true로 설정합니다TextEvent. 새 콘텐츠를 추가하지 않고 합성을 트리거하도록 플러시 플래그TextEvent가 설정된 빈를 보낼 수도 있습니다.

플러싱은 절충입니다. true 중간 문장Force으로 설정하면 신디사이저에 다음 사항에 대한 컨텍스트가 없기 때문에 발음 및 불신에 영향을 미칠 수 있습니다. 최상의 결과를 얻으려면 Amazon Polly가 가능하면 자연 경계로 버퍼링하도록 허용하고 지연 시간 요구 사항에 따라 필요한 경우에만 합성을 강제합니다.

오디오 수신

Amazon Polly는 텍스트를 합성할 때 출력 스트림에 AudioEvent 메시지를 반환합니다. 각 이벤트에는 오디오 데이터 청크가 포함됩니다. 애플리케이션이 전체 오디오 출력을 생성하려면 이러한 청크를 누적해야 합니다(예: 파일 또는 오디오 버퍼에 순차적으로 기록). 텍스트 이벤트를 보내는 동안 오디오 이벤트가 도착할 수 있습니다.

스트림 닫기

모든 입력 텍스트가 전송되면 클라이언트는 CloseStreamEvent를 전송합니다. Amazon Polly는 버퍼링된 나머지 텍스트 처리를 완료하고, 최종 오디오 이벤트를 전송하고, 합성된 총 문자 수가 포함된 StreamClosedEvent를 반환합니다. 스트림을 종료하기 위해 플러시에 의존CloseStreamEvent하는 대신 항상를 전송합니다. 닫으면 버퍼링된 모든 텍스트가 합성되고 반환됩니다.

요청 파라미터, 이벤트 유형 및 오류에 대한 자세한 내용은 StartSpeechSynthesisStream API 참조를 참조하세요.