Il existe un modèle de conversion d'image appelé RelGAN! Appliquez-le à la conversion vocale! Vous pouvez faire du morphing de voix!
Le nombre d'hommes qui veulent être de belles filles augmente. Au contraire, il y a beaucoup de femmes qui veulent être de beaux garçons. Ces dernières années, cette tendance est devenue particulièrement perceptible avec la popularité du YouTuber virtuel. En ce qui concerne l'apparence, des MMD de la technologie CG et Live2D qui peuvent déplacer des illustrations apparaissent, et cela entre dans une ère où vous pouvez progressivement vous transformer en ce que vous voulez être, mais vous voulez être la voix d'une jolie fille ou la voix d'un garçon cool. Est également l'un des gros problèmes. Dans cet article, nous proposons une conversion de qualité vocale entre plusieurs haut-parleurs à l'aide d'un modèle appelé RelGAN-VM et un morphing de qualité vocale qui crée une voix intermédiaire entre deux haut-parleurs.
Dans cet article, des mots relativement difficiles volent. J'ai l'intention de faire un supplément minimum, mais cela demande quelques connaissances. Plus précisément, il est écrit sur la base des connaissances suivantes.
Si vous effectuez une recherche, vous trouverez de nombreux articles plus faciles à comprendre que ce que les auteurs de cet article expliquent, donc si vous trouvez un terme ou un mot que vous ne comprenez pas, veuillez effectuer une recherche (lancer rond).
Recherche précédente
CycleGAN-VC convertit la qualité de la voix entre deux haut-parleurs et CycleGAN-VC2 améliore les performances. StarGAN-VC convertit la qualité vocale entre plusieurs haut-parleurs, et StarGAN-VC2 améliore encore les performances et propose un morphing de qualité vocale.
__ Articles connexes (y compris les liens externes) __
Une qualité vocale virtuelle YouTuber est convertie à l'aide d'un convertisseur basé sur CycleGAN. Par une méthode prudente, il montre des performances de conversion étonnantes tout en étant basé sur un spectrogramme.
La voix de l'auteur de l'article est échangée contre la qualité vocale de "VOICEROID Yukari Yuzuki" en utilisant une méthode basée sur pix2pix. Il s'agit également de performances élevées.
Dans cet article, RelGAN: Multi-Domain Image-to-Image Translation via Relative Attributes (ci-après dénommé RelGAN) et RelGAN-VM basé sur CycleGAN-VC2 sont utilisés. Je vais proposer. Pour une explication détaillée de RelGAN et CycleGAN-VC2, veuillez vous référer à certains des auteurs qui ont écrit des articles très clairs (les auteurs de ces articles seront appelés Lento).
Vous avez besoin du même contenu de prononciation, des mêmes informations d'échelle et des mêmes données de synchronisation vocale. Ce ne sont pas les mêmes, vous devez donc les aligner. Étant donné que la source de conversion et la destination de conversion nécessitent des données avec le même contenu autre que la qualité de la voix, la création de l'ensemble de données demande beaucoup d'efforts, mais la quantité de données est relativement petite. "J'ai essayé de faire une voix liée à Yuzuki avec la puissance du deep learning" semble adopter la conversion parallèle.
Apprenez avec des ensembles de données avec différents contenus d'énoncés, des informations sur les syllabes et un timing d'énonciation. Il est relativement facile de créer un ensemble de données car il ne nécessite pas d'alignement et il vous suffit de lire le texte à haute voix. La conversion non parallèle est adoptée pour la méthode basée sur CycleGAN et StarGAN. En outre, cette implémentation et le RelGAN d'origine utilisent également une conversion non parallèle.
RelGAN-VM Generator and Discriminator sont basés sur CycleGAN-VC2, Generator is Input with Relative attributes concatenate, Discriminator supprime la convolution de la couche finale, $ D_ {real} $, $ D_ {interp} $, $ Il se divise en trois parties, D_ {match} $. Voir Implémentation pour plus de détails.
La fonction de perte de la base RelGAN est la suivante. Cette implémentation n'a pas utilisé la régularisation orthogonale.
Lors de l'entraînement avec cette fonction de perte, la réduction du mode s'est produite à environ 30000 étapes, de sorte que cette implémentation ajoute des restrictions en plus de celles-ci.
Triangle consistency loss
Sélectionnez 3 domaines parmi N et appelez-les A, B, C. La différence entre l'entrée et la sortie lorsque le domaine est converti de A → B → C → A est considérée comme la perte. Lors de la conversion du domaine A en B, nous écrirons l'image d'entrée comme $ x $, les attributs relatifs comme $ v_ {ab} $ et le générateur comme $ G (x, v_ {ab})
Mode seeking loss
Cette méthode a été proposée dans Mode Seeking Generative Adversarial Networks for Diverse Image Synthesis. Quelqu'un a écrit un commentaire en japonais, veuillez donc vous référer à [Dernier article / cGANs] Terme de régularisation qui peut résoudre la réduction de mode. S'il te plait donne moi.
Pour $ I_a = G (z_a) $, $ I_b = G (z_b) $ converti à partir des variables latentes $ z_a $ et $ z_b $
En raison de l'addition de ces pertes, la perte du côté du générateur est la suivante.
L'implémentation est téléchargée sur Github. Il est modifié sur la base de GAN-Voice-Conversion, qui est l'implémentation de CycleGAN-VC2 par M. njellinas. Lors de la réécriture à RelGAN-like, j'ai fait référence au document officiel et à l'implémentation de RelGAN par Lento.
J'ai emprunté le corpus JVS (discours polyvalent japonais) en tant qu'ensemble de données. J'ai utilisé parallel100 de jvs010, jvs016, jvs042, jvs054 comme données d'entraînement. J'ai également utilisé environ 5 fichiers de nonpara30 de chaque haut-parleur pour la validation. Le parallel100 stocke beaucoup de contenu d'énoncé, d'informations d'échelle et de synchronisation d'énoncé (pas parfait), mais cette fois, il sera traité comme des données non parallèles. Écrivez l'impression de chaque orateur de manière subjective.
World Encapsuleur Python, pyWorld pour l'extraction de la quantité de fonctionnalités blob / master / README.md) est utilisé. Cependant, il faut un certain temps avant d'extraire les fonctionnalités.
S'il y a beaucoup de silence dans les données d'apprentissage, il peut être appris comme une caractéristique en soi. De plus, comme le programme se terminait parfois sans erreur lors de l'extraction de la quantité de fonctionnalité, nous avons décidé de supprimer le silence (il peut y avoir division à 0 ou divergence à l'infini quelque part, recherche de la cause requise ). Il existe différentes méthodes pour supprimer le silence, mais cette fois j'ai simplement utilisé librosa. Il est également possible de prendre $ f_o $ une fois et d'extraire la partie $ f_o> 0 $.
Pour créer un lot, sélectionnez d'abord une donnée audio au hasard, puis découpez au hasard les données d'entité de la longueur spécifiée. Ici, si la longueur de chaque donnée audio est différente, chaque échantillon ne sera pas sélectionné avec une probabilité égale. Afin d'éviter cela, toutes les voix sont combinées une fois, puis séparées en données vocales de longueur égale.
La quantité de fonctionnalités est extraite par pyWorld pour les données audio séparées. Honnêtement, je ne comprends pas ce que je fais (gros problème), mais j'ai demandé $ f_o $ et MCEP $ sp $, et à partir de là $ {\ mu_ {f_o}} $, $ {\ sigma_ {f_o}} Est-ce un endroit où $, $ {\ mu_ {sp}} $, $ {\ sigma_ {sp}} $ est calculé et $ sp $ est normalisé et enregistré?
À ce stade, vous pouvez enfin commencer l'apprentissage en profondeur. Le modèle et le réseau à utiliser sont tels que décrits ci-dessus. Les MCEP normalisés ont 36 dimensions et vous pouvez entrer 128 images sélectionnées au hasard. De plus, il existe une certaine probabilité (0,0005%) d'insérer un silence complet dans le lot. La taille du lot est de 8. Par conséquent, la taille d'entrée est (8, 36, 128) ((1, 36, 128) lors de la déduction). GAN a utilisé LSGAN. Je suis allé sur la route royale car il est également utilisé dans CycleGAN-VC2 et StarGAN-VC2. Adam est utilisé comme optimiseur et l'apprentissage commence à 0,0002 pour Generator et 0,0001 pour Discriminator pour un apprentissage tardif, et chaque étape est atténuée de 0,9999 fois. $ {\ beta_1} $ = 0,5, $ {\ beta_2} $ = 0,999. La fonction de perte $ {\ lambda} $ est $ {\ lambda_1} = 1, {\ lambda_2} = 10, {\ lambda_3} = 10, {\ lambda_4} = 10, {\ lambda_5} = 5, {\ lambda_6 } = 5, {\ lambda_7} = 1 $. De plus, $ {\ lambda_5} et {\ lambda_6} $ sont atténués 0,9 fois tous les 10 000 pas. Dans cette condition, 100 000 pas ont été formés (environ 62 heures avec RTX 2070). En conséquence, la conversion n'a pas bien fonctionné après 80 000 étapes, donc dans cet article, nous évaluerons en utilisant le modèle formé à 80 000 étapes. La figure ci-dessous est un graphique de la perte par TensorBoard. Vous pouvez voir que la perte Adversarial du côté du Discriminateur monte en flèche (le côté du Générateur monte en flèche) autour de 80 000 pas.
Mettez l'audio généré sur Github. Je l'ai rendu disponible sur YouTube.
Le réseau neuronal formé est un modèle qui convertit uniquement les MCEP normalisés, et en utilisant cette statistique et d'autres, il est à nouveau converti en voix par pyWorld. Le flux de conversion lors de la conversion du domaine A au domaine B à un taux d'interpolation de $ {\ alpha} $ est décrit ci-dessous.
C'est tout.
Je ne sais pas comment faire une évaluation quantitative, je vais donc l'évaluer à ma discrétion (problème). Je pense que la conversion en haut-parleurs masculins (jvs042, jvs054) a fonctionné dans une certaine mesure à partir de n'importe quel haut-parleur. D'autre part, la conversion en haut-parleurs féminins (jvs010, jvs016) a une faible précision de conversion entre le même sexe et le sexe opposé, et est particulièrement visible dans la conversion en jvs010. De plus, le morphing est assez subtil, n'est-ce pas seulement que $ f_o $ a changé? Certains des résultats sont les suivants. Vous pouvez voir qu'il se transforme entre le sexe opposé, mais je sens que le naturel est faible.
Dans cet article, nous avons proposé RelGAN-VM et mené des expériences sur la conversion de la qualité vocale et le morphing de la qualité vocale. Nous sommes fiers que la conversion en haut-parleurs masculins soit comparable à la méthode existante, mais la précision de la conversion des haut-parleurs masculins en haut-parleurs féminins, en particulier vers les voix aiguës, n'est pas très élevée. fait. Le morphing de la qualité vocale a été proposé dans StarGAN-VC2 comme une recherche précédente, et c'était un peu insuffisant pour écrire dans un article, mais je pensais que ce serait un gaspillage de le jeter, alors j'ai décidé de le soumettre à Qiita. C'est difficile d'être une belle fille.
Future works Dans cet article, seule la qualité vocale entre les enceintes a été convertie. Par exemple, Voice Actor Statistics Corpus publie 9 types d'ensembles de données dans lesquels 3 locuteurs lisent à haute voix avec 3 types d'émotions. Si vous apprenez cela, vous pourrez peut-être transformer non seulement la qualité de la voix de l'orateur, mais également les émotions. De plus, la structure du réseau, la fonction de perte et les hyper paramètres de cette implémentation ne sont pas encore terminés, et je pense qu'il y a place à amélioration. Je souhaite continuer à envisager des modèles de conversion vocale plus performants.
Ce n'est pas un bon sujet, mais Les voix personnelles ont aussi des droits. Par exemple, si vous utilisez la conversion de qualité vocale pour usurper l'identité de la voix d'une autre personne à des fins commerciales ou abusives sans autorisation, vous serez sévèrement puni en tant que violation de la vie privée ou violation des droits d'auteur. Je vais. Bien sûr, vous êtes libre d'utiliser cette implémentation pour entendre la voix des autres, mais lorsque vous utilisez des données audio qui n'ont pas été protégées par des droits d'auteur, veuillez les utiliser uniquement pour un usage personnel. Veuillez noter qu'il sera gris s'il peut être consulté par un nombre indéterminé de personnes, même s'il n'est pas commercial. Par exemple, le corpus JVS utilisé dans cette expérience a les conditions d'utilisation suivantes.
__ Les données texte proviennent du corpus JSUT et ses informations de licence sont décrites dans le corpus JSUT. Les informations d'étiquette sont sous licence CC-BY-SA 4.0. Les données audio ne peuvent être utilisées que dans les cas suivants. Recherche dans les institutions académiques Recherche non commerciale (y compris la recherche dans des organisations commerciales) Utilisation personnelle (y compris les blogs) Si vous souhaitez l'utiliser à des fins commerciales, veuillez voir ci-dessous. La redistribution de ces données audio n'est pas autorisée, mais il est possible de publier une partie du corpus (par exemple, environ 10 phrases) sur votre page web ou votre blog. __
De plus, l'auteur n'assume aucune responsabilité pour l'accident causé par l'utilisation de cette implémentation et la conversion de la qualité vocale.
Les personnes du laboratoire qui nous ont donné des conseils en postant cet article, en particulier Rugiu-kun, nous ont donné beaucoup d'avis techniques sur World et nous ont donné des informations erronées. J'ai pu le réparer. Je n'ai pas pu atteindre son niveau requis, mais c'était une bonne étude. Nous tenons également à remercier ceux qui ont téléchargé des articles, des articles, des implémentations et des bibliothèques clairs, ainsi que ceux du laboratoire qui ont publié des ensembles de données utiles. Toutes les lacunes de cet article sont de ma responsabilité.
Que faites-vous sans rédiger une thèse de fin d'études orz
Recommended Posts