여러 목소리로 TTS 만들기: 대사마다 음성 하나씩

TTS 요청은 음성 하나로 말합니다. 대화라면 각 화자의 대사를 그 화자의 음성으로 합성한 뒤, 클립을 대본 순서대로 이어 붙이세요.

읽는 시간 5분Sume
전체 글

여러 목소리로 텍스트 음성 변환(TTS)을 하려면 대본을 화자별로 나누고, 각 화자의 대사를 그 화자의 음성으로 합성한 뒤, 클립을 대본 순서대로 이어 붙여 오디오 파일 하나로 만드세요. Sume TTS 요청은 정확히 음성 하나로 말하므로, 대화는 차례마다 POST /v1/tts-1.0/generate 하나씩, 그리고 클립을 최대 20개까지 빈틈없이 이어 붙이는 타임라인 오디오 concat 하나로 이뤄집니다.

규칙은 2026-09-27에 확인한 Sume API 레퍼런스의 TTS 스키마와 타임라인 오디오 문서에서 가져왔습니다. Sume API 레퍼런스는 API 레퍼런스 문서의 바탕이 되는 OpenAPI 문서입니다. 가격은 API 요금 페이지를 만드는 코드에서 확인했습니다. 같은 대화를 카메라 앞에서 말하는 영상으로 만들려면 AI 아바타 대화 영상 API를 참고하세요.

왜 차례마다 요청을 따로 보내야 하나요?

TTS 요청은 음성 선택 필드를 하나만 받습니다. 목소리가 준비된 아바타의 avatar_id나 avatar_handle, 또는 voice.id입니다. 아바타와 voice.id를 함께 보내면 둘이 일치해야 하며, 그렇지 않으면 요청이 400으로 실패합니다. 스키마에는 두 번째 음성을 위한 필드가 없으므로 transcript 중간에 음성을 바꿀 수 없습니다. 클립 수를 줄이려면 같은 화자가 연달아 말하는 대사를 요청 하나로 합치세요.

화자마다 음성은 어떻게 고르나요?

화자마다 선택 필드를 하나씩 정하고 대본 전체에서 그대로 유지하세요. 목소리가 준비된 아바타 두 개, 이미 있는 voice.id 값 두 개, 또는 아바타와 voice.id를 하나씩 써도 됩니다. 목소리가 준비된 아바타를 나열하는 방법과 Sume가 받는 voice.id 형식은 텍스트 음성 변환 API에서, 아바타를 만드는 방법은 재사용 가능한 AI 아바타 만들기에서 다룹니다.

대사는 어떻게 생성하나요?

대본 순서대로 차례마다 요청을 하나씩 보내세요.

  • 그 화자의 선택 필드를 쓰고, 모든 대사에 같은 language와 output_format을 쓰세요.
  • WAV(pcm_s16le)로 요청하세요. 타임라인 오디오 문서는 다시 이어 붙일 오디오는 WAV로 유지하라고 권합니다.
  • 대사마다 dialogue-07-line-02처럼 고유한 Idempotency-Key를 주세요. 같은 키와 본문으로 재시도하면 두 번째 유료 Job 대신 원래 Job이 반환됩니다.
curl -X POST https://api.sume.com/v1/tts-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: dialogue-07-line-02" \
  -d '{
    "transcript": "Good question. Let me show you how the refund works.",
    "avatar_handle": "acme_guest",
    "language": "en",
    "output_format": { "container": "wav", "encoding": "pcm_s16le", "sample_rate": 44100 }
  }'

대사들을 오디오 파일 하나로 어떻게 합치나요?

모든 대사의 Job이 완료되면 오디오 URL을 대본 순서대로 operation: "concat", 그리고 이 경로에 필수인 Idempotency-Key와 함께 POST /v1/timeline-1.0/audio로 보내세요. GET /v1/jobs/:id/status를 폴링한 다음 GET /v1/jobs/:id/result를 읽으세요. 결과에는 audio_url 하나와, 각 part의 start 오프셋이 담긴 segments[]가 있습니다. 이 오프셋이 각 대사가 시작하는 지점이므로, 자막이나 화자 이름이 붙은 대본을 만들 때 유용합니다.

대사가 20개를 넘으면 최대 20개씩 묶어 이어 붙인 다음, 그 묶음 파일들을 다시 이어 붙이세요. concat은 매번 1,800초 출력 상한 안에서 내구성 있는 media.sume.com 파일을 반환합니다.

타임라인 오디오의 concat 규칙, 2026-09-27 확인.
규칙값
Job당 part 수1–20개, 순서대로
part URL워크스페이스의 media.sume.com 오디오
채널 레이아웃모든 part가 같아야 함. 다르면 audio_parts_channel_mismatch로 Job 실패
이음새샘플 도메인 조인, 무음 추가 없음
출력기본 WAV(pcm_s16le), 최대 1,800초
curl -X POST https://api.sume.com/v1/timeline-1.0/audio \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: dialogue-07-join" \
  -d '{
    "operation": "concat",
    "parts": [
      { "url": "https://media.sume.com/artifacts/artf_demo/line-01-host.wav" },
      { "url": "https://media.sume.com/artifacts/artf_demo/line-02-guest.wav" },
      { "url": "https://media.sume.com/artifacts/artf_demo/line-03-host.wav" }
    ]
  }'

화자의 말이 겹치거나 대사 사이에 쉼을 둘 수 있나요?

이어 붙이는 단계에서는 안 됩니다. 타임라인 오디오에는 concat과 split이라는 두 가지 작업이 있고, concat은 이음새에 무음 없이 part를 차례로 재생하므로 음성이 겹치거나 크로스페이드되지 않습니다. 대사 사이의 쉼은 클립에 이미 들어 있는 무음이 전부입니다. Sume에서 음성 아래에 음악을 깔려면 Timeline 1.0 렌더가 필요하며, 렌더 결과는 MP4입니다. API로 영상에 배경 음악 넣기를 참고하세요.

여러 목소리 트랙의 비용은 얼마인가요?

대사마다 공백과 문장 부호를 포함한 자기 글자 수에 따라 1,000자당 $0.0475로 과금되며, 기본적으로 5.5% 에이전트 수수료가 더해집니다. concat은 Job마다 타임라인 오디오 페이지에 나온 요율로 과금되며, 이 페이지는 요율을 GET /v1/catalog에서 확인하라고 안내합니다.

출처

관련 글

활용 사례 카테고리의 다른 글

활용 사례 글 전체 보기

작성자 Sume