| Tâche | Carnet de notes |
|---|---|
| Whisper_vits_japanais (ensemble de données ELLA intégré) |
Ce projet utilise le projet Whisper de Google comme processeur de données VITS. En modifiant Transcribe.py du projet Whisper, il génère le fichier SRT correspondant pour l'audio (le PR supprimé est utilisé ici, et le PR n'est plus trouvé, il ne peut donc pas être référencé à l'auteur d'origine). Dans le même temps, la limite de Whisper ne peut lire que quelques fichiers audio est assoupli au point où il peut traverser tous les fichiers audio dans le dossier. Whisper peut sortir SRT pour rendre possible la saisie de son longue audio, et les utilisateurs n'ont plus besoin de couper l'audio en morceaux, voire de transliterate le texte de l'audio long. Nous comptons directement sur Whisper pour la reconnaissance de la parole et la préparation des données, nous étendons automatiquement en audio court, générez automatiquement des fichiers de transcription, puis les envoyons au processus de formation VITS. Étant donné que le son sec audio à long terme est plus facile à obtenir, les barrières d'entrée sont à nouveau considérablement réduites.
Le processus de traitement est à peu près le suivant: Le fichier SRT reconnu par Whisper sera traité par auto.py. Le processus de traitement fait référence à Tobiasrordorf / srt-to-csv-and-audio-split: divisé les fichiers audio longs basés sur le sous-titre-info dans le fichier srt (transcription enregistrée dans CSV) (github.com). Le fichier audio est d'abord converti en 22050Hz et 16 bits, puis les horodatages du fichier SRT avec le même nom et la transcription de la reconnaissance vocale sont convertis en fichier CSV. Le fichier CSV a l'heure de début et la fin de chaque segment de l'audio, ainsi que les chemins de file de transcription et de fichier audio correspondants. Ensuite, le package audiosegment est utilisé pour diviser le long audio en fonction de l'heure de début et de la fin, et des fichiers audio avec des suffixes sont générés dans l'ordre des tranches, tels que A_0.WAV et A_1.WAV, etc. Tous les énigmes audio seront stockées dans le dossier Slice_Audio, et le fichier TXT avec "la traduction" requise par VITS sera générée sous le filtre Filliset. Le flux de données ultérieur peut être directement connecté à la pièce VITS.
Le nettoyant et le symbole des vites que j'utilise maintenant est Cjangcjengh / VITS: VITS Implémentation de japonais, chinois, coréen et sanskrit (github.com) comme version initiale de la période de la création de Dieu. Maintenant, son entrepôt a mis à jour plus de nettoyeurs et de symboles, mais je suis une personne très nostalgique, et le moment où tout le monde me manque au début, donc j'utilise toujours la version originale. VITS a deux principaux prétraitements, l'un est monotone Align et l'autre est préparés.py, puis vous pouvez commencer Train.py. J'ai mis tous les processus dans Whisper-vits-japanais.ipynb, et j'ai juste besoin de cliquer sur eux-mêmes pour l'exécution. La seule chose qui a besoin que l'utilisateur change est de remplacer mon chemin de zip audio par votre propre zip audio, et le reste des pièces n'a pas besoin d'être modifié. Enfin, j'ai également ajouté les instructions pour enregistrer le modèle et les fichiers traités sur le disque réseau et pour restaurer le dernier dernier point de contrôle du disque réseau lors de la prochaine formation.
Nommez simplement le format de fichier audio SpeakerID_XXXX.wav et téléchargez-le dans le dossier audio. Suivez ensuite les étapes générales pour l'exécuter. Lorsque le traitement audio est terminé, exécutez le fichier auto_ms.py et le fichier txt sera généré automatiquement, avec le chemin de format | SpeakerId | Text.
Remarque: Si vous utilisez Auto_Ms.py pour générer TXT, vous devez le modifier dans le code dans l'étape d'alignement et de conversion de texte: (parce que le Text_index n'est pas 1 mais 2 lors de la formation pour plusieurs personnes)
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))