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.
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.
Starting a sample call …
Simulated transcript. Tap to use your own microphone.
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.
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.
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.
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
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);}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
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));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.
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.
- 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.
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.