kie · Gemini 3.8 Flash-Lite TTS
kie AI로 구글 Gemini TTS 쓰는 법 | 가입·충전·API 호출부터 목소리 70개 샘플까지
영상 내레이션을 매번 녹음하기 어렵다면, 대본을 API에 보내 WAV 파일로 받는 방법이 있습니다. 구글의 최신 음성 모델을 kie의 키 하나로 부르고, 한 번 충전한 크레딧은 기한 없이 쓰는 흐름을 처음부터 끝까지 정리했습니다.
게시 2026-10-15 · 가격·정책은 2026년 10월 15일 kie 공식 페이지 기준
Part 1 · 개요
왜 kie로 Gemini TTS를 부르나
구글은 2026년 9월 22일 Gemini 3.8 Flash TTS와 Flash-Lite TTS를 Gemini API에 내놓았습니다. 그중 Flash-Lite는 빠르고 싸게, 많이 뽑는 쪽에 맞춘 모델입니다. 영상 내레이션, 쇼츠 대본 낭독, 두 사람이 묻고 답하는 설명 영상처럼 한 달에 수십 개씩 음성이 필요한 작업에 잘 맞습니다.
kie는 여러 회사의 AI 모델을 한 API 키와 한 잔액으로 부르는 통로입니다. 영상 모델, 이미지 모델, 음악 모델을 이미 kie로 쓰고 있다면 음성도 같은 키로 이어 붙이면 됩니다. 월 구독이 아니라 선불 크레딧이고, 이 크레딧은 만료되지 않습니다. 한 달에 몇 번만 내레이션을 뽑는 사람도 남은 잔액을 날릴 걱정이 없습니다.
모델
Gemini 3.8 Flash-Lite TTS
구글이 2026년 9월 공개한 저지연·대량 처리용 음성 합성 모델입니다. kie에서 google/gemini-3-8-flash-lite-tts로 부릅니다.
크레딧 유효기간
없음
kie 이용약관 4조와 환불 정책, FAQ 모두 구매한 크레딧은 만료되지 않는다고 적고 있습니다.
목소리
70개 + 음성 복제
용도별 10개 묶음의 프리셋 70개가 있고, 본인 녹음 두 개로 그 작업에서만 쓰는 임시 복제도 됩니다.
실제 단가
7초 약 0.15크레딧
한국어 50자 한 문장이 0.13~0.19크레딧, 2분 33초 2인 대화가 3.27크레딧이었습니다. 1크레딧은 0.005달러입니다.
이 글의 예제와 비용은 단비가 실제 유튜브 영상 내레이션을 만들며 남긴 요청·응답 기록을 바탕으로 합니다. 목소리 70개와 2인 대화 샘플은 아래 샘플 절에서 바로 들어 볼 수 있습니다.
[광고] 제휴 링크 · 가입 시 무료 80크레딧
kie 가입하고 시작하기Part 1 · 개요
Gemini 3.8 Flash-Lite TTS 한눈에 보기
같은 날 나온 두 모델은 용도가 다릅니다. Flash-Lite는 101개 언어, 낮은 지연과 높은 처리량, 낮은 단가가 강점입니다. Flash는 130개 언어와 더 풍부한 연기, 지역 억양, 세밀한 창작 제어가 강점입니다. 오디오북이나 캐릭터 연기처럼 표현이 중요하면 Flash, 정보 전달형 내레이션을 많이 뽑으면 Flash-Lite로 시작하는 편이 비용 대비 낫습니다. kie에서는 model 값만 바꾸면 둘을 오갈 수 있습니다.
| 항목 | 값 | 설명 |
|---|---|---|
| 모델 ID | google/gemini-3-8-flash-lite-tts | 요청 본문 model 값에 그대로 넣습니다. |
| 지원 언어 | 101개 | 형제 모델 Gemini 3.8 Flash TTS는 130개 언어, 표현력 중심입니다. |
| 출력 | WAV · 16-bit PCM · 24kHz · mono | 영상 편집기에 바로 넣을 수 있는 무손실 파일입니다. |
| 화자 | 최대 2명 | Speaker 1, Speaker 2 형식. 한 요청에서 두 사람 대화를 한 파일로 뽑습니다. |
| 대사 길이 | 턴당 최대 10,000자 | dialogue_turns 한 항목의 text 기준입니다. |
| 가격 | 입력 70크레딧 / 100만 토큰 · 오디오 출력 840크레딧 / 100만 토큰 | 약 0.35달러, 4.20달러. 공식가 대비 30% 낮고 2026년 12월 31일까지의 프로모션 가격입니다. |
가격은 토큰 단위라 감이 잘 오지 않습니다. 실제로는 한국어 50자, 약 7초짜리 문장 하나가 0.15크레딧 안팎, 2분 30초 분량 2인 대화가 3크레딧 남짓이었습니다. 1크레딧이 0.005달러이니 2분 30초에 2센트가 안 됩니다. 표의 단가는 구글 프로모션 가격을 따른 것이라 2026년 12월 31일 이후 바뀔 수 있습니다.
Part 2 · 가입·결제
가입과 무료 크레딧
- kie 가입 페이지에 들어가 로그인 버튼으로 계정을 만듭니다. 구글 계정으로 바로 가입할 수 있습니다.
- 가입하면 새 사용자용 무료 크레딧 80개가 들어옵니다. Flash-Lite TTS 기준으로 7초짜리 문장 수백 개를 시험할 수 있는 양입니다.
- 모델 페이지의 플레이그라운드에서 화자를 추가하고 대사를 넣어 먼저 들어 봅니다. 화면에서 만든 요청은 JSON 보기로 그대로 확인할 수 있어 API 요청 본문을 짜는 데 도움이 됩니다.
- 왼쪽 메뉴의 Logs에서 방금 만든 작업의 입력값, 상태, 소모 크레딧, 결과 파일을 확인합니다. 과금이 이상해 보일 때 기준이 되는 곳도 이 화면입니다.
무료 80크레딧의 유효기간은 공식 페이지에 따로 적혀 있지 않습니다. 아래에서 말하는 만료 없음은 결제로 산 크레딧에 대한 약관 내용입니다. 시험은 가입 직후에 끝내 두는 편이 깔끔합니다.
[광고] 제휴 링크
kie에 가입하고 무료 80크레딧으로 시작하기
구글 계정으로 가입하면 바로 플레이그라운드에서 Gemini 3.8 Flash-Lite TTS를 들어 볼 수 있습니다.
Part 2 · 가입·결제
결제와 크레딧: 충전한 크레딧은 만료되지 않습니다
kie에는 월 요금제가 없습니다. Billing 화면에서 원하는 금액을 충전하면 크레딧이 들어오고, 모델마다 정해진 단가만큼 차감됩니다. 모든 모델이 하나의 잔액을 같이 씁니다. 가격표의 환산은 1크레딧당 0.005달러, 즉 1달러에 200크레딧입니다. 최소 충전 금액과 쓸 수 있는 결제 수단은 결제 화면에서 확인합니다.
충전한 크레딧은 유효기간이 없습니다
- 이용약관 4조:
Purchased tokens (credits) never expire, and refunds are also supported if needed.
(kie Terms of Use) - 환불 정책:
Credits you purchase on Kie.ai never expire, and refunds are supported if needed.
(kie Refund Policy) - 홈페이지 FAQ:
No. KIE credits do not expire. Your credits will remain in your account and can be used at any time.
월 크레딧이 매달 사라지는 구독형 음성 서비스와 가장 크게 다른 점입니다. 영상을 몰아서 만드는 달과 쉬는 달이 섞여 있어도, 남은 크레딧은 다음 작업까지 그대로 남습니다.
- 실패한 작업은 과금되지 않습니다. 조회 응답과 콜백의 creditsConsumed가 0으로 기록됩니다.
- 큰 금액을 충전하면 보너스 크레딧이 붙습니다. 공식 FAQ의 예시는 1,250달러 충전 시 10% 추가입니다.
- 환불은 가입한 이메일로 [email protected]에 주문 번호와 사유를 보내 요청합니다.
- 사업자라면 충전 후 Billing 화면에서 회사 정보를 넣어 인보이스를 발급받을 수 있습니다.
- 남은 크레딧은 API로도 확인합니다. 반복 작업 전후에 잔액을 찍어 두면 작업 단가를 정확히 계산할 수 있습니다.
curl "https://api.kie.ai/api/v1/chat/credit" \
-H "Authorization: Bearer $KIE_API_KEY"
# {"code":200,"msg":"success","data":5858.52}[광고] 제휴 링크
필요한 만큼만 충전하고, 남은 크레딧은 그대로
크레딧은 만료되지 않고 모든 모델이 같은 잔액을 씁니다. 처음에는 소액으로 충전해 내 작업 단가를 확인해 보세요.
Part 2 · 가입·결제
API 키 발급과 보안
- kie 대시보드 왼쪽 메뉴에서 API Keys(kie.ai/api-key)로 들어가 새 키를 만듭니다.
- 키마다 시간·일·전체 사용 한도를 걸 수 있습니다. 반복문이 멈추지 않는 사고가 나도 한도에서 끊깁니다.
- IP 화이트리스트를 켜면 지정한 서버 IP에서만 그 키가 동작합니다. 고정 IP 서버에서 돌린다면 켜 둡니다.
- 키는 .env 같은 비공개 파일에 두고 코드는 환경 변수에서 읽습니다.
# .env (공개 저장소에 올리지 않습니다)
KIE_API_KEY=여기에_발급받은_키키를 브라우저 자바스크립트, 모바일 앱, 공개 깃허브 저장소에 넣으면 누구나 내 잔액으로 생성할 수 있습니다. 웹 서비스에서 TTS를 제공한다면 요청은 항상 내 서버를 거쳐 kie로 가게 만듭니다. 키가 노출됐다고 의심되면 대시보드에서 바로 지우고 새로 만듭니다.
Part 3 · API 호출
호출 구조: 작업을 만들고, 결과를 조회한다
kie의 음성·영상·이미지 모델은 모두 비동기입니다. 요청을 보내면 음성이 바로 오지 않고 작업 번호(taskId)가 옵니다. 그 번호로 상태를 조회하거나, 완료되면 kie가 내 주소로 알려 주게 합니다.
- 작업 생성:
POST https://api.kie.ai/api/v1/jobs/createTask - 결과 조회:
GET https://api.kie.ai/api/v1/jobs/recordInfo?taskId=… - 헤더:
Authorization: Bearer 키,Content-Type: application/json - 작업 상태는 waiting → queuing → generating → success 또는 fail 순서로 바뀝니다.
한 가지를 꼭 기억합니다. 오류가 나도 HTTP 상태는 200으로 오고, 실제 결과는 본문의 code 값에 들어 있습니다. HTTP 상태만 보고 성공으로 처리하면 크레딧 부족이나 키 오류를 놓칩니다.
{
"code": 200,
"msg": "success",
"data": { "taskId": "YOUR_TASK_ID" }
}[광고] 제휴 링크 · 가입 시 무료 80크레딧
kie 가입하고 API 키 받기Part 3 · API 호출
파라미터, 목소리, 감정 태그
| 필드 | 형식 | 설명 |
|---|---|---|
| model | 필수 · 문자열 | google/gemini-3-8-flash-lite-tts |
| callBackUrl | 선택 · URL | 완료·실패 시 kie가 결과를 POST로 보내 줍니다. 운영 환경에서 권장합니다. |
| input.speakers | 필수 · 배열(1~2) | speaker_id("Speaker N") + voice_name 또는 replica 중 하나. 둘 다 없으면 Fola가 기본값입니다. |
| input.dialogue_turns | 필수 · 배열 | 순서대로 읽힐 대사 목록. speaker_id, text(최대 10,000자), style(선택). |
| dialogue_turns[].style | 선택 · 문자열 | 줄마다 말투·감정·속도를 자연어로 지시합니다. 같은 화자라도 줄마다 달라도 됩니다. |
| input.temperature | 선택 · 0~2, 기본 1 | 높을수록 억양이 다양해지고, 낮을수록 매번 비슷하게 읽습니다. |
| input.filler_words | 선택 · 기본 false | "음", "아" 같은 추임새를 넣습니다. 화자가 두 명일 때만 동작합니다. |
목소리 70개, 용도별 10묶음
voice_name에 넣을 수 있는 이름은 70개입니다. kie 문서는 이를 튜터, 광고 내레이션, 안내·교육, 팟캐스트, 스토리텔러, 디지털 비서, 콜센터, 컨시어지, 기술 지원, 전문 발표의 10묶음으로 나눕니다. 아무것도 지정하지 않으면 콜센터 묶음의 Fola가 기본입니다. 철자가 하나라도 틀리면 422 오류가 나므로 샘플 절의 이름을 그대로 복사해 씁니다.
style: 줄마다 연기 지시
3.8 세대는 대사 안의 지시문을 그대로 읽어 버릴 수 있습니다. "밝게 말해: 안녕하세요"라고 쓰면 "밝게 말해"까지 소리로 나옵니다. 말투는 text가 아니라 style에 적습니다. 예를 들어 설명자는 Calm Korean explainer. Even pace, clear, low energy.
, 질문자는 A driver asking one short question. Natural, curious, slight rise at the end.
처럼 씁니다. 영어로 적어도 한국어 대사는 한국어로 읽습니다.
꺾쇠 태그: 순간 효과
웃음이나 한숨처럼 한순간의 소리는 대사 안에 영어 꺾쇠 태그로 넣습니다. 공식 목록에는 <laugh>, <sigh>, <gasp>, <breath>, <short pause>, <long pause>, <whispers>, <chuckle> 등 40개가 있습니다. 문장 사이 호흡을 <short pause>로 조절하면 편집에서 무음을 자르고 붙이는 일이 줄어듭니다.
replica: 내 목소리 임시 복제
voice_name 대신 replica를 넣으면 그 작업에서만 목소리를 복제합니다. 같은 성인이 같은 마이크·같은 방에서 녹음한 10~30초 참고 음성(source_audio_url)과, 정해진 동의 문장을 읽은 녹음(consent_audio_url)이 필요합니다. WAV만 받고 파일당 10MB 이하, 24kHz·mono·16bit 권장이며 AI로 만든 음성은 거절됩니다. 복제는 저장되지 않으므로 매 요청마다 두 파일 주소를 같이 보냅니다.
Part 3 · API 호출
1인 낭독 요청
가장 단순한 형태는 화자 하나, 대사 하나입니다. 아래 요청은 이 글의 샘플 70개를 만든 문장과 같은 구조이고, 목소리 이름만 바꾸면 다른 목소리가 됩니다.
curl -X POST "https://api.kie.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $KIE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3-8-flash-lite-tts",
"input": {
"temperature": 1,
"speakers": [
{ "speaker_id": "Speaker 1", "voice_name": "Charon" }
],
"dialogue_turns": [
{
"speaker_id": "Speaker 1",
"style": "Calm Korean explainer. Even pace, clear, matter of fact.",
"text": "우회전 빨간불이면 정지선 바로 앞에 완전히 멈추고, 횡단보도에 사람이 있으면 또 멈춥니다."
}
]
}
}'긴 내레이션은 한 턴에 넣어도 되지만, 문단 단위로 턴을 나누는 편이 수정에 유리합니다. 한 문단만 다시 읽혀야 할 때 그 턴만 따로 요청하면 되기 때문입니다. 영상 대본 한 줄만 고칠 때도 그 줄만 다시 생성해 편집기에서 바꿔 끼우면 됩니다.
Part 3 · API 호출
2인 대화 요청
speakers에 두 사람을 정의하고, dialogue_turns에 대화 순서대로 대사를 적습니다. 결과는 두 목소리가 번갈아 나오는 WAV 한 개입니다. 각 턴의 speaker_id는 speakers에 정의한 이름과 정확히 같아야 합니다.
{
"model": "google/gemini-3-8-flash-lite-tts",
"input": {
"temperature": 1,
"filler_words": false,
"speakers": [
{ "speaker_id": "Speaker 1", "voice_name": "Charon" },
{ "speaker_id": "Speaker 2", "voice_name": "Kore" }
],
"dialogue_turns": [
{
"speaker_id": "Speaker 1",
"style": "Calm Korean explainer. Even pace, clear, low energy, matter of fact.",
"text": "우회전 모르면 벌금 벌점 때려 맞습니다. 핵심은 전방 차량신호와 사람입니다."
},
{
"speaker_id": "Speaker 2",
"style": "A driver asking one short question. Natural, curious, slight rise at the end.",
"text": "우회전할 때 보행자 신호가 초록불이면 못 가나요?"
},
{
"speaker_id": "Speaker 1",
"style": "Calm Korean explainer. Even pace, clear, low energy, matter of fact.",
"text": "보행자 신호등은 보지 마세요. <short pause> 운전자가 볼 것은 전방 차량 신호와 횡단보도의 사람뿐입니다."
}
]
}
}- 설명하는 쪽과 묻는 쪽의 style을 분명히 다르게 주면 목소리 차이가 커집니다.
- filler_words를 true로 하면 "음", "아" 같은 추임새가 섞여 실제 대화처럼 들립니다. 정보 전달 영상이라면 끄는 편이 깔끔합니다.
- 실제 사용한 9턴, 1,061자 대본은 153.6초 분량으로 3.27크레딧이 들었고 생성에 27초가 걸렸습니다.
- 같은 대본을 Iapetus와 Erinome에 빠른 말투 style로 바꾸니 130.5초, 2.78크레딧이 됐습니다. 말이 빨라지면 길이와 비용이 같이 줄어듭니다.
Part 3 · API 호출
결과 조회와 콜백
작업을 만든 뒤에는 3초 간격 정도로 recordInfo를 조회합니다. state가 success가 되면 resultJson 안의 resultUrls에서 WAV 주소를 꺼냅니다. resultJson은 객체가 아니라 JSON 문자열이라 한 번 더 파싱해야 합니다.
curl "https://api.kie.ai/api/v1/jobs/recordInfo?taskId=YOUR_TASK_ID" \
-H "Authorization: Bearer $KIE_API_KEY"{
"code": 200,
"msg": "success",
"data": {
"taskId": "YOUR_TASK_ID",
"model": "google/gemini-3-8-flash-lite-tts",
"state": "success",
"resultJson": "{\"resultUrls\":[\"https://file.aiquickdraw.com/as/YOUR_TASK_ID_example.wav\"]}",
"failCode": null,
"failMsg": null,
"costTime": 27,
"creditsConsumed": 3.27
}
}운영 서비스에서는 조회 반복 대신 callBackUrl을 쓰는 편이 낫습니다. 요청 본문에 내 서버 주소를 넣으면 완료나 실패 시 kie가 taskId, state, resultJson, creditsConsumed를 담아 POST로 보내 줍니다. 성공은 code 200, 실패는 501입니다. 결과 파일은 14일 뒤 자동으로 지워지므로 받는 즉시 내 저장소에 내려받습니다.
Part 3 · API 호출
파이썬 전체 코드
표준 라이브러리만 쓰는 예제입니다. 작업 생성, 한도 초과 시 재시도, 결과 조회, WAV 저장까지 한 파일에 넣었습니다. 목소리 70개 샘플을 만든 스크립트를 줄인 것이라 그대로 반복문에 넣어 여러 목소리를 뽑을 수 있습니다.
import json, os, struct, time, urllib.request, urllib.error
KEY = os.environ["KIE_API_KEY"] # 키는 코드에 적지 않습니다
CREATE = "https://api.kie.ai/api/v1/jobs/createTask"
QUERY = "https://api.kie.ai/api/v1/jobs/recordInfo?taskId="
MODEL = "google/gemini-3-8-flash-lite-tts"
def api(method, url, body=None):
data = None if body is None else json.dumps(body, ensure_ascii=False).encode("utf-8")
req = urllib.request.Request(url, data=data, method=method)
req.add_header("Authorization", "Bearer " + KEY)
req.add_header("Content-Type", "application/json")
try:
with urllib.request.urlopen(req, timeout=90) as r:
return json.loads(r.read().decode("utf-8"))
except urllib.error.HTTPError as e:
return json.loads(e.read().decode("utf-8", "replace") or "{}")
def create(voice, text, style=""):
body = {
"model": MODEL,
"input": {
"temperature": 1,
"speakers": [{"speaker_id": "Speaker 1", "voice_name": voice}],
"dialogue_turns": [{"speaker_id": "Speaker 1", "text": text, "style": style}],
},
}
for attempt in range(4):
res = api("POST", CREATE, body)
code = res.get("code")
if code == 200:
return res["data"]["taskId"]
if code in (429, 455, 500): # 한도·일시 오류는 쉬었다가 재시도
time.sleep(4 + attempt * 3)
continue
raise RuntimeError(f"create failed: {code} {res.get('msg')}") # 401·402·422는 즉시 중단
raise RuntimeError("retry exhausted")
def wait(task_id):
for _ in range(40):
time.sleep(3)
node = api("GET", QUERY + task_id).get("data") or {}
if node.get("state") == "success":
result = json.loads(node.get("resultJson") or "{}")
return result["resultUrls"][0], node.get("creditsConsumed")
if node.get("state") == "fail":
raise RuntimeError(f"fail: {node.get('failCode')} {node.get('failMsg')}")
raise TimeoutError(task_id)
def as_wav(blob):
if blob.startswith(b"RIFF"):
return blob
rate, ch, bits = 24000, 1, 16 # 헤더 없는 PCM이면 WAV 헤더를 붙입니다
head = struct.pack("<4sI4s4sIHHIIHH4sI", b"RIFF", 36 + len(blob), b"WAVE", b"fmt ", 16, 1,
ch, rate, rate * ch * bits // 8, ch * bits // 8, bits, b"data", len(blob))
return head + blob
task = create("Charon", "우회전 빨간불이면 정지선 바로 앞에 완전히 멈춥니다.")
url, credits = wait(task)
with urllib.request.urlopen(url, timeout=120) as r:
open("charon.wav", "wb").write(as_wav(r.read())) # 14일 뒤 삭제되므로 바로 저장
print("saved charon.wav, credits:", credits)여러 개를 만들 때는 동시에 띄우는 작업을 5개 정도로 묶고, 하나가 끝나면 다음을 넣는 방식이 안정적이었습니다. 402가 오면 잔액이 바닥난 것이니 남은 대기열을 비우고 멈추게 해 둡니다.
Part 4 · 샘플
목소리 70개 직접 듣기
같은 한국어 문장을 70개 목소리로 하나씩 만든 원본 WAV입니다. 용도 묶음은 이름일 뿐이라 묶음 밖의 목소리도 자유롭게 씁니다. 정보 전달형 영상이라면 Charon, Rasalgethi, Schedar, Kore, Gacrux부터 들어 보면 고르기 쉽습니다.
모든 샘플의 공통 조건
대본: 우회전 빨간불이면 정지선 바로 앞에 완전히 멈추고, 횡단보도에 사람이 있으면 또 멈춥니다.
(공백 포함 50자) · 1인 낭독 · temperature 1 · style 없음 · 원본 WAV 그대로. 목소리 70개 중 남성 37개, 여성 33개입니다.
묶음은 kie 문서의 용도 분류를 따랐고, 영문 성격 라벨은 구글 프리셋 표에 있는 30개 목소리에만 붙어 있습니다.
튜터 Tutor · 7개
Knowledgeable7.96초Warm7.72초Bright8.08초광고 내레이션 Commercial · 5개
Firm7.36초안내·교육 Instructional · 8개
Gravelly6.80초Smooth7.72초Clear8.00초Informative6.72초팟캐스트 Podcast · 6개
Firm7.36초Upbeat7.44초스토리텔러 Storyteller · 6개
Friendly7.44초Casual6.24초디지털 비서 Digital Assistant · 11개
Smooth7.52초Breezy7.20초Bright6.96초Easy-going7.96초Breathy7.20초Clear7.80초Easy-going7.00초콜센터 Call Center · 7개
Soft7.24초Informative6.76초Upbeat7.20초컨시어지 Concierge · 7개
Excitable7.60초Youthful8.44초Firm7.28초기술 지원 Tech Support · 6개
Lively7.24초Gentle8.00초전문 발표 Professional · 7개
Mature6.76초Forward7.76초Even7.12초Part 4 · 샘플
2인 대화 샘플 듣기
운전 상식 영상에 쓰려고 만든 9턴 대본입니다. 설명자가 길게 말하고 질문자가 짧게 묻는 구조라, 두 목소리의 대비와 턴이 바뀌는 간격을 들어 보기 좋습니다.
Charon × Kore — 설명자와 질문자
Speaker 1 Charon(남) · Speaker 2 Kore(여)
전체 153.6초 · 9턴 · 1,061자 · 3.27크레딧 · 생성 27초. 앞 38초만 들려드립니다.
Iapetus × Erinome — 빠른 템포 대화
Speaker 1 Iapetus(남) · Speaker 2 Erinome(여)
같은 대본 · 전체 130.5초 · 2.78크레딧. style에 빠른 말투를 지정했습니다. 앞 38초만 들려드립니다.
Part 5 · 운영
레이트리밋과 에러 코드
기본 한도는 계정 단위로 10초에 새 생성 요청 20건입니다. 보통 동시에 100개 이상의 작업이 돌아갈 수 있는 수준이라 개인 작업에서 막힐 일은 드뭅니다. 한도를 넘긴 요청은 429를 받고 대기열에 들어가지 않으므로, 잠시 쉬었다가 다시 보내야 합니다. 429가 계속 난다면 kie 지원 채널에 한도 상향을 요청할 수 있는데, 승인은 신중하게 처리된다고 안내돼 있습니다.
| code | 뜻 | 대응 |
|---|---|---|
| 200 | 성공 | 작업이 접수됐다는 뜻일 뿐 완성이 아닙니다. taskId로 조회하거나 콜백을 기다립니다. |
| 401 | 키 없음·잘못됨 | Authorization: Bearer 헤더와 키 값을 확인합니다. |
| 402 | 크레딧 부족 | 충전 후 다시 요청합니다. 반복문이면 즉시 멈추도록 처리합니다. |
| 422 | 파라미터 오류 | 화자 ID 형식, voice_name 철자, 필수 필드를 확인합니다. 그대로 재시도해도 같은 결과입니다. |
| 429 | 요청 한도 초과 | 대기열에 들어가지 않고 거절됩니다. 몇 초 쉬었다가 다시 보냅니다. |
| 455 · 500 | 서비스 쪽 일시 오류 | 간격을 늘려 가며 재시도합니다. |
| 501 | 생성 실패 | 실패한 작업은 크레딧이 0으로 기록됩니다. failMsg를 보고 대본이나 설정을 고칩니다. |
조회 쪽에는 408도 있습니다. 10분 넘게 결과가 오지 않았다는 뜻입니다. TTS는 보통 수십 초면 끝나므로, 몇 분 넘게 generating에 머물면 작업을 새로 만드는 편이 빠릅니다.
Part 5 · 운영
쓰기 전에 알아 둘 주의사항
- 결과 파일은 14일, 작업 로그는 2개월 뒤 자동 삭제됩니다. 영상 프로젝트 폴더에 바로 내려받아 둡니다.
- 오류도 HTTP 200으로 옵니다. 본문의 code를 확인하지 않으면 실패를 성공으로 착각합니다.
- 지시문은 text가 아니라 style에 씁니다. 대사 안의 "화자 1:" 같은 표기도 소리로 읽힐 수 있습니다.
- 숫자·영문 약어는 원하는 읽기로 풀어 씁니다. "6만 원"보다 "육만 원"이 의도대로 나옵니다.
- temperature 1은 같은 대본도 매번 조금씩 다르게 읽습니다. 수정본과 원본의 톤을 맞춰야 하면 값을 낮추고 같은 style을 그대로 씁니다.
- 응답 파일이 RIFF로 시작하지 않으면 24kHz·16bit·mono WAV 헤더를 붙여 저장합니다. 위 파이썬 예제의 as_wav가 그 역할입니다.
- 음성 복제는 본인 목소리와 본인 동의 녹음이 있을 때만 씁니다. 다른 사람의 목소리를 허락 없이 복제하면 안 됩니다.
- kie는 작은 스타트업이 운영하는 중계 서비스라 가끔 불안정할 수 있다고 스스로 밝힙니다. 마감이 걸린 작업은 시간 여유를 두고 돌립니다.
- 단가는 구글 프로모션을 따르며 2026년 12월 31일까지로 안내돼 있습니다. 큰 작업 전에는 가격표를 다시 확인합니다.
Part 5 · 운영
실제로 얼마나 드나
아래는 kie 작업 기록에 남은 실제 소모량입니다. 70개 목소리 샘플 전체를 만드는 데 11.23크레딧, 약 0.056달러가 들었습니다. 1,000원도 안 되는 돈으로 목소리 전체를 들어 보고 고를 수 있다는 뜻입니다.
| 작업 | 분량 | 소모 |
|---|---|---|
| 1인 낭독 · 한국어 50자 한 문장 | 6.2~8.8초 | 0.13~0.19크레딧 (약 0.0007~0.001달러) |
| 목소리 30개 샘플 일괄 생성 | 30문장 | 합계 4.71크레딧 (약 0.024달러) |
| 목소리 40개 샘플 일괄 생성 | 40문장 | 합계 6.52크레딧 (약 0.033달러) |
| 2인 대화 · 9턴 · 1,061자 (Charon × Kore) | 153.6초 | 3.27크레딧 (약 0.016달러) · 생성 27초 |
| 같은 대본 빠른 템포 (Iapetus × Erinome) | 130.5초 | 2.78크레딧 (약 0.014달러) |
10분짜리 영상 내레이션을 1인 낭독으로 만들면 대략 11~12크레딧, 0.06달러 안팎으로 계산됩니다. 글자 수 기준 단가는 바로 아래 실사용 기록에서 자세히 정리했습니다. 마음에 안 들어 두세 번 다시 뽑아도 부담이 작습니다. 가장 비싼 부분은 생성이 아니라 대본을 다듬는 시간이라, 대본을 먼저 확정하고 생성하는 순서가 결국 가장 싸게 먹힙니다.
Part 5 · 운영
실사용 기록으로 본 글자당 비용
유튜브 쇼츠와 롱폼 내레이션을 만들면서 나흘(2026년 10월 11~14일) 동안 같은 모델로 50번 생성한 기록을 대본별로 묶었습니다. 1인 낭독은 Zubenelgenubi, 2인 대화는 Zubenelgenubi와 Gacrux 조합이고, temperature 1, filler_words 끔으로 통일했습니다. 같은 대본을 여러 번 뽑은 경우는 한 줄로 합쳐 회차별 크레딧과 범위를 함께 적었습니다. 글자 수는 실제로 요청에 넣은 대본 텍스트를 공백을 빼고 센 값입니다.
| # | 대본 주제 · 첫 줄 | 모드 | 글자 수 | 회차별 크레딧 | 평균 | 100자당 | 평균 원화 | 처리 시간(초) |
|---|---|---|---|---|---|---|---|---|
| 1 | 가격 추적 안내 한 줄 “가격은 매일 바뀝니다.” | 1인 | 28자 | 0.10 | 0.10 | 0.36 | 약 0.7원 | 5 |
| 2 | RTX 50 시리즈 소개 “알티엑스 오십 시리즈는 엔비디아 블랙웰…” | 1인 | 200자 | 0.68 | 0.68 | 0.34 | 약 4.6원 | 7 |
| 3 | 그래픽카드 시세 한 문장 “시월 십삼일 최저가는…” | 1인 | 43자 | 0.17 | 0.17 | 0.40 | 약 1.1원 | 4 |
| 4 | RTX 50 가격 분석 롱폼 “알티엑스 오공칠공, 지금 역대 최저가보다…” | 1인 | 1,332자 | 4.58 | 4.58 | 0.34 | 약 30.7원 | 37 |
| 5 | 차 키 갇힘 대처법(질문 포함 대화) “키를 차 안에 두고 문이 잠겼다면…” | 2인 | 792자 | 2.73 | 2.73 | 0.34 | 약 18.3원 | 22 |
| 6 | X·스레드 성장(알고리즘 해설) “내 글만 죽어라 올리면, 안 큽니다…” | 1인 | 490자 | 1.81 / 1.89 / 1.82 (1.81~1.89) | 1.84 | 0.38 | 약 12.3원 | 18 · 20 · 21 |
| 7 | X·스레드 성장 쇼츠 A “스레드와 X를 키워 본 사람들은…” | 1인 | 177자 | 0.70 / 0.72 / 0.79 (0.70~0.79) | 0.74 | 0.42 | 약 4.9원 | 8 · 10 · 9 |
| 8 | X·스레드 성장 쇼츠 B “스레드 공식 가이드도…” | 1인 | 173자 | 0.71 / 0.75 / 0.64 / 0.69 / 0.63 / 0.63 (0.63~0.75) | 0.68 | 0.39 | 약 4.5원 | 9 · 9 · 9 · 129 · 9 · 7 |
| 9 | 고양이는 액체일까 “액체일까요? 이그노벨상까지 받은…” | 1인 | 253자 | 1.09 / 1.02 / 1.03 (1.02~1.09) | 1.05 | 0.41 | 약 7.0원 | 12 · 13 · 13 |
| 10 | 바이브 코딩 번아웃 B “바이브 코딩하다 쓰러질 수 있는 이유” | 1인 | 254자 | 1.01 / 1.03 / 1.03 (1.01~1.03) | 1.02 | 0.40 | 약 6.9원 | 11 · 12 · 12 |
| 11 | 바이브 코딩 번아웃 A “바이브 코딩하다 쓰러질 수 있는 이유” | 1인 | 217자 | 0.92 / 0.95 / 0.85 (0.85~0.95) | 0.91 | 0.42 | 약 6.1원 | 10 · 12 · 11 |
| 12 | AI 작업 반복 루프 “지시, 확인, 피드백, 또 확인…” | 1인 | 110자 | 0.50 / 0.43 / 0.43 (0.43~0.50) | 0.45 | 0.41 | 약 3.0원 | 7 · 6 · 6 |
| 13 | AI 작업 요령 3가지 “AI는 반복과 기다림의 연속입니다…” | 1인 | 139자 | 0.59 / 0.53 / 0.60 (0.53~0.60) | 0.57 | 0.41 | 약 3.8원 | 7 · 7 · 8 |
| 14 | AI 이미지 프롬프트 팁 “이 사진, 카메라 없이 만들었습니다…” | 1인 | 160자 | 0.70 / 0.63 / 0.69 (0.63~0.70) | 0.67 | 0.42 | 약 4.5원 | 10 · 8 · 10 |
| 15 | 스위치 2 케이스 쇼츠 B “이게 닌텐도 스위치 투인데요…” | 1인 | 282자 | 1.06 / 0.96 / 1.03 (0.96~1.06) | 1.02 | 0.36 | 약 6.8원 | 13 · 11 · 12 |
| 16 | 달 원자로 해설 B “달에는 콘센트도, 한전도 없습니다” | 2인 | 651자 | 2.34 / 2.34 / 2.38 (2.34~2.38) | 2.35 | 0.36 | 약 15.8원 | 25 · 23 · 24 |
| 17 | 달 원자로 해설 A “달의 밤은 이 주가 넘습니다” | 2인 | 638자 | 2.54 | 2.54 | 0.40 | 약 17.0원 | 25 |
| 18 | 스위치 2 케이스 쇼츠 A “이게 닌텐도 스위치 투인데요…” | 1인 | 256자 | 0.93 / 0.90 / 0.89 (0.89~0.93) | 0.91 | 0.35 | 약 6.1원 | 11 · 10 · 11 |
| 19 | 타이어 공기압 한 줄 “내 차 공기압 스티커를 사진으로 찍어 두세요.” | 2인 | 21자 | 0.09 / 0.07 / 0.08 / 0.08 / 0.09 (0.07~0.09) | 0.08 | 0.39 | 약 0.5원 | 3 · 6 · 4 · 2 · 4 |
원화는 1크레딧 = 0.005달러, 1달러 = 1,340원(2026-10-15 기준)으로 환산했습니다. 처리 시간은 작업을 넣고 결과가 나오기까지 걸린 시간이며, 만들어진 음성의 길이가 아닙니다. 대기열 상황에 따라 같은 대본도 9초에서 129초까지 차이가 났습니다.
50회 생성 합계
49.85크레딧
약 0.25달러, 원화로 약 334원입니다. 19개 대본을 다시 뽑은 횟수까지 모두 포함한 금액입니다.
1,000자당 평균
약 3.7크레딧
약 0.019달러, 25원 안팎입니다. 대본별로는 100자당 0.34~0.42크레딧 사이에 모였습니다.
1인 vs 2인
3.74 vs 3.67
1,000자당 크레딧입니다. 같은 글자 수라면 2인 대화가 1인 낭독보다 비싸지 않았습니다. 화자 수가 아니라 만들어진 음성의 양이 요금을 정합니다.
같은 대본, 다른 요금
최대 ±10% 안팎
쇼츠 B 대본은 6번 뽑는 동안 0.63~0.75크레딧을 오갔습니다. 회차마다 읽는 속도와 쉼이 달라 출력 오디오 토큰 수가 조금씩 바뀌기 때문입니다.
요금은 입력 글자가 아니라 출력 오디오 토큰으로 매겨집니다. 같은 문장이라도 모델이 조금 느리게 읽거나 쉼을 길게 두면 오디오가 길어지고, 그만큼 크레딧이 조금 더 나갑니다. 그래서 견적을 낼 때는 한 번 값보다 평균값을 기준으로 잡는 편이 정확합니다. 한 줄짜리 짧은 문장은 0.07~0.17크레딧 수준이라, 100자당 단가는 긴 대본과 비슷하지만 금액 자체는 사실상 무시해도 될 만큼 작습니다.
| 예시 | 가정 분량 | 예상 비용 |
|---|---|---|
| 60초 쇼츠 1편 | 대본 약 280자 (위 쇼츠 대본들이 170~290자) | 약 1.0크레딧 · 0.005달러 · 약 7원 |
| 3분 롱폼 1편 | 대본 약 850자 | 약 3.2크레딧 · 0.016달러 · 약 21원 |
| 쇼츠 1편을 3번 뽑아 고르기 | 약 280자 × 3회 | 약 3.1크레딧 · 0.016달러 · 약 21원 |
| 10분 내레이션 | 대본 약 3,000자 | 약 11크레딧 · 0.056달러 · 약 75원 |
크레딧 단가는 kie 가격표의 크레딧·달러 표기(예: 800크레딧 = 4.00달러)와 최소 충전 단위 5달러 = 1,000크레딧 기준입니다. 1,250달러 같은 큰 금액을 충전하면 보너스 크레딧(예: 10%)이 붙어 실제 단가가 더 내려가므로, 충전 패키지에 따라 달라질 수 있습니다. 현재 모델 단가(오디오 출력 100만 토큰당 840크레딧)는 2026년 12월 31일까지의 프로모션 가격입니다.
[광고] 제휴 링크
5달러면 쇼츠 내레이션 수백 편 분량
1,000크레딧으로 280자 쇼츠 대본을 약 960번 생성할 수 있는 계산입니다. 충전한 크레딧은 만료되지 않으니 내 대본으로 먼저 단가를 확인해 보세요.
Part 6 · 다른 TTS
상황별 다른 TTS 선택지
kie의 Gemini TTS는 코드로 대량 생성할 때 강합니다. 반대로 돈을 쓰지 않으려면 로컬 무료 모델, 코딩 없이 화면에서 연기를 다듬으려면 전용 서비스가 낫습니다. 단비가 실제로 쓰는 것과 함께 정리했습니다.
Supertonic 3 (무료 로컬)돈을 쓰지 않고 내 PC에서 만들 때
CPU만으로 돌아가는 무료 TTS입니다. 인터넷 비용도, 크레딧도 들지 않습니다. 31개 언어 샘플을 들어 볼 수 있습니다.
타입캐스트 (Typecast)한국어 캐릭터 목소리·감정 연기
한국어 성우형 목소리가 많고 감정 조절이 쉽습니다. 단비의 「신비한 건축 사전」 시리즈 내레이션이 타입캐스트입니다.
일레븐랩스 (ElevenLabs)영어 고품질·음성 복제·음악
영어 내레이션과 음성 복제 품질로 유명하고 음악·효과음 생성까지 한 곳에서 됩니다.
Google AI Studio · Gemini API 직접구글 계정으로 바로 시험
같은 Gemini 3.8 TTS를 구글에서 직접 씁니다. 목소리 디자인·보이스 라이브러리 같은 구글 쪽 기능이 먼저 열립니다.
Gemini 3.8 Flash TTS (kie)오디오북·캐릭터 연기
Flash-Lite의 상위 모델입니다. 130개 언어, 더 풍부한 표현력이 필요할 때 같은 kie 키로 모델 이름만 바꿉니다.
네이버 클로바 더빙한국어 영상 더빙 편집 화면
한국어 목소리와 영상 타임라인 편집 화면이 함께 있어 코딩 없이 더빙할 때 편합니다.
무료로 먼저 시험하고 싶다면 슈퍼토닉3 무료 로컬 TTS 가이드를 참고합니다. 한국어 캐릭터 연기가 중요하면 타입캐스트, 영어와 음성 복제가 중요하면 일레븐랩스를 봅니다.
Part 7 · 마무리
공식 문서와 제휴 링크
kie 가입·충전 링크만 제휴 링크이고, 나머지는 공식 문서 주소입니다. 가격과 정책은 바뀔 수 있으니 결제 전에 한 번 더 확인합니다.
- kie 가입·충전 (제휴)광고 — 가입 후 무료 80크레딧으로 시험하고, 충전한 크레딧은 만료되지 않습니다.
- Gemini 3.8 Flash-Lite TTS 모델 페이지 — 플레이그라운드와 가격 안내
- API 문서: Gemini 3.8 Flash Lite TTS — 요청 스키마·목소리 목록·콜백 형식
- API 문서: Get Task Details — recordInfo 조회와 작업 상태
- API 문서: 시작 가이드 — 키 보안·보관 기간·레이트리밋
- kie 이용약관 4조 — Purchased tokens (credits) never expire
- kie 환불 정책 — Credits never expire · 이메일 환불 요청
- kie 가격표 — 모델별 크레딧 단가
- Google: Gemini 3.8 Flash-Lite TTS — 구글 공식 모델 문서
Part 7 · 마무리
자주 묻는 질문
kie에서 충전한 크레딧은 정말 만료되지 않나요?
네. kie 이용약관 4조에 "Purchased tokens (credits) never expire"라고 적혀 있고, 환불 정책 첫 줄과 홈페이지 FAQ도 크레딧은 만료되지 않는다고 안내합니다. 가입 때 받는 무료 80크레딧의 유효기간은 따로 명시돼 있지 않으니, 시험은 가입 직후에 끝내 두는 편이 안전합니다.
월 구독료가 있나요?
없습니다. kie는 요금제가 아니라 선불 크레딧 방식입니다. 충전한 만큼만 쓰고, 쓰지 않은 크레딧은 계정에 그대로 남습니다. 큰 금액을 충전하면 보너스 크레딧이 붙는데, 1,250달러 충전 시 10%가 예시로 안내돼 있습니다.
실패한 생성도 크레딧이 빠지나요?
빠지지 않습니다. kie는 실패한 작업에 비용을 받지 않는다고 안내하고, 콜백과 조회 응답에서도 실패 작업의 creditsConsumed는 0으로 내려옵니다. 다만 성공했지만 마음에 들지 않아 다시 뽑은 것은 각각 과금됩니다.
한국어 발음은 자연스러운가요?
한 문장 낭독과 9턴짜리 2인 대화 모두 한국어로 만들어 실제 영상에 썼습니다. 숫자는 "육만 원", "십오 점"처럼 대본에 한글로 풀어 쓰면 더 안정적으로 읽습니다. 이 글의 샘플 70개를 직접 들어 보고 고르는 것이 가장 빠릅니다.
목소리의 성별은 어디에 나와 있나요?
kie 문서와 구글 프리셋 표에는 성별 칸이 없고 용도 묶음만 있습니다. 이 글의 남·여 표기는 공개된 목소리 표와 실제 청취를 기준으로 분류한 것이라, 같은 목소리도 문장과 style에 따라 인상이 달라질 수 있습니다.
두 사람 대화를 한 번에 만들 수 있나요?
됩니다. speakers에 Speaker 1과 Speaker 2를 넣고, dialogue_turns에 순서대로 대사를 적으면 한 개의 WAV로 나옵니다. 화자는 최대 두 명이고, 추임새(filler_words)는 두 명일 때만 켜집니다.
생성한 음성 파일은 얼마나 보관되나요?
kie는 생성된 미디어를 14일, 작업 로그를 2개월 보관한 뒤 자동 삭제합니다. resultUrls의 파일은 받는 즉시 내 저장소로 내려받아 두어야 합니다.
레이트리밋에 걸리면 어떻게 하나요?
기본 한도는 계정당 10초에 새 생성 요청 20건입니다. 넘으면 code 429가 오고 그 요청은 대기열에 들어가지 않습니다. 동시에 5건 정도만 띄우고, 429·455·500이면 몇 초 쉬었다가 다시 보내는 방식으로 70개 샘플을 문제없이 만들었습니다.
내 목소리로도 만들 수 있나요?
replica 필드로 됩니다. 같은 사람이 같은 마이크로 녹음한 10~30초 참고 음성과, 정해진 동의 문장을 읽은 녹음 두 개가 필요합니다. WAV만 받고 파일당 10MB 이하이며, AI로 만든 음성은 거절됩니다. 이 복제는 그 작업에서만 쓰이고 저장되지 않습니다.
API 키는 어디에 두어야 하나요?
서버나 내 PC의 .env 파일 같은 비공개 위치에 두고, 브라우저·앱 코드나 공개 저장소에는 넣지 않습니다. kie 대시보드에서 키마다 시간·일·전체 사용 한도와 IP 화이트리스트를 걸 수 있으니 처음부터 설정해 두는 것이 좋습니다.