AI2026-06-26· 20분 읽기

TEN Framework TTS 구현 읽기 — Extension과 Client, HTTP Streaming과 WebSocket

TEN Framework main의 OpenAI·ElevenLabs TTS extension을 실제 소스 기준으로 읽습니다. Extension이 config와 client 생성을 맡고 vendor client가 합성·취소·정리를 처리하는 경계, OpenAI의 재사용 HTTP/2 client, ElevenLabs의 WebSocket 입력 흐름을 비교합니다. 지연과 chunk 크기는 고정 권장값 대신 provider 문서와 서비스 환경의 계측값으로 판단합니다.

TEN FrameworkTTSAIExtensionClientWebSocketHTTP/2Python

관점 선택

공통 계약과 벤더별 수명주기를 분리해서 봅니다

현재 OpenAI 경로는 재사용하는 httpx HTTP/2 클라이언트가 스트리밍 응답을 읽고, ElevenLabs 경로는 Python websockets 기반의 장기 연결과 재연결 로직을 어댑터가 소유합니다. 두 구현 모두 TTFB 이벤트를 낼 수 있지만 큐와 취소 수명주기는 동일하지 않습니다. 설계 검토 시 상속 클래스 이름보다 요청 단위, 연결 소유권, 실제 출력 포맷을 기준으로 비교해야 합니다.

OpenAI HTTP

재사용

httpx HTTP/2 클라이언트

ElevenLabs WS

증분 입력

websockets 장기 연결

검토 기준

Pinned

TEN main 커밋 기준