API vadovas

Trys svetainės paslaugos – transkripcija su kalbėtojų atpažinimu, vaizdo įrašų dubliavimas ir teksto įgarsinimas – pasiekiamos ir iš jūsų programų. Užklausa su įrašo nuoroda ar tekstu, atsakymas su rezultatu. Viena paskyra, tas pats kreditų balansas.

Turinys

Kaip pradėti

  1. Užsiregistruokite arba prisijunkite svetainėje ausis.lt ir patvirtinkite el. pašto adresą.
  2. Įsigykite kreditų (API naudoja tuos pačius kreditus kaip svetainė).
  3. Vartotojo meniu atidarykite skiltį „API“ ir sukurkite raktą. Raktas rodomas tik vieną kartą – nukopijuokite jį iš karto.

Kaina ir ribos

  • Transkripcija – 1 kreditas už kiekvieną pradėtą įrašo minutę. Dubliavimas – 10 kreditų už pradėtą minutę. Teksto įgarsinimas – 2 kreditai už kiekvieną pradėtą 1000 simbolių. Nemokamų minučių ar simbolių per API nėra.
  • Balansas tikrinamas kuriant užduotį, kreditai nuskaitomi tik kai užduotis baigta. Nepavykusios užduotys nekainuoja.
  • Vienas įrašas – iki 3 valandų; failo dydis neribojamas (tinka ir kelių GB vaizdo įrašai). Failas turi būti pasiekiamas viešu https:// adresu.
  • Failams iki 200 MB trukmė ir kaina nustatomos iš karto; didesniems – apdorojant, todėl atsakyme estimatedCredits būna null.
  • Kiekvienas API rezultatas atsiranda ir jūsų projektų sąraše svetainėje.

Adresas ir autentifikacija

Bazinis adresas: https://ausis.lt/api/v1. Prie kiekvienos užklausos pridėkite antraštę X-API-Key: ak_… (arba Authorization: Bearer ak_…).

Paskyra

GET /v1/account

Grąžina jūsų kreditų balansą.

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

Transkripcija

POST /v1/transcriptions

Sukuria transkripcijos užduotį. Įrašas parsiunčiamas iš nurodyto adreso, išmatuojama trukmė, patikrinamas balansas. Įrašas transkribuojamas šios svetainės kalba.

{
  "audioUrl": "https://example.com/recordings/call.mp3",
  "fileName": "call.mp3",
  "webhookUrl": "https://example.com/hooks/transcripts"
}
LaukasPrivalomasAprašymas
audioUrltaipViešas https:// garso ar vaizdo failo adresas.
fileNamenePavadinimas projektų sąraše. Numatytasis – paskutinė adreso dalis.
webhookUrlneViešas https:// adresas, į kurį bus išsiųstas rezultatas, kai užduotis baigiasi (toks pat JSON kaip GET). Vienas bandymas, 10 s laukimas.

Atsakymas 202 Accepted:

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

GET /v1/transcriptions/{id}

Būsena arba, kai baigta, visa transkripcija. Būsenos: queued, processing, completed, failed.

Kol apdorojama:

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

Kai baigta (?format=json, numatytasis):

{
  "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 ir end – sekundės. ?format=txt grąžina paprastą tekstą ([MM:SS] SPEAKER_00: tekstas), ?format=srt – subtitrus SubRip formatu.

Vaizdo įrašų dubliavimas

POST /v1/dubbings

Sukuria dubliavimo užduotį: įrašas transkribuojamas, išverčiamas ir įgarsinamas pasirinkta kalba, muzika ir efektai išsaugomi. Įrašo nuoroda ir dydžio taisyklės – tokios pačios kaip 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"
}
LaukasPrivalomasAprašymas
audioUrltaipViešas https:// garso ar vaizdo failo adresas.
targetLanguagetaipDubliavimo kalba (dviraidis kodas): lt, lv, pl, et, sr, hu, sk, bg, en, de, fr, es, it, pt, nl, sv, da, nb, fi, cs, ro, uk, ru, tr.
sourceLanguageneOriginalo kalba (dviraidis kodas) arba auto (numatytasis).
keepBackgroundnePalikti muziką ir foną (numatytasis true); false – tik balsas.
originalVoicesneDubliuoti balsai primena originalo kalbėtojus (numatytasis false).
fileNamenePavadinimas projektų sąraše. Numatytasis – paskutinė adreso dalis.
webhookUrlneViešas https:// adresas, į kurį bus išsiųstas rezultatas, kai užduotis baigiasi (toks pat JSON kaip GET). Vienas bandymas, 10 s laukimas.

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

Kai baigta, downloadUrl – dubliuotas vaizdo įrašas (arba garso failas, jei įkeltas buvo garso įrašas); outputKind – video arba audio.

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

Teksto įgarsinimas

POST /v1/speech

Įgarsina tekstą natūraliu balsu ir grąžina MP3. Iki 2 000 000 simbolių; ilgi tekstai įgarsinami dalimis ir sujungiami. Teksto kalba nustatoma automatiškai.

{ "text": "…", "voice": "female", "fileName": "intro", "webhookUrl": "https://example.com/hooks/speech" }
LaukasPrivalomasAprašymas
texttaipĮgarsinamas tekstas (1–2 000 000 simbolių).
voicenefemale (numatytasis) arba male.
fileNamenePavadinimas projektų sąraše. Numatytasis – paskutinė adreso dalis.
webhookUrlneViešas https:// adresas, į kurį bus išsiųstas rezultatas, kai užduotis baigiasi (toks pat JSON kaip GET). Vienas bandymas, 10 s laukimas.

Atsakymas 202 Accepted:

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

GET /v1/speech/{id}

Kai baigta, downloadUrl – MP3 failas; durationSeconds – įrašo trukmė, characters – įgarsintų simbolių skaičius.

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

Klaidos

KodasReikšmė
missing_api_keyNėra rakto antraštės (401).
invalid_api_keyRaktas nerastas arba neteisingas (401).
api_key_revokedRaktas panaikintas (403).
invalid_audio_urlAdresas ne https:// arba nepasiekiamas (400).
unsupported_mediaFaile nerasta garso (400).
max_duration_exceededĮrašas ilgesnis nei 3 val. (400).
insufficient_creditsNepakanka kreditų (402). Atsakyme: required, available, balance.
not_foundUžduotis nerasta arba priklauso kitai paskyrai (404).
invalid_target_languageTrūksta arba nepalaikoma dubliavimo kalba (400).
invalid_source_languageNeteisinga originalo kalba (400).
invalid_textTrūksta teksto arba jis ilgesnis nei 2 000 000 simbolių (400).
invalid_voiceBalsas turi būti female arba male (400).

Pavyzdžiai

BASE=https://ausis.lt/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

Būseną tikrinkite kas 10–30 s, kol status taps completed arba failed.

import requests, time

BASE = "https://ausis.lt/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"))

Pagalba

Klausimai – pagalba@ausis.lt.