🔴2. Entraînement de Modèle | RVC

Changer pour Applio, c'est mieux.

Ce guide n'est plus mis a jour pour le moment, Crée avec Applio sera mieux : 2. Entraînement de Modèle | Applio

Mise en place du training

Assurez-vous que votre dataset est préparé en utilisant les isolations ou l'audio de meilleure qualité que vous pouvez trouver. UVR avec les modèles vocaux de Kim (plus récemment Voc FT) ou MDX B sur MVSEP sont généralement les plus efficaces pour isoler les voix. Vous pouvez ensuite utiliser des outils tels que le noise gate d'Audacity pour couper les silences si nécessaire, ou Adobe Audition si vous savez l'utiliser.

Commencez l'entraînement :

Pour entraîner un modèle en local, commence par suivre le tutoriel: RVC V2

Si vous vous entraînez localement, votre ensemble de données doit se trouver dans un dossier quelque part avec tous les fichiers

Commencer par copier le chemin d'accès du dossier avec tout les audios.

Vous pouvez maintenant lancer l'interface graphique et aller dans l'onglet "Train" en haut de la page.

Dans la première option, définissez le nom du modèle.

Je garde généralement les autres paramètres inchangés (en général, la v2 est beaucoup plus rapide à l'entraînement et est préférée aujourd'hui).

Il se peut que vous deviez réduire le nombre de threads si vous le faites localement. Le mien était réglé sur '20' et j'ai dû le régler sur 4 pour éviter un . Si vous voulez rester prudent, une valeur de 1 ou 2 ne prendra pas beaucoup plus de temps qu'une valeur plus élevée, puisque cela ne s'applique qu'à l'étape de traitement initiale.

Dans le premier champ, pour 'Path to training folder', collez le chemin du dataset que vous avez copié. Puis cliquez sur 'process data'. Attendez que le traitement soit complètement terminé (la console de texte indiquera 'end pre-process' lorsqu'il sera terminé).

Crepe (en particulier mangio-crepe, qui est l'ancienne implémentation et, à mon avis, la meilleure) est la meilleure option reconnue pour l'entraînement d'ensembles de données de haute qualité. Les longueurs de saut inférieures seront plus précises et prendront donc plus de temps à former, mais personnellement, je ne remarque pas de différence majeure entre 128 et 64 trains. C'est à vous de décider ; votre ensemble de données doit être configuré de manière à ce qu'il ne contienne pas de bruit important si vous optez pour des longueurs de saut inférieures, car cela augmente le risque que les mauvaises données de votre ensemble de données soient prises en compte lorsque vous avez une plus grande précision de hauteur, pour des raisons évidentes.

Deux choses à savoir cependant :

Nous avions l'habitude de recommander harvest pour les ensembles de données de faible qualité, mais il y a de fortes chances que la méthode 'rmvpe' soit meilleure que mangio-crepe et harvest pour l'entraînement (au moins meilleure que harvest), même sur des ensembles de données de haute qualité. Cette fonctionnalité vient d'être ajoutée, alors n'hésitez pas à la tester.

Ceci étant dit, il s'agit de l'ancien texte :

  • Mangio-Crepe (SPECIFIQUEMENT MANGIO-CREPE, PAS L'AUTRE, QUI N'EST PAS TESTÉ) et harvest sont tous deux des options décentes. J'ai remarqué que si votre jeu de données n'est pas de très bonne qualité, ou est plus "bruyant", harvest peut être meilleur que mangio-crepe, car mangio-crepe est plus sensible aux données et a donc une meilleure précision de pitch. On ne sait pas si l'entraînement de mangio-crepe à une taille de saut élevée pour une précision moindre (comme 256) aide les ensembles de données de moindre qualité à sonner correctement, mais en théorie, je suppose que c'est le cas.

  • N'utilisez pas de pm ou de dio pour l'entraînement. Le son de la dio est terrible et graveleux, et celui de la pm est granuleux.

En principe :

SI LA QUALITÉ DE VOTRE JEU DE DONNÉES EST EXCELLENTE, ESSENTIELLEMENT SANS BRUIT : Utilisez Mangio-Crepe, mais la formation rmvpe est nouvelle et semble prometteuse d'après les premiers tests !

SI LA QUALITÉ DE VOTRE DATASET N'EST PAS EXCEPTIONNELLE : Utilisez rmvpe, ou harvest si cela pose des problèmes, ou une taille de saut plus élevée mangio-crepe (?).

Définissez votre valeur et cliquez sur "Feature" extraction. Attendez que la console de texte de colab mentionne qu'elle a terminé l'extraction de caractéristiques "all-feature-done" de la même manière que pour la fin du pré-traitement.

La taille des lots correspond à la quantité de données traitées à la fois (option de vitesse, pas de qualité). Cela dépend de la VRAM du GPU. Ainsi, pour une RTX 2070 par exemple, avec 8 Go de VRAM, vous utilisez la taille de lot 8.

Sur le GPU d'un colab, 20 est la valeur qui, d'après les gens, est la plus sûre pour éviter les erreurs, mais on m'a aussi dit qu'il valait mieux s'en tenir à une puissance de 2 (donc 2, 4, 8, 16, 32). J'utilise donc 16 sur colab.

N'UTILISEZ PAS ONE CLICK TRAINING, il est bugué. Gardez toujours 'Sauvegarder seulement le dernier fichier ckpt pour réduire l'utilisation du disque'. Référez-vous à d'autres conseils ici aussi si nécessaire. Définissez un nombre décent d'époques pour vous couvrir, par exemple 600. Avant de commencer, lisez la section training pour savoir comment vous allez tester le modèle pendant qu'il s'entraîne, et comment savoir si vous êtes en train de surentraîner. Une fois que vous avez formé votre index de caractéristiques (deuxième gros bouton), vous pouvez cliquer sur "Train model" pour commencer la formation, mais avant cela, passons en revue quelques caractéristiques importantes :

Tester le modèle pendant la formation (c'est important)

Si elle est activée, l'option enregistre le modèle sous la forme d'un petit fichier .pth dans le chemin /weights/ pour chaque fréquence d'enregistrement (par exemple, Kendrick_e10, Kendrick_e20 pour une fréquence d'enregistrement de '10'). Pour obtenir un aperçu précis (précoce), générez l'index des caractéristiques avant l'entraînement; bien entendu, vous devez vous assurer que vous avez suivi les deux premières étapes (traitement des données + extraction des caractéristiques) avant d'entraîner l'index. Vous pouvez également générer l'index des caractéristiques après coup si vous avez oublié de le faire. L'activation de cette option vous permet de tester le modèle à chaque itération de l'époque si nécessaire, ou d'utiliser une itération antérieure si vous avez trop entraîné.

Quel nombre d'époques dois-je définir ? / Comment savoir si l'on est "surentraîné" ?

Plus d'information sur TensorBoard disponible dans le tuto fait pour : 2. Facultatif: TensorBoard (RVC)

Utilisez les journaux de TensorBoard pour identifier le moment où le modèle commence à se surentraîner. Allez à l'écran TensorBoard dans colab. Cliquez sur l'onglet scalars, et cherchez g/total en haut. Cela signifie g/total, avec un g. Pas d/total.

L'option V2 dans l'onglet formation atteint le meilleur point beaucoup plus rapidement que V1

Une fois que vous avez trouvé le nombre de pas idéal, faites des calculs de base pour déterminer le nombre d'époques idéal.

Par exemple, disons que 10 000 pas est le point où le surentraînement commence. Supposons que vous vous êtes surentraîné jusqu'à 20 000 pas, et que votre modèle en est à 600 epochs actuellement. Puisque 600 epochs correspondent à 20k étapes, cela signifie que 10k/20k = 50%. 50% de 600 = est ~300 epochs, en gros ; c'est donc la valeur d'epoch idéale dans ce scénario.

Vous pouvez également trouver l'horodatage de la meilleure valeur dans TensorBoard, puis vérifier le fichier train.log pour le modèle dans le dossier /logs/ pour l'horodatage correspondant afin de trouver exactement l'epoch.

Moins d'epoch signifie généralement que le modèle sera moins précis, plutôt que de sonner nécessairement moins bien pour l'entraînement v2. Cependant, si votre ensemble de données n'est pas de très bonne qualité ou s'il manque beaucoup de données, vous pouvez expérimenter plus tard et voir quel modèle à epoch sauvegardées est le meilleur équilibre entre la précision et la qualité sonore. Dans certains cas plus rares, moins d'epochs peuvent sonner mieux à vos oreilles. Il s'agit d'essais et d'erreurs pour créer un bon modèle à ce stade. Si vous voulez rester prudent, j'opterais pour un modèle "légèrement sous-entraîné".

L'option de lissage maximal sur le côté gauche est désactivée, et n'oubliez pas d'appuyer sur le bouton d'actualisation pour la mettre à jour si nécessaire

Vous pouvez également rechercher votre modèle spécifique par son nom si nécessaire.

Si vous constatez un début de surentraînement et que vous en êtes sûr, cliquez sur le bouton "Arrêter l'entraînement". Vous pouvez maintenant tester votre modèle d'epoch d'entraînement maximales (par exemple, Kendrickv2_e300_s69420 pendant 300 epoch). Si vous êtes satisfait du résultat, renommez le dernier fichier dans le dossier /weights/ (dans le panneau colab files), avec le nom sans _e100_s1337 (ainsi Kendrickv2_e300_s4000 deviendrait Kendrickv2.pth). Si ce n'est pas le cas, vous pouvez reprendre la formation là où vous l'avez laissée.

Je dois insister sur le fait que vous devez modifier le nom à partir du panneau des fichiers de colab. Vous ne pouvez pas renommer le fichier du lecteur, sinon l'étape suivante ne fonctionnera pas.

Ensuite, vous pouvez faire fonctionner cette cellule :

Votre modèle zip terminé sera maintenant prêt dans /RVC_Backup/Finished/ en tant que fichier zip, prêt à être partagé.

Poursuivre la formation d'un modèle là où vous l'avez laissée

Lors d'un réentraînement, pour reprendre là où vous vous étiez arrêté, utilisez le même nom exact (avec la même majuscule) et la même fréquence d'échantillonnage (40 kHz par défaut si elle est inchangée). Utilisez les mêmes paramètres que vous aviez auparavant pour la taille du lot, la version, etc... pour qu'ils correspondent.

Ne traitez pas à nouveau les fichiers et ne refaites pas l'extraction des caractéristiques. En fait, évitez d'appuyer sur "traiter les données" ou d'effectuer à nouveau "l'extraction de la hauteur", car vous ne voulez pas que le logiciel refasse l'analyse de la hauteur qu'il a déjà effectuée.

Ne conservez que les deux derniers fichiers .pth dans le dossier /logs/ du modèle, en fonction de leur date de modification. S'il y a un fichier "G_23333" et "D_23333" dans le dossier logs de votre modèle, il représente le dernier point de contrôle, si vous avez coché "Save only latest ckpt" (ce que je recommande de faire déjà plus haut dans ce guide). Si ce n'est pas le cas, pour une raison ou une autre, supprimez tous les fichiers .pth du dossier qui ne sont pas les plus récents, afin d'éviter les imprécisions.

Vous pouvez maintenant recommencer l'apprentissage en appuyant sur "train model", avec la même taille de lot et les mêmes paramètres que précédemment. Si l'apprentissage recommence depuis le début (à l'époque 1 au lieu de la dernière époque sauvegardée avant l'arrêt de l'apprentissage), utilisez immédiatement CTRL+C ou le bouton d'arrêt si vous êtes sur colab pour tuer le serveur GUI, pour l'arrêter, et essayez de redémarrer le GUI.

Éviter les problèmes de crash / d'extraction de fonctionnalités

Lors de l'entraînement local, il y a un problème lors de l'extraction des caractéristiques, où les gens essaient d'exécuter l'extraction des caractéristiques avec le nombre maximum de fils (option en haut à droite de l'onglet d'entraînement) et se heurtent à des heures de travail ou à un filtrage bleu. Je réglerais la valeur du nombre de fils en haut à droite de l'onglet d'entraînement à un maximum de 5, ou je choisirais une valeur de 2 par sécurité (l'étape de prétraitement ne prendra pas beaucoup de temps). Ma valeur maximale par défaut est de 20 (localement) et cela ne fonctionne pas. Le filtrage n'est pas encore décidé automatiquement, mais c'est la partie qui prend très peu de temps, il est donc préférable de rester prudent et d'opter pour une valeur basse.

Suppression de la réverbération / de l'écho

Il est nécessaire de supprimer la réverbération / l'écho de l'ensemble de données pour obtenir les meilleurs résultats. L'idéal est d'en avoir le moins possible au départ, et isoler la réverbération peut évidemment réduire la qualité de la voix. Mais si vous devez le faire, vous trouverez sous MDX-Net Reverb HQ, qui exportera l'audio sans réverbération en tant qu'option "Pas d'autre". Souvent, cela ne suffit pas. Si cela n'a rien donné (ou pas assez), vous pouvez essayer de traiter la sortie vocale à travers les modèles de l'architecture VR dans UVR pour supprimer l'écho et la réverbération qui subsistent en utilisant De-Echo-DeReverb. Si cela ne suffit toujours pas, vous pouvez utiliser le modèle De-Echo normal sur la sortie, qui est le modèle de suppression d'écho le plus agressif de tous.

Il y a aussi un colab pour les modèles VR Arch si vous ne voulez pas ou ne pouvez pas exécuter UVR localement. Je n'ai aucune idée de comment l'utiliser, alors bonne chance. Sans un bon GPU sur votre PC, UVR fonctionnera toujours localement dans la plupart des cas, mais il sera assez lent, si vous êtes d'accord avec cela. Mais si vous avez un long jeu de données, préparez-vous à le faire tourner toute la nuit...

Le filtrage du bruit pour supprimer le silence

J'aime bien faire du noise gate dans Audacity pour supprimer le bruit dans les périodes "silencieuses" de l'audio.

En général, -40db est un bon seuil pour cela.

Adobe Audition a probablement des outils plus avancés pour faire cela automatiquement (je ne sais pas comment l'utiliser), mais c'est un bon préréglage pour commencer pour les personnes qui utilisent le mixage de base d'Audacity. Si le son est coupé au milieu de la phrase, refaites-le en augmentant le son pour le Hold ms.

Isolation des harmonies de fond / doublage vocal

Dans la plupart des cas, il est trop difficile de les isoler pour les besoins d'un jeu de données sans que cela ne paraisse de mauvaise qualité. Mais si vous voulez quand même essayer, les meilleurs modèles UVR pour le faire seraient 5HP Karaoke (modèle VR Architecture) ou Karaoke 2 (MDX-Net). Le 6HP est supposé être un 5HP plus agressif, je crois ? Je ne sais pas. YMMV, essayez donc les autres options de karaoké à moins que cela ne fonctionne pas du tout quoi qu'il arrive.

Dois-je découper mon fichier audio en morceaux ?

Techniquement, la réponse est non, du moins pour RVC. Vous pouvez avoir un énorme fichier de 10 minutes comme seul fichier dans votre dataset et RVC le découpera pour vous correctement en suivant les instructions de ce guide, d'après mon test. RVC découpe en morceaux de ~4s, donc assurez-vous que vos échantillons ont une longueur d'au moins 4s pour des raisons de cohérence (ou fusionnez les échantillons plus courts en un seul fichier long). Si vous voulez rester prudent, vous pouvez diviser vos échantillons en intervalles d'une minute (la fonction d'étiquettes d'intervalles réguliers dans Audacity est très utile pour cela).

En raison d'un problème récemment découvert, il semble qu'une personne ait rencontré des difficultés avec le traitement incorrect d'un fichier audio WAV d'1 heure et 30 minutes, ce qui pourrait potentiellement être un problème de son côté. Pour les ensembles de données très longs, il est possible de rencontrer des problèmes si vous ne les divisez pas. Cependant, pour les enregistrements de moins de 30 minutes, cela ne semble pas poser de problème.

De quelle quantité d'audio ai-je vraiment besoin pour l'ensemble de données ?

Pas tant que cela en fait. Plus, c'est évidemment mieux, mais je ne vois pas l'intérêt d'entraîner un modèle avec plus d'une heure de données. Vous pouvez vous en sortir avec des modèles à base de données VRAIMENT limitées sur RVC v2, mais moins vous avez de données, plus l'IA doit "deviner" comment votre voix est censée sonner à certaines hauteurs. Une fourchette raisonnable de haute qualité serait de 10 à 45 minutes.

Voici un exemple de mon modèle JID de 10 secondes en train de rapper :

Ça a l'air bien parce que je lui ai donné 10 secondes de rap comme ensemble de données, n'est-ce pas ?

Mais le son est beaucoup moins précis en essayant de chanter :

La recommandation des développeurs de RVC est d'au moins 10 minutes pour les modèles de haute qualité qui peuvent gérer une variété de hauteurs et de tonalités, mais n'oubliez pas : Qualité > Quantité.

Il s'agit d'un exemple de modèle de 5 minutes entraîné sur des clips de haute qualité.

Il s'agit d'un modèle entraîné sur 7 secondes de sons de villageois Minecraft. D'une manière ou d'une autre, cela fonctionne.

Télécharger d'autres modèles en UVR

Allez dans la clé à molette, puis dans le "Centre de téléchargement" pour trouver l'onglet où vous pouvez trouver les modèles dont je parle dans le guide et qui n'ont pas encore été téléchargés.

Guide général (anglais)

RVC v2 AI Cover Guide (par kalomaze)

Guide de correction de TensorBoard (français)

TensorBoard (ROD)

Dernière mise à jour