가이드

스트리밍 음성 합성 API: 최소 300ms에 첫 소리

완성된 파일을 돌려주는 음성 합성 API는 듣는 사람이 텍스트 전체를 기다리게 만듭니다. 챗봇, 게임 캐릭터, 긴 기사에서는 이 기다림이 바로 대답하는 앱과 생각에 잠긴 앱의 차이가 됩니다.

SuperClonica 음성 합성 API는 스트리밍으로 보낼 수 있습니다. "stream": true를 보내면 오디오가 만들어지는 대로 도착합니다. 운영 중인 서비스에서 측정했을 때 첫 소리는 요청 후 최소 300ms에 도착했고, 긴 텍스트도 이를 늦추지 않았습니다. 텍스트를 조각으로 나눠 읽고 첫 조각을 먼저 보내기 때문입니다.

스트리밍이 작동하는 방식

텍스트는 문장 경계에서 나뉘고, 조각들은 여러 워커에서 동시에 읽힙니다. 첫 조각은 짧고 대기열의 다른 모든 작업보다 우선하므로, 뒤에 무엇이 오든 금방 준비됩니다. 서버는 조각을 순서대로 하나의 Ogg 스트림으로 이어 붙이고, 나머지를 읽는 동안에도 준비된 조각부터 보냅니다.

  • 첫 소리: 측정 기준 최소 300ms, 첫 오디오 바이트까지.
  • 3839자 텍스트: 첫 소리 약 0.5초, 전체 파일 5.6초.
  • 약 1만 6000자, 15.6분 분량: 전체 파일 25.6초.
  • 시간은 그때의 부하에 따라 다르며, 부하가 높으면 요청은 공정한 대기열에서 기다립니다.

호출 방법

작업 공간의 API 섹션에서 키를 만들고 "stream": true와 함께 텍스트를 보내세요. curl에서는 -N으로 버퍼링을 끄면 스트림을 바로 플레이어로 넘길 수 있습니다.

curl -N https://superclonica.com/api/v1/speech -H "Authorization: Bearer $SUPERCLONICA_KEY" -H "Content-Type: application/json" -d '{"text": "안녕하세요! 다음 문장을 만드는 동안 이 문장이 재생됩니다.", "voice": "F1", "language": "ko", "stream": true}' | ffplay -nodisp -autoexit -

Python에서는 requests의 stream=True와 iter_content로 도착하는 대로 바이트를 받을 수 있습니다. 브라우저에서는 스트림을 그대로 넘겨 주는 자체 엔드포인트에 audio 요소를 연결하세요.

쓰기 전에 알아 둘 점

기본 형식인 Ogg Vorbis는 길이와 관계없이 스트리밍됩니다. mp3와 wav는 텍스트가 약 30초 분량보다 길 때 스트리밍되고, 짧으면 하나의 파일로 옵니다. 첫 소리 전에 실패하면 상태 코드가 있는 일반 오류가 돌아옵니다. 그 뒤에 실패하면 전송이 일찍 끝나므로, 끊긴 스트림은 실패로 보고 텍스트를 다시 보내세요. 503 응답은 대기열이 가득 찼다는 뜻입니다. Retry-After 헤더의 초만큼 기다린 뒤 같은 Idempotency-Key로 다시 보내세요.

다른 서비스가 앞선 점

ElevenLabs와 Cartesia는 텍스트 자체도 WebSocket으로 스트리밍 입력받을 수 있어, 언어 모델이 아직 쓰는 동안 말하는 음성 에이전트에 편리합니다. SuperClonica API는 텍스트 전체를 한 번의 요청으로 받습니다. Supertonic 3는 아직 중국어를 지원하지 않으며, 대형 클라우드는 SSML과 단어별 타임스탬프를 제공합니다. 그런 기능이 필요하다면 그쪽이 낫고, 빠른 첫 소리와 많은 시간을 싸게 원한다면 무료 요금제로 저희 API를 써 보세요.