# 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\"}"# 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}'



Çok parça (multipart) form verisi olarak bir ses veya video dosyası gönderin ya da YouTube, Google Drive, S3, Vimeo veya herhangi bir doğrudan bağlantı (URL) üzerinden paylaşım yapın. Herhangi bir ödeme yapmadan önce bir medya kimliği ve dosya meta verileri alırsınız.
Medya kimliğini video_id olarak ve hedef bir dille birlikte iletin. Biliyorsanız kaynak dili veya konuşmacı sayısını ekleyin. Tanıma işlemi hemen başlar.
Çevrilen medya işlenmeye devam ederken, bölümleri hazır olur olmaz metni okuyun. Proje tamamlandığında altyazı ve medya dosyalarını indirin.
# 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())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")// 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# 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)"'<?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;
}{"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"}}
]}

es-mx ve es-es benzer şekilde hizmet eder. Proje kayıtları sözlük_sürümü, böylece daha sonra yapılan düzenlemeler tamamlanan çalışmayı habersiz değiştirmez.Evet. Konuşma tanıma, her Rask projesinin ilk aşamasıdır. Ses veya video yükleyin, bir proje oluşturun ve GET /v2/projects/{id}/transcription adresinden konuşmacı etiketleri ve zaman damgalarıyla birlikte dökümü bölümler halinde okuyun. Aynı proje, dökümü çevirir ve alt yazılar ile dublajlı ses döndürür.
API, 75 kaynak dili kabul eder. src_lang alanını boş bırakırsanız dil otomatik olarak algılanır veya en ya da de gibi iki harfli bir kod girebilirsiniz. Döküm, 135'ten fazla dil ve bölge seçeneğine çevrilebilir.
Evet. Podcast'ler, röportajlar ve kaydedilen aramalar gibi MP3, WAV, FLAC veya M4A formatındaki ses dosyalarını yükleyin; proje bunların dökümünü video ile aynı şekilde çıkarır.
Evet. Farklı konuşmacılar otomatik olarak algılanır ve her bölüm SPEAKER_XX formatında bir konuşmacı etiketi taşır. Sayıyı biliyorsanız num_speakers değerini girin ve API aracılığıyla herhangi bir bölümün konuşmacısını düzeltin.
Hayır. Zaman damgaları bölüm düzeyindedir: her bölümün HH:MM:SS,mmm formatında bir başlangıç ve bitiş zamanı vardır. Altyazıların ve metinlerin kullandığı zamanlama budur. Her kelime için bir zaman damgasına ihtiyacınız varsa, özel bir sesten metne API'si seçin.
Hayır. Rask, eksiksiz ve önceden kaydedilmiş ses ve videoların dökümünü çıkarır. Bir kişi hala konuşurken metnin gelmesi gereken gerçek zamanlı alt yazılar, sesli asistanlar, konuşma tabanlı yapay zeka ve çağrı merkezleri için akışlı sesten metne API'si daha uygundur.
Doğruluk sese bağlıdır: mikrofonlar, aksanlar, üst üste binen konuşmalar ve arka plan gürültüsü önemlidir. API'yi kendi kayıtlarınızdan oluşan bir örnek üzerinde test edin ve yayınlamadan veya çevirmeden önce API aracılığıyla herhangi bir bölümü düzeltin.
Tanıma işlemi özel bir kelime listesi almaz. Bölümler uç noktası aracılığıyla dökümdeki belirli kelimeleri düzeltin. Döküm çevrildiğinde bir sözlük; ürün adlarını, özel isimleri ve sektörel terimleri tutarlı tutar.
Tamamlanan proje, hedef dilde SRT ve VTT formatlarında altyazı dosyalarını içermektedir. Kaynak dildeki transkript, başlangıç ve bitiş zamanlarını içeren JSON segmentleri halinde sunulur ve bu segmentler birkaç satır kodla SRT formatına dönüştürülür.
Evet. Döküm içe aktarma özelliğine sahip planlarda, proje oluştururken SRT dosyaları veya zaman ayarlı metin bölümleri olarak mevcut bir kaynak dökümü, onaylanmış bir hedef dil çevirisi ya da her ikisini sağlayın. Rask, kaynak metninizi çevirebilir veya dublaj için onaylanmış çevirinizi kullanabilir.
Projeler, Rask uygulamasındaki dakikalarla aynı havuzdan, sonraki tam dakikaya yuvarlanarak ses veya video dakikası başına ücretlendirilir. Fiyata deşifre, çeviri, seslendirme ve altyazılar dahildir. Uygun standart planlarda ek dakikaların dakikası 3 dolardır. Kurumsal fiyatlandırma ise sözleşmenize göre özel olarak belirlenir. Yalnızca bir deşifreye ihtiyacınız varsa, özel bir konuşmayı metne dönüştürme API'si daha düşük maliyetlidir.
Kendi dosyalarınızda deşifre ve çeviriyi test etmek için kart gerektirmeyen, Rask uygulamasındaki ücretsiz deneme sürümüyle başlayın. API erişimi Creator Pro, Business ve Enterprise planlarında sunulur ve özellikler planınıza göre belirlenir.
API erişimi Creator Pro, Business ve Enterprise planlarında sunulur ve özellikler planınıza göre belirlenir. Uygulama üzerinden istemci kimliğinizi ve gizli anahtarınızı oluşturarak hemen kullanmaya başlayabilirsiniz. Kurumsal şartlar, hacim bazlı fiyatlandırma ve özel dil seçenekleri için ekibimizle iletişime geçebilirsiniz.