개발자 문서/한국어 AI 내레이션 TTS

한국어 AI 내레이션 TTS

명세 내보내기OpenAPI 3.0.3Postman 컬렉션Markdown

16가지 전문 내레이션 목소리와 타임라인이 맞는 ASS 자막을 함께 생성합니다.

POST/rest/tts/jobs전체 8개 경로
요청 예제로 이동 ↓

기능·제공 범위

인증
Bearer 키
요청
form-data / GET
응답
JSON · 파일
요금·이용 조건
기본 단가 10P · 문자 수 100자 구간별
이용 전 결제 필요

빠른 시작

서버의 APICK_API_KEY를 준비하고 입력값을 바꾸세요. 아래에서 경로별 입력·응답·실행 환경을 함께 확인할 수 있습니다.

요청과 응답

1. 작업 접수
POST/rest/tts/jobs

Bearer 인증 · multipart/form-data · JSON 응답

입력 항목
폼 항목·타입
필수
설명·예제
voice_idstring
필수
지원 voice_id허용값: v2_ann_m_30s_01, v2_ann_m_30s_02, v2_ann_m_30s_04, v2_ann_m_30s_05, v2_ann_f_30s_01, v2_ann_f_30s_02, v2_ann_f_30s_03, v2_ann_f_30s_04, v2_ann_f_30s_05, v2_m_teen_01, v2_m_young_01, v2_m_mid_01, v2_m_senior_01, v2_f_teen_01, v2_f_young_01, v2_f_senior_01예: v2_ann_m_30s_01
textstring
조건부
합성할 한국어 본문. text와 utterances 중 하나만 사용합니다. 전체 1~800자(공백·줄바꿈 포함).최대 길이: 800예: 오늘 들려드릴 이야기는 한 사람의 선택에서 시작됩니다.
utterancesarray
선택
발화 객체 배열(1~100개). 전체 text 합계 최대 800자. text와 동시 사용 불가
utterances[0][text]string
조건부
발화 본문. text와 utterances 중 하나만 사용합니다. 최대 100개 발화, 전체 본문 합계 800자입니다.
utterances[0][paragraph_id]string
선택
발화가 속한 문단 식별자입니다.
utterances[0][pause_after]string
선택
발화 뒤 쉼. none=없음, micro=짧은 쉼, normal=보통, strong=긴 쉼, paragraph=문단 경계. 생략하면 문맥에 맞춰 자동 지정합니다.허용값: none, micro, normal, strong, paragraph
utterances[0][pause_before_ms]integer
선택
발화 앞 쉼의 길이. 밀리초 단위 정수 0~10000.최솟값: 0최댓값: 10000
응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

정적 연동 예시입니다. 실제 계정·개인정보를 조회하지 않습니다.

2. 상태·목록 조회
GET/rest/tts/jobs/:job_id

Bearer 인증 · 요청 본문 없음 · JSON 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

정적 연동 예시입니다. 실제 계정·개인정보를 조회하지 않습니다.

3. 작업 취소
POST/rest/tts/jobs/:job_id/cancel

Bearer 인증 · multipart/form-data · JSON 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

정적 연동 예시입니다. 실제 계정·개인정보를 조회하지 않습니다.

4. 결과 받기
GET/rest/tts/jobs/:job_id/result

Bearer 인증 · 요청 본문 없음 · 파일 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

파일 직접 응답

audio/mpeg · 정상 응답의 본문을 파일로 저장하세요. 실패하면 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 먼저 확인하세요.

5. 결과 받기
GET/rest/tts/jobs/:job_id/subtitles

Bearer 인증 · 요청 본문 없음 · 파일 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

파일 직접 응답

text/plain · 정상 응답의 본문을 파일로 저장하세요. 실패하면 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 먼저 확인하세요.

6. 상태·목록 조회
GET/rest/tts/jobs/:job_id/quality

Bearer 인증 · 요청 본문 없음 · JSON 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

공개된 정적 응답 예제가 없는 경로입니다. 필드 명세에서 제공 범위를 확인하세요.

정적 연동 예시입니다. 실제 계정·개인정보를 조회하지 않습니다.

7. 결과 받기
GET/rest/tts/jobs/:job_id/candidates/:candidate_id/audio

Bearer 인증 · 요청 본문 없음 · 파일 응답

경로의 job_id, candidate_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID, APICK_CANDIDATE_ID 환경변수에서 읽습니다.

입력 항목

추가 폼 항목이 없습니다. 인증 헤더는 필요합니다.

응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

파일 직접 응답

audio/wav · 정상 응답의 본문을 파일로 저장하세요. 실패하면 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 먼저 확인하세요.

8. 작업 재시도
POST/rest/tts/jobs/:job_id/retry

Bearer 인증 · multipart/form-data · JSON 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 해당 값을 APICK_JOB_ID 환경변수에서 읽습니다.

입력 항목
폼 항목·타입
필수
설명·예제
idempotency_keystring
필수
동일 재개 요청에 재사용하는 키최대 길이: 128예: apick-example-20260921-01
utterance_ids[0]string
필수
재시도 API에서 다시 생성할 발화 ID. 예: u001. 접수 API에는 보내지 않습니다.예: u001
응답과 성공 판정

HTTP 성공과 업무 결과를 구분하세요. 아래 서비스별 결과 필드가 실제 성공·실패를 나타냅니다.

정적 연동 예시입니다. 실제 계정·개인정보를 조회하지 않습니다.

추가 입력 조건·전송 규칙

입력 상세

Header
이름
필수
설명
Authorization
O
Bearer 인증키
Content-Type
O
multipart/form-data; boundary는 클라이언트가 자동 설정합니다.

utterances[]에는 위 네 필드만 사용할 수 있습니다. 발화 식별자·화자·발화 종류·감정값은 서버가 생성·고정하므로 요청 필드가 아닙니다. 자유 감정 지시문, performance, SSML, 임의 속도·음높이, 문장 중간 무음 지시는 지원하지 않습니다.

응답 상세

경로별 응답 예시와 필드 명세는 위 API 요청 설명에 붙어 있습니다. JSON을 파일로 저장하기 전에는 Content-Type과 오류를 확인하세요.

상태·오류·재시도

HTTP 상태 → API 처리 여부 → 업무 상태 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.

코드
HTTP
의미·조치
TTS_REQUEST_INVALID
400·413·422
목소리·문자 수·발화 구조·입력 크기를 확인하세요.
TTS_AUTH_FAILED
401
인증키를 확인하세요.
TTS_ACCESS_DISABLED
403
계정의 API 이용 제한 상태를 확인하세요.
TTS_PAYMENT_REQUIRED
403
최초 결제를 완료한 뒤 이용하세요.
TTS_INSUFFICIENT_POINTS
402
필요한 포인트를 충전하세요.
TTS_NOT_FOUND
404
작업·후보 ID와 소유 계정을 확인하세요.
TTS_JOB_CONFLICT
409
작업 상태·재시도 회차·같은 멱등 키의 요청 내용을 확인하세요.
TTS_GENERATION_FAILED
409
실패 상태를 확인하고 입력을 수정하거나 새 작업을 접수하세요.
TTS_RESULT_UNAVAILABLE
410
파일이 이미 다운로드됐거나 보관 기간이 만료됐습니다.
TTS_TEMPORARILY_UNAVAILABLE
429·503
Retry-After 이후 다시 시도하세요. 재시도 요청에는 같은 멱등 키를 사용하세요.
TTS_BILLING_FAILED
424
결제를 완료하지 못했습니다. Retry-After 이후 다시 시도하세요.
TTS_INTERNAL_ERROR
500
잠시 후 다시 시도하세요.
서비스별 코드·조건 전체 보기

2. 작업 상태 조회

구분
내용
API entry point 소개
GET /rest/tts/jobs/{job_id}
기능 소개
접수한 작업의 현재 상태와 음성·자막 다운로드 가능 여부를 확인합니다.
호출 방식
접수 응답의 job_id를 URL에 넣고 Authorization: Bearer 헤더를 전송합니다. 완료 전에는 2~5초 간격 조회를 권장합니다.
호출 결과
HTTP 200과 waiting, processing, completed, cancelled, failed 중 하나를 반환합니다.
응답 결과
result_available은 MP3, subtitles_available은 ASS 자막의 다운로드 가능 여부입니다.
호출 방식
응답 결과
{
  "data": {
    "job_id": "7f7e43f578cd459db04696416435c789",
    "status": "completed",
    "result_available": true,
    "subtitles_available": true
  },
  "api": { "success": true, "cost": 0 }
}

응답과 상태

status
의미
waiting
접수되어 처리 시작을 기다리는 중
processing
음성 생성 중
completed
완료, MP3·ASS 자막 다운로드 가능
cancelled
취소 완료
failed
생성 실패

처리 설비나 서버 구성 정보는 API 계약에 포함되지 않습니다. 상태 조회는 2~5초 간격을 권장합니다.

상태 오류

APICK이 입력·인증·소유권·저장된 작업 상태로 판정할 수 있는 요청은 음성 서비스 호출 전에 차단합니다. 오류 응답에는 아래 공개 코드와 간단한 안내만 포함하며, 상류 원문·세부 단계·파일 경로·자원 및 모델 상태·진단 정보는 공개하지 않습니다.

코드
HTTP
원인
해결책
TTS_REQUEST_INVALID
400·413·422
요청 내용이 올바르지 않음
입력 형식과 지원 조건 확인
TTS_AUTH_FAILED
401
인증 실패
인증키 확인
TTS_NOT_FOUND
404
작업을 찾을 수 없음
접수 응답의 작업 ID 확인
TTS_JOB_CONFLICT
409
현재 상태에서 요청을 처리할 수 없음
최신 상태 확인 후 다시 요청
TTS_TEMPORARILY_UNAVAILABLE
429·503
일시적으로 서비스 이용 불가
Retry-After 이후 재시도
TTS_GENERATION_FAILED
409
음성 또는 자막 생성 실패
입력 확인 후 새 작업 접수
TTS_RESULT_UNAVAILABLE
410
해당 파일의 1회 다운로드 완료 또는 24시간 만료
보관본이 없으면 새 작업 접수
TTS_INTERNAL_ERROR
500
분류되지 않은 서비스 오류
잠시 후 재시도

정상 취소는 오류가 아니라 HTTP 200과 cancelled 상태를 반환합니다.

공통 폼 입력 오류

FORM_DATA_INVALID · HTTP 400: 필드 이름·타입·배열 인덱스를 확인하세요. 인덱스는 0부터 연속으로 사용합니다.

FORM_DATA_FIELD_CONFLICT · HTTP 400: 같은 값과 중첩 경로를 동시에 지정하지 마세요.

MULTIPART_LIMIT_OR_PARSE_ERROR · HTTP 400/413: boundary·파일 크기·필드 개수를 확인하세요. 서비스별 제한이 우선 적용됩니다.

요금·제한·이용 조건

기능·제공 범위·요금·제한 전체 보기

지원 API 요약

음성 작업은 접수한 뒤 상태를 조회하고, 완료되면 MP3와 ASS 자막을 내려받는 흐름입니다. 두 파일은 완료 후 24시간 이내 각각 한 번 내려받을 수 있으며, 취소는 waiting 또는 processing 상태에서 사용할 수 있습니다.

Method
API entry point
기능
성공 결과
POST
/rest/tts/jobs
음성 작업 접수
HTTP 202와 job_id
GET
/rest/tts/jobs/{job_id}
작업 상태 조회
HTTP 200과 현재 상태
POST
/rest/tts/jobs/{job_id}/cancel
진행 전·진행 중 작업 취소
HTTP 200과 cancelled
GET
/rest/tts/jobs/{job_id}/result
MP3 음성 다운로드
<job_id>.mp3
GET
/rest/tts/jobs/{job_id}/subtitles
ASS 자막 다운로드
<job_id>.ass
GET
/rest/tts/jobs/{job_id}/quality
발화별 품질 이력
검수·속도·반복·후보 목록
GET
/rest/tts/jobs/{job_id}/candidates/{candidate_id}/audio
후보 WAV 재생
HTTP 200 또는 Range 206
POST
/rest/tts/jobs/{job_id}/retry
실패 발화 재개
HTTP 202, 추가 과금 없음

1. 작업 접수

구분
내용
API entry point 소개
POST /rest/tts/jobs
기능 소개
목소리와 대본을 전달해 새로운 음성 합성 작업을 접수합니다.
호출 방식
Authorization: Bearer와 form-data 본문을 전송합니다. 간단 모드의 text 또는 발화 모드의 utterances 중 하나를 사용합니다.
호출 결과
접수 성공 시 HTTP 202를 반환하고 즉시 과금합니다. 이후 취소해도 과금액은 환불되지 않습니다.
응답 결과
job_id, waiting 상태, 목소리 ID, 과금 기준 문자 수를 반환합니다.
호출 방식
응답 결과
{
  "data": {
    "job_id": "7f7e43f578cd459db04696416435c789",
    "status": "waiting",
    "voice_id": "v2_ann_m_30s_01",
    "character_count": 27
  },
  "api": { "success": true, "cost": 10, "pl_id": 12345 }
}

품질 검사와 재개

전체 17종 화자에 같은 검사를 적용합니다. NFC·공백 정규화 후 공백 포함 20자 이상에서 초당 6자 미만이고 예상 시간(글자 수÷8.5)의 1.4배를 넘으면 실패합니다. 반복·참조 문장 혼입과 필수 전사 미확인도 완료로 승인되지 않습니다.

상태의 quality에는 phase, accepted_utterances, failed_utterances, utterances, candidates, final_quality가 포함됩니다. 발화의 speech_rate는 글자 수·길이·cps를, repeat와 reference_intrusion은 검사 결과를 나타냅니다. 미측정 시간은 null입니다.

후보는 실행 중 보존하며 종료 후 72시간 동안 작업 소유자만 조회할 수 있습니다. 후보 조회는 최종 MP3·ASS의 1회 다운로드를 소비하지 않습니다. 검수 이력의 candidate_id를 음원 경로에 넣으세요.

재개 요청은 {"utterance_ids":["u001"],"idempotency_key":"repair-request-001"} 형식입니다. ID는 접수 배열 순서대로 u001부터 시작합니다. 같은 요청을 다시 보낼 때는 같은 키를 사용하고, 같은 키의 발화 목록을 변경하지 마세요. 응답의 resume_revision으로 회차를 구분합니다. 기술적 복구에는 추가 과금이 없고, 후보 예산을 소진한 발화는 실패로 남습니다.

3. 작업 취소

구분
내용
API entry point 소개
POST /rest/tts/jobs/{job_id}/cancel
기능 소개
waiting 또는 processing 상태인 음성 작업을 취소합니다.
호출 방식
접수 응답의 job_id를 URL에 넣고 Authorization: Bearer 헤더를 전송합니다. 요청 본문은 없습니다.
호출 결과
취소 성공 시 HTTP 200을 반환합니다. 이미 종료된 작업은 TTS_JOB_CONFLICT로 거부됩니다.
응답 결과
취소된 작업 ID와 cancelled 상태를 반환합니다. 접수 시 차감된 포인트는 환불되지 않습니다.
호출 방식
응답 결과
{
  "data": {
    "job_id": "7f7e43f578cd459db04696416435c789",
    "status": "cancelled"
  },
  "api": { "success": true, "cost": 0 }
}

4. MP3 음성 다운로드

구분
내용
API entry point 소개
GET /rest/tts/jobs/{job_id}/result
기능 소개
완료된 작업의 최종 음성을 MP3 파일로 내려받습니다.
호출 방식
상태 응답의 result_available이 true일 때 호출하고 응답 본문을 파일로 저장합니다.
호출 결과
HTTP 200과 audio/mpeg 파일을 반환합니다. 완료 후 24시간 안에 한 번만 내려받을 수 있습니다.
응답 결과
<job_id>.mp3 파일이며 규격은 24kHz·mono·48kbps입니다.
호출 방식
응답 결과
Content-Type: audio/mpeg
Content-Disposition: attachment; filename="<job_id>.mp3"

<job_id>.mp3    # 최종 음성 (24kHz · mono · 48kbps)

5. ASS 자막 다운로드

구분
내용
API entry point 소개
GET /rest/tts/jobs/{job_id}/subtitles
기능 소개
완료된 작업의 발화 타이밍과 일치하는 ASS 자막을 내려받습니다.
호출 방식
상태 응답의 subtitles_available이 true일 때 호출하고 응답 본문을 파일로 저장합니다.
호출 결과
HTTP 200과 text/plain; charset=utf-8 파일을 반환합니다. MP3와 별도로 24시간 안에 한 번만 내려받을 수 있습니다.
응답 결과
<job_id>.ass 파일이며 MP3 다운로드 여부와 독립적으로 제공됩니다.
호출 방식
응답 결과
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename="<job_id>.ass"

<job_id>.ass    # 최종 발화 타임라인과 일치하는 ASS 자막

요금

문자 수
차감 포인트
1~100자
10P
101~200자
20P
201~300자
30P
701~800자
80P

공백·문장부호·줄바꿈을 포함한 유니코드 문자 수를 100자 단위로 올림해 100자당 10P를 차감합니다. 접수 성공 시 과금되며 이후 취소해도 환불되지 않습니다.

지원 목소리

같은 안내 문장으로 만든 샘플을 들어보고 콘텐츠 분위기에 맞는 목소리를 선택하세요.

VOICE01
준호 · 남성 전문 내레이션 01v2_ann_m_30s_01

30대 남성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·다큐멘터리
VOICE SAMPLE
VOICE02
태산 · 남성 전문 내레이션 02v2_ann_m_30s_02

30대 남성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·사건 내레이션
VOICE SAMPLE
VOICE03
강우 · 남성 전문 내레이션 04v2_ann_m_30s_04

30대 남성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·정보 내레이션
VOICE SAMPLE
VOICE04
상현 · 남성 전문 내레이션 05v2_ann_m_30s_05

30대 남성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠보고·다큐멘터리
VOICE SAMPLE
VOICE05
지윤 · 여성 전문 내레이션 01v2_ann_f_30s_01

30대 여성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·정보 내레이션
VOICE SAMPLE
VOICE06
수빈 · 여성 전문 내레이션 02v2_ann_f_30s_02

30대 여성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·다큐멘터리
VOICE SAMPLE
VOICE07
은채 · 여성 전문 내레이션 03v2_ann_f_30s_03

30대 여성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠정보·교양 내레이션
VOICE SAMPLE
VOICE08
다인 · 여성 전문 내레이션 04v2_ann_f_30s_04

30대 여성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠뉴스·정보 내레이션
VOICE SAMPLE
VOICE09
예린 · 여성 전문 내레이션 05v2_ann_f_30s_05

30대 여성 앵커형 전문 내레이션 음성입니다.

추천 콘텐츠교양·다큐멘터리
VOICE SAMPLE
VOICE10
하늘 · 청소년 내레이션v2_m_teen_01

청소년 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠청소년·스토리 내레이션
VOICE SAMPLE
VOICE11
도윤 · 청년 남성 내레이션v2_m_young_01

20대 남성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠청년·콘텐츠 내레이션
VOICE SAMPLE
VOICE12
정한 · 중년 남성 내레이션v2_m_mid_01

40대 남성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠교양·다큐멘터리
VOICE SAMPLE
VOICE13
만복 · 장년 남성 내레이션v2_m_senior_01

60대 남성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠회고·다큐멘터리
VOICE SAMPLE
VOICE14
하람 · 청소년 여성 내레이션v2_f_teen_01

10대 여성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠청소년·스토리 내레이션
VOICE SAMPLE
VOICE15
서아 · 청년 여성 내레이션v2_f_young_01

20대 여성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠청년·콘텐츠 내레이션
VOICE SAMPLE
VOICE16
정순 · 장년 여성 내레이션v2_f_senior_01

60대 여성 연령대의 중립 내레이션 음성입니다.

추천 콘텐츠회고·다큐멘터리
VOICE SAMPLE

대본 작성 가이드

발화 모드에서는 본문·문단·발화 경계의 쉼만 조절합니다. 배열의 모든 text 글자 수는 공백·문장부호·줄바꿈을 포함해 합산하며, 한 요청의 합계가 800자를 넘으면 거부됩니다.

1. 대본 본문

마침표·물음표·느낌표·말줄임표·쉼표로 억양과 짧은 쉼이 반영되며, 문장 분리는 자동 문장 쉼이 적용됩니다.

--form-string 'text=정말 아무도 몰랐던 걸까요?'
--form-string 'text=하지만… 기록은 그 사실을 분명히 말하고 있었습니다.'
2. 배열 글자 수 계산

JSON 키와 옵션값은 800자 계산에 포함하지 않습니다. 각 항목이 아니라 모든 text의 합계가 800자 이하여야 합니다.

--form-string 'voice_id=v2_ann_m_30s_01' \
--form-string 'utterances[0][text]=첫 번째 문장입니다.' \
--form-string 'utterances[1][text]=두 번째 문장입니다.'

예를 들어 500자와 300자는 합계 800자로 허용되고, 500자와 301자는 합계 801자로 거부됩니다.

3. 문단 그룹

paragraph_id가 같으면 같은 문단 흐름으로 처리되고, 값이 바뀌면 문단 전환 경계로 처리됩니다.

[
  {
    "paragraph_id": "p001",
    "text": "조사는 계속됐습니다."
  },
  {
    "paragraph_id": "p002",
    "text": "하지만 결정적인 증거는 나오지 않았습니다."
  }
]
4. 발화 뒤 쉼 (pause_after)

생략하면 앞뒤 발화의 문맥(문장 이어짐, 대화 전환, 문단·주제 전환 등)에 맞춰 자동으로 지정합니다. 직접 지정한 값은 그대로 사용합니다.

값
적용
none
쉼 없음
micro
약 150ms
normal
약 450ms
strong
약 900ms
paragraph
약 1,000ms
[
  {
    "pause_after": "normal",
    "text": "그 기록은 마지막으로 확인된 자료였습니다."
  },
  {
    "text": "그리고 그날 이후, 모든 흔적이 사라졌습니다."
  }
]
5. 발화 시작 전 쉼 (pause_before_ms)

다음 발화 앞에 직접 쉼을 지정합니다. 허용 범위는 0~10000밀리초 정수입니다.

[
  {
    "text": "첫 번째 기록입니다."
  },
  {
    "pause_before_ms": 800,
    "text": "두 번째 기록은 전혀 다른 내용을 담고 있었습니다."
  }
]
6. 자동 내부 운율

별도 옵션 없이도 일부 한국어 문장 구조를 분석해 합성용 문장에 자연스러운 쉼표를 추가합니다. 표시용 원문은 그대로 유지됩니다.

--form-string 'text=시간이 늦었으니까 서둘러야 합니다.'

합성용 내부 예: 시간이 늦었으니까, 서둘러야 합니다.

7. 숫자·날짜·단위

숫자와 날짜는 발음 정규화 규칙에 따라 처리되므로 오탈자 없이 작성합니다.

--form-string 'text=2003년 7월 14일, 오전 2시 30분에 신고가 접수됐습니다.'
권장 형식
--form-string 'voice_id=v2_ann_m_30s_01' \
--form-string 'utterances[0][paragraph_id]=p004' \
--form-string 'utterances[0][pause_after]=normal' \
--form-string 'utterances[0][text]=그날 밤, 마을에는 이상할 만큼 고요한 정적이 내려앉았습니다. 하지만 한 집의 불빛만은 꺼지지 않았습니다.'

연동 시 확인할 내용

예제는 경로별로 최소 요청과 오류 처리 포함 모드를 제공합니다. 실제 사용 환경의 시간 제한·취소·업무 성공 판정을 적용하세요.

추가 예제·서비스별 연동 안내

전체 호출 예시

개발가이드 검색

필요한 API와 이용 요금을 함께 확인하세요.

표시 가격은 기본 단가입니다. 상세 과금 조건은 각 가이드에서 확인하세요.