HomeBlog → How to transcribe a call recording to text

How to transcribe a call recording to text

Published 2026-08-05 · 6 min read

Sales and support teams record hundreds of conversations a day, and nobody has time to listen to them. Transcription turns those recordings into text you can search, analyse and push into a CRM. Here is how to set that up in a few minutes without rewriting the code you already have.

Why transcribe calls at all

A text version of a conversation solves four problems that audio cannot:

What you need

Three things, and nothing else:

  1. The recordings in any common format: mp3, wav, ogg, m4a. Telephony platforms usually export mp3 or wav.
  2. An API key. Sign-up takes a minute and the key is issued immediately.
  3. Any programming language with an HTTP client. The samples below are Python and C#, but anything works.

No dedicated server, no GPU and no model downloads: recognition runs on the service side.

Step 1. Get an API key

Sign up and copy the key that looks like vs_live_… from the client area, tab “API”. The key is equivalent to a password, so keep it in an environment variable rather than in your source tree.

The free minutes are enough to run a dozen real conversations through the service and judge the quality before you pay anything.

Step 2. Send the first recording

The protocol matches OpenAI Whisper, so the official SDK works as is. Python:

from openai import OpenAI

client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="your key")

with open("call-2026-08-05.mp3", "rb") as f:
    result = client.audio.transcriptions.create(model="whisper-1", file=f)

print(result.text)

C# — the same idea with the official OpenAI client:

var options = new OpenAIClientOptions { Endpoint = new Uri("https://voicesscribe.com/v1") };
var client = new OpenAIClient(new ApiKeyCredential("your key"), options);
var audio = client.GetAudioClient("whisper-1");
var result = await audio.TranscribeAudioAsync("call.mp3");
Console.WriteLine(result.Value.Text);

You can also check it from a terminal without writing any code at all:

curl https://voicesscribe.com/v1/audio/transcriptions \
  -H "Authorization: Bearer your key" \
  -F file=@call.mp3 -F model=whisper-1

Step 3. Pick the response format

The response_format parameter decides what comes back:

ValueWhat you getWhen to use it
jsonThe full textWriting to a CRM, full-text search
verbose_jsonText plus segments with timings and languageMarking up a dialogue, jumping to a moment
srt, vttReady-made subtitlesRecorded meetings and webinars
textPlain text with no wrapperQuick scripts and pipelines

Step 4. Improve accuracy on your own vocabulary

Company names, surnames and product codes come out much better when you hint at them through the prompt parameter:

result = client.audio.transcriptions.create(
    model="whisper-1", file=f,
    prompt="Plans discussed: Lite, Optimum, Premium; account manager Sawyer",
)

The hint never appears in the response — it only nudges recognition towards the right terms. If the stream is single-language anyway, add language="en": it speeds processing up and removes detection mistakes on short replies.

Step 5. Put transcription on a conveyor

A workable pattern for telephony: as soon as a recording is ready, queue it, send it for recognition and store the result on the deal card.

import os, pathlib
from openai import OpenAI

client = OpenAI(base_url="https://voicesscribe.com/v1", api_key=os.environ["VS_KEY"])

for path in pathlib.Path("recordings").glob("*.mp3"):
    with path.open("rb") as f:
        text = client.audio.transcriptions.create(model="whisper-1", file=f).text
    path.with_suffix(".txt").write_text(text, encoding="utf-8")
    print(path.name, "done")

Processing runs faster than real time: a one-minute conversation is transcribed in seconds, so even a full day of recordings is cleared in a few minutes.

Common errors and what they mean

CodeCauseFix
401Wrong or blocked keyCheck the Authorization: Bearer … header
400Empty or corrupted fileMake sure the recording opens in a player
413File larger than 25 MBCompress to mp3/opus or split it
429Too many requests, or minutes exhaustedSlow down or change the plan

Long recordings are cheaper to keep in opus or mp3: an hour of conversation is hundreds of megabytes in wav and a few megabytes in opus.

Try it on your own recordings. Sign-up takes a minute, and the free minutes are enough to judge the quality.

Get a free API key

Frequently asked questions

How much does it cost to transcribe one call?

Billing is per minute of audio, so the cost depends on the length of the conversation. New accounts get free minutes right after sign-up — enough to check the quality on your own recordings.

How accurate is recognition on phone audio?

Telephone audio is compressed and narrower in frequency than a studio recording, but modern models handle it confidently. On clean speech there are almost no errors; noise, crosstalk and a strong accent lower accuracy.

Can I separate the agent from the customer?

If your telephony records the two sides into separate channels or files, transcribe them separately — that gives an exact split. Automatic speaker diarisation inside a single file is not performed.

What happens to the recordings after processing?

Recordings and transcripts are stored for no longer than 24 hours so you can check the result, then they are deleted automatically.

Do I need my own server or a GPU?

No. Recognition runs on the service side; all you need is an HTTP request from your code.

Related reading