API pro převod řeči na text u zvukových a video souborů

Nahrajte předem neschrané audio nebo video a získejte přepis s rozlišením mluvčích a časovými razítky pro každý úsek v 75 zdrojových jazycích s automatickou detekcí jazyka. V rámci stejného projektu jej přeložíte do více než 135 jazyků a regionálních variant, včetně titulků a dabovaného audia.
Rozlišení mluvčích
75 zdrojových jazyků
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}'
Používáno týmy po celém světě
Funkce

Vše, co API pro převod řeči na text vrací

Rozpoznávání řeči je první fází každého projektu Rask. Přepis se vrátí v podobě úseků s označením mluvčích a časovými razítky, připravených k úpravám, překladu, titulkům a ozvučení v rámci stejného projektu.

Přepis audio souborů a videí

Nahrajte předem neschrané audio či video nebo vložte odkaz a API převede mluvené slovo na text, úsek po úseku.

Rozlišení mluvčích

Různí mluvčí jsou detekováni automaticky a každý úsek nese označení mluvčího, například SPEAKER_00. Pokud znáte počet mluvčích, můžete jej zadat nebo označení později opravit.

Časová razítka pro každý úsek

Každý úsek má počáteční a koncový čas ve formátu HH:MM:SS,mmm, připravený pro titulky, vyhledávání a orientaci v nahrávce.

75 zdrojových jazyků

Vícejazyčná podpora ve 75 zdrojových jazycích. Nechte zdrojový jazyk prázdný pro automatickou detekci, nebo jej nastavte pomocí dvoupísmenného kódu.

Překlad ve stejném úseku

Každý úsek obsahuje zdrojový text a jeho překlad v libovolném z více než 135 jazyků a regionálních variant, takže přepis a překlad zůstávají zarovnány řádek po řádku.

Titulky ve formátech .srt a .vtt

Každý dokončený projekt obsahuje soubory s titulky v cílovém jazyce, načasované podle úseků přepisu. Nepotřebujete dalšího dodavatele titulků.

Odborné termíny v překladu

Slovník zajišťuje, že názvy produktů, vlastní jména a oborová slovní zásoba zůstanou při překladu přepisu jednotné, případně záměrně v původním jazyce.

Upravte přepis přes API

Opravte slovo, upravte časové razítko, změňte mluvčího, přidejte nebo smažte úsek. Revizoři opravují finální přepis, místo aby začínali znovu.

Růst bez omezení

Žádné limity rychlosti, žádné kvóty na souběžnost, žádné omezování klíčů. Spusťte dávkový přepis pro celou svou knihovnu audií a videí paralelně.
Podívejte se na to v akci

Podívejte se, jak se z jednoho přepisu stane pět jazykových verzí

Týž klip přepsaný, přeložený a ozvučený v angličtině, francouzštině, němčině, portugalštině a španělštině se zachovaným původním zvukovým pozadím.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Pracovní postup

Tři požadavky od audio souboru po přepis

Vytvoření projektu spustí rozpoznávání řeči, po kterém v jedné vlně následuje překlad a namluvení. Po úpravě přepisu použijte koncový bod /generate.
1

Nahrajte audio nebo video

Ošlete audio nebo video soubor jako multipart form data, nebo vložte odkaz z YouTube, Google Drive, S3, Vimeo či jakoukoliv přímou URL adresu. Než cokoliv utratíte, získáte ID média a metadata souboru.

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

Vytvořte projekt

Předajte ID média jako video_id a cílový jazyk. Pokud je znáte, přidejte zdrojový jazyk nebo počet mluvčích. Rozpoznávání začne okamžitě.

POST /v2/projects
3

Přečtěte si přepis

Přečtěte si přepis, jakmile budou jeho části k dispozici, zatímco zpracování přeloženého média pokračuje. Po dokončení projektu si stáhněte soubory s titulky a médii.

GET /v2/projects/{id}/transcription
Rozpoznávání probíhá u kompletních předem nahrávek, nikoliv u živého zvuku. Doba zpracování se liší podle délky souboru, počtu mluvčích a cílového jazyka.
Přizpůsobeno vám

Potřebujete jazyk nebo formát, který zde není uveden? Obraťte se na náš tým

Zdrojový jazyk mimo seznam, formát přepisu, který vaše platforma vyžaduje, vyšší propustnost nebo vlastní způsob doručení: náš tým posoudí, co vaše integrace potřebuje a jaké jsou dostupné možnosti.

Jazyky a hlasy

Potřebujete jazyk, který není v běžné nabídce? Řekněte nám o svých požadavcích a dostupných možnostech.

Doručení a integrace

Webhooky, odesílání do vlastní fronty, uložení přímo na S3 nebo vlastní koncové body. Řekněte nám, jak funguje váš systém, a my se přizpůsobíme.

Objem a rychlost

Velikost dávek, počet jazyků nebo priorita zpracování jsou součástí smlouvy, nikoliv pevně dané limity produktu.

Zabezpečení a hosting

Zabezpečení dat, přihlašování přes SSO a SAML, pravidla uchovávání a podpora bezpečnostních auditů jsou součástí nastavení pro firemní zákazníky.
Případy použití

Kdo využívá rozhraní API pro převod řeči na text u videí

Platformy pracující s videem

Vzdělávací platformy a platformy pro zákaznické školení, tvůrčí a video platformy, nástroje pro webináře a virtuální akce, hostování videí a pracovní nástroje SaaS, digitální platformy, živé nakupování. Přidejte přepisy, titulky a přeložené verze nahraných videí jako funkci svého produktu.

Lokalizační a produkční agentury

Použijte přepis s označením mluvčích jako první návrh pro své kontrolory, opravte části pomocí API a doručte titulky, překlady a nadabované verze ze stejného projektu.

Interní a nepřetržitá produkce videí

Mezinárodní maloobchod a e-commerce, globální franšízy, mediální vydavatelství, firemní univerzity. Přepisujte nahraná školení, webináře a rozhovory a poté publikujte titulky a jazykové verze pro každý trh.
Příběhy zákazníků

Skutečné týmy, měřitelné výsledky

Jak firmy lokalizují videa pomocí Rask v řeči čísel.
šipka
šipka
Kód

Příklady kódu API pro převod řeči na text

Jeden kompletní příklad v každém jazyce: nahrajte audio nebo video soubor, vytvořte projekt, počkejte a poté si přečtěte části přepisu s mluvčími a časovými značkami.
# 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
Oficiálním SDK je Python. Záložky pro Node, PHP a cURL představují běžné příklady HTTP volání pro stejná koncová rozhraní.
Průběh

Jak projekt přepisu informuje o průběhu

Přepis je první fází projektu s jasně popsanými stavy, takže u delších nahrávek uvidíte skutečný pokrok. Stačí reagovat na tři skupiny.

Hotovo, tady skončete

merging_done
Výsledné mediální soubory a titulky jsou připraveny. Přepis si můžete přečíst dříve, jakmile budou jeho části k dispozici.

Zpracovává se, pokračujte ve zjišťování stavu

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Plus odpovídající _done Stavy. Tyto položky přesně odpovídají uživatelskému rozhraní pro sledování průběhu.

Chyba, zastavit a nahlásit

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words a forbidden_link jsou dostatečně konkrétní na to, abyste je ukázali přímo svým vlastním uživatelům.
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"}}
]}

Nebo cyklické dotazování úplně vynechte

Stačí nám zadat koncový bod webhooku a každá změna stavu dorazí jako požadavek POST, takže vaše fronta reaguje na každou změnu ihned, jak k ní dojde. Doručování webhooků je součástí procesu zapojení podnikových zákazníků.
Přečíst dokumentaci
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Výstup

Části přepisu, titulky a přeložená média

Přečtěte si přepis jako části ve formátu JSON z koncového bodu pro přepis. Hotový projekt také zpřístupňuje soubory s titulky ve formátech SRT a VTT v cílovém jazyce, přeložené video a u vybraných tarifů také přeloženou řeč jako samostatnou stopu ve formátu WAV.
Pole
Formát
Co to je
segments
JSON
Přepis: zdrojový text, překlad, označení mluvčího, začátek a konec pro každou část
voiceover
WAV
Pouze přeložená řeč bez pozadí, u vybraných tarifů
translated_audio
WAV
Přeložený mluvený komentář smíchaný s původním zvukovým pozadím
translation_srt_path
.srt
Titulky v cílovém jazyce načasované k jednotlivým částem
translation_vtt_path
.vtt
Stejné titulky ve formátu WebVTT pro webové přehrávače
translated_video
MP4
Přeložené video s dabingem
Ovládání

Opravte přepis po jednotlivých částech

Rozpoznávání řeči vám poskytne první verzi. Opravte slovo, časovou značku nebo označení mluvčího pomocí jednoho požadavku na danou část a poté přeloženou verzi vygenerujte znovu. Opětovné vygenerování se účtuje za změněné části, s minimální délkou jedné minuty na spuštění.

Úpravy po jednotlivých segmentech

Úpravy po jednotlivých segmentech
Každý projekt zpřístupňuje svůj přepis jako samostatné části, takže oprava finálního přepisu představuje jediný požadavek na úpravu.
Získání přepsaného textu a jeho segmentů
Upravte původní text a my jej znovu přeložíme
Upravte přeložený text přímo a zachovejte si vlastní slovosled
Úprava časových značek, přidání nebo odstranění segmentů
Změna hlasu přiřazeného k jednotlivým mluvčím

Slovníky pro správnou terminologii

Slovníky pro správnou terminologii
Po přeložení přepisu se díky slovníku názvy značek, vlastní jména a odborné termíny zachovají ve všech verzích stejné, případně záměrně v původním jazyce.

Slovník pokrývá jeden jazykový pár a platí pro všechny regionální varianty daného cílového jazyka, takže jeden španělský slovník poslouží es-mx a es-es stejně tak. Projekt uchovává záznamy glossary_version, takže pozdější úpravy nikdy nepozorovaně nezmění hotovou práci.
Vstup

Podporované formáty souborů

Přepisujte zvukové soubory, jako jsou podcasty, rozhovory a nahrávané hovory, nebo videa v libovolném podporovaném formátu, případně pošlete adresu URL. Pokud odešlete nepodporovaný soubor, rozhraní API ho odmítne dříve, než vám budou účtovány jakékoliv minuty.

Video

7 formátů
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Zvuk

4 formáty
.mp3
.wav
.flac
.m4a

Metadata dříve, než cokoliv utratíte

Koncový bod pro média vrací délku, velikost souboru, video kodek, snímkovou frekvenci, rozlišení, audio kodek, vzorkovací frekvenci a uspořádání kanálů. Soubor si ověřte a odhadněte náklady předem, protože projekty se účtují po minutách zvuku nebo videa.
Bezpečnost a dodržování předpisů

Zabezpečení na podnikové úrovni pro zvuková a řečová data

Společnost Brask Inc vlastní certifikaci SOC 2 Type II, funguje v souladu s nařízením GDPR a ve svém Centru důvěry zveřejňuje stav kontroly v reálném čase, takže s nahrávkami a přepisy se nakládá za kontrolovaných podmínek.

Certifikace

SOC 2 Type II
GDPR
Člen CAI a C2PA

Šifrování

TLS 1.2 při přenosu
AES-256 v klidu
Klíče spravované přes SSE-S3
Obměna klíčů minimálně každých 12 měsíců

Váš obsah

Uzavřené prostředí AI
Nikdy se nepoužívá k trénování obecných modelů
Úplný export, žádné závazky vůči jedné platformě

Přístup

SSO a SAML
Řízení přístupu na základě rolí
Pověření klienta OAuth 2.0

Podnik

Možnosti umístění dat
Vlastní smlouvy o úrovni služeb (SLA)
Vyhrazený správce účtu

Práva na hlas

Syntetické hlasy s právy k užívání
Klonování hlasu na základě souhlasu
Bezpečnostní opatření v oblasti umělé inteligence, zapojení člověka do procesu
Srovnání

Rozhraní API Rask oproti rozhraní API pro převod řeči na text a vašemu vlastnímu systému

Rozhraní API pro převod řeči na text mění zvuk na text. Jakmile se z tohoto textu mají stát titulky, překlady a dabované verze, zbytek představuje práci na systému. Zde je stejný výsledek sestavený dvěma způsoby.
Co budete potřebovat
Rask API
Sestaveno z dílů
Přepis s označením mluvčích
Součástí balení
Zahrnuto ve většině rozhraní API pro převod řeči na text
Časové značky
Pro každou část
Pro každé slovo v mnoha rozhraních API pro převod řeči na text
Překlad přepisu
Stejný projekt, více než 135 jazykových a regionálních možností
Samostatné překladové rozhraní API
Titulky ve formátech .srt a .vtt
Zahrnuto v cílovém jazyce
Vytvořeno z vašich vlastních údajů o načasování
Dabovaný zvuk a video
Součástí balení
Poskytovatel převodu textu na řeč a vaše vlastní úpravy zvuku
Oprava určité části
Jeden požadavek patch a následná regenerace
Upravte a znovu synchronizujte své vlastní kopie
Rychlostní limity
Žádné
Cokoliv, co vyžaduje váš poskytovatel
Přepis živého zvuku v reálném čase
Použijte streamovací API pro převod řeči na text
Vytvořeno přímo pro to
Samotný přepis za nejnižší cenu
Specializované API pro převod řeči na text stojí méně
Cena za hodinu zvuku
Často kladené otázky

API pro převod řeči na text: často kladené otázky

Nenašli jste, co hledáte? Obraťte se na obchodní oddělení.

Má Rask API pro převod řeči na text?

Jaké jazyky lze přepisovat?

Můžu přepisovat zvukové soubory bez videa?

Podporuje to rozlišení mluvčích?

Vrací API časová razítka pro jednotlivá slova?

Podporuje to přepis v reálném čase?

Jak přesný je přepis?

Můžu přidat vlastní slovní zásobu nebo oborové výrazy?

Můžu získat přepis jako soubor SRT?

Můžu použít vlastní přepis?

Jak se přepis účtuje?

Existuje bezplatná verze?

Jak získáte přístup k API a klíč API?

Začněte dabovat už dnes odpoledne

Zadejte svůj první požadavek ještě dnes a ozvěte se nám, jakmile budete potřebovat velký objem nebo vzácný jazyk.