---
title: "Text to MP3 on Mac: Bitrate and Batch Guide"
description: "Convert text to MP3 on a Mac: generate speech into a lossless master, encode it at the right bitrate for speech, and batch a whole folder of scripts."
canonical: "https://www.murmurtts.com/blog/text-to-mp3-mac"
---
[Murmur](https://www.murmurtts.com/)/[Blog](https://www.murmurtts.com/blog)/Tutorial

Tutorial

# Text to MP3 on Mac: Convert, Set Bitrate, Batch

Convert text to MP3 on a Mac: generate speech into a lossless master, encode it at the right bitrate for speech, and batch a whole folder of scripts.

![](https://www.murmurtts.com/murmur-icon.webp)Murmur·October 18, 2026·9 min read[Download free (3-day Pro trial)](https://murmur-updates.tarunyadav9761.workers.dev/download/latest)[Buy $49](https://murmur-licenses.tarunyadav9761.workers.dev/checkout)

Free plan with Kokoro voices, scripts up to 1,500 characters · 3-day Pro trial, then $49 once

On this page

Text to MP3 is really two stepsPick a bitrate for speech, not for musicConvert a text file to MP3 with the built-in say commandProduce the speech in an app, then encode the masterBatch a folder of scripts into MP3 filesAvoid double compression and lost mastersWhen this is not the right workflowFrequently asked questions

[Back to the journal](https://www.murmurtts.com/blog)

**Direct answer:** turning text into an MP3 on a Mac is usually two tasks, not one. First you generate speech into an uncompressed file, then you encode that file to MP3 at the bitrate your destination needs. Most Mac tools do not write MP3 directly: Apple's built-in say command writes AIFF or WAVE, and Murmur exports WAV and M4A. Keep the uncompressed file as your master and treat the MP3 as a delivery copy you can always regenerate.

The exception is a cloud service that hands you an MP3 straight from a text box. That convenience hides the same tradeoff: the service picked a codec and bitrate for you, and you cannot recover an edit-friendly master from the compressed result. This guide covers the Mac-native path. Generate locally, choose a bitrate that suits speech, encode once, and batch the whole job when a project has many scripts. If you only need your Mac to read text aloud and nothing to keep, start with the [Mac text-to-speech shortcut guide](https://www.murmurtts.com/blog/text-to-speech-mac-shortcut) instead.

## Text to MP3 is really two steps

Audio you intend to edit should stay lossless until the last moment. PCM WAV and AIFF store every sample. MP3 uses lossy compression, so it discards detail the ear is less likely to notice. Those losses accumulate if you decode an MP3, edit it, and encode it again. Generating to WAV or AIFF first keeps one high-quality source, and the MP3 becomes a one-way export you can recreate at any time. The [WAV, M4A, and MP3 export guide](https://www.murmurtts.com/blog/wav-m4a-mp3-tts-voiceover-export) covers that master-versus-delivery split in more depth.

| Route | What it produces | Best for |
| --- | --- | --- |
| macOS say command | AIFF or WAVE from a built-in voice | Free drafts, quick reads, timing passes |
| A local TTS app | WAV and M4A from a chosen or cloned voice | Finished narration you will edit and deliver |
| A converter such as ffmpeg | MP3 at a bitrate you choose | The final delivery step |

Notice that the generator and the encoder are separate decisions. Pick the generator for the voice quality you need, then pick the converter for the delivery format. A better voice never asks you to change how the MP3 is made, and a strict destination format never forces you to accept a worse voice.

## Pick a bitrate for speech, not for music

Spoken word is much easier to compress than music. A single mono voice track has less simultaneous detail to preserve, so a low-bitrate MP3 can sound clean where the same setting would smother a busy mix. A practical starting point is mono at 64 to 96 kbps for voice only, 128 kbps when you want extra headroom or the file may be processed again, and 128 to 192 kbps stereo when a music bed shares the track. The [LAME MP3 encoder project](https://lame.sourceforge.io/), whose encoder is the one most Mac converters use, describes itself as strongest at mid-to-high bitrates and at variable bitrate encoding. Pushing far above that mostly grows the file, not the quality.

You also choose between constant bitrate (CBR) and variable bitrate (VBR). CBR holds one rate throughout, which is predictable for streaming and simple to plan for. VBR spends more bits on complex passages and fewer on silence, which usually gives better quality at a similar average size. FFmpeg's [codec documentation](https://ffmpeg.org/ffmpeg-codecs.html) lists sample rate, bitrate, and channel count as encoder options you set explicitly, and its audio bitrate default is 128K. For a spoken-word delivery, set those on purpose rather than accepting a default.

| Setting | 10 minutes (decimal MB) | 60 minutes (decimal MB) |
| --- | --- | --- |
| 96 kbps mono CBR | 7.20 | 43.20 |
| 128 kbps CBR | 9.60 | 57.60 |
| 192 kbps CBR | 14.40 | 86.40 |
| 24 kHz, 16-bit, mono WAV (master) | 28.80 | 172.80 |

These are arithmetic examples (duration multiplied by bitrate, divided by eight), not measured exports. Headers and variable-rate files will differ. They are here so you can size a batch before you run it. A two-hour set of audio at 96 kbps mono lands near 86 MB in total, which fits comfortably on a phone. The same material kept as WAV would run to hundreds of megabytes, which is exactly why the master and the delivery copy have different jobs.

## Convert a text file to MP3 with the built-in say command

macOS ships a command-line speech tool, say, that needs no installation. The [say manual page](https://keith.github.io/xcode-man-pages/say.1.html) says it converts text to audible speech and writes an AIFF file by default, and that it can also write WAVE or M4A. It does not write MP3, so the MP3 comes from a separate encoder in a second step. For the voices themselves, Apple's [support page on speaking on-screen text](https://support.apple.com/guide/mac-help/mh27448/mac) shows the system Read and Speak controls that share the same installed voices.

1. Save the script as a plain text file, with one paragraph per line or blank lines between paragraphs.
2. Generate a master: say -f script.txt -o narration.aiff. For a WAVE master, use -o narration.wav --file-format=WAVE.
3. Listen to the master once before encoding, so you catch a missing word or a mispronounced name while it is still easy to fix.
4. Encode to MP3 with ffmpeg: ffmpeg -i narration.aiff -codec:a libmp3lame -b:a 96k -ac 1 narration.mp3. The -ac 1 option keeps the output mono, and you can raise -b:a for a stereo or music-bed mix.
5. Play the MP3 on the device that will actually use it, not only in your editor.

The catch with say is the voice. It uses the system voices installed on your Mac, which are fast and free but read in a flat, synthetic style, and they do not clone a specific person. That is fine for a draft, a notification, or a rough timing pass. It is usually not the voice you want for a published course, an audiobook, or a client deliverable. For those, generate in a text-to-speech app and encode from its export instead.

## Produce the speech in an app, then encode the master

A local TTS app gives you better voices while keeping the same two-step discipline. Murmur runs on Apple Silicon Macs and bundles Kokoro for basic narration, with optional local models for cloning, voice design, and more languages. It organizes scripts, speakers, takes, and a batch queue, and it exports WAV and M4A. It does not export MP3 natively, so the pattern is unchanged: export a WAV master, then convert a copy to MP3 at your chosen bitrate. Reach for the app-based route when you need a specific voice, several speakers in one project, or a queue that processes many scripts without a manual run per file.

Murmur is not the right tool for everyone. It is Mac-only and Apple Silicon-only, so Windows users, browser-only teams, and anyone who needs live, real-time streaming speech should look elsewhere. It also has a free plan and a 3-day Pro trial; the website edition is $49 one-time with a 7-day refund policy, so listen to the public samples before deciding. If your text is sensitive, the [offline text-to-speech guide](https://www.murmurtts.com/blog/offline-text-to-speech-mac-private-documents) explains what stays on your machine and what still connects to the network.

## Batch a folder of scripts into MP3 files

Batching is where the generate-then-encode pattern pays off. Doing it by hand, one file at a time, invites skipped steps and mismatched bitrates. A short shell loop handles a whole folder at once.

Save every script as a .txt file in one folder, then run a loop that generates a master and encodes it for each file: for f in chapters/*.txt; do say -f "$f" -o "${f%.txt}.aiff"; ffmpeg -y -i "${f%.txt}.aiff" -codec:a libmp3lame -b:a 96k -ac 1 "${f%.txt}.mp3"; done. The syntax "${f%.txt}" simply strips the .txt extension so the master and the MP3 share the chapter's name.

That loop reads each chapter, writes an AIFF master with a matching name, then writes an MP3 next to it. Before you delete anything, count the files in and out and listen to the first, middle, and last MP3. A loop that fails on one file can leave a folder that looks complete but is quietly missing a chapter.

If you would rather not write shell scripts, a local app's queue does the generation half for you. A well-behaved queue keeps completion state, so a restart or a single failed clip does not mean starting over, and you convert the exported files afterward. The [local TTS automation and batch guide](https://www.murmurtts.com/blog/local-tts-automation-cli-mcp-batch-mac) covers the reliability details, such as idempotency and output manifests, that keep a large run from silently dropping files.

## Avoid double compression and lost masters

The most common way to ruin a text-to-MP3 job is to treat the MP3 as the working file. Once it is your only copy, every fix becomes a re-encode, and every re-encode stacks another round of loss. Keep the master and encode from it instead.

- Keep the uncompressed master (WAV or AIFF) beside the project, not only the MP3.
- Encode to MP3 once, from the master, every time. Re-encoding an MP3 adds another layer of loss.
- Match channels and sample rate to the destination instead of guessing, and write down what you used.
- Name files by project, section, and revision so a collaborator does not send the old review copy.
- Open the finished MP3 in the app that will play it and confirm the last sentence is complete.

If several chapters come from different voices or models, check every join after encoding, not just the opening. One clean first file does not prove the loop handled the rest at the right rate or level.

## When this is not the right workflow

MP3 is a delivery format, and it is not always the one you need. If a platform accepts WAV, M4A, or AAC, those can be better choices for the master and sometimes for delivery, so check the destination's requirements before you compress. If you need live, low-latency speech inside another app, a batch-to-MP3 pipeline is the wrong shape entirely. If your team works in the cloud and needs shared projects, a single-Mac pipeline adds friction. And if you are on Windows, this particular Mac toolchain does not apply. This article is about producing finished MP3 files on a Mac, not about real-time speech or cross-platform collaboration.

When the job is text that becomes audio for reading rather than for production, the [blog-to-audio guide](https://www.murmurtts.com/blog/how-to-turn-blog-posts-into-audio) and the [Mac text-to-speech workflow](https://www.murmurtts.com/blog/mac-text-to-speech-workflow) cover the script preparation and review steps that come before any encoding, and those steps matter more than the bitrate.

## Frequently asked questions

## Sources

- [Apple Mac User Guide: Have your Mac speak text on the screen](https://support.apple.com/guide/mac-help/mh27448/mac)Accessed 2026-10-14
- [macOS say(1) manual page (Speech Synthesis Manager)](https://keith.github.io/xcode-man-pages/say.1.html)Accessed 2026-10-14
- [LAME MP3 Encoder project](https://lame.sourceforge.io/)Accessed 2026-10-14
- [FFmpeg Codecs Documentation (libmp3lame and audio options)](https://ffmpeg.org/ffmpeg-codecs.html)Accessed 2026-10-14

## Generate the master in Murmur, then encode the MP3

Murmur is a local voice studio for Apple Silicon Macs running macOS 15 or later. Generate speech on your own machine, export the WAV or M4A master, and convert a copy to MP3 at the bitrate you choose. The website edition is $49 one-time, with a free plan and a 3-day Pro trial, and a 7-day refund policy. Listen to the public samples before you buy.

[Download free (3-day Pro trial)](https://murmur-updates.tarunyadav9761.workers.dev/download/latest)[Buy Murmur · $49](https://murmur-licenses.tarunyadav9761.workers.dev/checkout)

macOS 15+ · Apple Silicon required · 7-day refund policy

Made for your Mac

## Less reading. More making.

[Download free (3-day Pro trial)](https://murmur-updates.tarunyadav9761.workers.dev/download/latest)[Buy $49](https://murmur-licenses.tarunyadav9761.workers.dev/checkout)[Explore Murmur](https://www.murmurtts.com/#product)
