500,000명 이상의 사용자가 신뢰하는 서비스
강력한 API 기능
애플리케이션에 전문 AI 더빙을 통합하는 데 필요한 모든 것글로벌 도달 범위
33개 이상의 언어
영어, 포르투갈어, 스페인어, 프랑스어, 독일어, 중국어, 일본어 등 전 세계에서 가장 많이 사용되는 언어를 지원합니다.실제 목소리
음성 복제
고급 AI 음성 복제 기술로 원본 화자의 목소리를 보존하여 사실적인 더빙 결과를 얻을 수 있습니다.빠르고 안정적인 서비스
빠른 처리
몇 시간이 아닌 몇 분 만에 더빙 프로젝트를 완료하세요. 최적화된 AI 처리 파이프라인으로 빠르게 결과를 얻을 수 있습니다.99.9%
가동 시간
<300ms
응답 시간
24/7
지원
AI 더빙 API 워크플로
몇 번의 API 호출만으로 애플리케이션에 AI 더빙을 통합하세요.01
업로드 URL 가져오기 및 파일 업로드
API를 통해 미리 지정된 URL을 받은 다음 PUT 요청을 사용하여 동영상 파일을 업로드합니다. MP4, MOV, AVI 등 다양한 포맷을 지원합니다.API Request
# 1. Get upload URL
curl -X GET "https://dubsmart.ai/api/v1/upload" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"region": "EU",
"fileExtension": "mp4"
}'
# 2. Upload file using returned URL
curl -X PUT "PRESIGNED_URL_FROM_STEP_1" \
-H "Content-Type: video/mp4" \
--data-binary @video.mp402
프로젝트 만들기
대상 언어 및 음성 설정으로 더빙 프로젝트를 생성합니다. 한 번의 요청으로 여러 언어를 지원합니다.API Request
curl -X POST "https://dubsmart.ai/api/v1/project" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {"path": "uploaded_file_key"},
"targetLanguages": ["es", "fr", "de"],
"voice": "voiceCloning"
}'03
프로젝트 편집
필요에 따라 프로젝트 설정, 제목, 스피커 및 배경 볼륨을 수정합니다.API Request
curl --request PUT \
--url https://dubsmart.ai/api/v1/project \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"title": "Updated Project Title",
"speakers": [
"Speaker 1",
"Speaker 2"
],
"backgroundVolume": 0.5,
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}'04
결과 다운로드
더빙된 동영상 또는 오디오 파일을 다운로드하세요. 개별 세그먼트 또는 전체 더빙 콘텐츠를 다운로드합니다.API Request
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY"AI 더빙 API 엔드포인트
모든 엔드포인트에 대한 예제가 포함된 완전한 API 레퍼런스GET
/upload업로드 파일 URL 가져오기
파일 업로드 및 파일 키 반환을 위한 미리 지정된 URL 가져오기Request
JSON
{
"region": "EU",
"fileExtension": "mp4"
}Response
JSON
{
"url": "https://storage.dubsmart.ai/...",
"key": "uploads/user_id/filename.mp4"
}POST
/voices음성 듣기
필터링 옵션으로 사용 가능한 AI 음성 검색하기Request
JSON
{
"limit": 50,
"filter": {
"language": "en",
"gender": "female",
"accent": "american"
}
}Response
JSON
{
"items": [
{
"id": "voice_id_1",
"name": "Anna",
"value": "anna_en_v2",
"language": "en",
"provider": "elevenlabs"
}
],
"nextCursor": "next_cursor_value"
}POST
/custom-voices사용자 지정 음성 받기
사용자가 만든 사용자 지정 음성 가져오기Request
JSON
{
"limit": 10,
"cursor": "cursor_value"
}Response
JSON
{
"items": [
{
"id": "custom_voice_id",
"name": "My Custom Voice",
"examplePath": "https://..."
}
],
"nextCursor": "next_cursor_value"
}POST
/project프로젝트 만들기
비디오 파일과 대상 언어로 새 더빙 프로젝트 만들기Request
JSON
{
"input": {
"path": "uploaded_file_key",
"type": "LOCAL_FILE",
"voice": "voiceCloning",
"textCheck": false
},
"targetLanguages": ["es", "fr", "de"],
"title": "My Dubbing Project",
"speakersAmount": 2
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"groupId": "64f8a2b1c3d4e5f6a7b8c9d1",
"base": {
"title": "My Dubbing Project",
"state": "Pending",
"progress": 0
},
"targetLanguage": "es",
"groupProjects": [
{"id": "64f8a2b1c3d4e5f6a7b8c9d0", "targetLanguage": "es"},
{"id": "64f8a2b1c3d4e5f6a7b8c9d2", "targetLanguage": "fr"},
{"id": "64f8a2b1c3d4e5f6a7b8c9d3", "targetLanguage": "de"}
]
}GET
/project프로젝트 가져오기
페이지 매김이 있는 모든 더빙 프로젝트 목록 가져오기Request
JSON
{
"cursor": "64f8a2b1c3d4e5f6a7b8c9d0",
"limit": 10
}Response
JSON
{
"items": [
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"base": {
"title": "My Dubbing Project",
"state": "Done",
"progress": 100
},
"targetLanguage": "es",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"nextCursor": "64f8a2b1c3d4e5f6a7b8c9d4"
}PUT
/project프로젝트 편집
프로젝트 설정, 제목, 스피커 및 배경 볼륨 업데이트Request
JSON
{
"title": "Updated Project Title",
"speakers": [
"Speaker 1",
"Speaker 2"
],
"backgroundVolume": 0.5,
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueDELETE
/project프로젝트 삭제
더빙 프로젝트 영구 삭제Request
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueGET
/project/{id}ID로 프로젝트 가져오기
세그먼트를 포함한 특정 프로젝트에 대한 자세한 정보 얻기Request
JSON
GET /project/64f8a2b1c3d4e5f6a7b8c9d0Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"base": {
"title": "My Dubbing Project",
"state": "Done",
"progress": 100
},
"segments": [
{
"id": "64f8a2b1c3d4e5f6a7b8c9d5",
"text": "Hello world",
"translatedText": "Hola mundo",
"start": 0.0,
"end": 1.5,
"speakerId": 0,
"resultUrl": "https://..."
}
],
"videoResult": {
"value": "https://...",
"state": "Done"
}
}POST
/project/regenerate프로젝트 재생성
전체 프로젝트 또는 특정 세그먼트에 대한 오디오 재생성Request
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d0",
"segmentsForRegenerating": ["segment_id_1", "segment_id_2"],
"cloneVoice": true
}Response
JSON
truePOST
/project/speaker스피커 추가
프로젝트에 새 화자 추가하기Request
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"voice": "voice_id"
}Response
JSON
200 OKDELETE
/project/speaker스피커 제거
프로젝트에서 스피커 제거Request
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"speakerId": 0
}Response
JSON
200 OKPOST
/segment세그먼트 만들기
기존 프로젝트에 새 음성 세그먼트 추가하기Request
JSON
{
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "New segment text",
"translatedText": "Texto del nuevo segmento",
"start": 10.5,
"end": 12.0,
"speakerId": 0,
"voice": "voiceCloning"
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "New segment text",
"translatedText": "Texto del nuevo segmento",
"start": 10.5,
"end": 12.0,
"speakerId": 0,
"state": "Pending"
}PUT
/segment세그먼트 편집
세그먼트 텍스트, 타이밍 또는 음성 매개변수 업데이트Request
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0",
"text": "Updated segment text",
"translatedText": "Texto actualizado del segmento",
"start": 10.0,
"end": 12.5,
"speakerId": 0,
"voice": "voiceCloning"
}Response
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"text": "Updated segment text",
"translatedText": "Texto actualizado del segmento",
"start": 10.0,
"end": 12.5,
"speakerId": 0,
"state": "Pending"
}DELETE
/segment세그먼트 삭제
프로젝트에서 ID별로 음성 세그먼트 제거하기Request
JSON
{
"id": "64f8a2b1c3d4e5f6a7b8c9d6",
"projectId": "64f8a2b1c3d4e5f6a7b8c9d0"
}Response
JSON
trueAI 더빙 API 코드 예제
여러 프로그래밍 언어로 바로 사용할 수 있는 코드 예제JavaScript Example
// JavaScript/Node.js Example
const axios = require('axios');
const fs = require('fs');
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://dubsmart.ai/api/v1';
async function createDubbingProject() {
try {
// 1. Get upload URL
const uploadResponse = await axios.get(`${BASE_URL}/upload`, {
params: {
region: 'EU',
fileExtension: 'mp4'
},
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
// 2. Upload file using presigned URL
const fileBuffer = fs.readFileSync('video.mp4');
await axios.put(uploadResponse.data.url, fileBuffer, {
headers: {
'Content-Type': 'video/mp4'
}
});
// 3. Create dubbing project
const projectResponse = await axios.post(`${BASE_URL}/project`, {
input: {
path: uploadResponse.data.key,
type: 'LOCAL_FILE',
voice: 'voiceCloning',
textCheck: false
},
targetLanguages: ['es', 'fr', 'de'],
title: 'My Multilingual Video'
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
console.log('Project created:', projectResponse.data);
return projectResponse.data;
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
// Monitor project status
async function checkProjectStatus(projectId) {
const response = await axios.get(`${BASE_URL}/project/${projectId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
return response.data;
}Python Example
# Python Example
import requests
import time
API_KEY = 'your_api_key_here'
BASE_URL = 'https://dubsmart.ai/api/v1'
def create_dubbing_project():
headers = {'Authorization': f'Bearer {API_KEY}'}
try:
# 1. Get upload URL
upload_params = {
'region': 'EU',
'fileExtension': 'mp4'
}
upload_response = requests.get(
f'{BASE_URL}/upload',
params=upload_params,
headers=headers
)
upload_response.raise_for_status()
# 2. Upload file using presigned URL
with open('video.mp4', 'rb') as file:
upload_file_response = requests.put(
upload_response.json()['url'],
data=file,
headers={'Content-Type': 'video/mp4'}
)
upload_file_response.raise_for_status()
# 3. Create dubbing project
project_data = {
'input': {
'path': upload_response.json()['key'],
'type': 'LOCAL_FILE',
'voice': 'voiceCloning',
'textCheck': False
},
'targetLanguages': ['es', 'fr', 'de'],
'title': 'My Multilingual Video'
}
project_response = requests.post(
f'{BASE_URL}/project',
json=project_data,
headers=headers
)
project_response.raise_for_status()
print('Project created:', project_response.json())
return project_response.json()
except requests.exceptions.RequestException as e:
print(f'Error: {e}')
return None
def monitor_project(project_id):
headers = {'Authorization': f'Bearer {API_KEY}'}
while True:
response = requests.get(
f'{BASE_URL}/project/{project_id}',
headers=headers
)
response.raise_for_status()
project = response.json()
status = project['base']['state']
print(f'Project status: {status}')
if status == 'Done':
print('Project completed!')
return project
elif status == 'Error':
print('Project failed!')
return None
time.sleep(30) # Check every 30 secondscURL Example
# cURL Examples
# 1. Get upload URL
curl -X GET "https://dubsmart.ai/api/v1/upload?region=EU&fileExtension=mp4" \
-H "Authorization: Bearer YOUR_API_KEY"
# 2. Upload file using presigned URL
curl -X PUT "PRESIGNED_URL_FROM_STEP_1" \
-H "Content-Type: video/mp4" \
--data-binary @video.mp4
# 3. Create dubbing project
curl -X POST "https://dubsmart.ai/api/v1/project" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"path": "uploaded_file_key",
"type": "LOCAL_FILE",
"voice": "voiceCloning",
"textCheck": false
},
"targetLanguages": ["es", "fr", "de"],
"title": "My Multilingual Video"
}'
# 4. Check project status
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# 5. Download results
curl -X GET "https://dubsmart.ai/api/v1/project/PROJECT_ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o "dubbed_video.mp4"PHP Example
<?php
// PHP Example
$apiKey = 'your_api_key_here';
$baseUrl = 'https://dubsmart.ai/api/v1';
function createDubbingProject() {
global $apiKey, $baseUrl;
$headers = [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json'
];
try {
// 1. Get upload URL
$uploadParams = [
'region' => 'EU',
'fileExtension' => 'mp4'
];
$uploadResponse = httpRequest(
$baseUrl . '/upload?' . http_build_query($uploadParams),
'GET',
null,
$headers
);
// 2. Upload file using presigned URL
$fileContent = file_get_contents('video.mp4');
$uploadFileResponse = httpRequest(
$uploadResponse['url'],
'PUT',
$fileContent,
['Content-Type: video/mp4']
);
// 3. Create dubbing project
$projectData = [
'input' => [
'path' => $uploadResponse['key'],
'type' => 'LOCAL_FILE',
'voice' => 'voiceCloning',
'textCheck' => false
],
'targetLanguages' => ['es', 'fr', 'de'],
'title' => 'My Multilingual Video'
];
$projectResponse = httpRequest(
$baseUrl . '/project',
'POST',
$projectData,
$headers
);
echo "Project created: " . json_encode($projectResponse);
return $projectResponse;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
return null;
}
}
function httpRequest($url, $method, $data, $headers) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
} elseif ($method === 'PUT') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode >= 200 && $httpCode < 300) {
return json_decode($response, true);
} else {
throw new Exception("HTTP Error: " . $httpCode);
}
}
// Usage
$project = createDubbingProject();
?>자주 묻는 질문
API는 어떤 파일 형식을 지원하나요?
이 API는 MP4, MOV, AVI, MKV, WebM 등 모든 주요 동영상 형식을 지원합니다. 오디오 파일의 경우 MP3, WAV, AAC 및 기타 일반적인 형식을 지원합니다. 최대 파일 크기는 5GB입니다.
더빙은 얼마나 걸리나요?
처리 시간은 동영상 길이와 파일 크기에 따라 다릅니다. 일반적으로 5분 분량의 동영상은 처리하는 데 1분 정도 걸립니다. 기업 고객은 더 빠른 처리 시간으로 우선적으로 처리할 수 있습니다.
어떤 언어가 지원되나요?
영어, 포르투갈어, 스페인어, 프랑스어, 독일어, 중국어, 일본어, 한국어, 러시아어, 아랍어, 힌디어 등 33개 이상의 대상 언어를 지원합니다. 또한 99개 이상의 소스 언어에서 콘텐츠를 감지하고 처리할 수 있습니다.
음성 복제는 어떻게 작동하나요?
고급 AI가 톤, 음조, 억양, 말하기 스타일 등 원어민의 음성 특성을 분석합니다. 그런 다음 대상 언어로 말하면서 이러한 고유한 특성을 유지하는 합성 음성을 생성합니다.
더빙된 콘텐츠를 편집할 수 있나요?
예! API는 완전한 편집 기능을 제공합니다. 번역된 텍스트를 수정하고, 타이밍을 조정하고, 음성을 변경하고, 특정 세그먼트를 재생성할 수 있습니다.
상업용 프로젝트에 API를 사용할 수 있나요?
예! 모든 요금제에서 상업적 사용이 허용됩니다. 이 API는 프로덕션 환경을 위해 설계되었으며 전 세계 주요 콘텐츠 제작자, 기업 및 미디어 회사에서 사용하고 있습니다.
