Piper TTS: local voice cloning setup on an M2 Mac

Learn to fine-tune Piper TTS with your recordings, resume checkpoints and build a Flask speech UI. The speaker reports three days of training on an M2 Mac.

Player not loading? Watch on YouTube

This tutorial follows a local voice cloning project with Piper TTS, which the speaker describes as an open source text-to-speech library. It covers recording a dataset, fine-tuning an existing voice and generating speech through a browser interface. The speaker says the recordings and model stay on the computer.

The setup uses an M2 MacBook, Python 3.13, Git and Homebrew. Rather than train from scratch, the speaker selects Piper's Amy voice and downloads its checkpoint from Hugging Face. The dataset pairs recorded sentences with text in a metadata CSV. Voice Memos recordings are converted from M4A to WAV at 22,050 Hz before training.

The walkthrough includes troubleshooting an Apple silicon architecture mismatch by recreating an arm64 virtual environment with Homebrew Python. It also covers building the monotonic alignment extension and fixing its location. Checkpoints let the speaker pause training and resume from the saved state.

Training took about 15 minutes per epoch on the speaker's machine, with roughly three days of intermittent training producing a result they considered usable. These are reported timings, not general hardware requirements. The speaker discusses overfitting, MOS and mel loss when assessing checkpoints. The final steps export the model to ONNX, test speech generation and build a Flask interface that accepts text and returns an audio file on localhost.