135개 이상의 언어를 지원하는 동영상 번역 API

동영상 하나를 업로드하면 필요한 모든 언어로 받아볼 수 있습니다. 동영상 번역 REST API가 음성을 텍스트로 변환하고, 번역 및 더빙을 거쳐 번역된 동영상, 자막 파일, 검토용 번역 텍스트를 반환합니다.
135개 이상의 대상 언어
.srt 및 .vtt 형식의 자막
REST + Python SDK
one upload, every language
OAuth 2.0
# 1. exchange client credentials for a token (valid 1 hour)
curl -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials"

# 2. upload the video once - YouTube, Drive, S3, Vimeo or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"link": "https://youtu.be/...", "name": "Q3 launch"}'

# 3. one project per target language - they run in parallel
for lang in es-mx de-de ja-jp pt-br; do
  curl -X POST https://api.rask.ai/v2/projects \
    -H "Authorization: Bearer $TOKEN" \
    -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"$lang\"}"
done
GET /v2/projects/{project_id}
polling, 10s
# Poll each project until merging_done, then collect the files.
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID \
    -H "Authorization: Bearer $TOKEN" \
    | jq '{status, translated_video, translation_srt_path}'
  sleep 10
done
전 세계 팀들이 사용하는
지원 기능

하나의 프로젝트로 가능한 동영상 번역 API의 기능

하나의 API를 통해 동영상을 자동으로 텍스트로 변환하고 번역하며 더빙하세요. 번역된 텍스트를 검토하고, 용어집을 통해 용어의 일관성을 유지하며, 각 플랫폼에 필요한 출력 형식으로 다운로드하세요. 별도 과금되는 립싱크(입모양 맞춤) 기능을 추가할 수 있습니다.

135개 이상의 언어로 번역

동영상과 타겟 언어를 전송하여 es-mx, pt-br, fr-ca 또는 지원되는 기타 지역 언어로 동영상을 번역하세요. 원본 언어는 자동으로 감지됩니다.

화자 감지 및 화자별 목소리 설정

화자가 자동으로 분리되며 각 화자에게 타겟 언어의 목소리가 부여되므로 인터뷰와 패널 토론도 쉽게 알아볼 수 있습니다. 필요에 따라 구성을 변경하거나 화자 수를 직접 지정할 수 있습니다.

원본 목소리 또는 AI 목소리

인스턴트 목소리 복제(Instant Voice Clone)를 통해 각 화자의 원본 목소리를 사용하거나, 저장된 맞춤형 목소리 복제를 재사용하여 여러 동영상에서 일관된 발표자의 목소리를 유지하세요. 두 옵션 모두 지원되는 타겟 언어에서 사용 가능하며, 나머지는 AI 목소리 프리셋이 지원합니다.

립싱크

완성된 프로젝트에서 선택 사항으로 립싱크를 활성화하여 번역된 음성과 입모양을 맞출 수 있으며, 이는 별도로 과금됩니다. 얼굴 감지가 먼저 실행되므로 기능이 정상적으로 작동하는 곳에만 적용됩니다.

기존 배경음 유지

음악, 공간음, 효과음이 음성과 분리되어 새로운 보이스오버 아래에 다시 믹싱되므로 시청자는 다른 언어로도 원본의 제작 품질을 그대로 느낄 수 있습니다.

.srt 및 .vtt 형식의 자막

번역된 모든 동영상에는 타겟 언어로 제공되며 번역된 음성에 맞게 시간이 설정된 두 가지 형식의 자막 파일이 포함되어 있습니다.

용어집을 통한 용어 관리

브랜드 이름, 제품 이름, 기술 용어는 모든 동영상과 모든 언어에서 동일하게 번역되거나 의도에 따라 원본 언어로 유지됩니다.

직접 편집할 수 있는 번역 텍스트

원본과 번역된 텍스트가 나란히 배치된 대본을 불러와 줄이나 타임스탬프를 수정한 후 다시 생성하세요. 검토자가 텍스트를 수정하므로 오디오를 다시 녹음할 필요가 없습니다.

제한 없는 확장

이용 제한, 동시성 할당량, 키별 제한이 없습니다. 전체 카탈로그를 전송하고 대용량의 콘텐츠를 여러 언어로 동시에 번역하세요.
실행 화면 보기

동영상 번역 API가 반환하는 결과물

이 페이지의 작업 흐름을 통해 번역된 동일한 클립입니다. 원본의 화자 목소리를 유지한 채 프랑스어, 독일어, 포르투갈어, 스페인어로 번역된 음성과 배경 오디오가 그대로 유지됩니다.
EN 깃발
En
FR 깃발
금
DE 깃발
De
PT 깃발
Pt
ES 플래그
Es
작업 흐름

업로드부터 번역된 동영상까지 단 3단계

프로젝트를 생성하면 번역이 시작됩니다. 나중에 편집한 후 프로젝트를 다시 더빙하려면 /generate 엔드포인트를 사용하세요.
1

동영상 업로드

멀티파트 폼 데이터로 파일을 전송하거나 YouTube, Google Drive, S3, Vimeo 또는 다이렉트 다운로드 URL의 링크를 게시하세요. 비용을 지불하기 전에 미디어 ID와 기술적 메타데이터를 얻을 수 있습니다.

POST /api/library/v1/media/link
2

언어별 프로젝트 생성

미디어 ID를 video_id로 전달하고 타겟 언어를 지정하세요. 동일한 업로드 파일에서 필요한 각 언어별로 프로젝트를 생성할 수 있으며, 보유하고 있는 경우 자체 대본이나 용어집을 함께 사용할 수 있습니다.

POST /v2/projects
3

목소리 배정 및 재더빙

상태(status)가 merging_done(병합 완료)에 도달할 때까지 확인한 후, 해당 언어의 번역된 동영상과 자막 파일을 다운로드하세요.

GET /v2/projects/{project_id}
처리 시간은 프로젝트에 따라 다릅니다. 대량 번역의 경우 동일한 업로드에서 대상 언어별로 하나의 프로젝트를 만들고, API를 통해 각각의 진행 상황을 추적한 뒤 완료되면 파일을 다운로드하세요.
맞춤형 서비스

기본 목록에 없는 항목이 필요하신가요? 저희 팀에 문의해 주세요.

새로운 언어, 맞춤형 목소리, 자체 전달 방식, 더 높은 처리량 등 동영상 번역 연동 시 기본 목록 외의 기능이 필요하다면 저희 팀이 고객의 요구사항과 이용 가능한 옵션을 검토해 드립니다.

지원 언어 및 목소리

기본 목록에 없는 언어이나 목소리가 필요하신가요? 필요한 사항과 이용 가능한 옵션에 대해 저희 팀과 상담해 보세요.

전송 및 연동

웹훅, 자체 대기열 연동, S3 직접 전송, 맞춤형 엔드포인트를 지원합니다. 시스템에 맞는 방식을 알려주세요.

볼륨 및 처리량

배치 크기, 작업당 타겟 언어 수, 처리 우선순위는 고정된 제품 한계가 아니라 계약을 통해 조율할 수 있습니다.

보안 및 호스팅

데이터 보관, SSO 및 SAML, 보존 규칙 및 보안 검토 지원은 기업 온보딩 과정에서 처리됩니다.
사용 사례

동영상 번역 API를 사용하는 대상

동영상이 포함된 플랫폼

LMS 및 고객 교육 플랫폼, 크리에이터 및 동영상 플랫폼, 웨비나 및 가상 이벤트 도구, 동영상 호스팅 및 워크플로 SaaS, 디지털 채택 플랫폼, 실시간 쇼핑 및 AI 동영상 도구는 사용자가 동영상을 제작하거나 텍스트로 동영상을 생성할 수 있도록 지원합니다. 사용자는 이미 제품에 동영상 콘텐츠를 업로드하고 있으며, API를 통해 동일한 장소에서 여러 언어로 동영상을 번역하여 동영상 번역을 유료 기능 중 하나로 활용할 수 있습니다.

현지화 및 제작 대행사

동영상 번역을 기존의 전달 워크플로에 연결하고 전문가 검토 단계를 유지하세요. 언어 전문가가 번역된 텍스트를 세그먼트별로 검토하므로 팀은 동일한 인원으로 더 많은 고객 언어를 지원할 수 있습니다.

사내 자체 동영상 제작

글로벌 유통 및 전자상거래, 글로벌 프랜차이즈, 미디어 퍼블리셔, 기업 교육 기관. 퍼블리싱 워크플로에 번역을 통합하여 교육용 동영상과 상품 콘텐츠가 다양한 언어로 모든 시장에 도달하도록 하고, 원본 동영상이 변경될 때마다 언어 버전을 재생성하세요.
고객 성공 사례

실제 팀, 가시적인 성과

Rask를 통해 동영상을 현지화한 기업들의 실제 수치와 이야기를 확인해 보세요.
화살표
화살표
코드

동영상 번역 API 코드 예시

각 언어별 완전한 예시: 인증, 일회성 업로드, 대상 언어별 프로젝트 생성, 대기, 번역된 동영상 및 자막 파일 수집.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

TARGETS = ["es-mx", "de-de", "ja-jp", "pt-br"]

async def translate(client, video_id, lang):
    job = await client.create_project(
        data=schemas.ProjectCreate(video_id=video_id, dst_lang=lang))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    video = await client.create_media_link(
        data=schemas.MediaCreateLink(link="https://youtu.be/..."))
    while video.status is not enums.MediaStatus.READY:
        await asyncio.sleep(5)
        video = await client.get_media(media_id=video.id)

    jobs = await asyncio.gather(*(translate(client, video.id, l) for l in TARGETS))
    for j in jobs:
        print(j.dst_lang, j.translated_video, j.translation_srt_path)

asyncio.run(main())
github.com/braskai/rask-sdk
Python 3.8+, async
import time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

video = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()
while video["status"] != "ready":
    time.sleep(5)
    video = requests.get(f"{API}/api/library/v1/media/{video['id']}", headers=h).json()

ids = [requests.post(f"{API}/v2/projects", headers=h,
                     json={"video_id": video["id"], "dst_lang": lang}).json()["id"]
       for lang in ["es-mx", "de-de", "ja-jp", "pt-br"]]

for pid in ids:
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    print(p["dst_lang"], p["translated_video"], p["translation_vtt_path"])
requests + polling
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));

const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then((r) => r.json());

const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const get = (path) => fetch(API + path, { headers: h }).then((r) => r.json());
const post = (path, body) => fetch(API + path, { method: 'POST', headers: h, body: JSON.stringify(body) }).then((r) => r.json());

let video = await post('/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (video.status !== 'ready') { await sleep(5000); video = await get(`/api/library/v1/media/${video.id}`); }

const results = await Promise.all(['es-mx', 'de-de', 'ja-jp', 'pt-br'].map(async (dst_lang) => {
  let p = await post('/v2/projects', { video_id: video.id, dst_lang });
  while (p.status !== 'merging_done') { await sleep(10000); p = await get(`/v2/projects/${p.id}`); }
  return p;
}));

results.forEach((p) => console.log(p.dst_lang, p.translated_video, p.translation_srt_path));
fetch, Node 18+
plain HTTP
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);

$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$video = $json($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']]));
while ($video['status'] !== 'ready') {
    sleep(5);
    $video = $json($http->get("/api/library/v1/media/{$video['id']}", ['headers' => $h]));
}

foreach (['es-mx', 'de-de', 'ja-jp', 'pt-br'] as $lang) {
    $p = $json($http->post('/v2/projects', ['headers' => $h,
        'json' => ['video_id' => $video['id'], 'dst_lang' => $lang]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    echo $lang, ' ', $p['translation_srt_path'], PHP_EOL;
}
POST /v2/projects
OAuth 2.0 client credentials
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);

$auth = json_decode((new Client)->post(
    'https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret],
     'form_params' => ['grant_type' => 'client_credentials']]
)->getBody(), true);

$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$media = json_decode($http->post('/api/library/v1/media/link',
    ['headers' => $h, 'json' => ['link' => 'https://youtu.be/...']])->getBody(), true);

$project = json_decode($http->post('/v2/projects',
    ['headers' => $h, 'json' => ['video_id' => $media['id'], 'dst_lang' => 'es-mx']])->getBody(), true);

while ($project['status'] !== 'merging_done') {
    sleep(10);
    $project = json_decode($http->get("/v2/projects/{$project['id']}",
        ['headers' => $h])->getBody(), true);
}
Guzzle 7
plain HTTP
공식 SDK는 Python입니다. Node, PHP, cURL 탭은 동일한 엔드포인트를 사용하는 일반적인 HTTP 예시입니다.
진행 상황

번역 진행 상황 보고 방식

각 프로젝트는 문서화된 상태 머신을 거쳐 진행되므로 사용자는 모든 언어 버전에 대한 실제 단계별 진행률 표시줄을 통해 과정을 확인할 수 있습니다. 세 가지 그룹만 처리하면 됩니다.

성공, 여기서 중지

merging_done
번역이 완료되었습니다. 프로젝트를 한 번 더 불러와 프로젝트에 사용 가능한 다운로드 링크를 가져오세요.

진행 중, 계속 확인

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
또한 일치하는 항목 _완료 상태.

실패, 중단 및 보고

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words and forbidden_link are specific enough to show directly to your own user. Every error also returns a machine-readable slug for error handling.
Observed run, 3:47 source video, en → es-mx
GET /v2/projects/{project_id}
   0s  created
  11s  transcription_started
  87s  translation_started
  99s  voiceover_started
 154s  merging_started
 165s  merging_done

또는 상태 확인 과정을 완전히 건너뛰세요

웹훅 엔드포인트를 지정하면 모든 상태 전환이 POST 요청으로 전송되므로 큐가 변경 즉시 반응할 수 있습니다. 웹훅 전달은 엔터프라이즈 온보딩의 일부입니다.
문서 읽기
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
결과물

번역된 동영상, 오디오 및 자막

모든 대상 언어의 SRT 및 VTT 형식의 번역된 동영상과 자막을 다운로드하세요. 지원되는 요금제에서는 번역된 음성만 따로 다운로드하거나 원래 배경 오디오와 섞어서 다운로드할 수도 있습니다.
항목
형식
설명
translated_video
MP4
바로 게시할 수 있는 더빙된 동영상
voiceover
WAV
배경음 없는 번역된 음성만 제공되어 자체적으로 믹싱할 수 있습니다.
translated_audio
WAV
번역된 음성과 원래의 배경음악이 섞인 오디오
translation_srt_path
.srt
번역된 언어의 자막
translation_vtt_path
.vtt
웹 플레이어용 WebVTT 자막
original_video
MP4
참고용으로 보관된 원본 파일
제어

번역된 텍스트를 검토한 후 변경된 부분만 다시 더빙하세요.

프로젝트 생성 시 자동 번역으로 시작하거나 직접 승인한 SRT 파일 형태의 번역본을 가져오세요. 게시하기 전에 대본을 검토하고 변경된 부분만 다시 생성하세요. API 재더빙은 변경된 세그먼트를 기준으로 과금됩니다.

문장 단위 편집

문장 단위 편집
모든 프로젝트는 원본 텍스트와 번역된 텍스트가 나란히 배치된 세그먼트로 대본을 제공하므로 하나의 패치 요청으로 수정할 수 있습니다.
대본과 문장 불러오기
원본 텍스트를 수정하면 자동으로 다시 번역됩니다.
번역된 텍스트를 직접 수정하여 원하는 표현을 유지하세요.
타임스탬프 조정, 문장 추가 및 삭제
화자에게 연결된 목소리 변경하기

용어집

용어집
프로젝트에 용어집을 연결하여 브랜드 이름, 제품 이름 및 기술 용어가 모든 언어 버전에서 동일하게 번역되거나 의도적으로 번역되지 않은 상태로 유지되도록 하세요.

용어집 하나는 한 쌍의 언어에 적용되며 해당 목표 언어의 모든 지역별 변형에 공통으로 적용되므로 하나의 스페인어 용어집으로 es-mx 및 es-es 모두 커버할 수 있습니다. 프로젝트 기록은 glossary_version유지되므로 나중에 수정하더라도 완료된 작업이 예기치 않게 변경되지 않습니다.
입력

지원되는 파일 형식

7가지 동영상 형식과 4가지 오디오 형식 중 하나를 업로드하거나 URL을 입력하세요. 지원되지 않는 파일은 번역 시간이 차감되기 전에 파일 형식에 따라 거부됩니다.

동영상

7가지 형식
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

오디오

4가지 형식
.mp3
.wav
.flac
.m4a

작업 전 메타데이터 확인

미디어 엔드포인트는 재생 시간, 파일 크기, 비디오 코덱, 프레임 레이트, 해상도, 오디오 코덱, 샘플링 레이트, 채널 구성을 반환합니다. 동영상 번역은 분 단위로 과금되므로, 사전에 파일을 검증하고 비용을 예상해 보세요.
보안 및 규정 준수

보안 검토 준비 완료

Brask Inc는 SOC 2 Type II 인증을 획득하고 GDPR을 준수하며, 트러스트 센터(Trust Center)에 실시간 제어 상태를 공개합니다. 회원님의 동영상 콘텐츠는 폐쇄된 AI 환경에서 안전하게 처리됩니다.

인증

SOC 2 Type II
GDPR
CAI 및 C2PA 회원사

암호화

전송 중 TLS 1.2 암호화
저장 시 AES-256 암호화
SSE-S3 관리형 키
최소 12개월마다 키 갱신

회원님의 콘텐츠

폐쇄형 AI 환경
일반 모델 학습에 절대 사용되지 않음
전체 내보내기 가능, 종속성 없음

액세스

SSO 및 SAML
역할 기반 접근 제어
OAuth 2.0 클라이언트 자격 증명

기업

데이터 보관 지역 선택 옵션
맞춤형 SLA
전담 계정 관리자

음성 권리

사용 권한이 포함된 합성 목소리
동의 기반 목소리 복제
AI 안전 제어 및 사람의 관리
비교

Rask API와 직접 구축하는 파이프라인 비교

텍스트 번역 API는 글자만 번역하지만, 동영상 번역에는 음성 인식, 타이밍 조절, 목소리 생성 및 오디오 믹싱이 필요합니다. 동일한 기능을 구현하는 두 가지 방법을 아래에서 확인해 보세요.
필요한 기능
Rask API
부품들을 조립하는 방식
자막 추출, 번역, 음성 합성, 오디오 믹싱
한 번의 호출
3~4개의 서비스 업체와 이를 연결하는 코드
동영상에 맞춰 번역 타이밍 조절하기
포함됨
자체 동기화 로직
화자 감지 및 화자별 목소리 설정
포함됨
화자 분리 업체와 자체 목소리 할당 로직 필요
배경 음악과 효과음 유지
포함됨
직접 구축하고 조정해야 하는 오디오 분리 단계
.srt 및 .vtt 형식의 자막
포함됨
자체 타이밍 데이터를 기반으로 생성
립싱크
선택 사항, 별도 과금
별도의 서비스 업체
번역된 자막 한 줄 수정하기
해당 부분만 다시 더빙하고 그 부분만 비용을 지불하세요
작업을 다시 실행하고 파일 비용을 지불하세요
용어 일관성
버전별 용어집
직접 관리하는 전처리 및 후처리
사용량 제한
없음
가장 엄격한 서비스 업체의 기준 적용
지원 목록에 없는 언어
저희 팀과 논의
업체별로 상이
자주 묻는 질문

동영상 번역 API: 자주 묻는 질문

원하시는 내용을 찾지 못하셨나요? 영업팀에 문의해 주세요.

동영상을 자동으로 번역해 주는 API가 있나요?

API 접근 권한과 API 키는 어떻게 발급받나요?

동영상 번역 API 인증은 어떻게 하나요?

API는 동기식인가요, 비동기식인가요?

요청 제한(rate limit)이 있나요?

어떤 언어들로 동영상을 번역할 수 있나요?

하나의 동영상을 동시에 여러 언어로 번역할 수 있나요?

동영상 번역에는 얼마나 걸리나요?

어떤 파일 형식을 지원하나요?

번역된 동영상과 함께 자막도 받을 수 있나요?

공개하기 전에 번역된 텍스트를 수정할 수 있나요?

ChatGPT로 동영상을 번역할 수 있나요?

동영상 번역 비용은 얼마인가요?

단 하루 만에 더블링을 시작해 보세요

오늘 첫 요청을 보내보시고, 대량 이용 조건이나 흔하지 않은 언어가 필요할 때 저희에게 문의해 주세요.