opc.taiel.eu / transcription relay relay online API

Public relay · always on

Audio in. Transcripts.out

opc.taiel.eu is the public front of the taiel transcription pipeline. It accepts audio from anywhere, holds the job when the GPU worker is offline, and returns a timestamped transcript once b550 picks it up. One endpoint, no Tailscale required.

accepts wav · mp3 · m4a · flac · ogg · mp4 · mkv returns txt · srt model Parakeet TDT 0.6B hardware RTX 3060 · CUDA
Submit audio How it works
Oct 7 at 5-05 PM.m4a done 15.0 s en
txtsrt
00:00:00,400
→ 00:00:02,640
[Speaker 0]Good afternoon everyone, Dean Dashur.
00:00:03,840
→ 00:00:14,880
[Speaker 0]And in the last lecture what we saw was the clock synchronization and there are two multi-algorithms that we saw.
00:00:14,880
end of track
[format]Full timestamped SRT and a plain-text transcript ship with every job.
engine NeMo Parakeet TDT 0.6B track 0 (default) queue FIFO click a cue · ↑↓ to step
01

Signal chain

Three hops, one direction. The phone never talks to the GPU box directly, so the same call works on mobile data or inside the tailnet.

STAGE 01

Submit

any client → https://opc.taiel.eu
  • Multipart upload with a JSON options block
  • Streams to disk, never held in memory
  • Options validated before the job is accepted
reachable anywhere
STAGE 02

Relay

opc.taiel.eu · /opt/transcribe
  • Stores audio and tracks job state
  • Holds the queue while b550 is offline
  • Hands jobs over FIFO the moment the worker polls
online · holding queue
STAGE 03

Transcribe

taiel-b550-eagle · RTX 3060
  • Pulls work over the tailnet when it is up
  • Runs NeMo Parakeet on CUDA
  • Returns SRT plus a derived plain-text transcript
worker draining queue
02

Interface

One bearer token for clients, one for the worker. The status endpoint is the only thing a client needs to poll.

Endpoints

POST /api/v1/jobs
GET /api/v1/jobs/{id}
GET /api/v1/jobs/{id}/result?format=
Formats are honest. Ask for a format that was not produced and you get a 404, never a different file wearing the wrong extension.

Live status

Pipeline

relayonline
worker · b550active
queueFIFO · draining
tlsLet's Encrypt · auto
hold policyqueue until b550 returns
Diarization is off by default. Speaker labels need a HuggingFace token on the worker, which is not configured yet.
03

Options, honestly

What the pipeline actually honours today. Unsupported values are ignored and noted in the job log rather than silently pretending to work.

OptionValuesStatusBehaviour
language auto · en · de · fr … partial Non-English switches on the multilingual Parakeet v3 model. There is no per-language switch — auto and de behave identically.
tracks mix · left · right · split partial left/right map to audio track 0/1. mix and split fall back to the default track.
diarization true · false blocked Needs a HuggingFace token on the worker for pyannote. Not configured yet, so requests fail with a clear error.
model tiny · base · small … ignored Parakeet TDT 0.6B is the only engine. The value is accepted and logged, but does not change anything.
speakers 1–16 ignored No speaker-count hint is supported by the engine yet.
output_formats txt · srt works Both are produced from the same pass. vtt and json are requested often but not produced yet — asking for them returns 404.