Untertitel-API für übersetzte SRT- und VTT-Dateien

Laden Sie ein Video einmal hoch und erhalten Sie Untertiteldateien im SRT- und WebVTT-Format für jede Zielsprache, zeitlich passend zum gesprochenen Inhalt. Korrigieren Sie jede Zeile über die API und laden Sie aktualisierte Dateien für Ihren Player, Ihre App oder Ihre Videobearbeitungssoftware herunter.
SRT und WebVTT
Über 135 Sprachen und regionale Optionen
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)"
Von globalen Teams genutzt
Funktionen

Alles, was die Untertitel-API liefert

Erstellen Sie übersetzte SRT- und WebVTT-Dateien aus Video- oder Audioaufnahmen, einschließlich Podcasts und Interviews. Wählen Sie für jedes Projekt eine Zielsprache aus und erhalten Sie Untertiteldateien zusammen mit dem Transkript, der Übersetzung und den synchronisierten Inhalten.

SRT- und WebVTT-Dateien

Jedes fertige Projekt liefert eine .srt-Datei und eine .vtt-Datei in der Zielsprache: SRT für Videobearbeitungssoftware und die meisten Plattformen, WebVTT für die Videowiedergabe im Web.

Untertitel in einer anderen Sprache

Beseitigen Sie Sprachbarrieren für Zuschauer in allen Märkten: Erstellen Sie aus demselben Upload ein Projekt pro Zielsprache, wie etwa es-mx, pt-br oder fr-ca. Die Quellsprache wird automatisch erkannt.

Passend zum gesprochenen Inhalt zeitlich abgestimmt

Jeder Untertitel folgt einem Transkriptsegment mit Start- und Endzeit, sodass jede Zeile genau dann auf dem Bildschirm erscheint, wenn sie gesprochen wird.

Untertitel in der Originalsprache

Das Transkript enthält den Quelltext jedes Segments mit Zeitstempeln. Konvertieren Sie es in wenigen Zeilen Code in eine SRT- oder VTT-Datei für Untertitel in derselben Sprache.

Sprecherkennzeichnungen für Dialoge

Jedes Transkriptsegment trägt eine Sprecherkennzeichnung, sodass Sie Untertitel für Interviews, Podiumsdiskussionen und Dialoge mit einer Sprecherzuordnung versehen können.

Bearbeiten Sie eine Zeile vor der Veröffentlichung

Korrigieren Sie den Text oder das Timing eines beliebigen Segments über die API und generieren Sie es neu. Unklare Wörter, Namen und Akzente werden einmalig in jedem Format korrigiert.

Einheitliche Begriffe in jeder Sprache

Ein Glossar sorgt dafür, dass Produktnamen und Fachbegriffe in allen Untertitelsprachen oder absichtlich in der Originalsprache identisch bleiben.

Untertitel und eine synchronisierte Version

Dasselbe Projekt liefert auch die übersetzten Video- und Audiospuren, sodass Untertitel und eine synchronisierte Version aus einem einzigen Upload stammen.

Skalieren Sie ohne Grenzen

Keine Ratenlimits, kein gleichzeitiges Kontingent, keine pro Schlüssel gedrosselte Leistung. Versehen Sie Ihre gesamte Videobibliothek in allen Zielsprachen parallel mit Untertiteln.
In Aktion erleben

Ein Video, fünf Sprachversionen

Derselbe Clip auf Englisch, Französisch, Deutsch, Portugiesisch und Spanisch. Jede Sprachversion enthält eigene SRT- und VTT-Untertiteltateien.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Workflow

Drei Schritte vom Video-Upload bis zur Untertiteldatei

Das Erstellen des Projekts startet Transkription, Übersetzung und die synchronisierte Version in einem Durchgang. Verwenden Sie den Endpunkt /generate, nachdem Sie Untertitelzeilen bearbeitet haben.
1

Lade dein Video hoch

Laden Sie das Video als Datei hoch oder fügen Sie einen Link von YouTube, Google Drive, S3, Vimeo oder eine direkte URL ein. Ein einziger Upload reicht für jede Untertitelsprache.

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

Projekt erstellen

Übergeben Sie die Medien-ID als video_id und eine Zielsprache pro Projekt. Projekte für verschiedene Sprachen laufen parallel.

POST /v2/projects
3

Untertiteldateien herunterladen

Warten Sie, bis der Status den Wert „merging_done“ erreicht hat, laden Sie dann die .srt- und .vtt-Dateien herunter und speichern Sie sie bei sich ab.

GET /v2/projects/{project_id}
Die Bearbeitungszeit hängt von der Videolänge, der Anzahl der Sprecher und der Zielsprache ab. In einem beobachteten Test war ein 3:47 Minuten langes Video nach 165 Sekunden fertig.
Auf Ihre Bedürfnisse zugeschnitten

Benötigen Sie ein Untertitelformat oder eine Bereitstellung, die nicht aufgeführt ist? Sprechen Sie mit unserem Team

Ein anderes Untertitelformat, die Bereitstellung in Ihrem eigenen Speicher, eine Sprache außerhalb des Katalogs oder ein höherer Durchsatz: Unser Team prüft die Anforderungen Ihres Produktions-Workflows und die verfügbaren Optionen.

Sprachen und Stimmen

Benötigen Sie Untertitel in einer Sprache außerhalb des öffentlichen Katalogs? Sprechen Sie mit unserem Team über Ihre Anforderungen und die verfügbaren Optionen.

Bereitstellung und Integration

Webhooks, Einspeisung in Ihre eigene Warteschlange, direkte Bereitstellung auf Ihrem S3 oder benutzerdefinierte Endpunkte. Sagen Sie uns einfach, wie Ihre Pipeline Daten benötigt.

Volumen und Durchsatz

Batch-Größen, Zielsprachen pro Aktion und Verarbeitungspriorität sind Teil Ihrer vertraglichen Vereinbarung und unterliegen keinen starren Produktlimits.

Sicherheit und Hosting

Datenspeicherung, SSO und SAML, Aufbewahrungsregeln und Support bei Sicherheitsprüfungen werden im Rahmen des Enterprise-Onboardings geregelt.
Anwendungsfälle

Wer nutzt eine Untertitel-API?

Plattformen mit integrierten Videos

LMS- und Kundenschulungsplattformen, Creator- und Videoplattformen, Webinar- und Event-Tools, Video-Hosting- und Workflow-SaaS, Plattformen für digitale Einführung sowie Live-Shopping. Machen Sie Untertitel in jeder Sprache zu einer Funktion Ihrer Video-Uploads.

Lokalisierungs- und Produktionsagenturen

Stellen Sie SRT- und VTT-Dateien für jede Kundensprache über einen einzigen Upload bereit. Prüfer korrigieren Zeilen über die API, und die Dateien werden aktualisiert, ohne dass ein erneutes Timing erforderlich ist.

Interne, kontinuierliche Videoproduktion

Internationaler Einzelhandel und E-Commerce, globale Franchise-Unternehmen, Medienverlage, Unternehmensakademien. Machen Sie Schulungs- und Produktvideos für jeden Markt und für Zuschauer zugänglich, die ohne Ton schauen.
Kundenreferenzen

Echte Teams, messbare Ergebnisse

Wie Unternehmen mit Rask Videos lokalisieren – in konkreten Zahlen.
Pfeil
Pfeil
Code

Code-Beispiele für die Untertitel-API

Ein vollständiges Beispiel pro Sprache: Ein Video hochladen, ein Projekt pro Untertitelsprache erstellen, warten und dann die .srt- und .vtt-Dateien speichern oder sie einem HTML5-Player hinzufügen.
# 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 ist das offizielle SDK. Die Registerkarten für Node, PHP und cURL zeigen einfache HTTP-Beispiele für dieselben Endpunkte.
Fortschritt

Wie ein Untertitelprojekt den Fortschritt meldet

Jedes Projekt durchläuft dokumentierte Status, sodass Benutzer, die Videos in Ihre App hochladen, den Fortschritt jeder Untertitelsprache verfolgen können. Sie müssen nur bei drei Gruppen aktiv werden.

Erfolgreich, hier stoppen

merging_done
Die Untertiteldateien sind bereit. Rufen Sie das Projekt noch einmal auf, um neue Download-Links zu erhalten.

Wird ausgeführt, Status weiter abfragen

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Plus das passende _done Diese lassen sich perfekt in einer Benutzeroberfläche für den Fortschritt darstellen.

Fehler, Stopp und Meldung

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words und forbidden_link sind aussagekräftig genug, um sie direkt Ihren eigenen Nutzern zu zeigen.
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

Oder das Abfragen ganz überspringen

Verweisen Sie auf einen Webhook-Endpunkt, und jeder Statusübergang kommt als POST an, sodass Ihre Warteschlange im Moment des Geschehens auf jede Änderung reagiert. Die Webhook-Bereitstellung ist Teil des Enterprise-Onboardings.
Dokumentation lesen
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Ausgabe

Untertiteldateien zuerst, alles andere parallel dazu

Jedes fertige Projekt stellt sowohl die Untertitelformate, die dahinterliegenden Transkriptionssegmente als auch die synchronisierten Medien bereit. Download-Links sind mit einer Signatur versehen und eine Stunde lang gültig. Kopieren Sie die Dateien daher am besten in Ihren eigenen Speicher.
Feld
Format
Was es ist
translation_srt_path
.srt
Untertitel in der Zielsprache für Bearbeitungssoftware und die meisten Videoplattformen
translation_vtt_path
.vtt
WebVTT-Untertitel für die HTML5-Videowiedergabe und Web-Player
/transcription
JSON
Quelltext, Übersetzung, Sprecherkennung und Zeitstempel für jedes Segment
translated_video
MP4
Das synchronisierte Video, wenn Sie auch eine vertonte Version veröffentlichen
translated_audio
WAV
Übersetzte Sprache gemischt mit der Originalmusik und den Soundeffekten
original_video
MP4
Ihre Quelldatei zur Referenz
Steuerung

Korrigieren Sie eine Untertitelzeile und generieren Sie nur diesen Teil neu

Untertitel stammen aus Transkriptsegmenten. Bearbeiten Sie den Text oder das Timing einer Zeile, generieren Sie das Ganze neu und die Untertiteldateien sowie die synchronisierte Version aktualisieren sich automatisch. Die Abrechnung erfolgt nach den geänderten Segmenten mit einer Mindestdauer von einer Minute pro Durchlauf.

Bearbeitung auf Segmentebene

Bearbeitung auf Segmentebene
Jedes Projekt stellt sein Transkript als adressierbare Segmente bereit, sodass ein falsches Wort oder ein verspäteter Untertitel mit einer einzigen Patch-Anfrage behoben ist.
Das Transkript und seine Segmente abrufen
Den Quelltext anpassen, damit wir ihn neu übersetzen
Den übersetzten Text direkt anpassen, um Ihre eigenen Formulierungen beizubehalten
Zeitstempel anpassen, Segmente hinzufügen oder löschen
Sprechern eine neue Stimme zuweisen

Glossare für Fachbegriffe

Glossare für Fachbegriffe
Fügen Sie ein Glossar hinzu, damit Markennamen und Fachbegriffe in den Untertiteln jeder Sprache einheitlich sind oder absichtlich in der Originalsprache bleiben.

Ein Glossar deckt ein Sprachpaar ab und gilt für alle regionalen Varianten dieser Zielsprache, sodass ein einziges spanisches Glossar es-mx und es-es gleichermaßen dient. Das Projekt speichert glossary_version, sodass spätere Änderungen bereits fertiggestellte Arbeit nicht unbemerkt verändern.
Eingabe

Unterstützte Dateiformate

Laden Sie eine unterstützte Video- oder Audioaufnahme hoch oder verwenden Sie eine unterstützte Medien-URL. Erstellen Sie für jede Zielsprache ein Projekt und laden Sie die entsprechenden SRT- und WebVTT-Dateien herunter.

Video

7 Formate
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 Formate
.mp3
.wav
.flac
.m4a

Metadaten, bevor Kosten entstehen

Der Medienendpunkt liefert Informationen zu Dauer, Dateigröße, Videocodec, Bildrate, Auflösung, Audiocodec, Abtastrate und Kanal-Layout. Überprüfen Sie eine Datei im Voraus und schätzen Sie die Kosten ab, da Projekte nach Videominuten abgerechnet werden.
Sicherheit und Compliance

Sicherheit und Datenschutz für Ihre Videoinhalte

Brask Inc ist nach SOC 2 Type II zertifiziert, arbeitet gemäß DSGVO und veröffentlicht den aktuellen Systemstatus im Trust Center für Ihre Sicherheitsüberprüfung.

Zertifizierungen

SOC 2 Type II
DSGVO
Mitglied bei CAI und C2PA

Verschlüsselung

TLS 1.2 während der Übertragung
AES-256 im Ruhezustand
Verwaltete SSE-S3-Schlüssel
Schlüsselrotation mindestens alle 12 Monate

Ihre Inhalte

Geschlossene KI-Umgebung
Niemals zum Trainieren allgemeiner Modelle verwendet
Vollständiger Export, keine Bindung an einen Anbieter

Zugang

SSO und SAML
Rollenbasierte Zugriffskontrolle
OAuth 2.0-Client-Anmeldeinformationen

Enterprise

Optionen für den Speicherort der Daten
Individuelle SLAs
Dedizierter Ansprechpartner

Stimmrechte

Synthetische Stimmen mit Nutzungsrechten
Einwilligungsbasierte Stimmklonung
KI-Sicherheitskontrollen, menschliche Überprüfung
Vergleich

Rask API im Vergleich zu einer selbst gebauten Untertitel-Pipeline

Untertitel in einer anderen Sprache erfordern Transkription, Übersetzung, Timing und Dateiexport. Hier sehen Sie dasselbe Ergebnis auf zwei verschiedene Arten erstellt.
Was Sie benötigen
Rask API
Aus Einzelteilen zusammengesetzt
Transkription mit Zeitstempeln
Im Lieferumfang enthalten
Eine Speech-to-Text-API
Untertitel in einer anderen Sprache
Über 135 Sprachen und regionale Optionen
Eine Übersetzungs-API inklusive erneuter Zeitabstimmung
SRT- und WebVTT-Export
Beide Formate in jedem Projekt
Ihr eigener Dateigenerator
Einheitliche Terminologie
Glossare
Individuelle Nachbearbeitung
Eine Zeile korrigieren
Eine Patch-Anfrage, dann neu generieren
Jede Datei manuell bearbeiten
Eine synchronisierte Version desselben Videos
Im selben Projekt enthalten
Ein TTS-Anbieter plus Ihr eigenes Mixing
Ratenlimits
Keine
Was auch immer Ihre Anbieter vorschreiben
Fest in das Video integrierte Untertitel
In der Rask Web-App, noch nicht in der API
Ihr eigenes Video-Rendering
Schriftart, Größe und Layout
In Ihrem Video-Player eingestellt
In Ihrem Video-Player eingestellt
Häufig gestellte Fragen

Untertitel-API: Häufig gestellte Fragen

Sie finden nicht, wonach Sie suchen? Wenden Sie sich an den Vertrieb.

Hat Rask eine Untertitel-API?

Welche Untertitelformate gibt die API aus?

Kann ich Untertitel in der Originalsprache erhalten?

Welche Sprachen werden unterstützt?

Kann die API Untertitel fest in das Video einbrennen?

Kann ich die Schriftart, Größe oder das Layout der Untertitel ändern?

Beschreiben die Untertitel Musik und Soundeffekte?

Werden Sprecher erkannt?

Wie korrigiere ich eine Untertitelzeile?

Wie lange sind die Download-Links gültig?

Kann ich eigene Untertitel verwenden?

Wie wird die Untertitel-API abgerechnet?

Wie erhalte ich API-Zugriff und einen API-Schlüssel?

Starten Sie noch heute Nachmittag mit der Synchronisation

Starten Sie noch heute Ihre erste Anfrage und sprechen Sie mit uns, wenn Sie Großkundenkonditionen oder eine seltene Sprache benötigen.