API rokasgrāmata

Trīs vietnes pakalpojumi – transkripcija ar runātāju atpazīšanu, video dublēšana un teksta ieskaņošana – pieejami arī no jūsu programmām. Pieprasījums ar ieraksta saiti vai tekstu, atbilde ar rezultātu. Viens konts, viens kredītu atlikums.

Saturs

Kā sākt

  1. Reģistrējieties vai pierakstieties vietnē ausis.lv un apstipriniet e-pasta adresi.
  2. Iegādājieties kredītus (API izmanto tos pašus kredītus kā vietne).
  3. Lietotāja izvēlnē atveriet sadaļu „API“ un izveidojiet atslēgu. Atslēga tiek parādīta tikai vienu reizi – nokopējiet to uzreiz.

Cena un ierobežojumi

  • Transkripcija – 1 kredīts par katru iesākto ieraksta minūti. Dublēšana – 10 kredīti par iesākto minūti. Teksta ieskaņošana – 2 kredīti par katriem iesāktiem 1000 rakstzīmēm. Bezmaksas minūšu vai rakstzīmju caur API nav.
  • Atlikums tiek pārbaudīts, veidojot uzdevumu; kredīti tiek norakstīti tikai tad, kad uzdevums ir pabeigts. Neizdevušies uzdevumi nemaksā.
  • Viens ieraksts – līdz 3 stundām; faila izmērs nav ierobežots (der arī vairāku GB video). Failam jābūt pieejamam publiskā https:// adresē.
  • Failiem līdz 200 MB ilgums un cena tiek noteikti uzreiz; lielākiem – apstrādes laikā, tāpēc atbildē estimatedCredits ir null.
  • Katrs API rezultāts parādās arī jūsu projektu sarakstā vietnē.

Adrese un autentifikācija

Bāzes adrese: https://ausis.lv/api/v1. Katram pieprasījumam pievienojiet galveni X-API-Key: ak_… (vai Authorization: Bearer ak_…).

Konts

GET /v1/account

Atgriež jūsu kredītu atlikumu.

{ "credits": 120, "creditsPerMinute": 1 }

Transkripcija

POST /v1/transcriptions

Izveido transkripcijas uzdevumu. Ieraksts tiek lejupielādēts no norādītās adreses, izmērīts ilgums, pārbaudīts atlikums. Ieraksts tiek transkribēts šīs vietnes valodā.

{
  "audioUrl": "https://example.com/recordings/call.mp3",
  "fileName": "call.mp3",
  "webhookUrl": "https://example.com/hooks/transcripts"
}
LauksObligātsApraksts
audioUrljāPubliska https:// audio vai video faila adrese.
fileNamenēNosaukums projektu sarakstā. Noklusējums – adreses pēdējā daļa.
webhookUrlnēPubliska https:// adrese, uz kuru tiks nosūtīts rezultāts, kad uzdevums beidzas (tāds pats JSON kā GET). Viens mēģinājums, 10 s gaidīšana.

Atbilde 202 Accepted:

{
  "id": "k3FgT9bQ2w",
  "status": "queued",
  "languageCode": "lv-LV",
  "fileName": "call.mp3",
  "durationSeconds": 1532,
  "estimatedCredits": 26,
  "pollUrl": "/v1/transcriptions/k3FgT9bQ2w"
}

GET /v1/transcriptions/{id}

Statuss vai, kad pabeigts, visa transkripcija. Statusi: queued, processing, completed, failed.

Kamēr apstrādā:

{ "id": "k3FgT9bQ2w", "status": "processing", "progress": 40, "languageCode": "lv-LV", "fileName": "call.mp3", "durationSeconds": 1532 }

Kad pabeigts (?format=json, noklusējums):

{
  "id": "k3FgT9bQ2w",
  "status": "completed",
  "creditsCharged": 26,
  "speakers": ["SPEAKER_00", "SPEAKER_01"],
  "segments": [
    { "speaker": "SPEAKER_00", "start": 0.0, "end": 4.2, "text": "…" },
    { "speaker": "SPEAKER_01", "start": 4.2, "end": 7.9, "text": "…" }
  ],
  "text": "…"
}

start un end – sekundes. ?format=txt atgriež vienkāršu tekstu ([MM:SS] SPEAKER_00: teksts), ?format=srt – subtitrus SubRip formātā.

Video dublēšana

POST /v1/dubbings

Izveido dublēšanas uzdevumu: ieraksts tiek transkribēts, iztulkots un ieskaņots izvēlētajā valodā, mūzika un efekti saglabājas. Ieraksta saite un izmēra noteikumi – tādi paši kā transkripcijai.

{
  "audioUrl": "https://example.com/recordings/talk.mp4",
  "targetLanguage": "en",
  "sourceLanguage": "auto",
  "keepBackground": true,
  "originalVoices": false,
  "fileName": "talk.mp4",
  "webhookUrl": "https://example.com/hooks/dubbing"
}
LauksObligātsApraksts
audioUrljāPubliska https:// audio vai video faila adrese.
targetLanguagejāDublējuma valoda (divu burtu kods): lt, lv, pl, et, sr, hu, sk, bg, en, de, fr, es, it, pt, nl, sv, da, nb, fi, cs, ro, uk, ru, tr.
sourceLanguagenēOriģināla valoda (divu burtu kods) vai auto (noklusējums).
keepBackgroundnēSaglabāt mūziku un fonu (noklusējums true); false – tikai balss.
originalVoicesnēDublētās balsis līdzinās oriģināla runātājiem (noklusējums false).
fileNamenēNosaukums projektu sarakstā. Noklusējums – adreses pēdējā daļa.
webhookUrlnēPubliska https:// adrese, uz kuru tiks nosūtīts rezultāts, kad uzdevums beidzas (tāds pats JSON kā GET). Viens mēģinājums, 10 s gaidīšana.

Atbilde 202 Accepted:

{ "id": "p8Dk2Qa1Lm", "kind": "dubbing", "status": "queued", "fileName": "talk.mp4", "durationSeconds": 184, "estimatedCredits": 40, "targetLanguage": "en", "sourceLanguage": "auto", "pollUrl": "/v1/dubbings/p8Dk2Qa1Lm" }

GET /v1/dubbings/{id}

Kad pabeigts, downloadUrl – dublētais video (vai audio fails, ja tika augšupielādēts audio); outputKind – video vai audio.

{ "id": "p8Dk2Qa1Lm", "kind": "dubbing", "status": "completed", "targetLanguage": "en", "durationSeconds": 184, "creditsCharged": 40, "downloadUrl": "https://…/dubbed.mp4", "outputKind": "video", "segments": 42, "flaggedSegments": 0 }

Teksta ieskaņošana

POST /v1/speech

Ieskaņo tekstu ar dabisku balsi un atgriež MP3. Līdz 2 000 000 rakstzīmēm; gari teksti tiek ieskaņoti pa daļām un apvienoti. Teksta valoda tiek noteikta automātiski.

{ "text": "…", "voice": "female", "fileName": "intro", "webhookUrl": "https://example.com/hooks/speech" }
LauksObligātsApraksts
textjāIeskaņojamais teksts (1–2 000 000 rakstzīmes).
voicenēfemale (noklusējums) vai male.
fileNamenēNosaukums projektu sarakstā. Noklusējums – adreses pēdējā daļa.
webhookUrlnēPubliska https:// adrese, uz kuru tiks nosūtīts rezultāts, kad uzdevums beidzas (tāds pats JSON kā GET). Viens mēģinājums, 10 s gaidīšana.

Atbilde 202 Accepted:

{ "id": "s4Hn7Rt9Wq", "kind": "speech", "status": "queued", "characters": 1840, "voice": "female", "estimatedCredits": 4, "pollUrl": "/v1/speech/s4Hn7Rt9Wq" }

GET /v1/speech/{id}

Kad pabeigts, downloadUrl – MP3 fails; durationSeconds – ieraksta ilgums, characters – ieskaņoto rakstzīmju skaits.

{ "id": "s4Hn7Rt9Wq", "kind": "speech", "status": "completed", "characters": 1840, "durationSeconds": 131.4, "creditsCharged": 4, "downloadUrl": "https://…/full.mp3" }

Kļūdas

KodsNozīme
missing_api_keyNav atslēgas galvenes (401).
invalid_api_keyAtslēga nav atrasta vai ir nepareiza (401).
api_key_revokedAtslēga dzēsta (403).
invalid_audio_urlAdrese nav https:// vai nav sasniedzama (400).
unsupported_mediaFailā nav atrasts audio (400).
max_duration_exceededIeraksts garāks par 3 h (400).
insufficient_creditsNepietiek kredītu (402). Atbildē: required, available, balance.
not_foundUzdevums nav atrasts vai pieder citam kontam (404).
invalid_target_languageTrūkst vai netiek atbalstīta dublējuma valoda (400).
invalid_source_languageNepareiza oriģināla valoda (400).
invalid_textTrūkst teksta vai tas pārsniedz 2 000 000 rakstzīmes (400).
invalid_voiceBalsij jābūt female vai male (400).

Piemēri

BASE=https://ausis.lv/api/v1
KEY=ak_...

curl -s $BASE/account -H "X-API-Key: $KEY"

curl -s -X POST $BASE/transcriptions -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"audioUrl":"https://example.com/call.mp3"}'

curl -s $BASE/transcriptions/JOB_ID -H "X-API-Key: $KEY"
curl -s "$BASE/transcriptions/JOB_ID?format=srt" -H "X-API-Key: $KEY" -o call.srt

Pārbaudiet statusu ik pēc 10–30 s, līdz status kļūst completed vai failed.

import requests, time

BASE = "https://ausis.lv/api/v1"
H = {"X-API-Key": "ak_..."}

job = requests.post(f"{BASE}/transcriptions", headers=H,
                    json={"audioUrl": "https://example.com/call.mp3"}).json()
while True:
    r = requests.get(f"{BASE}/transcriptions/{job['id']}", headers=H).json()
    if r["status"] in ("completed", "failed"):
        break
    time.sleep(15)
print(r.get("text") or r.get("error"))

Palīdzība

Jautājumi – palidziba@ausis.lv.