This repo will guide you to add your own character voices, or even your own voice, into existing VITS TTS model to make it able to do the following tasks in less than 1 hour:
- Many-to-many voice conversion between any characters you added & preset characters in the model.
- English, Japanese & Chinese Text-to-Speech synthesis with the characters you added & preset characters
Welcome to play around with the base models!
Chinese & English & Japanese: Author: Me
Chinese & Japanese: Author: SayaSS
Chinese only:(No running huggingface spaces) Author: Wwwwhy230825
- Clone character voice from 10+ short audios
- Clone character voice from long audio(s) >= 3 minutes (one audio should contain single speaker only)
- Clone character voice from videos(s) >= 3 minutes (one video should contain single speaker only)
- Clone character voice from BILIBILI video links (one video should contain single speaker only)
- Any character you wish as long as you have their voices! (Note that voice conversion can only be conducted between any two speakers in the model)
See LOCAL.md for local training guide.
Alternatively, you can perform fine-tuning on Google Colab
- Install dependencies (3 min)
- Choose pretrained model to start. The detailed differences between them are described in Colab Notebook
- Upload the voice samples of the characters you wish to add,see DATA.MD for detailed uploading options.
- Start fine-tuning. Time taken varies from 20 minutes ~ 2 hours, depending on the number of voices you uploaded.
- Remember to download your fine-tuned model!
- Download the latest release
- Put your model & config file into the folder
inference
, which are namedG_latest.pth
andfinetune_speaker.json
, respectively. - The file structure should be as follows:
inference
├───inference.exe
├───...
├───finetune_speaker.json
└───G_latest.pth
- run
inference.exe
, the browser should pop up automatically. - Note: you must install
ffmpeg
to enable voice conversion feature.
In this example, we will show how to run inference with the default pretrained model. We are now in the main repository directory.
- Create the necessary folders and download the necessary files.
cd monotonic_align/
mkdir monotonic_align
python setup.py build_ext --inplace
cd ..
mkdir pretrained_models
# download data for fine-tuning
wget https://huggingface.co/datasets/Plachta/sampled_audio4ft/resolve/main/sampled_audio4ft_v2.zip
unzip sampled_audio4ft_v2.zip
For your finetuned model you may need to create additional directories:
mkdir video_data
mkdir raw_audio
mkdir denoised_audio
mkdir custom_character_voice
mkdir segmented_character_voice
- Download pretrained models. For example, trilingual model:
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/pretrained_models/D_trilingual.pth -O ./pretrained_models/D_0.pth
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/pretrained_models/G_trilingual.pth -O ./pretrained_models/G_0.pth
wget https://huggingface.co/spaces/Plachta/VITS-Umamusume-voice-synthesizer/resolve/main/configs/uma_trilingual.json -O ./configs/finetune_speaker.json
- Activate your environment and run the following code:
python3 cmd_inference.py -m pretrained_models/G_0.pth -c configs/finetune_speaker.json -t 你好,训练员先生,很高兴见到你。 -s "派蒙 Paimon (Genshin Impact)" -l "简体中文"
You can choose another language, customize output folder, change text and character, but all these parameters you can see in the filecmd_inference.py
. Below I'll show only how to change the character. - To change the character please open config file (
configs/finetune_speaker.json
). There you can find dictionaryspeakers
, where you'll be able to see full list of speakers. Just copy the name of the character you need use it instead of"派蒙 Paimon (Genshin Impact)"
- If you have success, you can find output
.wav
file in theoutput/vits
- Prepare downloaded model & config file, which are named
G_latest.pth
andmoegoe_config.json
, respectively. - Follow MoeGoe page instructions to install, configure path, and use.
If you have any questions, please feel free to open an issue or join our Discord server.