Home → Blog → How to transcribe a call recording to text
How to transcribe a call recording to text
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:
- Search by content. Finding every call that mentioned a specific product or objection takes seconds instead of hours of listening.
- Quality control. A manager reads a transcript in a minute instead of sitting through a ten-minute recording.
- Analytics. Transcripts feed a language model that returns topics, sentiment and recurring problems.
- Compliance. Text is far easier to store and to check against a script than an audio archive.
What you need
Three things, and nothing else:
- The recordings in any common format: mp3, wav, ogg, m4a. Telephony platforms usually export mp3 or wav.
- An API key. Sign-up takes a minute and the key is issued immediately.
- 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-1Step 3. Pick the response format
The response_format parameter decides what comes back:
| Value | What you get | When to use it |
|---|---|---|
json | The full text | Writing to a CRM, full-text search |
verbose_json | Text plus segments with timings and language | Marking up a dialogue, jumping to a moment |
srt, vtt | Ready-made subtitles | Recorded meetings and webinars |
text | Plain text with no wrapper | Quick 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
| Code | Cause | Fix |
|---|---|---|
| 401 | Wrong or blocked key | Check the Authorization: Bearer … header |
| 400 | Empty or corrupted file | Make sure the recording opens in a player |
| 413 | File larger than 25 MB | Compress to mp3/opus or split it |
| 429 | Too many requests, or minutes exhausted | Slow 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 keyFrequently 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
- Voice message transcription: Telegram, WhatsApp and other messengers — How to turn voice messages into text automatically: working with ogg/opus, short clips, silent recordings and ready code for chat bots that answer in text.
- How to migrate from the OpenAI Whisper API to another service — A migration guide for the OpenAI Whisper API: what to change in code, how responses and errors compare, and how to test quality before switching production traffic.
- How to improve speech-to-text accuracy: eight practical fixes — Eight changes that actually move transcription quality: audio preparation, language hints, the prompt parameter, chunking, formats, and how to measure word error rate.