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

Bir videoyu bir kez yükleyin ve konuşulan içeriğe göre zamanlanmış olarak her hedef dilde SRT ile WebVTT alt yazı dosyaları elde edin. API üzerinden herhangi bir satırı düzeltin, ardından güncellenen dosyaları oynatıcınız, uygulamanız veya video düzenleme yazılımınız için 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 kullanılmaktadır
Yetenekler

Alt yazı API'sinin sunduğu 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 alt yazı 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 üzerinde video oynatma için WebVTT.

Farklı bir dilde alt yazılar

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

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

Her alt yazı, başlangıç ve bitiş zamanına sahip bir transkript segmentini takip eder, böylece her satır konuşulduğu anda ekranda görünür.

Orijinal dilde alt yazılar

Transkript, zaman damgalarıyla birlikte her segmentin kaynak metnini tutar. Birkaç satır kodla bunu aynı dilde alt yazılar için 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 alt yazı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 bir kez düzeltilir.

Her dilde tutarlı terimler

Bir sözlük; ürün adlarının ve teknik terimlerin tüm alt yazı dillerinde veya bilinçli olarak orijinal dilde aynı kalmasını sağlar.

Alt yazılar ve dublajlı bir sürüm

Aynı proje ayrıca çevrilmiş video ve ses kanallarını da sunar, böylece alt yazılar ve dublajlı bir sürüm tek bir yüklemeden elde edilir.

Sınırsız ölçeklendirin

İstek sınırı yok, eşzamanlılık kotası yok, anahtar başına kısıtlama yok. Tüm video kitaplığınızı her hedef dilde aynı anda alt yazıyla buluşturun.
Çalışırken görün

Tek video, beş farklı dil sürümü

İngilizce, Fransızca, Almanca, Portekizce ve İspanyolca dillerinde aynı klip. 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üklemeden altyazı dosyasına üç istek

Projeyi oluşturmak; transkripsiyonu, çeviriyi ve dublajlı sürümü tek seferde başlatır. Altyazı satırlarını düzenledikten sonra /generate uç noktasını kullanın.
1

Videonuzu yükleyin

Videoyu dosya olarak gönderin veya YouTube, Google Drive, S3, Vimeo ya da herhangi bir doğrudan URL'den bağlantı paylaşın. Tek bir yükleme, her altyazı dili için geçerlidir.

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

Projeyi oluşturun

Media ID'yi video_id olarak ve proje başına bir hedef dil belirtin. Farklı diller için projeler aynı anda çalışır.

POST /v2/projects
3

Altyazı dosyalarını indirin

Durum merging_done aşamasına ulaşana kadar kontrol edin, ardından .srt ve .vtt dosyalarını indirip kendi tarafınıza kaydedin.

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

Listelenmeyen bir altyazı formatına veya teslimatına mı ihtiyacınız var? Ekibimizle konuşun

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? Gereksinimleriniz ve mevcut seçenekler hakkında 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 saklama yeri, SSO ve SAML, saklama kuralları ve güvenlik incelemesi desteği, kurumsal adaptasyon sürecinin bir parçası olarak ele alınır.
Kullanım örnekleri

Altyazı API'sini kimler kullanır?

İçinde video barındıran platformlar

Öğrenim yönetim sistemleri (LMS) ve müşteri eğitimi platformları, içerik üretici ve video platformları, webinar ve sanal etkinlik araçları, video barındırma ve iş akışı yazılımları, dijital benimseme platformları, canlı alışveriş. Her dildeki altyazıyı video yüklemelerinizin bir özelliği haline getirin.

Yerelleştirme ve prodüksiyon ajansları

Tek bir yüklemeyle her müşteri dili için SRT ve VTT dosyaları sunun. İnceleme yapanlar API üzerinden satırları düzeltir ve dosyalar, kimsenin zamanlamayı yeniden ayarlamasına gerek kalmadan güncellenir.

Şirket içi kesintisiz video prodüksiyonu

Uluslararası perakende ve e-ticaret, küresel franchise'lar, medya yayıncıları, kurum içi eğitim platformları. Eğitim ve ürün videolarınızı her pazara ve ses olmadan izleyen kullanıcılara erişilebilir kılın.
Müşteri hikayeleri

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

Şirketlerin Rask ile videolarını kendi rakamlarıyla nasıl yerelleştirdiği.
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
Python resmi SDK'dır. Node, PHP ve cURL sekmeri, aynı uç noktalara yönelik saf HTTP örnekleridir.
İlerleme

Bir altyazı projesi ilerleme durumunu nasıl bildirir?

Her proje belgelenmiş aşamalardan geçer; böylece uygulamanıza video yükleyen kullanıcılar her altyazı dilinin ilerleyişini takip edebilir. Yalnızca üç grupla 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
Ayrıca eşleşen _done durumlar. Bunlar, aşamalı bir ilerleme arayüzüne kolayca uyarlanabilir.

Başarısızlık, dur ve bildir

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words ve forbidden_link kendi kullanıcınıza doğrudan gösterecek 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 durum kontrolünü tamamen atlayın

Bize bir webhook uç noktası gösterin; her durum değişikliği bir POST olarak gelir, böylece kuyruğunuz her değişimi gerçekleştiği anda işler. Webhook teslimi, kurumsal sisteme geçiş 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 onunla birlikte

Tamamlanan her proje hem altyazı formatlarını, hem arkalarındaki transkripsiyon segmentlerini hem de dublajlı 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
Ne işe yarar
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 oynatma 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 mikslenmiş çevrilmiş konuşma
original_video
MP4
Başvuru için saklanan orijinal 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üncellenir. Ücretlendirme, ç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, transkriptini adreslenebilir bölümler olarak sunar; böylece yanlış bir kelime veya geç kalan bir altyazı tek bir istek ile düzeltilebilir.
Metni ve bölümlerini alın
Kaynak metni düzenleyin, biz de yeniden çevirelim
Kendi ifadelerinizi korumak için çevrilmiş metni doğrudan düzenleyin
Zaman damgalarını ayarlayın, yeni bölümler ekleyin veya mevcut bölümleri silin
Herhangi bir konuşmacıya ait sesi değiştirin

Terminoloji sözlükleri

Terminoloji sözlükleri
Bir sözlük ekleyin; böylece marka adları ve teknik terimler her dildeki altyazıda aynı şekilde okunur veya bilerek orijinal dilde kalır.

Bir sözlük tek bir dil çiftini kapsar ve 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ı glossary_version, böylece sonraki düzenlemeler tamamlanan çalışmaları asla 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 verileri inceleyin

Medya uç noktası süreyi, dosya boyutunu, video kodeğini, kare hızını, çözünürlüğü, ses kodeğini, örnekleme hızını ve kanal düzenini döndürür. Projeler video dakikası üzerinden ücretlendirildiği için dosyayı önceden doğrulayın ve maliyeti tahmin edin.
Güvenlik ve uyumluluk

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

Rask Inc, SOC 2 Type II sertifikasına sahiptir, GDPR kapsamında faaliyet gösterir ve güvenlik incelemeniz için Güven Merkezi'nde canlı kontrol durumunu yayınlar.

Sertifikalar

SOC 2 Tip 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 aktarım, sisteme 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'ler
Özel müşteri temsilcisi

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 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 alt yazılar
135'ten fazla dil ve bölge seçeneği
Çeviri API'si ve yeniden zamanlama
SRT ve WebVTT dışa aktarımı
Her projede her iki format
Kendi dosya yazıcınız
Tutarlı terminoloji
Sözlükler
Özel son işlem
Bir satırı düzeltme
Tek bir istek, ardından yeniden oluşturma
Her dosyayı tek tek düzenleyin
Aynı videonun dublajlı versiyonu
Aynı projeye dahildir
Bir TTS sağlayıcısı ve kendi ses miksajınız
İstek sınırları
Yok
Sağlayıcılarınızın zorunlu kıldığı özellikler
Videoya eklenmiş (gömülü) altyazılar
Rask web uygulamasında, henüz API'de yok
Kendi video oluşturma ve düzenleme süreciniz
Yazı tipi, boyutu ve yerleşimi
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ı destekliyor?

Orijinal dilde altyazı alabilir miyim?

Hangi diller destekleniyor?

API, altyazıları videonun üzerine kalıcı olarak ekleyebilir (yakabilir) mi?

Altyazıların yazı tipini, boyutunu veya yerleşimini değiştirebilir miyim?

Altyazılar müziği ve ses efektlerini belirtiyor 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ı yükleyebilir miyim?

Altyazı API'si nasıl ücretlendirilir?

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

Tek bir öğleden sonra dublaj yapmaya başlayın

İlk isteğinizi bugün oluşturun ve toplu kullanım koşullarına veya kimsenin bilmediği bir dile ihtiyacınız olduğunda bizimle iletişime geçin.