Skip to main content
Audio source separation & preprocessing
UVR5
ハモリ
音源分離
ボーカル抽出
カラオケ
AI
Python

How to extract only the harmonies: two-pass separation in UVR5, and karaoke that keeps the backing vocals

Extract only the harmonies (backing vocals) from a song with UVR5, or make karaoke that keeps them: the two-pass method, which file is the harmony, songs that won't split, batch runs and copyright.

Published
Reading time
19 min read
Author
友田 陽大
Share

The short answer: UVR5 (Ultimate Vocal Remover) has no button that pulls "just the harmonies" out of a song in one step. Extract the vocals from the song in a first pass, then run that vocal file through a karaoke model (such as UVR-MDX-NET Karaoke 2) in a second pass. The model splits it into the lead vocal and everything else, and everything else is the harmonies. Run a karaoke model on the whole song instead, and you get a karaoke track that still has the harmonies in it.

With karaoke models, the file whose name carries (Instrumental) is the harmony. UVR v5.6's Vocal Split Mode folds both passes into a single run, and the harmonies come out as (Vocals_backing_only).

This guide is for people who want to practice a harmony part, transcribe one by ear, or build a backing track that keeps the harmonies. It centers on the UVR5 GUI, and the second half shows how to batch-process with the Python package audio-separator. The basics of making instrumental-only or vocal-only tracks, and how to install UVR5, are in the complete guide to making karaoke tracks and a cappella with UVR5.

About the author, and how this article was checked: I built and run, on my own, a video-localization platform whose first stage is source separation. The UVR screen labels and output file names in this article were checked by reading the source code of UVR GUI v5.6 published on GitHub (gui_data/constants.py, UVR.py and separate.py on the master branch) and its model definition files. The Roformer-capable beta is not covered. Button positions and icons can't be read from the source, so controls are referred to by their labels.


Quick reference: which file for which goal

What you wantWhat goes into the karaoke modelFile to use
Hear only the harmonies (practice, transcription)The vocals from the first pass(Instrumental). With Vocal Split Mode, (Vocals_backing_only)
Hear only the leadThe vocals from the first pass(Vocals). With Vocal Split Mode, (Vocals_lead_only)
Karaoke that keeps the harmoniesThe whole song (one pass is enough)(Instrumental). Vocal Split Mode can also write (Instrumental_with_backing_vocals)
The song with only the harmonies removed (instrumental + lead)The vocals from the first pass(Instrumental_with_lead_vocals) (Vocal Split Mode only)

Choosing models before you use them commercially?

Model selection, quality evaluation, and commercial-license checks for audio and video AI in business

Why separate in two passes?

A karaoke model splits audio into two parts: the lead vocal and everything else. UVR's own help text for Vocal Split Mode says the option "auto-processes generated vocal stems, using either a karaoke model to remove lead vocals or another to remove backing vocals," and that it "splits the vocal track into two separate parts: lead vocals and backing vocals."

So what "everything else" contains depends on the input. On the whole song, everything else is the instrumental plus the harmonies, which is karaoke with the harmonies kept. On the vocals from the first pass, the instrumental is already gone, so everything else is only the harmonies. The first-pass vocal extraction is the prep step that keeps instruments out of your harmony track.


Which output file is the harmony?

UVR's source (UVR.py) treats the Vocals side as the lead for models that the model definition file marks as karaoke models, and as the backing vocals for models marked as backing-vocal (BV) models. In short:

Model(Vocals) file(Instrumental) file
UVR-MDX-NET Karaoke, UVR-MDX-NET Karaoke 2, 5_HP-Karaoke-UVR, 6_HP-Karaoke-UVRLeadEverything but the lead (the harmonies, when run on vocals)
Roformer karaoke models (used with audio-separator)LeadEverything but the lead (the harmonies, when run on vocals)
UVR-BVE-4B_SN-44100-1 (BV model)Backing vocals (harmonies)Lead

The Roformer row is the only one that does not come from UVR's source; it follows the stem names in the model config files (YAML) that audio-separator loads. The table is derived from source code, so for your first song, always listen to both files to confirm.

UVR only describes using the BV model on vocals. Rather than running it on a whole song, use it through Vocal Split Mode (Method A, below); that is the recommended route. In that mode, UVR mixes the first-pass instrumental back into the first-pass vocals at one tenth of its amplitude before running the model, and computes the lead as "vocals − the backing vocals the model returned." Running the model by hand on the vocal file (Method B) can give a different result.


Models you can use to extract harmonies

Among the VR Architecture and MDX-Net entries in UVR's download list (download_checks.json), these five are karaoke or BV models:

Shown in UVR asFile nameProcess Method
UVR-MDX-NET Karaoke 2UVR_MDXNET_KARA_2.onnxMDX-Net
UVR-MDX-NET KaraokeUVR_MDXNET_KARA.onnxMDX-Net
6_HP-Karaoke-UVR6_HP-Karaoke-UVR.pthVR Architecture
5_HP-Karaoke-UVR5_HP-Karaoke-UVR.pthVR Architecture
UVR-BVE-4B_SN-44100-1 (BV model)UVR-BVE-4B_SN-44100-1.pthVR Architecture

audio-separator's model list adds UVR-BVE-4B_SN-44100-2.pth and the following Roformer karaoke models:

  • mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt
  • mel_band_roformer_karaoke_gabox.ckpt
  • mel_band_roformer_karaoke_gabox_v2.ckpt
  • mel_band_roformer_karaoke_becruily.ckpt
  • bs_roformer_karaoke_frazer_becruily.ckpt
  • bs_roformer_karaoke_anvuew.ckpt

Roformer models are heavy and use a lot of VRAM (the reasons are in the BS-RoFormer / Mel-Band RoFormer guide).

The regular UVR v5.6 cannot run Roformer models. According to the v5.6 release notes, the "Beta Roformer Version of UVR" on the releases page can, and the models can be obtained from the Download Center. The screen labels in this article have not been checked against the beta, so treat audio-separator (covered below) as the default way to run the Roformer karaoke models.

Which model is best depends on the song. The per-model SDR figures that audio-separator publishes are measured against the vocals and instrumentals of MUSDB18-HQ; they don't measure how a model divides lead from harmony (for what SDR means, see the quality evaluation guide). For lead-versus-backing separation there is MVSEP's Lead/Back Vocals leaderboard, which uses SDR to score the lead and backing vocals separated from mixtures of 48 songs (40 seconds each). But it scores separation of the whole mix, not the second pass that pulls the harmonies out of a vocal file. A community source-separation guide (deton24's guide, included in the audio-separator repository) also reports that karaoke models give very different results from song to song. Listen to two or three per song and pick one.


How to extract only the harmonies in UVR5 (GUI)

Preparation: download a karaoke model

  1. Press the "Settings Button". The README says it sits to the left of the "Start Processing" button.
  2. In the settings window's "Download Center" tab, choose "VR Arch" or "MDX-Net".
  3. Pick a model from the list and download it. Entries look like "MDX-Net Model: UVR-MDX-NET Karaoke 2" or "VR Arch Single Model v5: 6_HP-Karaoke-UVR".

You can also open the Download Center from "Download More Models" at the end of each model dropdown. Models are fetched from UVR's distribution source (the releases of TRvlvr/model_repo on GitHub) and stored in models/MDX_Net_Models or models/VR_Models inside the UVR folder.

Method A: one run with Vocal Split Mode

UVR v5.6 can run the vocals from the first pass through a karaoke model automatically.

  1. In the settings window's "Additional Settings" tab, press the "Vocal Splitter Options" button. The same button also appears in the advanced option screens for VR Architecture, MDX-Net and Demucs.
  2. In the "Vocal Split Options" window that opens, check "Enable Vocal Split Mode" first. Until you do, "Select Model" and "Save Split Vocal Instrumentals" stay grayed out.
  3. In "Select Model", choose the karaoke model you downloaded. Entries look like "MDX-Net: …" or "VR Arc: …". As far as the source shows, only installed VR Architecture and MDX-Net models that are karaoke or BV models are listed here. If you also want karaoke that keeps the harmonies, check "Save Split Vocal Instrumentals" too.
  4. On the main screen, under "CHOOSE PROCESS METHOD", select the method and model you normally use for vocal extraction (how to choose: the UVR5 guide). Uncheck "Instrumental Only". UVR carries your settings over from the last run, so the check left from making a karaoke track tends to linger. While it stays on, and "Save Split Vocal Instrumentals" is off, the second pass does not run and no harmony file appears.
  5. Choose the song with "Select Input" and the destination with "Select Output", then press "Start Processing". When the console shows Splitting vocals..., the second pass is running.

For an input of song.wav, the output looks like this. The leading 1_ is the input file's position in the batch.

1_song_(Vocals).wav                             First-pass vocals (lead + harmonies)
1_song_(Instrumental).wav                       First-pass instrumental
1_song_(Vocals_lead_only).wav                   Lead only
1_song_(Vocals_backing_only).wav                Harmonies only
1_song_(Instrumental_with_lead_vocals).wav      Instrumental + lead (when Save Split Vocal Instrumentals is on)
1_song_(Instrumental_with_backing_vocals).wav   Instrumental + harmonies (same condition)

UVR's help notes that Vocal Split Mode "does not work in ensemble mode at this time."

Method B: two runs by hand

Run the two passes separately when you want to compare several karaoke models, or redo only the second pass without regenerating the first-pass vocals.

  1. First pass: extract the vocals as usual to get 1_song_(Vocals).wav.
  2. Second pass: set that file as "Select Input" and choose a karaoke model, for example "MDX-Net" → "UVR-MDX-NET Karaoke 2", or "VR Architecture" → "6_HP-Karaoke-UVR".
  3. The outputs are named like 1_1_song_(Vocals)_(Instrumental).wav (harmonies) and 1_1_song_(Vocals)_(Vocals).wav (lead).

The labels of the checkboxes that save only one stem are built from the selected model's stem names. For a karaoke model they read "Instrumental Only" and "Vocals Only"; to keep only the harmonies, check "Instrumental Only". With the BV model it is the other way round, and "Vocals Only" is the harmony side (as noted above, Method A is the better route for the BV model).

To compare models, turn on "Model Test Mode". UVR's help says it "appends the model name to outputs for comparison across different models."


Making karaoke that keeps the harmonies

The simplest way is to run a karaoke model once on the whole song and use (Instrumental). Only the lead is removed; the instrumental and the harmonies stay.

The other option is (Instrumental_with_backing_vocals), which Method A writes when "Save Split Vocal Instrumentals" is checked. In UVR's source it is made by adding the first-pass instrumental and the second-pass harmonies together. Which sounds more natural depends on the song, so make both and compare. For a regular instrumental-only karaoke track, the approach in the UVR5 guide is the better fit.


Songs that won't split, and how to spot them

What a karaoke model decides is "which part is the lead." Depending on how a song is produced, the model may have nothing to go on. The table below lists tendencies you can predict from how the models work; there are no statistics on how often each case fails.

Song traitWhat tends to happenWhat to try
The harmony sings the same notes as the lead (unison, doubling)Nothing to separate them by; the part ends up on one side or the otherHard to separate. Treat that part as singing the same notes as the lead
Lead and harmonies by the same singer (multitracked)The voices can't be told apart, so parts flip between files phrase by phraseCompare other models. If the harmonies are panned, try mid/side
Several people sing lead and harmonize with each otherDepending on the model, the harmonies may land in the lead file or in the non-lead file (see below)Listen to both files. If the harmonies are panned, try mid/side
The harmonies are panned to the centermid/side doesn't helpRely on comparing models
Heavy reverbReverb tails spread into both filesDeverb Vocals (below)
Lead and harmony swap roles partway throughSection by section, parts jump between the harmony file and the lead fileRe-stitch the sections in an audio editor
Mono sourceThere is no left/right difference, so mid/side gives silenceRely on comparing models

For songs with several singers, becruily, one of the authors of the Roformer karaoke models, explains how their own and frazer's models are designed in the deton24 guide mentioned above: "they're made to separate true lead vocals, meaning either all of the main singer's vocals, or if it's multiple singers - theirs too." Ad-libs on top of the main vocals count as lead, and "if there are multiple singers singing on top of each other, including harmonise each other, and if there are additional background vocals behind those - all the singers will be separated as one main lead vocal, leaving only the true background vocals." In other words, with these two authors' Roformer models, singers who harmonize with each other end up on the lead side. The same guide also carries a user report that UVR-MDX-NET Karaoke 2 and 6_HP-Karaoke-UVR handle the lead melody in a song's chorus differently, so each model divides the parts its own way. For songs sung by a group, check both files.

For songs with heavy reverb, "Deverb Vocals" in the Vocal Split Options window reduces the reverb. Choose its target in "Select Vocal Type to Deverb" from "Main Vocals Only", "Lead Vocals Only", "Backing Vocals Only" and "All Vocal Types". UVR's help says you "must have the 'UVR-DeEcho-DeReverb' VR Arch model installed to use this option," and that it does not work in Ensemble Mode.

You can also check a song before separating it.

  • Listen on headphones and check whether the harmonies sound pulled to the left or right.
  • Make the side component of the first-pass vocal file and listen to it (next section). If you clearly hear harmonies, not just reverb, the harmonies are panned.
  • Use "Analyze" in Audacity's "Vocal Reduction and Isolation". According to the manual, it tells you how likely center removal or isolation is to succeed, and shows the average Pan position of the whole selection. Select a stretch where only the harmonies are playing. Audacity 3.5.0 and later need the plugin downloaded separately (see the end of the next section).

Pull out panned harmonies with mid/side

The side component is the left channel minus the right channel, halved: (L−R)/2. Anything identical in both channels cancels out, so a center-panned lead disappears and harmonies panned left or right remain.

Apply it to the vocal file from the first pass. On the whole song, guitars and synths spread across the stereo field would remain as well. FFmpeg's pan filter lets you define each output channel as sums and differences of the input channels.

# Side component: the difference between L and R. Center sounds (often the lead) disappear
ffmpeg -i "1_song_(Vocals).wav" -af "pan=mono|c0=0.5*c0-0.5*c1" side.wav

# For reference, the mid component: the sum of L and R. Center sounds remain
ffmpeg -i "1_song_(Vocals).wav" -af "pan=mono|c0=0.5*c0+0.5*c1" mid.wav

I checked this with FFmpeg 8.1.1 on a synthetic signal. A 440 Hz tone at amplitude 0.125 placed in the center (both channels) came out as 0 in side.wav, and a 660 Hz tone at amplitude 0.125 in the left channel only remained at 0.0625 (half). That shows the limits of the side component:

  • The output is mono. Whether a harmony was on the left or the right is lost.
  • A part panned to one side only comes out at half the level (−6 dB). Raise the volume afterwards if you need to.
  • Center-panned harmonies disappear too.
  • Stereo reverb remains. The Audacity manual notes that center removal "will not remove stereo reverberation since it is distributed over the entire pan width."

To do the same in Audacity, "Remove Center: to mono" in "Effect > Special > Vocal Reduction and Isolation" uses the same "invert and mix" method as the side component above. Note that from Audacity 3.5.0 onward this effect is no longer shipped with Audacity. According to the manual, it is still available as a downloadable Nyquist plugin from the Muse Support site.


Automating the two passes with audio-separator

When you have many songs, or want the process automated, audio-separator (MIT license), which runs UVR's models from a CLI and from Python, is the convenient choice. For installation and GPU setup see the UVR5 guide, and if you hit errors, the troubleshooting guide. Everything below was checked against the source of version 0.47.1 on PyPI (released 2026-10-19).

It differs from the UVR GUI in three ways:

  • There is no chained processing like Vocal Split Mode. A comment in the source says it is not implemented. Run the two passes as two separate invocations.
  • Output names follow <input name>_(<stem name>)_<model name>.<extension>. Even for BV models the stem names stay Vocals / Instrumental, and, as in UVR, the (Vocals) side is the harmony.
  • The CLI and Python have different defaults. The default output format is FLAC on the CLI and WAV in Python. Specify the model name and the output format explicitly every time.

Find the karaoke models by filtering the model list on file names. --list_filter either sorts by name or filename or filters by stem name (vocals, instrumental and so on), so passing karaoke to it finds nothing.

# Find karaoke and BV models by file name
audio-separator -l | grep -i -E "kara|bve"

CLI: split one song in two passes

Fixing the output names with --custom_output_names makes sure the first pass's output is passed reliably to the second pass.

# Pass 1: song → vocals (lead + harmonies)
audio-separator song.wav \
  -m model_bs_roformer_ep_317_sdr_12.9755.ckpt \
  --single_stem Vocals \
  --custom_output_names '{"Vocals": "song_vocals"}' \
  --output_format WAV --output_dir out

# Pass 2: vocals → karaoke model. Instrumental (everything but the lead) is the harmony
audio-separator out/song_vocals.wav \
  -m UVR_MDXNET_KARA_2.onnx \
  --single_stem Instrumental \
  --custom_output_names '{"Instrumental": "song_harmony"}' \
  --output_format WAV --output_dir out

Switching the second pass to a Roformer karaoke model (for example -m mel_band_roformer_karaoke_becruily.ckpt) takes the same options. According to the README, in the 0.47 series, models whose config file sets num_overlap to 4 or 8 (such as the Mel-Band karaoke models) are slow; to speed them up at a small cost in quality at chunk boundaries, add --mdxc_overlap=2. There is also --ensemble_preset karaoke, which averages the outputs of three Roformer karaoke models.

Python: extract the harmonies from every song in a folder

Loading a model is expensive, so load each model once and reuse it for every song.

# harmony_batch.py — extract only the harmonies from every song in a folder, in two passes
from pathlib import Path

from audio_separator.separator import Separator

VOCAL_MODEL = "model_bs_roformer_ep_317_sdr_12.9755.ckpt"  # Pass 1: song → vocals
KARAOKE_MODEL = "UVR_MDXNET_KARA_2.onnx"  # Pass 2: vocals → lead / everything else


def separate_all(
    model: str, stem: str, jobs: dict[str, Path], out_dir: Path, label: str
) -> dict[str, Path]:
    """Separate jobs (song name → input file) with one model and write only `stem`."""
    out_dir.mkdir(parents=True, exist_ok=True)
    sep = Separator(output_dir=str(out_dir), output_format="WAV", output_single_stem=stem)
    sep.load_model(model_filename=model)  # Load each model only once
    results: dict[str, Path] = {}
    for name, src in jobs.items():
        written = sep.separate(str(src), custom_output_names={stem: f"{name}_{label}"})
        if len(written) != 1:
            raise RuntimeError(f"{src}: expected one {stem} file, got {written}")
        # The return value is a file name without the output directory (per the source). Take only the name so a full path also works
        results[name] = out_dir / Path(written[0]).name
    return results


songs = {p.stem: p for p in sorted(Path("songs").glob("*.wav"))}
vocals = separate_all(VOCAL_MODEL, "Vocals", songs, Path("out/vocals"), "vocals")
# A karaoke model's Instrumental is everything but the lead. The input is vocals, so this is the harmony
harmony = separate_all(KARAOKE_MODEL, "Instrumental", vocals, Path("out/harmony"), "harmony")
for name, path in harmony.items():
    print(name, "->", path)

Being able to separate a track technically and being allowed to use the result are separate questions. Drawing on Japan's Copyright Act (the current text on e-Gov Law Search) and the guidance of the Japanese music rights-management organizations JASRAC and NexTone, here is a rough guide.

What you want to doRough guide
Extract the harmonies from a CD or download you bought, for your own practiceIf you use it "for personal or family use or for any other use of a similarly limited scope," it is allowed as reproduction for private use (Article 30(1)). Article 102(1) applies the same rule to performances and phonograms
Rip the audio by circumventing a technological protection measure such as copy protectionReproducing it while knowing that fact falls outside the private-use exception (Article 30(1)(ii))
Download audio you know was uploaded illegally, then separate itFalls outside the private-use exception (Article 30(1)(iii)). If you downloaded it without knowing, this item does not apply even if not knowing was grossly negligent (Article 30(2)). If the music is offered for a fee, it can also carry criminal penalties (Article 119(3)(i))
Hand the extracted audio to fellow choir or band membersPrivate use is limited to the "limited scope" above. This article does not judge whether such sharing stays within it. Check with the rights holders before handing it out
Publish the extracted audio in a video or on social mediaPresenting to the public a copy made for private use is deemed to be reproduction (Article 49(1)(i); for performances and phonograms, Article 102(9)(i))
Use a karaoke track with harmonies, made from a commercial recording, as the backing for a cover-singing video ("utattemita")For the composition (lyrics and music), if you post a work managed by JASRAC or NexTone to a video-sharing service that has license agreements with both, the uploader does not have to go through any licensing procedure, within certain limits. But advertising videos, and cases such as an account owned by a group (a choir, a band and the like), a school or a corporation using foreign works, require a separate licensing procedure (check JASRAC's flowchart). If you use a commercial CD or download, you need permission from the master-recording side, such as the record label, on top of that

The last row is the one most often misunderstood. JASRAC's guidance says (my translation): "When you use a commercial CD or downloaded audio, you need permission for the neighboring rights (the rights of the sound-recording producer and the artists), separately from the copyright." NexTone's FAQ says the same thing. Phonogram producers (the master-recording side, such as the record label) hold the right of reproduction (Article 96) and the right to make their phonograms available for transmission (Article 96-2), and performers such as singers hold the right of sound recording (Article 91(1)) and the right to make their performance available for transmission (Article 92-2(1)).

Saving audio from YouTube also involves the Terms of Service, separately from copyright. YouTube's Terms of Service prohibit downloading content unless the service expressly authorizes it, or YouTube and the rights holders have given prior written permission.

Whether source separation counts as arrangement or adaptation, and whether capturing audio from a streaming service counts as circumventing a technological protection measure, are questions of legal interpretation, so this article does not take a position on them. If you are thinking about publishing or commercial use, check with the rights holders or a legal professional. How tool and model licenses relate to the rights in the audio itself is covered in how to choose a source-separation tool.


If you want to build source separation into a production pipeline (batch-processing large music libraries, automation for streaming, and so on), see the video-localization platform case study and get in touch through the contact page.

Frequently asked questions

How do I extract only the harmonies with UVR5?
Separate in two passes. First extract the vocals from the song, then run that vocal file through a karaoke model such as UVR-MDX-NET Karaoke 2 or 6_HP-Karaoke-UVR. A karaoke model splits audio into the lead and everything else, so on vocals with the instrumental already gone, everything else is the harmonies. Turning on Vocal Split Mode in UVR v5.6 runs the second pass for you automatically.
Which output file is the harmony?
With karaoke models (UVR-MDX-NET Karaoke / Karaoke 2, 5_HP / 6_HP-Karaoke-UVR, and the Roformer karaoke models used with audio-separator), the file whose name carries (Instrumental) is everything but the lead, which is the harmony; (Vocals) is the lead. The BV model UVR-BVE-4B_SN-44100-1 is the reverse: (Vocals) is the harmony. In Vocal Split Mode, (Vocals_backing_only) is the harmony. For your first song, listen to both files to confirm.
How do I make a karaoke track that keeps the harmonies?
Run a karaoke model once on the whole song and use the (Instrumental) file. Only the lead is removed; the instrumental and the harmonies stay. If you also check Save Split Vocal Instrumentals in UVR's Vocal Split Mode, it writes (Instrumental_with_backing_vocals), the sum of the first-pass instrumental and the second-pass harmonies. Which one sounds more natural depends on the song, so make both and compare.
The harmonies stay stuck to the lead and won't split. What can I do?
Songs where the harmony sings the same notes as the lead (unison), the same singer is multitracked, the harmonies sit in the center, the reverb is heavy, or several singers share the lead and harmonize with each other give the model little to go on and tend not to split. Try, in this order: two or three other karaoke models, Deverb Vocals to reduce the reverb, and, if the harmonies are panned, the side component of the vocal file.
Which karaoke model is the best?
Results change from song to song, so the reliable approach is to separate with two or three models and compare. audio-separator's published per-model SDR is measured against MUSDB18-HQ vocals and instrumentals, not on how a model divides lead from harmony. MVSEP's Lead/Back Vocals leaderboard (mixtures of 48 songs, 40 seconds each) does compare lead/backing separation, but it pools all 48 songs, so per-song hits and misses remain. UVR's Model Test Mode adds the model name to output file names, which makes comparing easier.
Can I publish the extracted harmonies or share them with friends?
In Japan, copying for your own practice is allowed if it counts as private use under Article 30(1) of the Copyright Act. Publishing is different: presenting a copy made for private use to the public is a use outside that purpose, and the law then treats it as reproduction (Articles 49 and 102(9)). Audio made from a commercial recording also needs permission from the master-recording side, such as the record label, separately from JASRAC's and NexTone's blanket licenses. Check with the rights holders before sharing or publishing.

References

友田

友田 陽大

Developer of a METI Minister's Award–winning product. With TypeScript + Python + AWS, I deliver SaaS, industry DX, and production-grade generative AI (RAG) end to end — from requirements to infrastructure and operations — single-handedly.

Choosing models before you use them commercially?

Model selection, quality evaluation, and commercial-license checks for audio and video AI in business

If you will use it commercially, accuracy is only one of the decisions. I compare Demucs / MDX-Net / BS-RoFormer, MuseTalk / LatentSync, and hosted TTS versus self-hosting on quantitative evaluation, commercial license terms, and GPU cost at volume, and assemble what you need to decide. Having built faster-whisper, MuseTalk, and LatentSync into a production pipeline for a marketing-services company and tuned the quality-versus-speed trade-off stage by stage, I help you lock down the architecture before you build, as a technical advisor.

Available for both project-based (contract) and advisory engagements. Start with a free 30-minute consult.

Also worth reading