영상에 보이스오버를 넣고 원래 소리도 살리는 방법
영상에 보이스오버를 넣으려면 영상 자체의 소리 위에 내레이션을 믹싱하세요. 대본을 TTS로 음성으로 만든 뒤, 두 트랙을 담아 클립을 MP4 하나로 렌더링합니다.

영상에 보이스오버를 넣으려면 내레이션을 녹음하거나 생성해 화면 위에 얹고, 그 아래로 영상 자체의 소리를 줄인 다음 새 파일로 내보내세요. Sume에서는 TTS 1.0으로 대본을 음성으로 만들고 클립의 원래 소리를 분리한 뒤, Timeline 1.0에서 클립을 렌더링합니다. 이때 줄인 원래 소리는 오디오 스파인으로, 내레이션은 그 위에 믹싱되는 사운드트랙으로 넣습니다.
아래 내용은 2026-09-27에 확인한 Timeline 1.0, 오디오 분리, Models 개요 (영문) 문서와 Sume API 레퍼런스의 TTS 및 Timeline 스키마를 기준으로 합니다. 현재 동작이라고 설명한 내용은 Sume의 코드에서 확인한 것입니다.
내레이션은 어떻게 만드나요?
TTS 1.0으로 생성하세요. 최대 20,000자의 대본을 transcript로 담아 POST /v1/tts-1.0/generate로 보내고, 목소리가 준비된 아바타의 avatar_id나 avatar_handle, 또는 voice.id로 목소리를 지정합니다. 영어가 아닌 대본이면 language를 설정하세요. 생략하면 영어가 기본값입니다. 출력은 기본적으로 mp3이며, 1,200초보다 긴 음성은 tts_duration_exceeded로 실패합니다. 목소리, 단어별 타이밍, 나머지 필드는 텍스트 음성 변환(TTS) API에서 다룹니다.
영상 자체의 소리 위에 보이스오버를 어떻게 얹나요?
영상은 이전 Sume Job의 출력처럼 이미 워크스페이스에 있는 media.sume.com 파일이어야 합니다. 이 규칙은 엔드포인트별로 받는 URL에서 설명합니다. TTS 내레이션은 이미 그곳에 있습니다. 완료된 TTS 결과에는 미러링된 오디오 아티팩트가 담기기 때문입니다.
현재 컴파일러에서 렌더의 소리는 오디오 스파인과 선택 사항인 사운드트랙에서만 나오고, 클립 자체에서는 전혀 나오지 않습니다. 그러니 먼저 POST /v1/audio-detach로 클립의 소리를 분리하세요. 기본 출력인 wav가 스파인에 맞는 파일이며, 결과에는 duration_seconds가 나옵니다. 그다음 렌더링합니다.
soundtrack.loop는 켜지 마세요. 이 옵션은 스파인이 끝날 때까지 사운드트랙을 반복하므로 내레이션이 다시 재생됩니다. 켜지 않으면 더 짧은 내레이션은 그냥 멈추고, 렌더가soundtrack_shorter_than_spine경고를 냅니다.- 오디오 트랙이 없는 클립은 분리할 수 없습니다(
detach_source_has_no_audio). 이때는 내레이션을 스파인으로 삼고,audio.duration_seconds를 내레이션 길이로 설정하고,soundtrack은 빼세요. - 현재 코드에서 믹스는 스파인과 함께 끝나므로, 영상보다 긴 내레이션은 끝부분이 잘립니다. 사운드트랙에는 시작 시각 필드가 없으므로 목소리는 0초에서 시작합니다.
output은 클립 크기에 맞추세요. 기본 프레임은 1080×1920입니다. 기본mode는async이므로GET /v1/jobs/:id/status를 폴링한 다음,GET /v1/jobs/:id/result에서 새 MP4의video_url을 읽으세요.
| 필드 | 예시의 값 | 효과 |
|---|---|---|
audio.url | 클립에서 분리한 소리 | 스파인. 출력이 따라가는 트랙. |
audio.duration_seconds | 오디오 분리 결과의 duration_seconds | 출력 길이(1초에서 1,800초까지). 그래서 영상이 원래 길이를 유지함. |
audio.gain_db | −12 | 원래 소리를 줄임. 범위는 −60에서 12 dB, 기본값 0. |
soundtrack.url | TTS 내레이션 | 스파인과 함께 믹싱되며 첫 프레임부터 시작. |
soundtrack.gain_db | 0 | 목소리에 게인을 더하지 않음. 생략하면 사운드트랙이 −16 dB로 줄어듦. |
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: voiceover-clip-001" \
-d '{
"audio": {
"url": "https://media.sume.com/artifacts/artf_demo/original.wav",
"duration_seconds": 45,
"gain_db": -12
},
"soundtrack": {
"url": "https://media.sume.com/artifacts/artf_demo/narration.mp3",
"gain_db": 0
},
"output": { "width": 1920, "height": 1080 },
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4", "start": 0, "duration": 45 }
]
}'목소리가 나올 때만 원래 소리를 낮출 수 있나요?
네, 역할을 바꾸면 됩니다. 내레이션을 스파인(audio.url)으로, 분리한 원래 소리를 soundtrack으로 두세요. 원래 소리가 기본값인 −16 dB로 줄지 않도록 gain_db는 0으로 두고, 스파인에서 말소리가 나오는 동안 줄일 목표 감쇠량인 duck_db를 0에서 20 사이로 지정합니다. 그러면 출력은 내레이션 길이만큼 이어집니다. audio.duration_seconds를 내레이션 길이로 설정하고(예: TTS에 timestamps.words를 요청했다면 마지막 단어의 end), 클립의 슬롯도 그 지점에서 끝내세요. 더킹은 영상에 배경 음악 넣기에서 자세히 설명합니다.
보이스오버가 화면 속 입 모양과 맞나요?
아니요, 맞지 않습니다. 보이스오버는 소리만 바꾸며, Sume의 모델 문서에 따르면 영상 모델은 생성된 TTS나 나중에 입힌 보이스오버에 맞춰 립싱크하지 않습니다. 화면에서 말하는 장면이 없는 영상에 내레이션을 입히세요. 스틸 이미지와 오디오로 말하는 클립을 새로 만들려면 립싱크 API를 참고하세요.
보이스오버를 넣는 비용은 얼마인가요?
과금되는 Job은 세 개입니다. TTS는 1,000자당 $0.0475이며 공백과 문장 부호도 글자 수에 들어갑니다. 오디오 분리는 GET /v1/catalog에 나온 Job당 고정 요율이고, 렌더는 출력 분당 $0.10이며 ceil(audio.duration_seconds / 60)분으로 예약됩니다. TTS와 렌더의 요율은 API 요금에 나와 있고, 세 Job 모두 기본적으로 5.5% 에이전트 수수료가 더해져 과금됩니다.
출처
관련 글
미디어 도구 카테고리의 다른 글
- AI로 LinkedIn 배너 만들기: 1584×396 커버 이미지
LinkedIn은 4:1 비율의 1584 x 396픽셀 커버 이미지를 권장합니다. Sume에서 Nano Banana 2로 4:1 이미지를 생성한 뒤 정확한 크기로 조정하세요.
- AI로 YouTube 배너 만들기: 2560×1440 채널 배너
YouTube는 16:9, 6 MB 이하의 2560 x 1440픽셀 채널 배너를 권장합니다. Sume에서는 ChatGPT Image 2.5가 이 크기를 커스텀 image_size로 그대로 받습니다.
- AI 배너 생성기: 8:1까지 가로로 긴 배너 만들기
배너 비율을 먼저 정한 뒤 그 비율을 나열하는 모델을 고르세요. Sume에서 ChatGPT Image 2.5는 3:1까지 정확한 크기를 받고, Nano Banana 2는 8:1까지 지원합니다.
- AI로 이미지 화면 비율 바꾸기: 9:16·16:9로 다시 렌더링
AI로 이미지 화면 비율을 바꾸려면 새 영역을 아웃페인팅하거나 새 비율로 이미지를 다시 그리세요. Sume에는 언크롭 도구가 없으므로 다시 그리는 방법을 설명합니다.
작성자 Sume