Speech

Recorded transcription

Transcribe a recording with Perigee-1-transcribe and optionally generate SRT subtitles.

Perigee-1-transcribe processes uploaded recordings asynchronously. A completed job contains transcript text and, when requested, SRT content.

Transcribe with Python

import os
import orbitalsai
 
client = orbitalsai.Client(api_key=os.environ["ORBITALSAI_API_KEY"])
 
transcript = client.transcribe(
    file_path="interview.mp3",
    language="hausa",
    model_name="Perigee-1-transcribe",
)
 
print(transcript.text)

The SDK submits the file, polls the task, and returns after completion by default.

Submit with REST

curl -X POST "https://api.orbitalsai.com/api/v1/api/transcribe" \
  -H "Authorization: Bearer $ORBITALSAI_API_KEY" \
  -F "file=@interview.mp3" \
  -F "language=hausa" \
  -F "model_name=Perigee-1-transcribe" \
  -F "generate_srt=false"
{
  "message": "Audio file uploaded successfully",
  "task_id": 42,
  "status": "processing",
  "srt_requested": false
}

Request fields

FieldRequiredDescription
fileYesRecording up to 200 MB.
languageYesSpoken language. See Language support.
model_nameNoDefaults to Perigee-1-transcribe.
generate_srtNoSet to true to generate SRT subtitles.

Supported extensions are WAV, WAVE, MP3, MPEG, OGG, OGA, OPUS, FLAC, AAC, M4A, WMA, AMR, and 3GP. See Working with audio for preparation guidance.

Poll the task

curl "https://api.orbitalsai.com/api/v1/api/status/42" \
  -H "Authorization: Bearer $ORBITALSAI_API_KEY"

Continue while status is pending or processing. Stop when it becomes completed or failed.

{
  "status": "completed",
  "original_filename": "interview.mp3",
  "result_text": "To sai a gyara zama, don sauraron cikakkun labarai.",
  "srt_requested": false,
  "srt_content": null,
  "error": null,
  "language": "hausa",
  "model_name": "Perigee-1-transcribe"
}

Recorded transcription does not expose raw word-level timestamps. Use generate_srt=true for timed subtitles or Realtime transcription when your application needs word timings.

Generate SRT

transcript = client.transcribe(
    file_path="interview.mp3",
    language="hausa",
    generate_srt=True,
)
 
if transcript.srt_content:
    with open("interview.srt", "w", encoding="utf-8") as output:
        output.write(transcript.srt_content)

Common errors

  • 401: the API key is missing, invalid, or revoked.
  • 400 or 422: the file, language, model, or form value is invalid.
  • File-size error: the upload exceeds 200 MB.
  • 503: the request could not be queued; retry with backoff.
  • A job with status: "failed": inspect its error field.

Next steps

On this page