API transkrypcji wideo dla każdego filmu w Twojej bibliotece

Przesyłaj pliki wideo lub linki do YouTube, Google Drive i Vimeo, aby uzyskać przeszukiwalne transkrypcje z oznaczeniami mówców i znacznikami czasu w 75 językach z automatycznym rozpoznawaniem języka. Transkrybuj jeden film lub całą bibliotekę, a następnie tłumacz transkrypcje i napisy dla odbiorców na całym świecie.
Pliki i linki wideo
Transkrypcja masowa
REST + Python SDK
link in, transcript out
OAuth 2.0
# 1. send the video as a link - YouTube, Google Drive, Vimeo, S3 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://youtu.be/...", "name": "camera review"}'

# 2. create the project - the language of the video is detected automatically
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\": \"es-mx\"}"
GET /v2/projects/{project_id}/transcription
plain text
# The transcript as plain text with timestamps and speakers
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[] | "\(.start) \(.speaker): \(.src.text)"'
Używane przez zespoły na całym świecie
Możliwości

Co potrafi API transkrypcji wideo

Wyślij pliki wideo lub linki, aby otrzymać transkrypcję z podziałem na mówców i znacznikami czasu dla każdego filmu w swojej bibliotece. Ten sam projekt pozwala przekształcić każdą transkrypcję w tłumaczenia, napisy i wersję z dubbingiem.

Transkrybuj wideo z pliku lub linku

Prześlij pliki wideo lub podaj link do YouTube, Google Drive, Vimeo, S3 bądź bezpośredni adres. API samo pobiera film, dzięki czemu nie musisz go wcześniej pobierać.

Rozpoznawanie wielu mówców

Wywiady, panele dyskusyjne i webinary z udziałem wielu osób wracają z oznaczeniem mówcy przy każdym fragmencie, więc zawsze wiesz, kto co powiedział.

Automatyczne wykrywanie języka

Transkrybuj wideo w 75 językach źródłowych, w tym po angielsku. Zostaw pole języka źródłowego puste, a język każdego filmu zostanie wykryty automatycznie.

Przeszukiwalne transkrypcje

Każdy fragment ma swój czas początkowy i końcowy, dzięki czemu użytkownicy mogą przeszukiwać treść tekstową filmu i od razu przejść do momentu, w którym padło dane słowo.

Transkrypcje w wielu językach

Każdy fragment zawiera również swoje tłumaczenie na ponad 135 języków i wariantów regionalnych, dzięki czemu jedna transkrypcja służy odbiorcom na całym świecie w różnych językach.

Napisy w formatach .srt i .vtt

Każdy projekt generuje również pliki z napisami w języku docelowym, zsynchronizowane z odpowiednimi fragmentami, co ułatwia odbiór osobom niedosłyszącym lub oglądającym z wyłączonym dźwiękiem.

Zwykły tekst lub dane uporządkowane

Odczytuj transkrypcję jako fragmenty w formacie JSON lub połącz tekst w zwykły ciąg znaków na potrzeby indeksów wyszukiwania, artykułów, opisów i notatek.

Korekta żargonu technicznego

Poprawiaj imiona i nazwiska, nazwy produktów oraz terminologię techniczną w dowolnym fragmencie za pomocą API. Słownik dba o spójność tych samych pojęć podczas tłumaczenia transkrypcji.

Skaluj bez ograniczeń

Brak limitów prędkości, brak ograniczeń współbieżności i limitów dla poszczególnych kluczy. Przeprowadzaj masową transkrypcję wielu filmów lub całej biblioteki równocześnie.
Zobacz jak to działa

Od jednej transkrypcji do pięciu wersji językowych

Transkrypcja tego klipu została przetłumaczona na język angielski, francuski, niemiecki, portugalski i hiszpański. Każda wersja zawiera napisy oraz oryginalny dźwięk w tle.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Przepływ pracy

Trzy kroki od linku do wideo do transkrypcji

Utworzenie projektu rozpoczyna transkrypcję, a następnie tłumaczenie, generowanie napisów i wersji z dubbingiem w ramach jednego procesu. Użyj punktu końcowego /generate po poprawieniu transkrypcji.
1

Wyślij wideo

Prześlij plik wideo jako formularz wieloczęściowy (multipart) lub podaj link z YouTube, Google Drive, Vimeo, S3 albo bezpośredni odnośnik. Otrzymasz identyfikator pliku oraz metadane wideo, zanim cokolwiek poniesiesz.

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

Utwórz projekt

Przekaż identyfikator pliku jako video_id oraz język docelowy. Pozostaw pole języka źródłowego puste, aby włączyć automatyczne wykrywanie języka. Transkrypcja rozpocznie się natychmiast.video_id

POST /v2/projects
3

Odczytaj transkrypcję

Odczytuj fragmenty transkrypcji, gdy tylko będą dostępne, aby rozpocząć indeksowanie nagrania, podczas gdy przetłumaczone pliki nadal się przetwarzają. Pobierz napisy oraz pliki wideo, gdy projekt zostanie ukończony.

GET /v2/projects/{id}/transcription
Transkrypcja działa dla nagranych materiałów wideo, a nie dla transmisji na żywo. Czas przetwarzania zależy od długości wideo i liczby mówców: w jednym z testów nagranie trwające 3:47 zostało przetworzone w 165 sekund.
Stworzone z myślą o Tobie

Potrzebujesz transkrypcji w dużej skali lub w języku spoza naszej listy? Porozmawiaj z naszym zespołem

Duża skala transkrypcji, niestandardowy język źródłowy, format transkrypcji wymagany przez Twoją wyszukiwarkę lub dostarczenie plików do Twojej własnej pamięci masowej – nasz zespół przeanalizuje Twoje potrzeby i dostępne opcje.

Języki i głosy

Potrzebujesz języka źródłowego spoza naszej publicznej oferty? Porozmawiaj z naszym zespołem o swoich wymaganiach i dostępnych opcjach.

Dostarczanie i integracja

Webhooki, przesyłanie do własnej kolejki, dostarczanie bezpośrednio do S3, niestandardowe endpointy. Powiedz nam, jak Twój system oczekuje danych.

Wolumen i przepustowość

Rozmiary partii, liczba języków docelowych na akcję i priorytet przetwarzania to warunki umowy, a nie sztywne limity produktu.

Bezpieczeństwo i hosting

Kwestie związane z przechowywaniem danych, logowaniem SSO i SAML, zasadami ich zachowania oraz wsparciem przy audycie bezpieczeństwa są omawiane podczas wdrażania planu dla firm.
Przykłady zastosowań

Kto korzysta z API do transkrypcji wideo

Platformy zawierające materiały wideo

Platformy LMS i edukacyjne dla klientów, platformy dla twórców i wideo, narzędzia do webinarów i wydarzeń wirtualnych, hosting wideo oraz narzędzia SaaS do zarządzania przepływem pracy, cyfrowe platformy adopcyjne, zakupy na żywo. Wzbogać przesyłane materiały wideo o wyszukiwalne transkrypcje i napisy jako funkcję swojego produktu.

Agencje lokalizacji i produkcyjne

Transkrybuj pliki wideo klientów masowo, udostępniaj recenzentom transkrypcję z oznaczeniami osób mówiących oraz dostarczaj napisy i tłumaczenia w ramach tych samych projektów.

Wewnętrzna, ciągła produkcja wideo

Międzynarodowy handel detaliczny i e-commerce, globalne franczyzy, wydawcy mediów, uniwersytety korporacyjne, twórcy treści. Spraw, aby każdy materiał wideo był przeszukiwalny i dostępny, oraz wykorzystaj transkrypcje ponownie do artykułów i opisów.
Historie klientów

Prawdziwe zespoły, wymierne wyniki

Jak firmy lokalizują wideo z Rask, wyrażone w liczbach.
strzałka
strzałka
Kod

Przykłady kodu API do transkrypcji wideo

Jeden kompletny przykład dla każdego języka: wyślij wideo jako link lub plik, poczekaj, a następnie zapisz transkrypcję w postaci zwykłego tekstu lub przeszukaj ją według znacznika czasu.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

VIDEOS = ["https://youtu.be/aaa", "https://youtu.be/bbb", "https://vimeo.com/123"]

async def transcribe(client, i, link):
    media = await client.create_media_link(data=schemas.MediaCreateLink(link=link))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)
    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="en-us"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    t = await client.get_project_transcription(project_id=job.id)
    with open(f"video_{i}.txt", "w") as f:   # plain text, one segment per line
        f.write("\n".join(f"{s.speaker}: {s.src.text}" for s in t.segments))

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
    await asyncio.gather(*(transcribe(client, i, v) for i, v in enumerate(VIDEOS)))   # no rate limits

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

media = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()

project = requests.post(f"{API}/v2/projects", headers=h,
                        json={"video_id": media["id"], "dst_lang": "es-mx"}).json()

while project["status"] != "merging_done":
    time.sleep(10)
    project = requests.get(f"{API}/v2/projects/{project['id']}", headers=h).json()

print(project["translated_video"])
requests
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 call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());

let media = await call('POST', '/api/library/v1/media/link', { link: 'https://drive.google.com/file/d/...' });
while (media.status === 'processing') { await sleep(5000); media = await call('GET', `/api/library/v1/media/${media.id}`); }

let p = await call('POST', '/v2/projects', { video_id: media.id, dst_lang: 'fr-fr' });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }

const { segments } = await call('GET', `/v2/projects/${p.id}/transcription`);
const index = segments.map((s) => ({ t: s.start, speaker: s.speaker, text: s.src.text, fr: s.dst.text }));
console.log(JSON.stringify(index, null, 2));   // ready for your search index
fetch, Node 18+
plain HTTP
# 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. upload a local video file
VIDEO_ID=$(curl -s -X POST "https://api.rask.ai/api/library/v1/media?kind=video" \
  -H "Authorization: Bearer $TOKEN" -F "[email protected]" | jq -r .id)

# 3. create the project once the media status is ready
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\": \"de-de\", \"num_speakers\": 3}" | jq -r .id)

# 4. when status is merging_done, save the transcript as plain text
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[].src.text' > webinar.txt
local video file
multipart upload
<?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']];

$media = $json($http->post('/api/library/v1/media/link', ['headers' => $h, 'json' => [
    'link' => 'https://vimeo.com/123456']]));
while ($media['status'] === 'processing') {
    sleep(5);
    $media = $json($http->get("/api/library/v1/media/{$media['id']}", ['headers' => $h]));
}

$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
    'video_id' => $media['id'], 'dst_lang' => 'pt-br']]));
while ($p['status'] !== 'merging_done') {
    sleep(10);
    $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}

$t = $json($http->get("/v2/projects/{$p['id']}/transcription", ['headers' => $h]));
file_put_contents('video.txt', implode("\n", array_map(fn($s) => $s['src']['text'], $t['segments'])));
Guzzle 7
plain HTTP
Python to oficjalny pakiet SDK. Zakładki Node, PHP i cURL przedstawiają proste przykłady żądań HTTP dla tych samych punktów końcowych.
Postęp

Jak raportowane są postępy w projekcie transkrypcji wideo

Każde wideo staje się projektem o udokumentowanym statusie, dzięki czemu możesz śledzić postępy każdego pliku podczas masowego przetwarzania. Musisz zareagować tylko w trzech przypadkach.

Sukces, zatrzymaj się tutaj

merging_done
Docelowe pliki wideo i napisy są gotowe. Możesz odczytywać i indeksować transkrypcję wcześniej, już w momencie, gdy jej fragmenty staną się dostępne.

W toku, sprawdzaj dalej

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Oraz pasujące _done statusy. Doskonale pasują one do interfejsu pokazującego postęp krok po kroku.

Błąd, zatrzymanie i raport

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, for example a video without speech.
Plain text transcript, two speakers
jq -r on /transcription
00:00:00,320  SPEAKER_00  Welcome back. Today we test three cameras in low light.
00:00:06,180  SPEAKER_01  I brought the footage from last week's night shoot.
00:00:10,940  SPEAKER_00  Let's start with the smallest sensor, the hardest case.
00:00:15,500  SPEAKER_01  At ISO 6400 the noise is visible, but the colors hold up.

Lub całkowicie pomiń sprawdzanie

Wskaż nam punkt końcowy webhooka, a każda zmiana stanu pojawi się jako żądanie POST, dzięki czemu Twoja kolejka zareaguje na każdą zmianę w momencie jej wystąpienia. Dostarczanie przez webhook jest częścią wdrożenia dla klientów korporacyjnych.
Przeczytaj dokumentację
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Wynik

Co otrzymujesz dla każdego wideo

Każdy ukończony projekt udostępnia transkrypcję w formacie segmentów JSON, pliki z napisami w formacie SRT i VTT w języku docelowym oraz przetłumaczone wideo i dźwięk. Linki do pobrania są podpisane cyfrowo i ważne przez godzinę.
Pole
Format
Co to jest
/transcription
JSON
Etykieta mówcy, znaczniki czasu, tekst źródłowy oraz tłumaczenie dla każdego segmentu
translation_srt_path
.srt
Napisy w języku docelowym, zsynchronizowane czasowo z segmentami
translation_vtt_path
.vtt
Te same napisy w formacie WebVTT dla odtwarzaczy internetowych
translated_video
MP4
Przetłumaczone wideo z lektorem
translated_audio
WAV
Przetłumaczona mowa zmiksowana z oryginalnym dźwiękiem w tle
original_video
MP4
Twój film źródłowy zachowany do wglądu
Kontrola

Popraw imiona, nazwiska oraz specjalistyczne słownictwo w transkrypcji

Automatyczna transkrypcja radzi sobie z większością materiału wideo. Nazwiska, akcenty i żargon techniczny czasami jednak wymagają ludzkiej interwencji. Popraw tekst, czas trwania lub osobę mówiącą w wybranym fragmencie za pomocą jednego żądania, a następnie wygeneruj przetłumaczoną wersję. Opłata naliczana jest za zmienione fragmenty, przy zachowaniu minimalnej stawki jednej minuty na operację.

Edycja na poziomie segmentów

Edycja na poziomie segmentów
Każdy projekt udostępnia swoją transkrypcję jako podzielone na części segmenty, dzięki czemu poprawienie źle usłyszonego nazwiska wymaga tylko jednego żądania zamiast ręcznego spisywania.
Pobierz transkrypcję i jej segmenty
Zmień tekst źródłowy, a my przetłumaczymy go ponownie
Edytuj przetłumaczony tekst bezpośrednio, aby zachować własne słownictwo
Dopasowuj znaczniki czasu, dodawaj segmenty i usuwaj je
Zmień głos przypisany do dowolnego mówcy

Słowniczki terminologii

Słowniczki terminologii
Dołącz słowniczek, aby nazwy produktów i terminy techniczne brzmiały tak samo w każdym przetłumaczonym tekście lub celowo pozostały w oryginalnym języku.

Jeden słowniczek obejmuje jedną parę językową i działa we wszystkich odmianach regionalnych tego języka docelowego, więc jeden hiszpański słowniczek obsłuży es-mx oraz es-es podobnie. Projekt rejestruje wersja_słownika, dzięki czemu późniejsze poprawki nigdy nie zmieniają ukończonej pracy w tle.
Dane wejściowe

Obsługiwane formaty plików

Transkrybuj pliki wideo w siedmiu formatach i pliki dźwiękowe w czterech lub wyślij link z popularnych platform, takich jak YouTube, Google Drive czy Vimeo. Pliki nieobsługiwane są odrzucane przed naliczeniem jakichkolwiek opłat za minuty.

Wideo

7 formatów
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 formaty
.mp3
.wav
.flac
.m4a

Metadane przed wydaniem środków

Punkt końcowy multimediów zwraca czas trwania, rozmiar pliku, kodek wideo, liczbę klatek na sekundę, rozdzielczość, kodek audio, częstotliwość próbkowania i układ kanałów. Zweryfikuj plik i oszacuj koszty z góry, ponieważ projekty są rozliczane za minuty wideo.
Bezpieczeństwo i zgodność z przepisami

Twoje filmy i transkrypcje pod stałą kontrolą

Rask Inc posiada certyfikat SOC 2 Type II, działa zgodnie z RODO (GDPR) i publikuje status zabezpieczeń w swoim centrum zaufania, aby zapewnić bezpieczeństwo Twojemu zespołowi.

Certyfikaty

SOC 2 Type II
RODO
Członek CAI i C2PA

Szyfrowanie

TLS 1.2 w tranzycie
AES-256 w spoczynku
Klucze zarządzane SSE-S3
Rotacja kluczy co najmniej co 12 miesięcy

Twoje treści

Zamknięte środowisko AI
Nigdy nieużywane do trenowania ogólnych modeli
Pełny eksport, bez wiązania się z jedną platformą

Dostęp

SSO i SAML
Kontrola dostępu oparta na rolach
Poświadczenia klienta OAuth 2.0

Dla firm

Opcje lokalizacji danych
Niestandardowe umowy SLA
Dedykowany opiekun klienta

Prawa do głosu

Syntetyczne głosy z prawami do użytkowania
Klonowanie głosu oparte na zgodzie
Zasady bezpieczeństwa AI, człowiek w pętli
Porównanie

Rask API w porównaniu z procesem transkrypcji składanym z różnych narzędzi

Sama transkrypcja filmu rzadko jest ostatecznym wynikiem. Zespoły potrzebują również oznaczeń osób mówiących, napisy i innych języków. Oto to samo zadanie zrealizowane na dwa sposoby.
Czego potrzebujesz
Rask API
Złożone z części
Linki do filmów z YouTube, Drive, Vimeo lub S3
Obsługiwane bezpośrednio
Najpierw pobierz i przekonwertuj
Oznaczenia dla wielu osób mówiących
W zestawie
Dodatkowa funkcja rozpoznawania mówców lub ręczne oznaczanie
Język każdego filmu
Wykrywany automatycznie
Ustawiany osobno dla każdego pliku lub wykrywany oddzielnie
Transkrypcje w innych językach
Ponad 135 języków i opcji regionalnych
Osobne API tłumaczeniowe dla każdego języka
Napisy w formatach .srt i .vtt
W zestawie
Narzędzie do tworzenia napisów lub własny edytor plików
Poprawianie żargonu technicznego
Jedno żądanie modyfikacji na segment
Edycja kopii w każdym narzędziu z osobna
Zdubbingowana wersja filmu
Zawarte w tym samym projekcie
Dostawca TTS oraz Twoje własne miksowanie
Limity zapytań
Brak
Zależnie od tego, co wymaga dany dostawca
Napisy w czasie rzeczywistym do spotkań na żywo
Skorzystaj ze strumieniowego API zamiany mowy na tekst
Wbudowane u niektórych dostawców
Język, którego nikt jeszcze nie obsługuje
Stworzymy go
Niedostępne
Najczęściej zadawane pytania

API transkrypcji wideo: często zadawane pytania

Nie możesz znaleźć tego, czego szukasz? Skontaktuj się z działem sprzedaży.

Czy Rask posiada API do transkrypcji wideo?

Czy mogę dokonać transkrypcji filmu z YouTube lub linku do wideo?

Czy mogę transkrybować wiele filmów jednocześnie?

Jak system radzi sobie z wieloma mówcami?

Jakie języki są obsługiwane?

Jak dokładna jest transkrypcja?

Czy mogę pobrać transkrypcję jako zwykły tekst?

Czy system generuje podsumowania AI, kluczowe tematy lub analizę nastrojów?

Czy system potrafi transkrybować spotkania?

Czy istnieje maksymalny rozmiar pliku?

Jak rozliczana jest transkrypcja wideo?

Czy dostępny jest darmowy pakiet?

Jak mogę uzyskać dostęp do API i klucz API?

Rozpocznij dubbingowanie w jedno popołudnie

Wyślij swoje pierwsze zapytanie już dziś i skontaktuj się z nami, gdy potrzebujesz warunków dla dużych wolumenów lub języka, którego nikt inny nie ma.