API pro klonování hlasu v přeloženém videu

Zachovejte původní hlas každého mluvčího, když vaše videa mluví jinými jazyky. API automaticky zklonuje každý hlas z původního videa nebo použije vlastní hlasový klon, který jste jednou vytvořili, a vrátí dabované video s naklonovanými hlasy, zvukovými stopami a titulky.
Okamžitý klon hlasu
Vlastní klony hlasu
REST + Python SDK
clone, assign, re-dub
OAuth 2.0
# 1. create the dub - each speaker gets an Instant Voice Clone by default
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"video_id": "b8f7835d-e8c9-4ff4-8e34-5c336d818319", "dst_lang": "es-mx"}'

# 2. list the voices available in this project
curl https://api.rask.ai/v2/projects/$ID/voices \
  -H "Authorization: Bearer $TOKEN"
#  "label": "Voice Clone", "gender": "auto"         instant clone
#  "label": "Maria Lopez", "sample_src": "https://..."  your custom clone

# 3. assign your custom clone - include every speaker in the map
curl -X PATCH https://api.rask.ai/v2/projects/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"voice": {"SPEAKER_00": "<custom_voice_id>", "SPEAKER_01": "<voice_id>"}}'
GET /v2/projects/{project_id}
polling, 10s
# 4. re-dub with the new voices, then poll until merging_done
curl -X POST https://api.rask.ai/v2/projects/$ID/generate \
  -H "Authorization: Bearer $TOKEN"
while :; do
  curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq .status
  sleep 10
done
Používáno týmy po celém světě
Funkce

Vše, co API pro klonování hlasu dokáže

Naklonujte každého mluvčího z původního videa nebo použijte vlastní hlasový klon, který jste jednou vytvořili, v každé přeložené verzi a ve více jazycích. Pro jazyky bez podpory klonování hlasu zvolte předvolby hlasů AI. Přidejte volitelnou synchronizaci rtů, která se účtuje zvlášť.

Okamžitý klon hlasu

Každý mluvčí získá klon svého vlastního hlasu z původního videa, aniž by bylo nutné nahrávat zvukové ukázky. V podporovaných cílových jazycích se přiřazuje automaticky.

Vlastní klony hlasu

Vytvořte si v aplikaci Rask opakovaně použitelný hlas z čistých zvukových ukázek nebo uložte hlas mluvčího z existujícího projektu do své knihovny hlasových klonů. S ohledem na souhlas mluvčího tento hlas znovu použijte v projektech API v podporovaných cílových jazycích.

Jeden hlas na mluvčího

Mluvčí se oddělují automaticky a každý z nich si zachová svůj vlastní naklonovaný hlas, takže rozhovory, panely a podcasty zůstávají přehledné.

Synchronizace rtů

Přizpůsobte pohyb úst naklonovanému hlasu jako volitelný úkol u kteréhokoli dokončeného projektu, který se účtuje zvlášť. Detekce obličeje probíhá jako první, takže ji aplikujete pouze tam, kde to bude fungovat.

Zachování pozadí zvuku

Hudba, ruchy místnosti a efekty jsou odděleny od řeči a smíchány zpět pod nakloněný hlas, takže výsledek si zachovává zvuk původní produkce.

Předvolby hlasů AI

Pro jazyky bez klonování hlasu nebo když se lépe hodí výchozí hlas, zvolte pro kteréhokoli mluvčího předvolbu hlasu AI s daným pohlavím.

Hlasová identita napříč jazyky

Klon mluví španělsky, francouzsky nebo japonsky hlasem původního mluvčího, takže prezentující pro globální publikum stále zní jako on sám.

Vyměňte hlas, předa bujte jednoho mluvčího

Přiřaďte mluvčímu jiný hlas a proveďte regeneraci. Účtují se pouze změněné segmenty, takže nikdo nemusí nic znovu nahrávat.

Růst bez omezení

Žádné limity rychlosti, žádná kvóta souběžnosti, žádné omezování podle klíče. Dabujte svůj kompletní katalog s naklonovanými hlasy paralelně, v libovolném objemu.
Podívejte se na to v akci

Poslechněte si jednoho mluvčího v padesáti... v pěti jazycích

Původní hlasy v angličtině, poté naklonované hlasy ve francouzštině, němčině, portugalštině a španělštině. Každý mluvčí si zachovává svůj vlastní hlas a zvuk na pozadí zůstává nedotčený.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Pracovní postup

Tři kroky od zdrojového videa k naklonovaným hlasům

Vytvořením projektu se spustí dabing pomocí okamžitého klonování hlasu. Po změně hlasu nebo úpravě scénáře použijte koncový bod /generate.
1

Nahrajte své video

Ošlete soubor jako multipart formulářová data nebo vložte odkaz z YouTube, Google Drive, S3, Vimeo či jakoukoli přímou adresu URL. Mluvené slovo v tomto videu slouží jako ukázka hlasu pro každý okamžitě klonovaný hlas.

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

Vytvořte projekt

Předejte ID média jako video_id a cílový jazyk. Každý rozpoznaný mluvčí získá v podpořených jazycích okamžitě klonovaný hlas a dabing začne okamžitě.

POST /v2/projects
3

Přiřadit hlasy a přehrát

Zobrazte seznam hlasů pro daný projekt, přiřaďte libovolnému mluvčímu vlastní klon nebo předvolbu, zavolejte funkci /generate a po dokončení dabingu stáhněte soubory.

PATCH /v2/projects/{project_id}
Doba zpracování se liší podle projektu. Když změnit hlas mluvčího, dabují se a účtují se pouze segmenty daného mluvčího.
Přizpůsobeno vám

Potřebujete hlas, který není v katalogu? Obraťte se na náš tým

Klonování hlasu pro zatím nepodporovaný jazyk, větší vlastní knihovna hlasů nebo váš vlastní způsob doručení: pokud hlasový projekt vyžaduje něco nad rámec veřejného katalogu, náš tým posoudí vaše požadavky a dostupné možnosti.

Jazyky a hlasy

Potřebujete jazyk nebo hlas, který není uveden ve veřejném katalogu? Obraťte se na náš tým a sdělte nám své požadavky a dostupné možnosti.

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á API pro klonování hlasu?

Platformy pracující s videem

LMS a vzdělávací platformy pro zákazníky, platformy pro tvůrce a videa včetně jejich mobilních aplikací, nástroje pro webináře a virtuální události, video hostování a workflow SaaS, platformy pro digitální osvojení a živé nakupování. Umožněte tvůrcům a lektorům zachovat si jejich vlastní hlas ve všech podporovaných jazycích pro klonování hlasu. Pro ostatní cílové jazyky využijte předvolby hlasů s umělou inteligencí a udělejte z vícejazyčného dabingu běžnou součást své platformy.

Lokalizační a produkční agentury

Poskytujte vlastní komentáře v původním hlase prezentujícího pro každé video klienta. Uložte si vlastní klon hlasu pro každého pravidelného prezentujícího (se souhlasem) a využijte ho v každém projektu přes API, aniž by kdokoli musel cokoliv nahrávat znovu.

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

Mezinárodní maloobchod a e-commerce, globální franšízy, vydavatelství, firemní univerzity. Lektoři, vedoucí pracovníci a odborníci na produkty nahrávající obsah jednou a využívající svůj klonovaný hlas pro podporované cílové jazyky a hlasové předvolby AI pro další jazykové verze školicích videí, aktualizací produktů a interních zpráv.
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

Ukázky kódu API pro klonování hlasu

Jeden kompletní příklad v každém jazyce: ověření, nahrání, dabing pomocí okamžitě klonovaných hlasů, přiřazení vlastního klonu mluvčímu, opětovný dabing a stažení.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

async def wait(client, job):
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    return job

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

    video = await client.create_media_link(data=schemas.MediaCreateLink(link="https://youtu.be/..."))
    while video.status is not enums.MediaStatus.READY:
        await asyncio.sleep(5)
        video = await client.get_media(media_id=video.id)

    # first dub: every speaker gets an Instant Voice Clone
    job = await wait(client, await client.create_project(
        data=schemas.ProjectCreate(video_id=video.id, dst_lang="es-mx")))

    # assign a custom clone to SPEAKER_00, keep the other speakers as they are
    voices = await client.get_project_voices(project_id=job.id)
    custom = next(v for v in voices if v.label == "Maria Lopez")
    voice_map = {**job.voice, "SPEAKER_00": custom.id}
    await client.patch_project(project_id=job.id, data=schemas.ProjectPatch(voice=voice_map))

    job = await wait(client, await client.generate_project(project_id=job.id))
    print(job.translated_video, job.voiceover)

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

def wait(pid):
    while (p := requests.get(f"{API}/v2/projects/{pid}", headers=h).json())["status"] != "merging_done":
        time.sleep(10)
    return p

video = requests.post(f"{API}/api/library/v1/media/link", headers=h, json={"link": "https://youtu.be/..."}).json()
while video["status"] != "ready":
    time.sleep(5)
    video = requests.get(f"{API}/api/library/v1/media/{video['id']}", headers=h).json()

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

voices = requests.get(f"{API}/v2/projects/{pid}/voices", headers=h).json()
custom = next(v for v in voices if v["label"] == "Maria Lopez")
voice_map = {**project["voice"], "SPEAKER_00": custom["id"]}   # every speaker stays in the map

requests.patch(f"{API}/v2/projects/{pid}", headers=h, json={"voice": voice_map})
requests.post(f"{API}/v2/projects/{pid}/generate", headers=h)
print(wait(pid)["translated_video"])
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());
const wait = async (id) => { let p; while ((p = await call('GET', `/v2/projects/${id}`)).status !== 'merging_done') await sleep(10000); return p; };

let video = await call('POST', '/api/library/v1/media/link', { link: 'https://youtu.be/...' });
while (video.status !== 'ready') { await sleep(5000); video = await call('GET', `/api/library/v1/media/${video.id}`); }

const { id } = await call('POST', '/v2/projects', { video_id: video.id, dst_lang: 'es-mx' });
const project = await wait(id);

const voices = await call('GET', `/v2/projects/${id}/voices`);
const custom = voices.find((v) => v.label === 'Maria Lopez');
await call('PATCH', `/v2/projects/${id}`, { voice: { ...project.voice, SPEAKER_00: custom.id } });
await call('POST', `/v2/projects/${id}/generate`);

console.log((await wait(id)).translated_video);
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. create the dub - Instant Voice Clones are assigned by default
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\": \"es-mx\"}" | jq -r .id)

# 3. after merging_done: read the current voice map and the voice options
curl -s https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" | jq .voice
curl -s https://api.rask.ai/v2/projects/$ID/voices -H "Authorization: Bearer $TOKEN" | jq '.[] | {id, label, gender}'

# 4. assign voices for every speaker, then re-dub
curl -s -X PATCH https://api.rask.ai/v2/projects/$ID -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" -d '{"voice": {"SPEAKER_00": "<custom_voice_id>", "SPEAKER_01": "<voice_id>"}}'
curl -s -X POST https://api.rask.ai/v2/projects/$ID/generate -H "Authorization: Bearer $TOKEN"
PATCH /v2/projects/{id}
OAuth 2.0 client credentials
<?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']];

$wait = function ($id) use ($http, $h, $json) {
    do { sleep(10); $p = $json($http->get("/v2/projects/$id", ['headers' => $h])); }
    while ($p['status'] !== 'merging_done');
    return $p;
};

$id = $json($http->post('/v2/projects', ['headers' => $h,
    'json' => ['video_id' => $videoId, 'dst_lang' => 'es-mx']]))['id'];
$project = $wait($id);

$voices = $json($http->get("/v2/projects/$id/voices", ['headers' => $h]));
$custom = current(array_filter($voices, fn($v) => $v['label'] === 'Maria Lopez'));
$map = array_merge($project['voice'], ['SPEAKER_00' => $custom['id']]);

$http->patch("/v2/projects/$id", ['headers' => $h, 'json' => ['voice' => $map]]);
$http->post("/v2/projects/$id/generate", ['headers' => $h]);
echo $wait($id)['translated_video'];
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 klonování hlasu hlásí průběh

Projekt prochází zdokumentovaným stavovým automatem při prvním dabingu a znovu po každém dalším předabování, takže vaši uživatelé při každé změně hlasu uvidí reálný postup. Reagovat musíte pouze na tři skupiny.

Hotovo, tady skončete

merging_done
Dabing je hotov. Získejte projekt ještě jednou a načtěte odkazy ke stažení, které jsou pro váš projekt 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.
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

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

Klonovaný hlas, dabované video a titulky

Stáhněte si dabované video s klonovanými hlasy a přeloženými titulky ve formátech SRT a VTT. U vybraných tarifů si můžete stáhnout také samotnou stopu klonovaného hlasu ve formátu WAV nebo smíchanou s původním zvukovým pozadím.
Pole
Formát
Co to je
translated_video
MP4
Dabované video připravené k publikování
voiceover
WAV
Pouze přeložený mluvený projev v klonovaném hlase pro váš vlastní mix
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
translation_vtt_path
.vtt
Stejné titulky ve formátu WebVTT pro webové přehrávače
original_video
MP4
Váš původní soubor pro kontrolu
Ovládání

Změna hlasu a opětovný dabing pouze pro daného mluvčího

Okamžité klony se hodí pro většinu mluvčích. Pokud některý hlas vyžaduje jinou volbu, přiřaďte tomuto mluvčímu vlastní klon nebo předvolbu a vygenerujte obsah znovu. Účtují se pouze změněné segmenty.

Úpravy po jednotlivých segmentech

Úpravy po jednotlivých segmentech
Každý projekt zpřístupňuje svůj přepis rozdělený do segmentů se jmenovkami mluvčích, takže přesunutí řádku k jinému mluvčímu nebo změna hlasu zabere jen jeden požadavek.
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
Připojte slovník pojmů, aby se názvy značek, produktů a odborné termíny překládaly ve všech jazycích stejně, bez ohledu na to, čím hlasem jsou proneseny.

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ů

Nahrajte libovolný ze sedmi formátů videa a čtyř formátů audia nebo odešlete adresu URL. Mluvené slovo v souboru slouží jako předloha pro okamžité klonování hlasu, takže čistý zvuk zajišťuje nejlepší výsledky.

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í dobu trvání, velikost souboru, video kodek, snímkovou frekvenci, rozlišení, zvukový kodek, vzorkovací frekvenci a uspořádání kanálů. Ověřte soubor a předem odhadněte náklady, protože dabing s klonovanými hlasy se účtuje po minutách.
Bezpečnost a dodržování předpisů

Hlasová data, která váš právní tým schválí

Společnost Rask Inc. splňuje normu SOC 2 Type II, řídí se nařízením GDPR a aktuální stav zabezpečení zveřejňuje ve svém Centru důvěryhodnosti. Vlastní klony hlasů vznikají se souhlasem mluvčího a kvůli bezpečnosti dat se vaše nahrávky nikdy nepoužívají k trénování obecných modelů.

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í

Rask API vs. vlastní řešení

API pro převod textu na řeč propůjčuje hlas textu, který odešlete. Klonované hlasy v přeloženém videu však vyžadují také přepis, překlad, rozdělení mluvčích, načasování a smíchání. Zde je stejný výsledek vytvořený dvěma způsoby.
Co budete potřebovat
Rask API
Sestaveno z dílů
Naklonujte každého mluvčího z původního videa
Okamžitý klon hlasu (ve výchozím nastavení)
Shromážděte a nahrávejte ukázky pro každého mluvčího
Opakovaně použitelné vlastní hlasy
Vlastní klony hlasů podle voice_id
Vlastní knihovna hlasů, kterou spravujete
Přepis, překlad, syntéza, mixáž
Jedno API
Tři až čtyři dodavatelé a kód, který je propojuje
Rozpoznání mluvčích a jeden hlas na mluvčího
Součástí balení
Poskytovatel služby diarizace a vaše vlastní logika přiřazování hlasů
Zachována doprovodná hudba a zvukové efekty
Součástí balení
Krok separace na zdroji, který si sami sestavíte a vyladíte
Jazyky bez klonování hlasu
Předvolby hlasů AI
Jiný dodavatel technologie převodu textu na řeč
Synchronizace rtů
Volitelné, účtuje se zvlášť
Samostatný dodavatel
Změna hlasu jednoho mluvčího
Znovu nadabovat daného mluvčího, platí se za změněné úseky
Spustit zpracování znovu pro celý soubor
Rychlostní limity
Žádné
Podle nejpřísnějších podmínek vašeho dodavatele
Hlas nebo jazyk mimo nabídku
Probereme s naším týmem
Záleží na jednotlivých dodavatelích
Často kladené otázky

API pro klonování hlasu: nejčastější dotazy

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

Existuje API pro klonování hlasu?

Jak funguje klonování hlasu v API?

Jaký je rozdíl mezi okamžitým a vlastním klonem hlasu?

Mohu vytvořit vlastní klon hlasu přes API?

Jaký zvukový záznam potřebuji pro vytvoření vlastního klonu hlasu?

Které jazyky podporují klonování hlasu?

Mohu API pro klonování hlasu používat jako převod textu na řeč?

Jak mohu po dokončení dabingu změnit hlas mluvčího?

Kolik vlastních hlasů si mohu uložit?

Je ke klonování hlasu nutný souhlas?

Zachovává klonovaný hlas emoce a přízvuk mluvčího?

Mohu klonované hlasy používat ke komerčním účelům?

Kolik stojí klonování hlasu?

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.