A versão V2.10 do Bert-VITS2 foi lançada, trazendo correções no alinhamento BERT para japonês/inglês e otimizações adicionais no desempenho. A base de dados do modelo principal foi aprimorada com mais dados, reduzindo a probabilidade de falhas no finetune e artefatos de voz robótica. O modelo BERT japonês foi substituído, e a inferência multilíngue foi aprimorada.
Para mais detalhes, consulte o site oficial do Bert-VITS2:
https://github.com/fishaudio/Bert-VITS2/releases/tag/2.1
Diante dos recentes acontecimentos, Ma Dugong tem se destacado com coragem, liderando pelo exemplo e praticando os "Quatro Preceitos de Hengqu": estabelecer o coração para o céu e a terra, garantir o sustento para o povo, dar continuidade aos estudos dos antigos sábios e trazer paz para todas as gerações.
Neste tutorial, homenagearemos Ma Dugong replicando sua voz com a nova versão V2.10 do Bert-VITS2.
Preparação do Conjunto de Dados para Bert-VITS2 V2.10
O estilo de Ma Dugong é caracterizado por uma fala extremamente rápida, pouca expressão corporal e pouca variação entonacional, com pausas apenas para respirar, lembrando uma metralhadora. Isso, em parte, se deve à alta densidade de informações em seus conteúdos. No entanto, para treinamento de aprendizado profundo, o áudio de seus programas é inadequado como um conjunto de dados de alta qualidade.
Um conjunto de dados ideal e de alta qualidade deve possuir as seguintes características:
- Diversidade de Timbre: Amostras de voz do locutor alvo em diferentes estados emocionais, velocidades de fala e alturas tonais para capturar suas nuances em diversas situações.
- Qualidade do Áudio: Garantir que as amsotras de voz tenham alta qualidade, sem ruídos, distorções ou outras interferências, pois isso impacta diretamente na qualidade da réplica.
- Conteúdo Variado: Incluir palavras, frases, sentenças e parágrafos para capturar as características do timbre do locutor em diferentes contextos.
- Equilíbrio Vocal: Manter uma quantidade relativamente equilibrada de amostras do locutor para evitar modelos enviesados.
- Abrangência de Alturas Tonais: Coletar amostras em diferentes tons e inflexões para capturar melhor as variações vocais.
- Ambientes de Gravação: Incluir amostras gravadas em diferentes ambientes (interno, externo, silencioso, ruidoso) para tornar o timbre replicado mais robusto e adaptável.
- Duração e Diversidaed: Considerar amostras de diferentes durações e estilos de fala para uma representação mais completa das características vocais.
É claro que atender a todas essas características é um desafio. Para este exemplo, utilizaremos um trecho de uma entrevista com Ma Dugong e Liu Nüshen:
https://www.bilibili.com/video/BV1sN411M73g/
Primeiro, faremos o download do vídeo usando you-get:
pip install you-get
Execute o seguinte comando:
you-get https://www.bilibili.com/video/BV1sN411M73g/
Após o download bem-sucedido, extrairemos o áudio da voz de Ma Dugong.
Treinamento do Modelo Bert-VITS2 V2.10
Primeiro, clone o projeto V2.10, que é um fork do repositório oficial:
git clone https://github.com/v3ucn/Bert-VITS2_V210.git
Coloque seus arquivos de áudio no diretório Data/meimei/raw/meimei. Certifique-se de que os arquivos estejam no formato WAV.
Em seguida, substitua o modelo base. Baixe o novo modelo base aqui:
https://openi.pcl.ac.cn/Stardust_minus/Bert-VITS2/modelmanage/show_model
Coloque o modelo Bert-VITS2_2.1-Emo no diretório pretrained_models do seu projeto.
Adicionalmente, copie o modelo deberta-v2-large-japanese-char-wwm para o diretório bert/deberta-v2-large-japanese-char-wwm do projeto.
Como o modelo de emoção multidimensional foi adicionado, você também precisará baixar um modelo separado:
https://huggingface.co/facebook/wav2vec2-large-robust/tree/main
Coloque este modelo no diretório emotional do projeto:
E:\work\Bert-VITS2-v21_demo\emotional>tree /f
Folder PATH listing for volume myssd
Volume serial number is 7CE3-15AE
E:.
└───wav2vec2-large-robust-12-ft-emotion-msp-dim
.gitattributes
config.json
LICENSE
preprocessor_config.json
pytorch_model.bin
README.md
vocab.json
Execute os scripts para segmentar o áudio:
python3 audio_slicer.py
Em seguida, realize o reamostragem e o reconhecimento de texto:
python3 short_audio_transcribe.py
Após isso, proceda com a anotação:
python3 preprocess_text.py
Diferente da versão V2.0.2, a V2.1 requer a geração de arquivos para o modelo de emoção multidimensional:
python3 emo_gen.py
Comparado à versão original, a nova versão adicionou um cache de spec para o conjunto de treinamento, o que melhora significativamente a eficiência do treinamento:
python3 spec_gen.py
Finalmente, gere os arquivos legíveis pelo modelo BERT:
python3 bert_gen.py
Por último, inicie o treinamento:
python3 train_ms.py
Inferência com o Modelo Bert-VITS2 V2.10
Após o treinamento do modelo, passe para a etapa de inferência. Primeiro, modifique o arquivo config.yml na raiz do projeto:
bert_gen:
config_path: config.json
device: cuda
num_processes: 2
use_multi_device: false
dataset_path: Data\meimei
mirror: ''
openi_token: ''
preprocess_text:
clean: true
cleaned_path: filelists/cleaned.list
config_path: config.json
max_val_total: 8
train_path: filelists/train.list
transcription_path: filelists/short_character_anno.list
val_path: filelists/val.list
val_per_spk: 5
resample:
in_dir: raw
out_dir: raw
sampling_rate: 44100
server:
device: cuda
models:
- config: ./Data/meimei/config.json
device: cuda
language: ZH
model: ./Data/meimei/models/G_0.pth
speakers:
- length_scale: 1
noise_scale: 0.6
noise_scale_w: 0.8
sdp_ratio: 0.2
speaker: "\u79D1\u6BD4"
- length_scale: 0.5
noise_scale: 0.7
noise_scale_w: 0.8
sdp_ratio: 0.3
speaker: "\u4E94\u6761\u609F"
- length_scale: 1.2
noise_scale: 0.6
noise_scale_w: 0.8
sdp_ratio: 0.2
speaker: "\u5B89\u500D\u6640\u4E09"
- config: ./Data/meimei/config.json
device: cuda
language: JP
model: ./Data/meimei/models/G_0.pth
speakers: []
port: 7860
train_ms:
base:
model_image: "Bert-VITS2_2.1-Emo底模"
repo_id: Stardust_minus/Bert-VITS2
use_base_model: false
config_path: config.json
env:
MASTER_ADDR: localhost
MASTER_PORT: 10086
RANK: 0
THE_ENV_VAR_YOU_NEED_TO_USE: '1234567'
WORLD_SIZE: 1
keep_ckpts: 8
model: models
num_workers: 16
spec_cache: true
translate:
app_key: ''
secret_key: ''
webui:
config_path: Data/meimei/config.json
debug: false
device: cuda
language_identification_library: langid
model: models/G_150.pth
port: 7860
share: false
No bloco webui, insira o nome do arquivo do modelo: model: models/G_150.pth.
Em seguida, inicie o script de inferência:
python3 webui.py
Agora você pode realizar a inferência. Recomenda-se utilizar a interface de inferência oficial baseada em Gradio, em vez da versão FastAPI.
Este projeto destina-se à pesquisa e teste do Bert-VITS2. É importante notar que replicar a voz de Ma Dugong com apenas 30 segundos de áudio é, sem dúvida, uma tarefa irrealista. Contudo, o espírito de dedicação de Ma Dugong é algo que todos podemos emular.