섹션별 상세
기존 TTS API는 요청-응답 패턴의 제약으로 인해 LLM이 모든 토큰을 생성할 때까지 합성을 시작할 수 없어 지연 시간이 누적되는 구조적 병목이 존재했다. 새로운 양방향 스트리밍 방식은 텍스트가 생성되는 즉시 단어 단위로 전송하여 합성을 시작하므로 첫 오디오 재생까지의 시간을 획기적으로 줄인다.

StartSpeechSynthesisStream API는 HTTP/2 전이중 통신을 지원하여 클라이언트가 텍스트 이벤트를 보내는 동안 서버는 생성된 오디오 청크를 즉시 반환한다. 내부 테스트에서 970단어 분량의 텍스트 처리 시 총 시간이 115초에서 70초로 단축되는 성능 향상이 확인됐다.

전통적인 방식에서 지연 시간을 줄이기 위해 사용하던 복잡한 문장 분리 미들웨어나 병렬 API 호출 로직이 더 이상 필요하지 않게 되어 아키텍처가 단순해진다. 단일 영구 연결을 통해 상태를 유지하므로 서버 측 부하와 관리 포인트가 줄어들고 운영 비용 절감 효과를 기대할 수 있다.
개발자는 Java, JavaScript 등 다양한 AWS SDK를 통해 이 기능을 즉시 적용할 수 있으며, 플러시 설정을 통해 합성 타이밍을 정교하게 제어할 수 있다. 특히 LLM의 스트리밍 응답과 연동할 때 문장 부호 단위로 플러시를 수행하여 음질과 응답성 사이의 균형을 맞추는 구현이 가능하다.
java
PollyAsyncClient pollyClient = PollyAsyncClient.builder()
.region(Region.US_WEST_2)
.credentialsProvider(DefaultCredentialsProvider.create())
.build();
StartSpeechSynthesisStreamRequest request = StartSpeechSynthesisStreamRequest.builder()
.voiceId(VoiceId.JOANNA)
.engine(Engine.GENERATIVE)
.outputFormat(OutputFormat.MP3)
.sampleRate("24000")
.build();비동기 Polly 클라이언트 및 스트리밍 요청 객체를 생성하는 기본 설정 코드
java
StartSpeechSynthesisStreamResponseHandler responseHandler = StartSpeechSynthesisStreamResponseHandler.builder()
.subscriber(StartSpeechSynthesisStreamResponseHandler.Visitor.builder()
.onAudioEvent(audioEvent -> {
byte[] audioData = audioEvent.audioChunk().asByteArray();
playOrBufferAudio(audioData);
})
.onStreamClosedEvent(event -> {
System.out.println("Synthesis complete. Characters processed: " + event.requestCharacters());
})
.build())
.build();Visitor 패턴을 사용하여 실시간으로 수신되는 오디오 이벤트를 처리하는 핸들러 구현
java
llmClient.streamCompletion(prompt, token -> {
boolean isSentenceEnd = token.endsWith(".") || token.endsWith("!") || token.endsWith("?");
pollyStreamer.sendText(token, isSentenceEnd);
});LLM에서 생성되는 토큰을 실시간으로 Polly 스트림에 전달하고 문장 끝에서 플러시를 수행하는 로직
용어 해설
- 양방향 스트리밍(Bidirectional Streaming)
- — 클라이언트와 서버가 단일 연결을 통해 데이터를 동시에 주고받는 통신 방식이다. 텍스트를 보내는 동안 동시에 오디오를 수신할 수 있어 대화형 AI의 응답 속도를 극대화하는 데 필수적이다.
- HTTP/2
- — 기존 HTTP/1.1의 성능 한계를 극복하기 위해 개발된 네트워크 프로토콜이다. 멀티플렉싱을 지원하여 하나의 연결에서 여러 요청과 응답을 동시에 처리할 수 있어 지연 시간을 줄인다.
- 토큰 단위 생성(Token-by-token Generation)
- — 대형 언어 모델(LLM)이 전체 문장을 한 번에 출력하지 않고 작은 단위인 토큰을 순차적으로 생성하는 방식이다. 이 과정에서 발생하는 지연을 줄이기 위해 실시간 음성 합성 기술과의 연동이 중요하다.
- 플러시 설정(Flush Configuration)
- — 버퍼에 쌓인 텍스트 데이터를 즉시 처리하도록 강제하는 제어 기능이다. 문장 끝이나 특정 시점에 이를 호출하여 대기 중인 텍스트를 즉시 음성으로 합성함으로써 실시간성을 확보한다.
기술
- Amazon Polly
- AWS SDK for Java 2.x
- HTTP/2
- Generative Engine
활용 사례
- 대화형 AI 어시스턴트
- 실시간 통번역 시스템
- 지능형 음성 응답(IVR)
- 게임 내 동적 NPC 대사 생성
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 03. 27.수집 2026. 03. 27.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
