Çevrilmiş SRT ve VTT dosyaları için Altyazı API'si

Bir videoyu bir kez yükleyin ve konuşulan içeriğe zamanlanmış olarak her hedef dilde SRT ve WebVTT altyazı dosyaları alın. API üzerinden herhangi bir satırı düzelttikten sonra oynatıcınız, uygulamanız veya video düzenleme yazılımınız için güncellenmiş dosyaları indirin.
SRT ve WebVTT
135'ten fazla dil ve bölge seçeneği
REST + Python SDK
upload, create, download
OAuth 2.0
# 1. 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" -H "Content-Type: application/json" \
  -d '{"link": "https://example.com/onboarding.mp4", "name": "onboarding"}'

# 2. one project per subtitle language
for lang in es-mx fr-fr ja-jp; do
  curl -X POST https://api.rask.ai/v2/projects \
    -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
    -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"$lang\"}"
done
GET /v2/projects/{project_id}
.srt + .vtt
# When status is merging_done, download both subtitle files
P=$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN")
curl -s -o onboarding.es-mx.srt "$(echo $P | jq -r .translation_srt_path)"
curl -s -o onboarding.es-mx.vtt "$(echo $P | jq -r .translation_vtt_path)"
Küresel ekipler tarafından tercih ediliyor
Yetenekler

Altyazı API'sinin döndürdüğü tüm özellikler

Podcast'ler ve röportajlar dahil olmak üzere video veya ses kayıtlarından çevrilmiş SRT ve WebVTT dosyaları oluşturun. Her proje için bir hedef dil seçin ve transkript, çeviri ile dublajlı içeriğin yanı sıra altyazı dosyalarına da sahip olun.

SRT ve WebVTT dosyaları

Tamamlanan her proje, hedef dilde bir .srt ve bir .vtt dosyası sunar: Video düzenleme yazılımları ve çoğu platform için SRT, web video oynatımı için WebVTT.

Farklı bir dilde altyazılar

Her pazardaki izleyiciler için dil engellerini ortadan kaldırın: aynı yüklemeden es-mx, pt-br veya fr-ca gibi her hedef dil için bir proje oluşturun. Kaynak dil otomatik olarak algılanır.

Konuşulan içeriğe göre zamanlanmıştır

Her altyazı, bir başlangıç ve bitiş zamanına sahip transkript bölümünü takip eder, böylece her satır konuşulurken ekranda belırir.

Orijinal dilde altyazılar

Transkript, zaman damgalarıyla birlikte her segmentin kaynak metnini barındırır. Birkaç satır kodla aynı dilde altyazılar için bunu bir SRT veya VTT dosyasına dönüştürün.

Diyaloglar için konuşmacı etiketleri

Her transkript segmenti bir konuşmacı etiketi taşır; böylece röportajlar, paneller ve diyaloglar için altyazılara konuşmacı kimliği ekleyebilirsiniz.

Yayınlamadan önce bir satırı düzenleyin

API aracılığıyla herhangi bir segmentin metnini veya zamanlamasını düzeltin ve yeniden oluşturun. Anlaşılmayan kelimeler, isimler ve aksanlar her formatta tek seferde düzeltilir.

Her dilde tutarlı terimler

Bir sözlük, ürün adlarının ve teknik terimlerin tüm altyazı dillerinde aynı kalmasını veya bilerek orijinal dilde kalmasını sağlar.

Altyazılar ve dublajlı sürüm

Aynı proje, çevrilmiş video ve ses akışlarını da döndürür; böylece altyazılar ve dublajlı sürüm tek bir yüklemeden elde edilir.

Sınır olmadan büyüyün

Hız sınırı, eşzamanlılık kotası veya anahtar başına kısıtlama yoktur. Tüm video kütüphanenize tüm hedef dillerde aynı anda altyazı ekleyin.
İş başında görün

Tek video, beş farklı dil seçeneği

Aynı video; İngilizce, Fransızca, Almanca, Portekizce ve İspanyolca olarak hazır. Her dil sürümü kendi SRT ve VTT altyazı dosyalarıyla birlikte gelir.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
İş Akışı

Video yüklemesinden altyazı dosyasına kadar üç aşamalı işlem

Proje oluşturma işlemi; metne dönüştürme, çeviri ve seslendirmeyi tek seferde başlatır. Altyazı satırlarını düzenledikten sonra /generate uç noktasını (endpoint) kullanın.
1

Videonuzu yükleyin

Videoyu dosya olarak gönderin veya YouTube, Google Drive, S3, Vimeo ya da herhangi bir doğrudan bağlantı (URL) üzerinden paylaşın. Tek bir yükleme, tüm altyazı dilleri için geçerlidir.

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

Projeyi oluşturun

Media ID'yi video_id olarak ve her proje için tek bir hedef dil belirtin. Farklı dillere ait projeler aynı anda çalışır.

POST /v2/projects
3

Altyazı dosyalarını indirin

Durum 'merging_done' (birleştirme tamamlandı) aşamasına gelene kadar kontrol edin, ardından .srt ve .vtt dosyalarını indirip kendi sisteminize kaydedin.

GET /v2/projects/{project_id}
İşlem süresi videonun uzunluğuna, konuşmacı sayısına ve hedef dile göre değişiklik gösterir. Yapılan bir testte, 3 dakika 47 saniyelik bir video 165 saniyede tamamlandı.
Sizin için tasarlandı

Listede olmayan bir altyazı formatına veya teslimat yöntemine mi ihtiyacınız var? Ekibimizle görüşün

Farklı bir altyazı formatı, kendi depolama alanınıza teslimat, katalog dışı bir dil veya daha yüksek kapasite: Ekibimiz, üretim iş akışınızın neye ihtiyaç duyduğunu ve mevcut seçenekleri inceler.

Diller ve sesler

Genel katalogda yer almayan bir dilde altyazıya mı ihtiyacınız var? Gereksinimlerinizi ve mevcut seçenekleri ekibimizle görüşün.

Teslimat ve entegrasyon

Webhook’lar, kendi kuyruğunuza aktarım, doğrudan S3’ünüze teslimat, özel uç noktalar. İş akışınızın nasıl beslenmesini beklediğinizi bize bildirin.

Hacim ve işleme kapasitesi

Parti büyüklükleri, işlem başına hedef diller ve işleme önceliği, sabit ürün sınırları değil, sözleşme şartlarıdır.

Güvenlik ve barındırma

Veri konumu, SSO ve SAML, saklama kuralları ve güvenlik incelemesi desteği kurumsal süreçlerin bir parçası olarak yürütülür.
Kullanım örnekleri

Altyazı API'sini kimler kullanır?

İçinde video barındıran platformlar

LMS ve müşteri eğitimi platformları, içerik üreticisi ve video platformları, webinarlar ve sanal etkinlik araçları, video barındırma ve iş akışı SaaS çözümleri, dijital adaptasyon platformları ve canlı alışveriş. Her dildeki altyazıyı video yüklemelerinizin standart bir özelliği haline getirin.

Yerelleştirme ve prodüksiyon ajansları

Tek bir yükleme ile her müşteri dili için SRT ve VTT dosyaları oluşturun. İnceleme yapan kişiler API üzerinden satırları düzeltir ve dosyalar, kimsenin zamanlamayı yeniden ayarlamasına gerek kalmadan güncellenir.

Şirket içi kesintisiz video üretimi

Uluslararası perakende ve e-ticaret, küresel markalar, medya yayıncıları ve kurumsal akademiler. Eğitim ve ürün videolarınızı her pazara ve sesi kapalı izleyen kullanıcılara uygun hale getirin.
Müşteri hikayeleri

Gerçek ekipler, ölçülebilir sonuçlar

Şirketlerin Rask ile videoları nasıl yerelleştirdiğini kendi rakamlarıyla görün.
ok
ok
Kod

Altyazı API kod örnekleri

Her dilde eksiksiz bir örnek: bir video yükleyin, her altyazı dili için bir proje oluşturun, bekleyin ve ardından .srt ile .vtt dosyalarını kaydedin ya da bir HTML5 oynatıcıya ekleyin.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio, urllib.request
from rask_sdk import clients, enums, schemas

LANGS = ["es-mx", "fr-fr", "ja-jp"]

async def subtitle(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)
    # links are presigned for one hour - save the files right away
    urllib.request.urlretrieve(job.translation_srt_path, f"video.{lang}.srt")
    urllib.request.urlretrieve(job.translation_vtt_path, f"video.{lang}.vtt")

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
    media = await client.create_media_link(data=schemas.MediaCreateLink(link="https://example.com/onboarding.mp4"))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)
    await asyncio.gather(*(subtitle(client, media.id, l) for l in LANGS))

asyncio.run(main())
github.com/braskai/rask-sdk
async, typed models
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}"}

pid = requests.post(f"{API}/v2/projects", headers=h,
                    json={"video_id": VIDEO_ID, "dst_lang": "de-de"}).json()["id"]
while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
    time.sleep(10)

# translated subtitles: download the files
open("video.de-de.vtt", "wb").write(requests.get(p["translation_vtt_path"]).content)

# original-language captions: build a WebVTT file from the transcript segments
segs = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()["segments"]
cues = [f"{s['start'].replace(',', '.')} --> {s['end'].replace(',', '.')}\n{s['src']['text']}" for s in segs]
open("video.en.vtt", "w").write("WEBVTT\n\n" + "\n\n".join(cues) + "\n")
requests + polling
same-language captions
// no dependencies, Node 18+ global fetch
import { writeFile } from 'node:fs/promises';
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 call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());

const langs = ['es-mx', 'pt-br', 'ko-kr'];
const tracks = await Promise.all(langs.map(async (dst_lang) => {
  let p = await call('POST', '/v2/projects', { video_id: VIDEO_ID, dst_lang });
  while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }
  const file = `subs/${dst_lang}.vtt`;
  await writeFile(file, await ((await fetch(p.translation_vtt_path)).text()));
  return `<track kind="subtitles" srclang="${dst_lang}" src="/${file}">`;
}));
console.log(tracks.join('\n'));   // paste inside your <video> element
fetch, Node 18+
HTML5 track elements
# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" -d "grant_type=client_credentials" | jq -r .access_token)

# 2. create the project for one subtitle language
ID=$(curl -s -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"it-it\"}" | jq -r .id)

# 3. wait for merging_done
until [ "$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq -r .status)" = merging_done ]; do
  sleep 10
done

# 4. save both subtitle files
P=$(curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN")
curl -s -o video.it-it.srt "$(echo $P | jq -r .translation_srt_path)"
curl -s -o video.it-it.vtt "$(echo $P | jq -r .translation_vtt_path)"
download .srt and .vtt
shell script
<?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']];

foreach (['es-mx', 'tr-tr'] as $lang) {
    $p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
        'video_id' => $videoId, 'dst_lang' => $lang]]));
    while ($p['status'] !== 'merging_done') {
        sleep(10);
        $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
    }
    // presigned links, valid for one hour
    file_put_contents("video.$lang.srt", file_get_contents($p['translation_srt_path']));
    file_put_contents("video.$lang.vtt", file_get_contents($p['translation_vtt_path']));
}
Guzzle 7
plain HTTP
Resmi SDK Python'dır. Node, PHP ve cURL sekmeleri, aynı uç noktaları kullanan düz HTTP örnekleridir.
İlerleme

Bir altyazı projesinin ilerleme durumu nasıl takip edilir?

Her proje belirli aşamalardan geçer; böylece uygulamanıza video yükleyen kullanıcılar her bir altyazı dilinin ilerleme durumunu takip edebilir. Yalnızca üç temel aşamayla ilgilenmeniz gerekir.

Başarılı, burada durun

merging_done
Altyazı dosyaları hazır. Güncel indirme bağlantılarını almak için projeyi bir kez daha çağırın.

Devam ediyor, sorgulamaya devam edin

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Eşleşenlerle birlikte _done durumlar. Bunlar, aşamalı bir ilerleme arayüzüne kolayca uyarlanır.

Başarısız, durun ve rapor edin

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words ve forbidden_link doğrudan kendi kullanıcınıza gösterebileceğiniz kadar anlaşılırdır.
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

Veya sorgulamayı tamamen atlayın

Bizi bir webhook uç noktasına yönlendirin; her durum değişikliği bir POST isteği olarak gelsin, böylece kuyruğunuz her değişimi anında işleme alsın. Webhook teslimi, kurumsal entegrasyon sürecinin bir parçasıdır.
Belgeleri okuyun
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Çıktı

Önce altyazı dosyaları, diğer her şey eş zamanlı olarak

Tamamlanan her proje; hem altyazı formatlarını, hem bu altyazıların arkasındaki döküm (transcript) bölümlerini hem de seslendirilmiş medyayı sunar. İndirme bağlantıları önceden imzalanmıştır ve bir saat boyunca geçerlidir, bu nedenle dosyaları kendi depolama alanınıza kopyalayın.
Alan
Biçim
Nedir?
translation_srt_path
.srt
Düzenleme yazılımları ve çoğu video platformu için hedef dilde altyazılar
translation_vtt_path
.vtt
HTML5 video oynatımı ve web oynatıcıları için WebVTT altyazıları
/transcription
JSON
Her bölüm için kaynak metin, çeviri, konuşmacı etiketi ve zaman damgaları
translated_video
MP4
Seslendirilmiş bir versiyon da yayınlıyorsanız dublajlı video
translated_audio
WAV
Orijinal müzik ve ses efektleriyle karıştırılmış çevrilmiş konuşma
original_video
MP4
Başvuru amacıyla saklandığı şekliyle kaynak dosyanız
Kontrol

Bir altyazı satırını düzeltin, yalnızca o kısmı yeniden oluşturun

Altyazılar transkript bölümlerinden gelir. Bir satırın metnini veya zamanlamasını düzenleyin, yeniden oluşturun; altyazı dosyaları ve dublajlı versiyon birlikte güncellensin. Faturalandırma, çalıştırma başına en az bir dakika olmak üzere değiştirilen bölümleri kapsar.

Bölüm düzeyinde düzenleme

Bölüm düzeyinde düzenleme
Her proje, altyazısını adreslenebilir bölümler halinde sunar; bu nedenle, yanlış bir kelime veya geç gelen bir altyazı, bir yama talebi anlamına gelir.
Metni ve bölümlerini alın
Kaynak metni güncelleyin ve yeniden çevirelim
Kendi ifadelerinizi kullanmak için çevrilmiş metni doğrudan düzenleyin
Zaman damgalarını ayarlayın, bölüm ekleyin veya silin
Herhangi bir konuşmacıya atanmış sesi değiştirin

Terminoloji sözlükleri

Terminoloji sözlükleri
Bir terimler listesi ekleyin; marka isimleri ve teknik terimler her dilde altyazılarda aynı şekilde yazılsın ya da kasıtlı olarak orijinal dilinde kalsın.

Bir sözlük tek bir dil çiftini kapsar ve o hedef dilin tüm bölgesel varyantlarında geçerlidir, böylece tek bir İspanyolca sözlük es-mx ve es-es benzer şekilde hizmet eder. Proje kayıtları sözlük_sürümü, böylece daha sonra yapılan düzenlemeler tamamlanan çalışmayı habersiz değiştirmez.
Girdi

Desteklenen dosya biçimleri

Desteklenen bir video veya ses kaydı yükleyin ya da desteklenen bir medya URL'si kullanın. Her hedef dil için bir proje oluşturun ve SRT ile WebVTT dosyalarını indirin.

Video

7 biçim
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Ses

4 biçim
.mp3
.wav
.flac
.m4a

Harcama yapmadan önce üstveri

Medya uç noktası süreyi, dosya boyutunu, video codec bileşenini, kare hızını, çözünürlüğü, ses codec bileşenini, örnekleme hızını ve kanal yerleşimini döndürür. Projeler video dakikası üzerinden faturalandırıldığı için bir dosyayı önceden doğrulayın ve maliyeti tahmin edin.
Güvenlik ve uyumluluk

Video içeriğiniz için güvenlik ve uyumluluk

Brask Inc, SOC 2 Tip II sertifikasına sahiptir, GDPR kapsamında faaliyet gösterir ve güvenlik incelemeniz için Trust Center'da canlı kontrol durumu yayınlar.

Sertifikalar

SOC 2 Type II
GDPR
CAI ve C2PA üyesi

Şifreleme

Aktarım sırasında TLS 1.2
Bekleme durumunda AES-256
SSE-S3 yönetilen anahtarlar
En az 12 ayda bir anahtar değişimi

İçeriğiniz

Kapalı yapay zeka ortamı
Genel modelleri eğitmek için asla kullanılmaz
Tam dışa aktarma, sağlayıcıya bağımlılık yok

Erişim

SSO ve SAML
Rol tabanlı erişim kontrolü
OAuth 2.0 istemci kimlik bilgileri

Kurumsal

Veri konumu seçenekleri
Özel SLA'lar
Özel hesap yöneticisi

Ses hakları

Kullanım haklarına sahip sentetik sesler
Onaya dayalı ses klonlama
Yapay zeka güvenlik kontrolleri, insan denetimi
Karşılaştırma

Kendi oluşturduğunuz bir altyazı işlem hattına karşı Rask API

Başka bir dildeki altyazılar transkripsiyon, çeviri, zamanlama ve dosya dışa aktarımı gerektirir. İşte aynı sonucun iki farklı yolla elde edilmiş hali.
İhtiyacınız olanlar
Rask API
Parçalardan oluşturulmuş
Zaman damgalı transkripsiyon
Dahil olanlar
Konuşmadan metne dönüştürme API'si
Farklı bir dilde altyazılar
135'ten fazla dil ve bölge seçeneği
Bir çeviri API'si ve yeniden zamanlama
SRT ve WebVTT dışa aktarımı
Her projede her iki format
Kendi dosya oluşturucunuz
Tutarlı terminoloji
Sözlükler
Özel son işlem
Bir satırı düzeltme
Tek bir yama isteği, ardından yeniden oluşturma
Her dosyayı elle düzenleyin
Aynı videonun dublajlı versiyonu
Aynı projeye dahildir
Bir TTS sağlayıcısı ve kendi ses mikslemeniz
İstek sınırları
Yok
Sağlayıcılarınızın belirlediği kurallar geçerlidir
Videoya eklenmiş (gömülü) altyazılar
Rask web uygulamasında mevcut, henüz API'de yok
Kendi video oluşturma/düzenleme işleminiz
Yazı tipi, boyut ve düzen
Video oynatıcınızda ayarlanır
Video oynatıcınızda ayarlanır
Sıkça Sorulan Sorular

Altyazı API'si: Sık sorulan sorular

Aradığınızı bulamadınız mı? Satış departmanıyla iletişime geçin.

Rask'ın bir altyazı API'si var mı?

API hangi altyazı formatlarını döndürür?

Altyazıları orijinal dilde alabilir miyim?

Hangi diller destekleniyor?

API, altyazıları videonun içine gömebilir mi?

Altyazıların yazı tipini, boyutunu veya düzenini değiştirebilir miyim?

Altyazılarda müzik ve ses efektleri belirtiliyor mu?

Konuşmacılar belirtiliyor mu?

Bir altyazı satırını nasıl düzeltebilirim?

İndirme bağlantıları ne kadar süreyle geçerlidir?

Kendi altyazılarımı kullanabilir miyim?

Altyazı API'si nasıl ücretlendirilir?

API erişimini ve API anahtarını nasıl alabilirim?

Tek bir öğleden sonra dublaja başlayın

İlk talebinizi bugün oluşturun; toplu alım koşullarına veya başka hiç kimsenin bulamadığı bir dille ilgileniyorsanız bizimle iletişime geçin.