telkittelkit
telkit Transcribe

Norwegian speech to text, over an API

Upload an audio file, or stream audio while it is still being recorded. What comes back is text carrying a speaker label and a timestamp on every word. Processing runs on EU endpoints, recordings and transcripts sit in the EEA, and billing counts the audio-seconds we actually processed.

Live demo

From audio to text, while you talk

Hit the mic and read a sentence out loud. Words land as interim guesses, then settle into final text with the speaker marked.

Live transcription

Norwegian speech to text, as you speak.

Sample

Starting a sample call …

Simulated transcript. Tap to use your own microphone.

Norwegian and data residency

Bokmål and Nynorsk, processed in Europe

Norwegian is the language we tune for. Both written standards come back with diarization and word timestamps in the same response. We evaluate on spontaneous speech from meetings and phone calls, alongside read Bokmål. From the moment audio arrives until the transcript sits in storage, the chain stays in Europe.

Where your data sits
Region
MediaCalls and audio, pinned to the region
eu-central · Frankfurt
Speech-to-textProcessing on EU endpoints
EU
StorageRecordings and transcripts, in the EEA
EEA · Hetzner

We publish no benchmark numbers. Spontaneous speech and strong dialects are harder for every model, and Trøndersk and Northern Norwegian are where it usually breaks. We would rather say that than dress it up. Run your own audio through the free tier before you decide.

Batch and realtime

Two ways in, one transcript shape

Upload a file for async processing, or stream audio over WebSocket while the conversation is happening. The quality and the shape of the response stay the same.

Batch

File or URL → job

Submit a URL or upload a file. You get a job ID and follow progress over SSE or a webhook. Once the job finishes, download JSON, SRT and VTT.

  • Webhook, polling and SSE progress
  • Long files chunked server-side
  • JSON, SRT and VTT output
  • Idempotency-Key on submit
batch.tsts
import { Telkit } from "@telkit/sdk"; const telkit = new Telkit({ apiKey: process.env.TELKIT_API_KEY }); // Submit a file or URL. Billed per audio-second.const job = await telkit.transcription.jobs.create({  audioUrl: "https://example.no/intervju.mp3",  language: "no",          // nb · nn · auto  diarize: true,           // speaker labels, included  formats: ["json", "srt", "vtt"],}); // Follow progress over SSE (or wait for the signed webhook).for await (const e of telkit.transcription.jobs.stream(job.id)) {  if (e.status === "completed") console.log(e.transcript.text);}
Realtime

WebSocket → live transcript

Mint a session, open a WebSocket and push PCM frames. Interim events arrive while someone is speaking, final ones once the sentence lands. 8 kHz telephony audio is resampled to 16 kHz for you.

  • Interim → final, with speech_final
  • Per-word diarization
  • 8 kHz telephony → 16 kHz
  • Low latency, on EU endpoints
realtime.tsts
import { Telkit } from "@telkit/sdk"; const telkit = new Telkit({ apiKey: process.env.TELKIT_API_KEY }); // Audio in, transcripts out, over one WebSocket.const stream = await telkit.transcription.stream({  language: "no",          // streamed on EU endpoints  diarize: true,}); stream.on("transcript", (e) => {  // interim → final, with per-word speaker labels  if (e.isFinal) console.log(e.speaker, e.text);}); // Push 16 kHz PCM frames (8 kHz telephony is auto-resampled).mic.on("data", (pcm) => stream.send(pcm));
Features

Everything around the transcript

Speakers, timestamps, caption files and two text variants ship in the same response, at no extra cost.

Diarization included

Who is speaking is labelled word by word, and the words are grouped into utterances per speaker.

Verbatim and semantic

Verbatim for legal and police work. The semantic variant drops hesitation and repetition, which suits meeting notes and subtitles. Both exist for Bokmål and Nynorsk.

Word timestamps

Start and end in milliseconds, with confidence, on every single word.

SRT and VTT

Caption files are generated straight from the transcript, ready to drop onto video.

Data residency in the EEA

Speech-to-text runs on EU endpoints. Recordings and transcripts are stored in the EEA on Hetzner, and content never leaves it.

Norwegian first, other languages too

Bokmål and Nynorsk are what we tune for. The same API and the same transcript shape cover the major European and international languages.

Pricing

You pay for audio-seconds

The meter counts audio-seconds we actually processed. How long the WebSocket stayed open does not enter into it. Prices are in EUR with no platform fee, and the free tier covers an evaluation on your own material.

See the full price list
from€0.006/ audio-min
Batch (file / URL)
€0.006 / audio-min
Realtime (WebSocket)
€0.01 / audio-min
Diarization
Included
Verbatim + semantic
Included

Billed per audio-second. Diarization and both text variants are included.

FAQ

Frequently asked questions

Languages, dialects, residency, formats and latency.

Ready to transcribe?

Get an API key and send your first audio file. The free tier needs no card.