본문으로 건너뛰기

음성 합성 권장 사항

좋은 합성 결과는 자연스러운 문장, 정확한 문장 부호, 음성과 일치하는 언어 설정에서 시작합니다. 안정적인 운영을 위해서는 retry와 API 키 보관 방식도 함께 설계해야 합니다.

텍스트는 어느 길이로 보내야 하나요?

한 문장 또는 자연스럽게 한 번에 말할 발화 단위로 보내세요. 너무 짧게 자른 조각은 음높이, 속도, 쉼이 달라질 수 있고, 지나치게 긴 요청은 생성 시간과 실패 비용을 키웁니다.

  • 문장 부호로 의도한 쉼과 끝을 명확히 표현합니다.
  • 제목, 본문, 버튼 문구처럼 말하기 목적이 다른 텍스트는 요청을 나눕니다.
  • 이어 읽는 문맥이 중요하면 자연스러운 문장 단위로 묶어 보냅니다.
  • 같은 문장을 여러 조각으로 합칠 때는 최종 파일의 무음 구간을 확인합니다.

표현 태그는 어떻게 사용하나요?

지원 태그는 [laughter], [sigh], [en], [wa], [hnn]입니다. 태그는 발화 흐름 안에 직접 넣고, 한 문장에 너무 많이 사용하지 마세요.

정말 다행이에요. [sigh] 이제 마음을 놓아도 되겠네요.

지원하지 않는 대괄호 태그는 요청 오류로 처리됩니다. HTTP 요청에서 자유로운 연기 지시가 필요하면 instruct 필드에 자연어로 작성하세요.

언어와 음성은 어떻게 선택하나요?

요청 전에 /v1/voices를 조회하고, 계정에서 사용할 수 있는 voice_id와 language 조합을 선택하세요.

  • 표시 이름 대신 안정적인 voice_id를 저장합니다.
  • 본문 언어와 language_code를 일치시킵니다.
  • 여러 언어가 섞이면 의미 있는 발화 단위로 나누어 각각 알맞은 언어를 지정합니다.
  • 품질 비교에서는 text, voice, language, output format을 고정합니다.

어떤 출력 형식을 선택해야 하나요?

형식사용하기 좋은 경우주의점
mp3_44100_128웹·앱 재생, 전송 크기 절감손실 압축
wav_24000후처리, 편집, 분석파일 크기가 큼

일반 재생에는 기본값인 MP3를, 편집 파이프라인에는 WAV를 우선 검토하세요. 한 프로젝트 안에서는 sample rate와 format을 통일하면 후처리가 단순해집니다.

retry는 어떻게 설계하나요?

모든 실패를 재시도하지 마세요. 수정 없이 성공할 가능성이 있는 오류만 제한적으로 재시도합니다.

응답재시도권장 행동
400·422아니요입력과 지원 범위를 수정
401·402아니요인증 또는 결제 및 청구 상태 해결
404보통 아니요voice_id와 접근 권한 확인
429Retry-After를 따르고 jitter가 있는 exponential backoff
500·502·503·504제한적으로 예같은 요청을 최대 2~3회 재시도
timeout제한적으로 예응답 수신 여부와 중복 처리를 먼저 확인

예를 들어 1초, 2초, 4초를 기준으로 작은 무작위 지연을 더할 수 있습니다. 대량 작업은 동시 요청 수를 제한하고 계정별 RPM 안에서 큐로 처리하세요. 정확한 한도는 API 키 또는 계약별로 다를 수 있습니다.

API 키는 어떻게 보관하나요?

  • 서버 환경 변수나 비밀 관리 서비스에 저장합니다.
  • 브라우저와 모바일 클라이언트에서 Kitsch API를 직접 호출하지 않습니다.
  • 로그에는 전체 키 대신 prefix와 일부 preview만 남깁니다.
  • 개발, staging, production 키를 분리합니다.
  • 노출이 의심되면 즉시 revoke하고 새 키로 교체합니다.
export KITSCH_API_KEY="<API_KEY>"

운영 로그에는 무엇을 남기나요?

API 키나 전체 사용자 텍스트를 그대로 남기지 말고 아래 항목을 구조화해 기록하세요.

  • 요청 시각과 애플리케이션 작업 ID
  • endpoint, voice_id, language, output format
  • HTTP 상태 코드
  • x-kitsch-request-id
  • retry 횟수와 최종 결과

문의할 때 request ID, 발생 시각, endpoint, 상태 코드를 전달하면 원인 확인이 빨라집니다.