Skip to content

Guide

MeloTTS on Mac: Install It Yourself or Use an App

MeloTTS is an MIT-licensed multilingual TTS library with no Mac app. See the real install steps, the MPS gap, and when a packaged voice app is simpler.

Murmur11 min read
Buy $49Download free for Apple Silicon (3-day Pro trial)Intel Mac? Download here.Not sure? Apple menu > About This Mac shows your chip.

Free plan with Kokoro voices, 3,000 characters a day · 3-day Pro trial, then $49 once

Short answer: MeloTTS is an MIT-licensed multilingual text to speech library from MIT and MyShell.ai that its docs describe as fast enough for real-time inference on CPU, and it can be made to work on an Apple Silicon Mac through its Python package. The project does not ship a Mac app, does not document macOS as a tested target, and Murmur does not run MeloTTS. Your honest options are to install the official repository yourself, or to use a packaged Mac app with a model it actually ships, such as Kokoro.

Search results for MeloTTS mix several different artifacts: the GitHub repository, the Hugging Face model cards, a hosted demo, and third-party wrappers. Only the repository and cards describe what the project supports. This guide sticks to those, plus the public issue tracker for the macOS failures users have already reported, and it separates what the project claims from what a Mac user has to do to get audio out.

What MeloTTS actually is

The README calls MeloTTS a high-quality multilingual text to speech library. It is a VITS-family model, and the acknowledgements say the implementation is based on Coqui TTS, VITS, VITS2, and Bert-VITS2. That lineage is acoustic-model work rather than a large language model that predicts speech tokens, though the project publishes no parameter count. The package exposes three entry points: a Python API, a command line tool, and a small Gradio web interface.

The repository is version 0.1.2 according to setup.py, and the install documentation says the project is developed and tested on Ubuntu 20.04 with Python 3.9. That sentence is the most important one for a Mac reader. Nothing in the README promises a supported macOS build, and the same install page tells macOS users who hit problems to try Docker instead. You can still run it natively, but you are using an untested path.

Two claims in the README are worth keeping separate. First, the project supports English, Spanish, French, Chinese, Japanese, and Korean, with five English accents. Second, the model is described as fast enough for CPU real-time inference. That second claim is the project's own statement about its intended deployment, not a benchmark on your machine, and it does not say which CPU or which sentence length was used. Measure it on your own Mac before you plan a long narration session around it.

Languages, accents, and speakers the README lists

MeloTTS uses one checkpoint per language, and the speaker set inside a checkpoint is fixed. The README and the install guide name these speaker IDs:

LanguageSpeaker IDs named in the docsNotes from the README
EnglishEN-Default, EN-US, EN-BR, EN_INDIA, EN-AUFive accents. The install guide lists them as the available English speakers.
SpanishESOne speaker in the example.
FrenchFROne speaker in the example.
ChineseZHThe README says the Chinese speaker supports mixed Chinese and English text.
JapaneseJPOne speaker in the example.
KoreanKROne speaker in the example.

Notice what is not in that table: no German, Italian, Portuguese, or Arabic, and no per-language list of dozens of voices. The English checkpoint gives you five accents, but the docs list one speaker ID per accent, not a catalogue of men, women, and ages. If your script needs several distinct English speakers in conversation, you are changing pitch and speed on the same voice or training something of your own.

The Chinese mixed-language behavior is a real differentiator and it is stated plainly in the README. If your script switches between Chinese and English inside a sentence, that is the case MeloTTS was built to handle. Do not assume the same mixing works for Japanese or Korean, because the README does not claim it.

The official install path on macOS

These are the install commands from the project's own install document, unchanged except for leaving out any mirror flags:

git clone https://github.com/myshell-ai/MeloTTS.git cd MeloTTS pip install -e . python -m unidic download

MeloTTS docs/install.md, Linux and macOS install section, checked 2026-10-19

Use a virtual environment or a Conda environment for this. The requirements file pins transformers to 4.27.4 and includes torch, torchaudio, gradio, librosa 0.9.1, pydub, and a stack of language-specific text processors: unidic, unidic_lite, mecab-python3, fugashi, pykakasi, g2p_en, pypinyin, jieba, and g2pkk. That is a lot of pinned dependencies to install into a shared Python. A dedicated environment is the difference between a clean rollback and a broken system Python.

The fourth command is required, not redundant. The package's setup.py defines a post-install hook for the dictionary download but never registers it, and the project's own Dockerfile runs python -m unidic download explicitly. unidic is the dictionary the Japanese text path uses.

Once installed, the web interface starts with melo-ui or python melo/app.py. The command line tool is invoked as melo or melotts. The documented examples are short:

melo "Text to read" output.wav melo "Text to read" output.wav --language EN --speaker EN-US melo "Text to read" output.wav --language EN --speaker EN-AU melo "Text to read" output.wav --speed 1.5 melo file.txt out.wav --file

MeloTTS docs/install.md, CLI section, checked 2026-10-19

For scripted work, the Python API is the more useful surface. The documented pattern creates a TTS object for a language, reads the speaker map, and writes a wav file:

from melo.api import TTS model = TTS(language='EN', device='cpu') speaker_ids = model.hps.data.spk2id model.tts_to_file("Did you ever hear a folk tale about a giant turtle?", speaker_ids['EN-US'], 'en-us.wav', speed=1.0)

Adapted from the MeloTTS README Python example, checked 2026-10-19

The install docs' example uses device='auto', with a comment that it will use the GPU if one is available. On a Mac, force device='cpu'. The reason is in the next section.

Where the Mac path breaks

The install docs' comment lists mps as a valid device value alongside cpu and cuda. Users have not found that reliable. Issue #228, opened in January 2025 on an M3 Pro running macOS 14.7, reports this failure during synthesis: "Output channels > 65536 not supported at the MPS device." A second commenter reproduces it on an M1 MacBook Pro with torch 2.5.1 and links a PyTorch issue and pull request about the same operator limitation.

The workarounds in that thread are the ones you would expect. Set PYTORCH_ENABLE_MPS_FALLBACK=1 so unsupported operations drop back to CPU, or pass device='cpu' and skip MPS entirely. Neither gives you Metal acceleration for the failing operation. For a Mac user, the practical reading is that the GPU path is not a supported feature of this project today.

There is an older macOS failure too. Issue #76, opened in March 2024, ends in an IndexError inside the attention code: "Dimension out of range (expected to be in range of [-3, 2], but got 3)." Comments report the same traceback on an M1 MacBook, an M2 mini, and an M3 Mac Pro, through both the CLI and the web UI. That issue is still open. It may be fixed by a dependency combination that works on your machine, and it may not. This is the kind of uncertainty the README's Docker suggestion is trying to route around.

Docker is a reasonable fallback on macOS, with one trap. The project's run command in the GPU variant is docker run --gpus all -it -p 8888:8888 melotts. That flag asks for NVIDIA hardware and will fail on a Mac. Use the plain docker run -it -p 8888:8888 melotts form, then open localhost:8888. The install docs also say the image build can take a few minutes.

Two more practical details. The requirements include cached_path, and the Dockerfile runs python melo/init_downloads.py, which is how pretrained checkpoints get fetched. Expect a download the first time you synthesize, and plan disk space for one checkpoint per language you use. Separately, if pip has to build the MeCab and fugashi dependencies from source, you may need a compiler toolchain on the machine.

License, consent, and what MIT does not settle

The repository LICENSE is the MIT License, copyright 2024 MyShell.ai, and the README says it is free for both commercial and non-commercial use. The Hugging Face cards for the English checkpoints also list mit. That is about as permissive as a model license gets, and it is a genuine advantage over projects with research-only or non-commercial terms. Read the license file yourself if you need to make a compliance decision, and keep the copyright notice with any substantial portion you redistribute.

MIT covers the code, and the Hugging Face cards for the English checkpoints also declare MIT. It says nothing about the provenance of the training audio or the rights of the people who recorded it. It also does not grant you rights to a voice you imitate. If you fine-tune on a client's recordings, get written permission and keep it with the project. The open source model license checklist covers the questions worth asking before you ship output commercially.

On cloning, be precise about what the project offers. The README documents preset speakers and a training path, not zero-shot cloning from a reference clip. There is no argument in the documented API for a reference wav and its transcript, which is the signature of a cloning model. The training document does show how to fine-tune on a custom dataset: a metadata file with audio path, speaker name, language code, and transcript, then preprocess_text.py, then train.sh with a GPU count, then infer.py against the resulting checkpoint. That is a real customization route, but it needs transcribed audio, training time, and hardware, and it is not the same thing as dropping in a ten-second sample.

Only clone voices you own or have written permission to use. That rule applies to fine-tuning as much as to any commercial cloning product. A local model removes the upload step, not the consent requirement.

Should you run it yourself?

Your situationSelf-hosted MeloTTSA packaged Mac app
You specifically need MeloTTS English accents, including Indian or AustralianGood fit. Those speaker IDs are in the English checkpoint.Check the app's voice list first. Kokoro in Murmur covers US and UK English, not the full MeloTTS accent set.
You want a short, light, CPU-friendly voice for draftsWorks. The install docs say CPU is sufficient for real-time inference.Kokoro is bundled in Murmur and runs locally on Apple Silicon and Intel Macs with preset voices.
You need zero-shot cloning from a reference clipNot the documented feature. Fine-tuning is the only customization path in the docs.Murmur ships several reference-cloning models. Confirm the current list and requirements in the app.
You do not want Python, Conda, or a terminalPoor fit. Install and troubleshooting are yours.Fits. Native macOS app for Apple Silicon and Intel Macs, macOS 15 or newer.
You need a Linux server or batch jobFits. The project is tested on Ubuntu and exposes a CLI and Python API.Not a fit. It is a desktop Mac app.
You need WindowsThe project offers a Docker path, but it is outside this Mac guide.Not available. macOS only.
You need live streaming into a call or gameNot a documented streaming product. You would be building around a file API.Not a live streaming product either. It generates and edits files.

The honest summary: run MeloTTS yourself if its accent set or mixed Chinese and English behavior is the reason you are here, or if you want to study and modify the model. Do not pick it if you want a finished editor, a supported Metal path, or voice cloning from a short sample. The studio versus DIY comparison goes through that trade in more detail.

What can go wrong

  • The install is tested on Ubuntu 20.04 with Python 3.9. On macOS you are on an untested path, and the project's own fallback advice is Docker.
  • device='auto' can select MPS and fail with the output channels error from issue #228. Pass device='cpu' or set PYTORCH_ENABLE_MPS_FALLBACK=1.
  • Some macOS installs fail inside the attention code with a dimension IndexError, reported in issue #76 on M1, M2, and M3 machines and still open.
  • The GPU Docker command uses --gpus all, which is an NVIDIA flag. On a Mac, use the plain docker run form.
  • Pinned dependencies collide with other projects. transformers is held at 4.27.4, and the package needs its own environment.
  • Native text processing dependencies may need a compiler if no wheel matches your Python version.
  • Checkpoints download at first use, and you need one per language. Budget disk space before a multi-language project.
  • The project documents preset speakers and fine-tuning, not zero-shot cloning. Do not plan a cloning workflow around it.

The packaged alternative, and when it is the wrong call

If the appeal of MeloTTS is small, local, CPU-friendly speech rather than its specific accents, a packaged app removes the Python stack entirely. Murmur is a local voice studio for Apple Silicon and Intel Macs running macOS 15 or later. Kokoro is bundled, so the first voice works without a model download, and the app handles scripts, multiple speakers, takes, and export in one place. Kokoro covers US and UK English plus Spanish, French, Hindi, Italian, Japanese, Portuguese, and Chinese, with preset voices rather than cloning.

Murmur also ships larger models for other jobs: Chatterbox Turbo, Chatterbox Multilingual, Qwen3-TTS Base, Voice Design, SparkTTS, Fish Audio S2 Pro, Breeze TTS 2, and OmniVoice. Those cover reference cloning and multilingual work that MeloTTS does not document. What Murmur does not ship is MeloTTS itself, and no setting in the app will make it appear. If a client asks for the exact EN_INDIA voice from that checkpoint, the app cannot give it to you.

That is the fair boundary. MeloTTS wins on one narrow thing: a permissive license and a fixed set of multilingual speakers that run on CPU. A packaged app wins on everything around the model, which is usually where projects stall. If you want the no-terminal route, the no Python local TTS guide walks through it, and the Kokoro on Mac guide covers the bundled model in depth. If you are still comparing open models, start with the local TTS model guide.

Frequently asked questions

Sources

Make the voiceover without the Python stack

Murmur is a local voice studio for Apple Silicon and Intel Macs running macOS 15 or later. It costs $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 buying.

Buy Murmur · $49Download free for Apple Silicon (3-day Pro trial)Intel Mac? Download here.Not sure? Apple menu > About This Mac shows your chip.

macOS 15+ · Apple Silicon and Intel Macs · Windows beta · 7-day refund policy