OpenVoice
Instant voice cloning from MyShell. Give it a short recording of a speaker and it reproduces their tone of voice — then speaks new text in that voice, across languages, with control over emotion, accent, rhythm and intonation.
- License
- MIT · Commercial OK
- Current version
- V2 · April 2024
- Native languages
- 6
- Runs on
- Your own hardware
Three things that set it apart
Accurate tone cloning
Captures the tone color of a reference speaker from a short clip and applies it to newly generated speech — no per-voice training required.
Flexible style control
Adjust emotion, accent, rhythm, pauses and intonation independently of the cloned voice itself.
Zero-shot cross-lingual
The reference voice and the output language don't need to match, and neither has to appear in the training data.
Good for
- Narration and training content — keep one consistent, approved voice across videos and modules.
- Localization — produce the same voice in English, Spanish, French, Chinese, Japanese and Korean.
- Voice prototypes — test assistant or IVR voices before committing to a commercial service.
- Private workloads — runs entirely on your own machine or server; audio never leaves it.
Considerations
- Developer setup — it's a Python/PyTorch project, not a desktop app. Linux is the documented platform.
- GPU recommended — an NVIDIA CUDA GPU is used when available; CPU works but is much slower.
- Built-in watermark — the converter can embed an inaudible message in output audio to mark it as generated.
- Consent matters — only clone voices you have explicit permission to use.
V1 and V2
OpenVoice V1
- Tone color cloning across languages and accents
- Granular control of emotion, accent, rhythm and intonation
- Zero-shot cross-lingual cloning
OpenVoice V2 Recommended
- Everything in V1
- Better audio quality from an improved training strategy
- Native English, Spanish, French, Chinese, Japanese and Korean
- MIT licensed — free for commercial use
Run V2 locally
Condensed from the project's official usage guide. Assumes Linux with conda installed.
Create an environment and install
conda create -n openvoice python=3.9
conda activate openvoice
git clone https://github.com/myshell-ai/OpenVoice.git
cd OpenVoice
pip install -e .
Download the V2 checkpoints
Unzip into a folder named checkpoints_v2 inside the repo.
curl -LO https://myshell-public-repo-host.s3.amazonaws.com/openvoice/checkpoints_v2_0417.zip
unzip checkpoints_v2_0417.zip
Install MeloTTS (the base speaker)
pip install git+https://github.com/myshell-ai/MeloTTS.git
python -m unidic download
Try the demo
Open demo_part3.ipynb in Jupyter for a full V2 walkthrough.
Clone a voice in Python
MeloTTS speaks the text in a base voice, then OpenVoice's tone color converter reshapes it to sound like your reference speaker.
import torch
from openvoice import se_extractor
from openvoice.api import ToneColorConverter
from melo.api import TTS
device = "cuda:0" if torch.cuda.is_available() else "cpu"
ckpt = "checkpoints_v2/converter"
converter = ToneColorConverter(f"{ckpt}/config.json", device=device)
converter.load_ckpt(f"{ckpt}/checkpoint.pth")
# 1. Fingerprint the voice you want to clone
target_se, _ = se_extractor.get_se("reference.mp3", converter, vad=True)
# 2. Speak the text with a base English speaker
tts = TTS(language="EN", device=device)
speaker_id = tts.hps.data.spk2id["EN-US"]
tts.tts_to_file("Hello from The Templeton Group.", speaker_id, "base.wav", speed=1.0)
# 3. Convert the base voice into the target voice
source_se = torch.load("checkpoints_v2/base_speakers/ses/en-us.pth", map_location=device)
converter.convert(
audio_src_path="base.wav",
src_se=source_se,
tgt_se=target_se,
output_path="cloned.wav",
message="@MyShell", # watermark embedded in the output
)
ES, FR, ZH, JP or KR with the matching file in base_speakers/ses/.Want OpenVoice running for your team?
We can set it up on your hardware or a private server and support it.