letzwhisper

Private GPU · not OpenAI · no rush

Send audio.
Get text.

Whisper runs on our private GPU. Your audio is not sent to OpenAI. A small, inexpensive queue for people who are not in a rush — no speed guarantee.

Looking to generate MIDI? We have the solution.

Current wait

about a minute

Queue is clear. Typical file, one at a time. Estimate, not a promise.

meeting-22.m4a queued → eventually done
SPEAKER_00: Bonjour.
SPEAKER_01: Allô — on commence ?

[00:00:12] SPEAKER_00: Oui. On parle du trimestre.

How it works

01

Upload or POST

Drop a file in the app, or send multipart audio to the API with your key.

02

It waits in line

We don’t promise when. The homepage and your file list show a live estimate. Minutes, hours — the point is it gets done, not that it’s instant.

03

Download or webhook

Watch the page, poll GET for txt/srt/json, or take a webhook when it’s ready.

Formats: plain text, <span class="font-mono text-zinc-300">[HH:MM:SS]</span> timestamps, SRT, JSON speaker arrays.

Plans

Start free. Subscribe when you have more audio. Checkout shows the price in your currency. If you’re in a hurry, this is still the wrong product — no speed SLA.

Free

$0 forever

  • ✓ 3 files per day
  • ✓ Maximum 20 minutes of audio
  • ✓ Longer files are dropped immediately
  • ✓ No speed SLA — delivery eventually
  • ✓ txt, srt, JSON, speaker names
Start free

Whisper 100h

100h / month

Priced in your currency at checkout.

  • ✓ 100 hours of audio every month
  • ✓ Unused hours stay valid for 12 months
  • ✓ Files up to 500 MB
  • ✓ Cancel anytime — unused hours stay, this month is not refunded
  • ✓ Or refund the last paid month immediately, no questions — no chargeback needed
Create account, then subscribe

API

Always async. POST returns 202. Free: 3 files/day, 20 minutes max. Paid: 100 hours/month, unused hours last a year. Poll or wait for the webhook — we will not hold your HTTP request open.

Create

curl -X POST https://whisper.byel.dev/api/v1/transcriptions \
  -H "Authorization: Bearer lw_live_…" \
  -F audio=@meeting.m4a \
  -F webhook_url=https://example.com/hooks/whisper \
  -F diarize=true \
  -F timestamps=false

# 202
{"id":"t_01J…","status":"queued"}

Live poll + rename

GET /api/v1/transcriptions/t_01J…
GET /api/v1/transcriptions/t_01J….txt
GET /api/v1/transcriptions/t_01J….srt
GET /api/v1/transcriptions/t_01J….json

# .txt / .srt return 409 while processing

PATCH /api/v1/transcriptions/t_01J…
{"speaker_names":{"SPEAKER_00":"Marie"}}

Webhook body

{
  "id": "t_01J…",
  "status": "completed",
  "language": "fr",
  "text": "SPEAKER_00: Bonjour.\nSPEAKER_01: Allô.",
  "srt": "1\n00:00:00,000 --> 00:00:02,100\nSPEAKER_00: Bonjour.\n\n",
  "speaker_names": {},
  "segments": [
    {"start": 0.0, "end": 2.1, "text": "Bonjour.", "speaker": "SPEAKER_00", "speaker_name": "SPEAKER_00"}
  ]
}
# Header: X-Letzwhisper-Signature: sha256=HMAC(api_token, raw_body)

Privacy

Whisper runs on our private GPU. Nothing is sent to OpenAI. We don’t listen to your audio, train on it, sell it, or use it for anything else. We transcribe the file and give you the text. That’s the whole product.

  • ✓Whisper runs on our private GPU. Nothing is sent to OpenAI.
  • ✓Audio is deleted 30 days after transcription if you don’t do anything.
  • ✓The transcript stays available (txt, srt, JSON) after the audio is gone.
  • ✓You can delete the transcript yourself whenever you want.