Opus, SILK and CELT: why a voice note is so small
Opus is the newest codec in wide use, standardised by the IETF as RFC 6716 in 2012, and it is unusual in being two codecs stitched together. One half is SILK, which Skype built for speech and then opened up. The other is CELT, from the same Xiph.Org people behind Vorbis, designed for low-latency music. The encoder switches between them, or blends them, depending on what it hears and how many bits it has been given.
That design is why it turns up everywhere audio has to travel live. Opus is mandatory to implement in WebRTC, which is the plumbing behind browser calls, so Discord, Signal, Telegram, WhatsApp voice messages and a long list of conferencing tools all speak it. It works from about 6 kbps for narrowband speech up to 510 kbps for stereo music, and it always runs internally at 48 kHz regardless of what you feed it.
For a voice message the practical outcome is a file so small it barely registers: a minute of speech can be well under 200 KB. Excellent inside the app. A problem the moment the audio has to leave, because outside real-time software the format’s support is patchy at best. iOS will not open one from Files or from an email attachment, car stereos do not list it, and a fair number of transcription services, editors and evidence-handling systems reject the extension without looking inside.
Getting the voice note out of the messaging app first
The conversion is the easy half. Extracting the file is usually where people get stuck, because messaging apps deliberately make their media directories awkward to reach.
On Android, WhatsApp keeps voice notes under its own media folder and a file manager can reach them directly. On iOS the reliable route is the share sheet: forward the message to yourself by email, or save it to Files, and you will end up with a .opus you can drop here. Telegram’s download option produces the same thing, though it sometimes labels it with an Ogg extension instead. Discord’s saved attachments arrive as .opus directly.
The MP3 will usually be larger than the .opus that made it
This surprises almost everyone, so it is worth stating plainly: converting a voice note to MP3 normally makes the file bigger, not smaller. A 90-second message that arrived as a couple of hundred kilobytes can come back as a couple of megabytes at the default bitrate.
Nothing has gone wrong. Opus at speech bitrates is simply far more efficient than MP3 can be, and the encoder here is asked for a target rate rather than a target quality, so it spends the bytes it was told to spend. You are trading size for the ability to open the file anywhere, which for a recording that matters legally or sentimentally is usually the trade you want.
If size does matter, take 128 kbps (smaller file). It is still generous for mono speech and it narrows the gap considerably.
Converting the file
- Drop the
.opusfile onto the box above, or click Choose a file and pick it. - Set Audio quality. 192 kbps (recommended) is the default and is already comfortable for speech; 128 kbps (smaller file) trims the result if you are converting a lot of messages.
- Click Convert OPUS to MP3. The button gives way to a progress bar and a Cancel button while the encoder works.
- Download the MP3, which keeps the original filename with
.mp3in place of.opus.
Bitrate advice when the source is compressed speech
The three rungs map to a single -b:a value handed to libmp3lame. What none of them can do is add information. A voice note recorded at 16 kbps mono contains a fixed, quite small amount of signal, and choosing 320 kbps (highest quality) simply describes that same signal in more bytes.
The one case where the top rung earns its place is when the .opus holds music rather than speech, which happens with exported Discord recordings and with some podcast distributions. There the source may have been encoded at 96 kbps or higher in stereo, and the extra headroom keeps the second encode from adding audible artefacts on top of the first. The reasoning behind picking a number for speech against music is worked through in choosing a bitrate for voice versus music.
Since Opus files are Ogg containers underneath, they can also carry embedded artwork, which FFmpeg treats as a video stream. The converter passes -vn so only audio reaches the encoder.
Opus support outside the chat apps
Opus is genuinely the better codec, and it still loses this argument, because compatibility is decided by a long tail of devices and services that stopped being updated years ago. MP3 is what a 2009 car head unit, a courtroom playback system, an HR documentation portal and a video editor’s import dialogue all agree on.
So the sensible pattern is to keep the .opus as the untouched original and hand out the MP3. If what you want from the recording is text rather than audio, Transcribe Audio runs speech recognition on your own device, on the converted MP3 rather than on the .opus, which is not in its accepted list. OGG to MP3 covers the same file when an app has labelled it with an Ogg extension. The wider set of audio tools picks up from the MP3 too.