DIVE

DIVE Standard

최고급 음성 합성 기술로 사람과 구별할 수 없는 자연스러운 음성을 생성하세요

개요

DIVE(Deep Immersive Voice Engine)는 자연스러운 한국어 음성을 안정적으로 만들어 주는 음성 합성 서비스입니다. 방송, 오디오북, 광고 나레이션처럼 높은 품질이 필요한 제작 환경에 맞춰 설계되었습니다.

최고급 품질

스튜디오급 48kHz 고품질 오디오

자연스러움

사람과 구별 불가능한 자연스러운 발음

감정 표현

섬세한 감정과 뉘앙스 표현

API 엔드포인트

POST https://agitvxptajouhvoatxio.supabase.co/functions/v1/dive-synthesize-v1

필수 헤더

Content-Type: application/json
X-API-Key: {YOUR_API_KEY}

요청 파라미터

공통 파라미터
파라미터타입설명필수
textstring | string[]변환할 텍스트 (최대 480자). string[] 입력 시 각 요소를 문장으로 강제 분리하여 순서대로 처리합니다.
modestring"preset" 또는 "saved" (기본값: "preset")
langstring언어 코드 (기본값: "ko")
outputFormatstring
wav_8000wav_16000wav_24000wav_48000pcm_8000pcm_16000pcm_24000pcm_48000opus_48000_32opus_48000_64opus_48000_96opus_48000_128mp3_22050_48mp3_24000_64mp3_44100_96mp3_48000_128aac_48000_128alaw_8000ulaw_8000

기본값: "wav_48000"

rawDatabooleantrue 설정 시 오디오 URL 대신 바이너리 데이터 반환 (기본값: false) ⚠️ 허용된 사용자만 사용 가능
enableTimestampsbooleantrue 설정 시 응답에 단어별 타임스탬프 포함 (기본값: false) ⚠️ 허용된 사용자만 사용 가능
sentenceSilenceSecnumber문장 사이 무음 시간(초, 0.1~2.0, 선택). text가 string[]일 때 각 문장 사이에 적용됩니다.
volumenumber볼륨 조절 (number, 1~100, 기본값: 50)
speednumber속도 조절 (number, 0.5~2.0, 소수 둘째 자리까지 허용, 기본값: 1.00)
pitchnumber음높이 조절 (number, -6.0~+6.0, 소수 첫째 자리까지 허용, 기본값: 0.0)
dictionaryIdstring단어장 치환에 사용할 dictionaryId (선택)

ℹ️ mp3, wav, pcm, opus, aac 키워드를 보내면 각각 mp3_48000_128, wav_48000, pcm_48000, opus_48000_96, aac_48000_128로 자동 변환됩니다.

💡 mode에 따라 추가 파라미터가 달라집니다.

mode: preset
Preset 모드

기본 제공되는 음성을 사용합니다.

파라미터타입설명필수
voiceNamestring음성 이름 (예: "시아", "민준")필수
emotionstringneutral | angry | sad | happy | calm필수
mode: saved
Saved 모드

사용자가 저장한 목소리를 사용합니다.

파라미터타입설명필수
savedVoiceIdstring저장된 목소리 ID (UUID)필수

참고: savedVoiceId는 콘솔 Playground에서 목소리를 저장할 때 생성됩니다. 간단한 UUID만으로 저장된 목소리를 사용할 수 있습니다.

응답 형식

JSON Response
{
  "jobId": "550e8400-e29b-41d4-a716-446655440000",
  "audioUrl": "https://download-example.output/generated.wav",
  "outputFormat": "wav_48000"
}
JSON Response (enableTimestamps: true)
{
  "jobId": "550e8400-e29b-41d4-a716-446655440000",
  "audioUrl": "https://download-example.output/generated.wav",
  "outputFormat": "wav_48000",
  "timestamps": [
    { "word": "안녕하세요", "start": 0.0, "end": 0.85 },
    { "word": "프리미엄", "start": 0.92, "end": 1.35 },
    { "word": "음성", "start": 1.42, "end": 1.78 },
    { "word": "합성", "start": 1.85, "end": 2.20 },
    { "word": "DIVE입니다", "start": 2.28, "end": 3.10 }
  ]
}
rawData 사용 시rawData를 true로 보내면 JSON 대신 바이너리 오디오를 직접 반환하며 Content-Type과 파일 확장자는 outputFormat에 맞춰집니다.
enableTimestamps 사용 시enableTimestamps를 true로 설정하면 응답에 단어별 타임스탬프(timestamps) 배열이 포함됩니다. 각 항목에는 word(단어), start(시작 시간, 초), end(종료 시간, 초)가 포함됩니다.

프리미엄 음성

지원 음성

DIVE는 다양한 연령, 톤, 스타일의 고품질 한국어 음성을 제공합니다. 각 음성은 서로 다른 감정 표현을 지원합니다.

감정 지원 표시:

neutral happy sad angry calm
여성 음성
루나
리아
서아
유나
지우
포키
혜지니
미스티
소울
수빈
하윤
시아
혜진
자몽
은주
주은
효은
미현
일화
향기
선주
송작가
연수
수민
헤이제이
다인
주해란
희옥
재경
경이
순분
소리
애라
핑크캣
세이룬
프린세스
졸리
도금봉
자비왕후
신이
흑마녀
하경
나나
윤선
가현
나린
나수
나은
도하
루엘
미경
민지
벨리
서빈
서연
선자
소영
수아
수진
시나
시룬
연서
연주
영희
예담
예린
은경
은나
은린
은민
은서
이란
정숙
주리
지아
지연
지현
채영
채원
하니
하린
혜희
효라
효주
도영
모용
현소
현솔
황보
효수
세아
윤지
소담
다혜
민하
다솔
채린
비아나
정린
연화
금례
혜순
남성 음성
세라핀
겐지
아델
이안
카일
레이븐
서윤재
강민호
에반젤
차준혁
스트라테고스
우영
희웅
미성
선우
기림
무성
우람
준영
수주
박기자
강철
찬희
또대리
행사맨
승길
허윤도
승훈
바른
달봉이
남춘
요원
레미
오과장
카이저
폼비
개똥이
호박이
강남
아라곤
강희
재현
윤기
강우
강헌
경범
기석
대성
류안
만수
만호
명호
문수
민균
민석
백리
복동
상우
상철
승태
영수
재기
재민
재원
재혁
정우
종길
준근
준호
찬호
창우
춘식
태성
태수
태원
태현
해룡
현근
현우
태윤
현석
상진
재형
강율
태호
기태
태진
성호
강현
이겸
연호
태경
만덕

⚠️ 일부 음성은 제한된 감정만 지원합니다:

  • 도금봉: calm 미지원
  • 자비왕후: calm, sad 미지원
  • 강남: sad 미지원
  • 아라곤: sad 미지원

💡 사용법: voiceName과 emotion 파라미터를 함께 사용하세요.
예: "voiceName": "시아", "emotion": "neutral"

감정 표현 상세

neutral

중립적

happy

밝고 즐거운

sad

차분하고 슬픈

angry

강렬하고 단호한

calm

차분하고 침착한

코드 예시

다양한 언어로 DIVE API를 호출하는 예시입니다. 모드와 언어를 선택하세요.

const response = await fetch('https://agitvxptajouhvoatxio.supabase.co/functions/v1/dive-synthesize-v1', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': '{YOUR_API_KEY}'
  },
  body: JSON.stringify({
    text: "안녕하세요. 프리미엄 음성 합성 DIVE입니다.",
    mode: "preset",
    voiceName: "시아",
    emotion: "neutral",
    lang: "ko"
  })
});

const data = await response.json();
console.log('Audio URL:', data.audioUrl);