Interfejs API do zamiany mowy na tekst dla plików audio i wideo

Prześlij wcześniej nagrane audio lub wideo i uzyskaj transkrypcję z oznaczeniami mówców oraz znacznikami czasu dla każdego segmentu w 75 językach źródłowych z automatycznym rozpoznawaniem języka. Ten sam projekt tłumaczy materiał na ponad 135 języków i wariantów regionalnych, dodając napisy i dubbing.
Rozpoznawanie poszczególnych mówców
75 języków źródłowych
REST + Python SDK
upload, transcribe, read
OAuth 2.0
# 1. upload an audio or video file by link
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/interview.mp3", "name": "interview"}'

# 2. create the project - speech recognition starts automatically
#    src_lang is optional: leave it out and the language is detected
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$MEDIA_ID\", \"dst_lang\": \"es-mx\"}"
GET /v2/projects/{project_id}/transcription
segments
# Read the transcript: one object per segment
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq '.segments[] | {speaker, start, end, text: .src.text}'
Używane przez zespoły na całym świecie
Możliwości

Wszystko, co zwraca API mowy na tekst

Rozpoznawanie mowy to pierwszy etap każdego projektu w Rask AI. Transkrypcja jest zwracana w postaci segmentów z oznaczeniami mówców i znacznikami czasu, gotowych do edycji, tłumaczenia, tworzenia napisów i dubbingu w tym samym projekcie.

Transkrybuj pliki audio i wideo

Prześlij wcześniej nagrane audio lub wideo albo wklej link, a API przekształci mowę na tekst pisany, segment po segmencie.

Rozpoznawanie poszczególnych mówców

Różni mówcy są wykrywani automatycznie, a każdy segment otrzymuje oznaczenie, takie jak SPEAKER_00. Możesz podać liczbę mówców, jeśli ją znasz, lub poprawić oznaczenie później.

Znaczniki czasu dla każdego segmentu

Każdy segment posiada czas rozpoczęcia i zakończenia w formacie GG:MM:SS,mmm, gotowy do użycia w napisach, wyszukiwarce oraz nawigacji wewnątrz nagrania.

75 języków źródłowych

Obsługa wielu języków w 75 językach źródłowych. Pozostaw pole języka źródłowego puste, aby wykryć je automatycznie, lub ustaw je za pomocą dwuliterowego kodu.

Tłumaczenie w tym samym segmencie

Każdy segment zawiera tekst źródłowy oraz jego tłumaczenie na jeden z ponad 135 języków i wariantów regionalnych, dzięki czemu transkrypcja i tłumaczenie pozostają ze sobą zsynchronizowane wers w wers.

Napisy w formatach .srt i .vtt

Każdy ukończony projekt zawiera pliki z napisami w języku docelowym, zsynchronizowane z segmentami transkrypcji. Bez potrzeby korzystania z usług zewnętrznych dostawców.

Terminologia dziedzinowa w tłumaczeniu

Słownik dba o to, aby nazwy produktów, nazwy własne i słownictwo specyficzne dla branży pozostały spójne podczas tłumaczenia transkrypcji lub celowo w języku oryginalnym.

Edytuj transkrypcję przez API

Popraw słowo, dostosuj znacznik czasu, zmień przypisanie mówcy, dodaj lub usuń segment. Osoby weryfikujące korygują ostateczną transkrypcję zamiast zaczynać od nowa.

Skaluj bez ograniczeń

Bez limitów zapytań, limitów współbieżności i ograniczeń dla poszczególnych kluczy. Przeprowadzaj transkrypcję wsadową dla całej swojej biblioteki audio i wideo równolegle.
Zobacz jak to działa

Zobacz, jak jedna transkrypcja staje się wersjami w pięciu językach

Ten sam klip transkrybowany, przetłumaczony i zdubbingowany w języku angielskim, francuskim, niemieckim, portugalskim i hiszpańskim, z zachowaniem oryginalnego dźwięku w tle.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Przepływ pracy

Trzy żądania od pliku audio do transkrypcji

Utworzenie projektu uruchamia rozpoznawanie mowy, a następnie tłumaczenie i dubbing w ramach jednego procesu. Użyj punktu końcowego /generate po edycji transkrypcji.
1

Prześlij plik audio lub wideo

Wyślij plik audio lub wideo jako wieloczęściowe dane formularza albo podaj link z YouTube, Google Drive, S3, Vimeo lub dowolny bezpośredni adres URL. Otrzymasz identyfikator pliku oraz jego metadane, zanim cokolwiek poniesiesz koszty.

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

Utwórz projekt

Przekaż identyfikator pliku jako video_id oraz wybierz język docelowy. Jeśli znasz język źródłowy lub liczbę osób mówiących, możesz je dodać. Rozpoznawanie rozpocznie się natychmiast.

POST /v2/projects
3

Odczytaj transkrypcję

Odczytaj transkrypcję, gdy tylko jej fragmenty będą dostępne, podczas gdy tłumaczenie plików nadal trwa. Pobierz napisy oraz pliki multimedialne po zakończeniu projektu.

GET /v2/projects/{id}/transcription
Rozpoznawanie mowy działa na kompletnych, wcześniej nagranych plikach, a nie na transmisjach na żywo. Czas przetwarzania zależy od długości pliku, liczby osób mówiących oraz języka docelowego.
Stworzone z myślą o Tobie

Szukasz języka lub formatu, którego nie ma na liście? Skontaktuj się z naszym zespołem

Język źródłowy spoza listy, format transkrypcji oczekiwany przez Twoją platformę, wyższa przepustowość lub własna metoda dostarczania: nasz zespół przeanalizuje potrzeby Twojej integracji i dostępne opcje.

Języki i głosy

Potrzebujesz języka spoza publicznego katalogu? 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 interfejsu API do zamiany mowy na tekst w przypadku filmów

Platformy zawierające materiały wideo

Platformy LMS i edukacyjne dla klientów, platformy wideo dla twórców, narzędzia do webinarów i wydarzeń wirtualnych, hosting wideo i oprogramowanie do obsługi przepływów pracy, platformy cyfrowej adaptacji, zakupy na żywo. Dodaj transkrypcje, napisy i przetłumaczone wersje nagranych filmów jako funkcję swojego produktu.

Agencje lokalizacji i produkcyjne

Użyj transkrypcji z oznaczeniami osób mówiących jako wstępnej wersji dla recenzentów, poprawiaj fragmenty przez API oraz dostarczaj napisy, tłumaczenia i wersje z dubbingiem w ramach tego samego projektu.

Wewnętrzna, ciągła produkcja wideo

Międzynarodowy handel detaliczny i e-commerce, globalne franczyzy, wydawcy mediów, uniwersytety korporacyjne. Transkrybuj nagrane szkolenia, webinary i wywiady, a następnie publikuj napisy i wersje językowe dla każdego rynku.
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 zamiany mowy na tekst

Jeden kompletny przykład w każdym języku: przesuń plik audio lub wideo, utwórz projekt, poczekaj, a następnie odczytaj fragmenty transkrypcji z podziałem na osoby mówiące i znaczniki czasu.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

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/interview.mp3"))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)

    # src_lang omitted: the source language is detected automatically
    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="es-mx"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)

    transcript = await client.get_project_transcription(project_id=job.id)
    for seg in transcript.segments:
        print(seg.start, seg.end, seg.speaker, seg.src.text)

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}"}

with open("interview.mp3", "rb") as f:
    media = requests.post(f"{API}/api/library/v1/media", headers=h,
                          params={"kind": "audio"}, files={"data": f}).json()
while media["status"] == "processing":
    time.sleep(5)
    media = requests.get(f"{API}/api/library/v1/media/{media['id']}", headers=h).json()

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

# write the source transcript as an .srt file
segments = requests.get(f"{API}/v2/projects/{pid}/transcription", headers=h).json()["segments"]
with open("interview_en.srt", "w") as out:
    for i, s in enumerate(segments, 1):
        out.write(f"{i}\n{s['start']} --> {s['end']}\n{s['speaker']}: {s['src']['text']}\n\n")
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 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://example.com/webinar.mp4' });
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, src_lang: 'en', dst_lang: 'de-de' });
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`);
segments.forEach((s) => console.log(`[${s.start}] ${s.speaker}: ${s.src.text}`));
console.log(p.translation_vtt_path);   // German subtitles for your player
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 audio file
MEDIA_ID=$(curl -s -X POST "https://api.rask.ai/api/library/v1/media?kind=audio" \
  -H "Authorization: Bearer $TOKEN" -F "data=@podcast_episode.mp3" | 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\": \"$MEDIA_ID\", \"dst_lang\": \"fr-fr\"}" | jq -r .id)

# 4. when status is merging_done, read the transcript with speaker labels
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[] | "\(.start) \(.speaker): \(.src.text)"'
local file upload
audio file, multipart
<?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://example.com/interview.mp3']]));
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' => 'es-mx']]));
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]));
foreach ($t['segments'] as $s) {
    echo $s['start'], ' ', $s['speaker'], ': ', $s['src']['text'], PHP_EOL;
}
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 projekt transkrypcji zgłasza postępy

Transkrypcja to pierwszy etap projektu ze zdefiniowanymi statusami, dzięki czemu możesz pokazać rzeczywisty postęp przy długich nagraniach. Musisz podjąć działania tylko w trzech grupach.

Sukces, zatrzymaj się tutaj

merging_done
Ostateczne pliki multimedialne i napisy są gotowe. Transkrypcję można przeczytać wcześniej, gdy tylko jej fragmenty będą 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 oraz forbidden_link są wystarczająco jasne, aby pokazać je bezpośrednio Twoim użytkownikom.
Two speakers
GET /v2/projects/{id}/transcription
{"segments": [
  {"speaker": "SPEAKER_00", "start": "00:00:00,320", "end": "00:00:07,316", "status": "done",
   "src": {"text": "Thanks for joining us. Let's start with the new release.", "lang": "en"},
   "dst": {"text": "Gracias por acompañarnos. Empecemos con la nueva versión.", "lang": "es-mx"}},
  {"speaker": "SPEAKER_01", "start": "00:00:07,640", "end": "00:00:11,900", "status": "done",
   "src": {"text": "Sure. The biggest change is the reporting view.", "lang": "en"},
   "dst": {"text": "Claro. El cambio más grande es la vista de reportes.", "lang": "es-mx"}}
]}

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

Fragmenty transkrypcji, napisy i przetłumaczone materiały

Odczytaj transkrypcję jako fragmenty JSON z punktu końcowego transkrypcji. Zakończony projekt udostępnia również pliki napisów w formatach SRT i VTT w języku docelowym, przetłumaczone wideo oraz – w odpowiednich planach – przetłumaczony głos jako osobną ścieżkę WAV.
Pole
Format
Co to jest
segments
JSON
Transkrypcja: tekst źródłowy, tłumaczenie, oznaczenie osoby mówiącej, czas rozpoczęcia i zakończenia dla każdego fragmentu
voiceover
WAV
Tylko przetłumaczona mowa, bez tła, w wybranych planach
translated_audio
WAV
Przetłumaczona mowa zmiksowana z oryginalnym dźwiękiem w tle
translation_srt_path
.srt
Napisy w języku docelowym, zsynchronizowane z fragmentami
translation_vtt_path
.vtt
Te same napisy w formacie WebVTT, do odtwarzaczy webowych
translated_video
MP4
Przetłumaczone wideo z lektorem
Kontrola

Poprawiaj transkrypcję segment po segmencie

Rozpoznawanie mowy daje Ci pierwszą wersję roboczą. Popraw słowo, znacznik czasu lub oznaczenie mówcy za pomocą jednego żądania na segment, a następnie wygeneruj przetłumaczoną wersję ponownie. Ponowne wygenerowanie jest rozliczane na podstawie zmienionych segmentów, z minimalnym czasem jednej minuty na uruchomienie.

Edycja na poziomie segmentów

Edycja na poziomie segmentów
Każdy projekt udostępnia swoją transkrypcję jako dostępne segmenty, dzięki czemu korekta ostatecznego tekstu wymaga tylko jednego żądania modyfikacji.
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
Gdy transkrypcja jest tłumaczona, słowniczek dba o to, aby nazwy marek, nazwy własne i terminologia branżowa pozostały niezmienione w każdej wersji lub celowo 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 audio, takie jak podcasty, wywiady i nagrane rozmowy, a także wideo w dowolnym obsługiwanym formacie lub prześlij adres URL. W przypadku przesłania nieobsługiwanego pliku API odrzuci go, zanim zostaną naliczone jakiekolwiek 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 medió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 koszt z góry, ponieważ projekty są rozliczane za minutę audio lub wideo.
Bezpieczeństwo i zgodność z przepisami

Bezpieczeństwo na poziomie korporacyjnym dla danych audio i mowy

Brask Inc posiada certyfikat SOC 2 Type II, działa zgodnie z RODO i publikuje status kontroli na żywo w swoim Centrum Zaufania, dzięki czemu nagrania i transkrypcje są obsługiwane w ramach kontrolowanych procedur.

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

API Rask w porównaniu do API zamiany mowy na tekst oraz Twojego własnego systemu

API zamiany mowy na tekst zmienia dźwięk w tekst. Kiedy ten tekst ma stać się napisami, tłumaczeniami i wersjami z dubbingiem, reszta to praca nad własnym systemem. Oto ten sam wynik, uzyskany na dwa sposoby.
Czego potrzebujesz
Rask API
Złożone z części
Transkrypcja z oznaczonymi mówcami
W zestawie
Zawarte w większości interfejsów API zamiany mowy na tekst
Znaczniki czasu
Na segment
Dla każdego słowa w wielu interfejsach API zamiany mowy na tekst
Tłumaczenie transkrypcji
Ten sam projekt, ponad 135 języków i opcji regionalnych
Osobne API tłumaczeniowe
Napisy w formatach .srt i .vtt
W zestawie, w języku docelowym
Stworzone na podstawie Twoich własnych danych czasowych
Audio i wideo z dubbingiem
W zestawie
Dostawca TTS oraz Twoje własne miksowanie
Korekta segmentu
Jedno żądanie modyfikacji, a następnie ponowne wygenerowanie
Edytuj i zsynchronizuj swoje kopie
Limity zapytań
Brak
Cokolwiek narzuca Twój dostawca
Transkrypcja dźwięku na żywo w czasie rzeczywistym
Skorzystaj ze strumieniowego API zamiany mowy na tekst
Stworzone specjalnie do tego
Sama transkrypcja w najniższej cenie
Dedykowane API zamiany mowy na tekst kosztuje mniej
Rozliczanie za godzinę nagrania
Najczęściej zadawane pytania

API zamiany mowy na tekst: często zadawane pytania

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

Czy Rask posiada API zamiany mowy na tekst?

Jakie języki obsługuje transkrypcja?

Czy mogę transkrybować pliki audio bez wideo?

Czy funkcja obsługuje rozpoznawanie poszczególnych mówców (diarizację)?

Czy API zwraca znaczniki czasu dla pojedynczych słów?

Czy obsługiwana jest transkrypcja w czasie rzeczywistym?

Jak dokładna jest transkrypcja?

Czy mogę dodać własny słownik lub terminologię branżową?

Czy mogę pobrać transkrypcję jako plik SRT?

Czy mogę przesłać własną transkrypcję?

Jak rozliczana jest transkrypcja?

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.