Remove vocals from a song on your Mac

Make an instrumental for singing practice from a music recording on your Mac. The free speech CLI separates vocals, drums, bass and other instruments; FFmpeg combines the three backing stems. Start with the short example below and listen before processing your own song.

1. Install the tools

You need an Apple Silicon Mac, macOS 15 or later, and Homebrew. Open Terminal and run the installation command. This is a local Mac workflow: it does not need a Soniqo account or an audio upload.

brew install speech ffmpeg

The first separation downloads the HTDemucs model from Hugging Face, so allow an internet connection and extra time. The model stays cached on your Mac. Later separations can run offline with the cached model.

2. Try the music sample

Use a fresh working folder to keep the input and results together. Download the stereo WAV sample, or play the examples first. These players use the same recording so you can compare what stays in each output.

curl -fL https://soniqo.audio/audio/samples/music/sample.wav -o sample.wav

Download the sample WAV · Sample credits and license

Core ’ngrato (1995) · Singing Sergeants, United States Air Force Band. These are illustrative outputs from the commands below, not a separation-quality benchmark.

Original recording
Vocals
Instrumental backing

3. Separate the recording

Run this command in the folder containing sample.wav. It writes vocals.wav, drums.wav, bass.wav and other.wav into stems. The original recording stays in place.

speech separate sample.wav --engine htdemucs --htdemucs-precision int8 --output-dir stems

4. Save the instrumental

Combine drums, bass and other instruments to leave out the vocal stem. This FFmpeg command writes instrumental.wav and applies a limiter to control peaks. It mixes the three separated parts; it does not subtract the estimated voice from the original file.

ffmpeg -i stems/drums.wav -i stems/bass.wav -i stems/other.wav -filter_complex 'amix=inputs=3:normalize=0,alimiter=limit=0.98:level=false:latency=true' -c:a pcm_s16le instrumental.wav

Open instrumental.wav to check the backing track, and stems/vocals.wav to hear the isolated vocal. Listen for leftover voice, missing instruments or altered transients. Dense mixes, reverb and overlapping sounds can leave audible separation artifacts.

Use your own song

Replace the example input with the path to your stereo WAV file. Keep quotes around filenames containing spaces, and choose a different output folder for each song. This recipe uses 44.1 kHz stereo WAV audio; prepare other file formats as WAV first.

speech separate "/path/to/Your Song.wav" --engine htdemucs --htdemucs-precision int8 --output-dir my-song-stems

For the instrumental, replace stems in the FFmpeg command with that song’s output folder.

What to expect

A short sample is not a benchmark for a three-minute song or for a phone. Processing time and memory use depend on the track and model. Begin with a short clip, keep the original, and check the result by ear before using it in a practice session or edit.

For model settings and the Swift API, read Source Separation. See Getting Started for installation help and the CLI reference for command options.