ai3.aiinplanet.com

TTS (음성합성) — OpenAI 호환 API · Kokoro / 아나운서16(StyleTTS2) / 제로샷(vocos) · 한국어 자동 전처리 · 스트리밍 · wav/mp3/opus · 제로샷 클론
Base URL
https://ai3.aiinplanet.com
호환 규격
OpenAI Audio API 호환 (/v1/audio/speech)
인증
Authorization: Bearer <API_KEY> (키는 별도 안내)
출력
오디오 바이너리 — wav/mp3/opus (response_format) · 스트리밍 시 chunked
API 키는 보안을 위해 이 공개 문서에 표시하지 않습니다. 예제의 YOUR_API_KEY 자리에 발급받은 키(sk-aiin-…)를 넣어 사용하세요.

모델 (요청의 model 값으로 백엔드 분기)

model엔진언어/보이스
kokoro (별칭 tts-1, tts-1-hd)Kokoro영어 — af_*, am_* (예: af_bella, am_adam)
styletts2 (별칭 aiin-korean)아나운서16 (StyleTTS2, 16음성 파인튜닝)한국어 16 보이스 — aiin_* (예: aiin_lee_jiwoo)
vocos-lowadv제로샷 (StyleTTS2 + Vocos 디코더)한국어 16 보이스(동일) — 깔끔한 음질, timestamps·참조음성 clone 지원

보이스 전체 목록: GET /v1/audio/voices?model=kokoro 또는 ?model=styletts2

엔드포인트

메서드경로설명인증
POST/v1/audio/speech텍스트 → 음성 (메인 · 스트리밍 · wav/mp3/opus)Bearer 필수
POST/v1/audio/clone NEW제로샷 클론 — 참조음성(multipart)으로 임의 목소리 합성 (wav/mp3/opus)Bearer 필수
POST/v1/audio/transcriptions음성 → 텍스트 (ASR, multipart)Bearer 필수
GET/v1/audio/voices?model=보이스 목록Bearer 필수
GET/v1/models모델 목록공개

빠른 시작

cURL
Python (openai)
한국어 (StyleTTS2)
스트리밍
# 영어 (Kokoro) → speech.wav
curl https://ai3.aiinplanet.com/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kokoro",
    "input": "Hello, this is a test.",
    "voice": "af_bella",
    "response_format": "wav"
  }' --output speech.wav
from openai import OpenAI

client = OpenAI(
    base_url="https://ai3.aiinplanet.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.audio.speech.create(
    model="kokoro",
    voice="af_bella",
    input="Hello, this is a test.",
)
resp.stream_to_file("speech.wav")
# 한국어 (StyleTTS2) — model=styletts2, 한국어 보이스
curl https://ai3.aiinplanet.com/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "styletts2",
    "input": "안녕하세요. 음성 합성 테스트입니다.",
    "voice": "aiin_lee_jiwoo",
    "language": "ko"
  }' --output korean.wav
# 스트리밍 — stream:true, 받는 즉시 재생 (첫 소리 ~0.1초)
curl -N https://ai3.aiinplanet.com/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "styletts2",
    "input": "첫 문장입니다. 두 번째 문장이 이어서 재생됩니다.",
    "voice": "aiin_yoon_minseo",
    "stream": true
  }' | ffplay -nodisp -autoexit -

요청 파라미터 POST /v1/audio/speech

필드설명
modelkokoro/tts-1/tts-1-hd(영어) · styletts2/aiin-korean · vocos-lowadv(한국어)
input합성할 텍스트 (필수). 한국어 엔진은 자동 전처리됨(아래 참조)
voice보이스 ID (/v1/audio/voices 참조). 한국어 기본 aiin_lee_jiwoo
language한국어: ko
response_format NEWwav(기본, 무손실) · mp3(128k, ~1/3 용량) · opus(64k, ~1/6 용량). stream과 자유 조합 — 아래 출력 형식 참조
speed말하기 속도 0.5~2.0, 기본 1.0 (vocos-lowadv)
stream NEWtrue청크 스트리밍(Transfer-Encoding: chunked) — 문장이 완성되는 대로 전송해 즉시 재생. 생략 시 완성본 WAV 한 번에. 한국어 엔진 전용
timestampstrue 시 오디오 대신 JSON(base64 오디오 + 단어/음절 타임스탬프). vocos-lowadv 전용 (stream과 병용 불가)

자동 한국어 전처리 NEW

한국어 엔진(styletts2·vocos-lowadv) 호출 시 입력 텍스트가 발음 정규화를 자동으로 거칩니다(설정 불필요). 응답 헤더 X-Aiin-Preprocess: 1로 확인됩니다.

대상처리
영문낱자 한글 발음JTBC→제이티비씨, MBC→엠비씨
소수·퍼센트풀어 읽기4.6%→사 점 육 퍼센트, 14.2%→십사 점 이 퍼센트
숫자·단위한글수 변환90도→구십 도, 2024년→이천이십사 년, $100→백 달러
한자한글 독음(두음법칙)故 최진영→고 최진영, 未來→미래
괄호 ( )내용 삭제(안 읽음)박해강(지성 분)이→박해강이
따옴표·기호제거/정리'제목'→제목, 가운뎃점 ·→쉼표

긴 본문은 문장 단위로 나눠 합성 후 이어붙여 반환합니다(엔진 최적 길이 유지). ··시간만 고유어로 읽습니다(두 시·쉰 살). kokoro(영어)는 전처리 대상이 아닙니다.

스트리밍 재생 NEW

용도에 따라 두 가지로 받습니다. 파일로 저장·후처리하려면 기본(whole), 대기 없이 바로 재생하려면 스트리밍을 쓰세요.

모드요청응답용도
기본(whole)stream 생략완성된 WAV 한 번에 (정확한 길이 헤더)파일 저장·다운로드·후처리
스트리밍stream:truechunked로 문장 완성 즉시 WAV 청크 전송실시간 재생 (첫 소리 ~0.1초)

스트리밍은 문장별로 즉시 전송돼 첫 오디오가 ~0.1초에 도착합니다(전체 완성 대기 없음). 응답 헤더 X-Aiin-Stream: 1. 스트리밍 응답을 파일로 저장하면 재생은 되지만 헤더의 총 길이가 미확정이라, 정확한 길이의 파일이 필요하면 기본(whole) 모드를 쓰세요.

출력 형식 & 전송 방식 — API로 선택 NEW

response_format(형식)과 stream(전송)을 자유롭게 조합해 요청하세요. 재생 목적이면 스트리밍, 저장·대역폭 절약이면 mp3/opus를 권장합니다.

response_format용량(3분36초 기준)content-type용도
wav (기본)~10.4 MBaudio/wav무손실 · 후처리 · 호환성
mp3~3.5 MB (1/3)audio/mpeg다운로드 · 저장 (권장)
opus~1.8 MB (1/6)audio/ogg대역폭 최소
고객 용도요청 본문결과
파일 저장(작게){"response_format":"mp3"}완성된 mp3 한 번에
즉시 재생(작게){"stream":true,"response_format":"mp3"}mp3 청크 스트리밍 · 첫음성 ~30ms
즉시 재생(무손실){"stream":true}wav 청크 스트리밍 · 첫음성 ~50ms
정확한 길이 파일{"response_format":"wav"}완성 wav (정확한 길이 헤더)
# 스트리밍 + mp3 — 재생하며 받기(첫음성 즉시 + 작은 용량)
curl -N https://ai3.aiinplanet.com/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"styletts2","input":"안녕하세요.","voice":"aiin_kim_seoyeon","language":"ko","stream":true,"response_format":"mp3"}' --output out.mp3

# 파일 저장 + opus — 최소 용량
curl https://ai3.aiinplanet.com/v1/audio/speech \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"vocos-lowadv","input":"제로샷 음성입니다.","voice":"aiin_yoon_minseo","language":"ko","response_format":"opus"}' --output out.opus

스트리밍에서도 response_format이 그대로 적용됩니다(mp3/opus 청크 실시간 인코딩). 4개 서버(ai1~ai4) 모두 동일하게 동작합니다.

제로샷 클론 NEW POST /v1/audio/clone

참조 음성(reference_audio)을 업로드하면 그 목소리로 임의 텍스트를 합성합니다(제로샷). multipart/form-data 요청, response_format(wav/mp3/opus) 지원, 한국어 자동 전처리 적용.

필드설명
input합성할 텍스트 (필수)
reference_audio참조 음성 파일 (필수, wav 등) — 이 목소리로 복제
modelvocos-lowadv(기본, 제로샷) 또는 styletts2
emotionnone(기본) · happy · sad · angry
speed0.5~2.0, 기본 0.95
response_formatwav(기본) · mp3 · opus
# 제로샷 클론 → mp3
curl https://ai3.aiinplanet.com/v1/audio/clone \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "input=복제할 목소리로 이 문장을 읽습니다." \
  -F "reference_audio=@myvoice.wav" \
  -F "model=vocos-lowadv" \
  -F "response_format=mp3" --output cloned.mp3

참고 사항