본 사이트는 파트너스 활동으로 수수료를 받으며, 서버 운영과 무료 앱 개발에 사용됩니다. 본 사이트는 파트너스 활동으로 수수료를 받으며
서버 운영과 무료 앱 개발에 사용됩니다.
←목록

큐레이터 단비's 칼럼

Featured · AI 음성 API

kie · Gemini 3.8 Flash-Lite TTS

kie AI로 구글 Gemini TTS 쓰는 법 | 가입·충전·API 호출부터 목소리 70개 샘플까지

영상 내레이션을 매번 녹음하기 어렵다면, 대본을 API에 보내 WAV 파일로 받는 방법이 있습니다. 구글의 최신 음성 모델을 kie의 키 하나로 부르고, 한 번 충전한 크레딧은 기한 없이 쓰는 흐름을 처음부터 끝까지 정리했습니다.

게시 2026-10-15 · 가격·정책은 2026년 10월 15일 kie 공식 페이지 기준

[광고] 이 글의 kie 가입·충전 링크(min-inter.co.kr/link/kie-ai-api)는 제휴 링크입니다. 링크를 통해 가입하거나 충전하면 큐레이터 단비가 일정 수수료를 받을 수 있으며, 이용자가 내는 금액은 같습니다.

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 값만 바꾸면 둘을 오갈 수 있습니다.

항목값설명
모델 IDgoogle/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 · 가입·결제

가입과 무료 크레딧

  1. kie 가입 페이지에 들어가 로그인 버튼으로 계정을 만듭니다. 구글 계정으로 바로 가입할 수 있습니다.
  2. 가입하면 새 사용자용 무료 크레딧 80개가 들어옵니다. Flash-Lite TTS 기준으로 7초짜리 문장 수백 개를 시험할 수 있는 양입니다.
  3. 모델 페이지의 플레이그라운드에서 화자를 추가하고 대사를 넣어 먼저 들어 봅니다. 화면에서 만든 요청은 JSON 보기로 그대로 확인할 수 있어 API 요청 본문을 짜는 데 도움이 됩니다.
  4. 왼쪽 메뉴의 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로도 확인합니다. 반복 작업 전후에 잔액을 찍어 두면 작업 단가를 정확히 계산할 수 있습니다.
잔액 조회 (GET /api/v1/chat/credit)
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 키 발급과 보안

  1. kie 대시보드 왼쪽 메뉴에서 API Keys(kie.ai/api-key)로 들어가 새 키를 만듭니다.
  2. 키마다 시간·일·전체 사용 한도를 걸 수 있습니다. 반복문이 멈추지 않는 사고가 나도 한도에서 끊깁니다.
  3. IP 화이트리스트를 켜면 지정한 서버 IP에서만 그 키가 동작합니다. 고정 IP 서버에서 돌린다면 켜 둡니다.
  4. 키는 .env 같은 비공개 파일에 두고 코드는 환경 변수에서 읽습니다.
.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 · 1인 낭독
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에 정의한 이름과 정확히 같아야 합니다.

요청 본문 · 2인 대화 (실제 사용 대본 앞부분)
{
  "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 · 결과 조회
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개 샘플을 만든 스크립트를 줄인 것이라 그대로 반복문에 넣어 여러 목소리를 뽑을 수 있습니다.

kie_gemini_tts.py
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개

Bodi남6.96초
Lumi여7.76초
Sadaltager남Knowledgeable7.96초
Sola여7.16초
Sulafat여Warm7.72초
Varo남7.32초
Zephyr여Bright8.08초

광고 내레이션 Commercial · 5개

Koda남6.96초
Kore여Firm7.36초
Nika여7.00초
Tavi여8.44초
Zeno남7.40초

안내·교육 Instructional · 8개

Algenib남Gravelly6.80초
Despina여Smooth7.72초
Erinome여Clear8.00초
Kira여7.08초
Ludo남7.60초
Mako남8.24초
Rasalgethi남Informative6.72초
Rina여7.48초

팟캐스트 Podcast · 6개

Alnilam남Firm7.36초
Brio남6.84초
Jori여7.48초
Laomedeia여Upbeat7.44초
Rami남6.84초
Veda여7.12초

스토리텔러 Storyteller · 6개

Achird남Friendly7.44초
Enzo남7.44초
Riko남7.00초
Sami여8.52초
Zali여8.76초
Zubenelgenubi남Casual6.24초

디지털 비서 Digital Assistant · 11개

Algieba남Smooth7.52초
Aoede여Breezy7.20초
Autonoe여Bright6.96초
Callirrhoe여Easy-going7.96초
Enceladus남Breathy7.20초
Gero남7.32초
Iapetus남Clear7.80초
Neno남7.60초
Olin남7.64초
Tari여8.08초
Umbriel남Easy-going7.00초

콜센터 Call Center · 7개

Achernar여Soft7.24초
Charon남Informative6.76초
Daro남6.96초
Fola여7.16초
Hali여6.96초
Milo남7.84초
Puck남Upbeat7.20초

컨시어지 Concierge · 7개

Arlo남7.60초
Cleo여6.64초
Fenrir남Excitable7.60초
Finn남6.88초
Leda여Youthful8.44초
Lora여7.20초
Orus남Firm7.28초

기술 지원 Tech Support · 6개

Enya여7.32초
Jett남6.96초
Knox남7.12초
Nyla여7.88초
Sadachbia남Lively7.24초
Vindemiatrix여Gentle8.00초

전문 발표 Professional · 7개

Cruz남6.84초
Elio남7.44초
Gacrux여Mature6.76초
Pulcherrima여Forward7.76초
Schedar남Even7.12초
Tova여7.76초
Zuri여7.60초

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달러 안팎으로 계산됩니다. 글자 수 기준 단가는 바로 아래 실사용 기록에서 자세히 정리했습니다. 마음에 안 들어 두세 번 다시 뽑아도 부담이 작습니다. 가장 비싼 부분은 생성이 아니라 대본을 다듬는 시간이라, 대본을 먼저 확정하고 생성하는 순서가 결국 가장 싸게 먹힙니다.

[광고] 제휴 링크

샘플 70개 전체가 0.06달러

충전한 크레딧은 만료되지 않으니 소액으로 시작해 내 대본으로 직접 들어 보세요.

Part 5 · 운영

실사용 기록으로 본 글자당 비용

유튜브 쇼츠와 롱폼 내레이션을 만들면서 나흘(2026년 10월 11~14일) 동안 같은 모델로 50번 생성한 기록을 대본별로 묶었습니다. 1인 낭독은 Zubenelgenubi, 2인 대화는 Zubenelgenubi와 Gacrux 조합이고, temperature 1, filler_words 끔으로 통일했습니다. 같은 대본을 여러 번 뽑은 경우는 한 줄로 합쳐 회차별 크레딧과 범위를 함께 적었습니다. 글자 수는 실제로 요청에 넣은 대본 텍스트를 공백을 빼고 센 값입니다.

#대본 주제 · 첫 줄모드글자 수회차별 크레딧평균100자당평균 원화처리 시간(초)
1가격 추적 안내 한 줄
“가격은 매일 바뀝니다.”
1인28자0.100.100.36약 0.7원5
2RTX 50 시리즈 소개
“알티엑스 오십 시리즈는 엔비디아 블랙웰…”
1인200자0.680.680.34약 4.6원7
3그래픽카드 시세 한 문장
“시월 십삼일 최저가는…”
1인43자0.170.170.40약 1.1원4
4RTX 50 가격 분석 롱폼
“알티엑스 오공칠공, 지금 역대 최저가보다…”
1인1,332자4.584.580.34약 30.7원37
5차 키 갇힘 대처법(질문 포함 대화)
“키를 차 안에 두고 문이 잠겼다면…”
2인792자2.732.730.34약 18.3원22
6X·스레드 성장(알고리즘 해설)
“내 글만 죽어라 올리면, 안 큽니다…”
1인490자1.81 / 1.89 / 1.82 (1.81~1.89)1.840.38약 12.3원18 · 20 · 21
7X·스레드 성장 쇼츠 A
“스레드와 X를 키워 본 사람들은…”
1인177자0.70 / 0.72 / 0.79 (0.70~0.79)0.740.42약 4.9원8 · 10 · 9
8X·스레드 성장 쇼츠 B
“스레드 공식 가이드도…”
1인173자0.71 / 0.75 / 0.64 / 0.69 / 0.63 / 0.63 (0.63~0.75)0.680.39약 4.5원9 · 9 · 9 · 129 · 9 · 7
9고양이는 액체일까
“액체일까요? 이그노벨상까지 받은…”
1인253자1.09 / 1.02 / 1.03 (1.02~1.09)1.050.41약 7.0원12 · 13 · 13
10바이브 코딩 번아웃 B
“바이브 코딩하다 쓰러질 수 있는 이유”
1인254자1.01 / 1.03 / 1.03 (1.01~1.03)1.020.40약 6.9원11 · 12 · 12
11바이브 코딩 번아웃 A
“바이브 코딩하다 쓰러질 수 있는 이유”
1인217자0.92 / 0.95 / 0.85 (0.85~0.95)0.910.42약 6.1원10 · 12 · 11
12AI 작업 반복 루프
“지시, 확인, 피드백, 또 확인…”
1인110자0.50 / 0.43 / 0.43 (0.43~0.50)0.450.41약 3.0원7 · 6 · 6
13AI 작업 요령 3가지
“AI는 반복과 기다림의 연속입니다…”
1인139자0.59 / 0.53 / 0.60 (0.53~0.60)0.570.41약 3.8원7 · 7 · 8
14AI 이미지 프롬프트 팁
“이 사진, 카메라 없이 만들었습니다…”
1인160자0.70 / 0.63 / 0.69 (0.63~0.70)0.670.42약 4.5원10 · 8 · 10
15스위치 2 케이스 쇼츠 B
“이게 닌텐도 스위치 투인데요…”
1인282자1.06 / 0.96 / 1.03 (0.96~1.06)1.020.36약 6.8원13 · 11 · 12
16달 원자로 해설 B
“달에는 콘센트도, 한전도 없습니다”
2인651자2.34 / 2.34 / 2.38 (2.34~2.38)2.350.36약 15.8원25 · 23 · 24
17달 원자로 해설 A
“달의 밤은 이 주가 넘습니다”
2인638자2.542.540.40약 17.0원25
18스위치 2 케이스 쇼츠 A
“이게 닌텐도 스위치 투인데요…”
1인256자0.93 / 0.90 / 0.89 (0.89~0.93)0.910.35약 6.1원11 · 10 · 11
19타이어 공기압 한 줄
“내 차 공기압 스티커를 사진으로 찍어 두세요.”
2인21자0.09 / 0.07 / 0.08 / 0.08 / 0.09 (0.07~0.09)0.080.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 이용약관 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 화이트리스트를 걸 수 있으니 처음부터 설정해 두는 것이 좋습니다.