# 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çalı 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) paylaşın. Hiçbir ücret ödemeden bir medya kimliği ve dosya üst verilerini alırsınız.
Medya kimliğini video_id olarak ve hedef dili 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ı glossary_version, böylece sonraki düzenlemeler tamamlanan çalışmaları asla 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ı içeren bölümler olarak dökümü okuyun. Aynı proje dökümü çevirir ve altyazı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 iletebilirsiniz. Döküm, 135'ten fazla dil ve bölge seçeneğine çevrilebilir.
Evet. Podcast'ler, röportajlar ve kaydedilmiş aramalar gibi MP3, WAV, FLAC veya M4A formatındaki ses dosyalarını yükleyin; proje bunların dökümünü tıpkı videolarda olduğu gibi çı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 iletin 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 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 hâlâ konuşurken metnin gelmesi gereken gerçek zamanlı altyazılar, sesli asistanlar, konuşma yapay zekası ve çağrı merkezleri için canlı ses akışı 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ü önem taşır. 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 alan terimlerini tutarlı tutar.
Tamamlanan proje, hedef dilde SRT ve VTT formatında altyazı dosyaları içerir. Kaynak dil dökümü, birkaç satır kodla SRT'ye dönüştürülebilen başlangıç ve bitiş zamanlarına sahip JSON bölümleri olarak gelir.
Evet. Transkript içerme özelliğine sahip planlarda, projeyi oluştururken SRT dosyası veya zaman ayarlı metin segmentleri şeklinde mevcut bir kaynak transkript, onaylı bir hedef dil çevirisi ya da her ikisini birden sağlayabilirsiniz. Rask, kaynak metninizi çevirebilir veya dublaj için onaylı çevirinizi kullanabilir.
Projeler, Rask uygulamasındaki dakika havuzundan düşecek şekilde, bir sonraki tam dakikaya yuvarlanarak ses veya video dakikası başına ücretlendirilir. Fiyata transkript, çeviri, seslendirme ve altyazılar dahildir. Uygun standart planlarda ek dakikalar dakikası 3 dolardır. Kurumsal fiyatlandırma, sözleşmenize göre özel olarak belirlenir. Yalnızca bir transkripte ihtiyacınız varsa, özel bir sesten metne API'si daha ucuza mal olur.
Kendi dosyalarınız üzerinde transkript ve çeviriyi test etmek için kredi kartı gerektirmeyen, Rask uygulamasındaki ücretsiz deneme sürümüyle başlayın. API erişimi Creator Pro, Business ve Enterprise planlarında sunulmak olup, özellikler planınıza göre belirlenir.
API erişimi, Creator Pro, Business ve Enterprise planlarında sunulmakta olup özellikler planınıza göre belirlenir. Uygulamada istemci kimliğinizi ve gizli anahtarınızı oluşturarak hemen kullanmaya başlayabilirsiniz. Kurumsal şartlar, hacim bazlı fiyatlandırma ve özel dil kapsamı ekibimiz aracılığıyla yürütülür.