| Tarefa | Caderno |
|---|---|
| Sussurro_vits_japanese (conjunto de dados de ella embutido) |
Este projeto usa o projeto Whisper do Google como o processador de dados do VITS. Ao modificar a transcrição.py do projeto Whisper, ele gera o arquivo SRT correspondente para o áudio (o PR excluído é usado aqui e o PR não é mais encontrado, por isso não pode ser referenciado ao autor original). Ao mesmo tempo, o limite do Whisper só pode ler alguns arquivos de áudio é relaxado até o ponto em que ele pode atravessar todos os arquivos de áudio na pasta. O Whisper pode gerar SRT para possibilitar a entrada de áudio longo, e os usuários não precisam mais cortar o áudio em pedaços ou até transliterar o texto de áudio longo. Contamos diretamente no sussurro para reconhecimento de fala e preparação de dados, cortamos automaticamente em áudio curto, geramos arquivos de transcrição automaticamente e, em seguida, enviamos -os para o processo de treinamento do VITS. Considerando que o som seco de áudio a longo prazo é mais fácil de obter, as barreiras de entrada Vits são bastante reduzidas novamente.
O processo de processamento é aproximadamente o seguinte: O arquivo SRT reconhecido pelo Whisper será processado pelo Auto.py. O processo de processamento refere-se a TobiasRordorf/SRT-para-CSV e Audio-Split: Split Long Audio Arquivos com base no arquivo SRT no arquivo SRT (transcrição salva no CSV) (github.com). O arquivo de áudio é convertido primeiro em 22050Hz e 16 bits e, em seguida, os registros de data e hora do arquivo SRT com o mesmo nome e a transcrição do reconhecimento de fala são convertidos em um arquivo CSV. O arquivo CSV possui o horário de início e o horário de término de cada segmento do áudio, bem como os caminhos correspondentes de transcrição e arquivo de áudio. O pacote AudioSement é usado para dividir o áudio longo de acordo com o horário de início e o horário de término, e os arquivos de áudio com sufixos são gerados na ordem das fatias, como a_0.wav e a_1.wav, etc. Todo o áudio fatiado será armazenado na pasta Slice_Audio, e depois o arquivo de TXT com "o caminho | O fluxo de dados subsequente pode ser conectado diretamente à parte VITS.
O limpador e o símbolo dos Vits que eu uso agora é Cjangcjengh/Vits: Vits Implementação de japonês, chinês, coreano e sânscrito (github.com) como a versão inicial do período de Deus da criação. Agora, seu armazém atualizou mais produtos de limpeza e símbolos, mas sou uma pessoa muito nostálgica e sinto falta do tempo em que todos vieram para o Vits no começo, então ainda uso a versão original. O VITS possui dois principais pré -processamento, um é o alinhamento monotônico e o outro é pré -processado.py e você pode iniciar o trem.py. Coloquei todos os processos em sussurro-vits-japonese.ipynb e só preciso clicar neles passo a passo para ser executado. A única coisa que precisa do usuário alterar é substituir meu caminho postal de áudio pelo seu próprio zip de áudio, e o restante das peças não precisa ser modificado. Por fim, adicionei as instruções para salvar o modelo e os arquivos processados no disco de rede e restaurar o último ponto de verificação mais recente do disco de rede durante o próximo treinamento.
Basta nomear o arquivo de arquivo de áudio speawerid_xxxx.wav e carregá -lo na pasta de áudio. Em seguida, siga as etapas gerais para executá -lo. Quando o processamento de áudio for concluído, execute o arquivo Auto_ms.py e o arquivo TXT será gerado automaticamente, com o caminho do formato | SpeowerID | Texto.
NOTA: Se você usar auto_ms.py para gerar o TXT, deverá modificá -lo no código na etapa de alinhamento e conversão de texto: (porque o text_index não é 1, mas 2 ao treinar para várias pessoas)
python preprocess.py --text_index 2 --text_cleaners japanese_cleaners --filelists /content/whisper-vits-japanese/filelists/train_filelist.txt /content/whisper-vits-japanese/filelists/val_filelist.txt
python train_ms.py -c configs/ms.json -m ms
hps = utils.get_hparams_from_file("./configs/ms.json")
net_g = SynthesizerTrn(
len(symbols),
hps.data.filter_length // 2 + 1,
hps.train.segment_size // hps.data.hop_length,
n_speakers=hps.data.n_speakers,
**hps.model).cuda()
_ = net_g.eval()
_ = utils.load_checkpoint("/root/autodl-tmp/logs/ms/G_29000.pth", net_g, None)
stn_tst = get_text("ごめんね優衣", hps)
with torch.no_grad():
x_tst = stn_tst.cuda().unsqueeze(0)
x_tst_lengths = torch.LongTensor([stn_tst.size(0)]).cuda()
sid = torch.LongTensor([11]).cuda() //11指speakerId为11,如果有12个n_speaker,编号就从0-11
audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8, length_scale=1)[0][0,0].data.cpu().float().numpy()
ipd.display(ipd.Audio(audio, rate=hps.data.sampling_rate, normalize=False))