Intelligence artificielle

Traduction vocale et transfert de styles audio avec GAN

Traduction vocale et transfert de styles audio avec GAN


Nous avons tous entendu parler de l'image transfert de style: extraire le style d’une peinture célèbre et l’appliquer à une autre image est une tâche qui a été réalisée avec différentes méthodes. Réseaux contradictoires génératifs (GAN en bref) sont également utilisés sur des images pour la génération, la traduction image à image et plus encore.

Exemples de transfert de style d'image

Mais qu'en est-il du son? En surface, vous pourriez penser que l'audio est complètement différent des imageset que toutes les techniques explorées pour les tâches liées aux images ne peuvent pas également être appliquées aux sons. Mais si nous pouvions trouver un moyen de convertir les signaux audio à des représentations bidimensionnelles ressemblant à des images?

En fait, oui nous pouvons! Ce genre de représentation sonore est ce que nous appelons “Spectrogramme”, Et c’est la clé qui nous permettra d’utiliser des algorithmes spécialement conçus pour utiliser des images pour notre tâche liée à l’audio.

Spectrogramme (source)

Si vous débutez dans le monde du traitement audio, vous ne connaissez peut-être pas ce qu'est vraiment un spectrogramme. Avec un signal de domaine temporel (1 dimension), nous voulons obtenir un représentation bidimensionnelle temps-fréquence. Pour y parvenir, nous appliquons le Short-Time Transformation de Fourier (STFT) avec une fenêtre d’une certaine longueur sur le signal audio, en considérant uniquement la magnitude au carré du résultat.

Incroyable illustration de la corrélation entre le temps et la fréquence de la page papier MelNet

En termes plus simples, nous divisons notre original forme d'onde signal en morceaux qui se chevauchent, extraire la magnitude de la la fréquence dans le bloc (avec une transformée de Fourier), et chaque vecteur résultant va représenter une colonne de notre spectrogramme final. L'axe des abscisses du spectrogramme signifie temps, tandis que l’axe des ordonnées représente le la fréquence.

Pour rendre ces spectrogrammes encore plus utiles à notre tâche, nous convertissons chaque «pixel» (ou valeur de magnitude) en un échelle de décibels, en prenant le journal de chaque valeur. Enfin, nous convertissons les spectrogrammes en échelle de mel, appliquant une banque de filtres mel, entraînant ce que l’on appelle «spectrogrammes mel”.

Exemples de spectrogrammes mel avec log-amplitude

Cela nous permet de faire les représentations du spectrogramme plus sensible à notre compréhension humaine du son, soulignant les amplitudes et les fréquences que nous, les humains, sommes plus enclins à entendre.

Maintenant que nous savons représenter les sons sous forme d’images, amusons-nous.

Dans cet article, je vais expliquer comment construire et former un système capable de conversion de voix et tout autre type de transfert de style audio (par exemple, convertir un genre de musique en un autre). La méthode est fortement inspirée des recherches récentes dans traduction image à image générative d’adversaires, la principale différence consistant à appliquer toutes ces techniques à données audio. En prime, nous pourrons traduire des échantillons de longueur arbitraire, ce que nous ne voyons pas très souvent dans les systèmes GAN.

Pour vous rendre un peu excité par ce que vous êtes sur le point d’apprendre, voici une vidéo de démonstration des résultats que nous pouvons obtenir avec cette méthode.

Dans la vidéo de démonstration, vous pouvez écouter différents traduction vocale des exemples et aussi un couple de conversions de genre de musique, spécifiquement du jazz à la musique classique. Ça sonne bien, n'est-ce pas?

Un certain nombre d'architectures différentes du monde de la vision par ordinateur sont utilisées pour la traduction image à image, tâche que nous souhaitons accomplir avec notre représentations spectrographiques audio (disons discours).

La traduction image à image consiste en convertir une image d'un domaine A (images de chats par exemple) à un autre domaine B (images de chiens), tandis que conserver les informations sur le contenu de l'image originale (l'expression et la pose du chat). Notre tâche est pratiquement le même: nous voulons traduire le locuteur A en B, tout en gardant la même chose information linguistique du locuteur A (le discours généré doit contenir le message mêmes mots comme le discours original de l'orateur A).

Architecture CycleGAN

le le plus célèbre L’architecture GAN construite à cet effet peut être CycleGAN, introduit en 2017 et largement utilisé depuis. CycleGAN réussit très bien à traduire entre domaines similaires (formes et contextes similaires), tels que des chevaux aux zèbres ou des pommes à des oranges, il est insuffisant lorsqu'il pleut dans des domaines très divers, comme des poissons aux oiseaux ou des pommes aux carottes.

La cause de cette défaut est le fait que CycleGAN s'appuie fortement sur pertes en pixelsou, en d'autres termes, sa perte a tendance à minimiser les différences entre les valeurs de pixel des images réelles et générées: intuitivement, lors de la conversion d'une image d'un objet (une pomme par exemple) en un domaine sensiblement différent (la carotte), nous devons changer le forme principale de l'objet d'origine, et CycleGAN ne peut pas nous aider dans ce cas.

Exemple de traduction CycleGAN. (Zèbre à cheval)

Les spectrogrammes de discours de personnes différentes (ou spectrogrammes de pièces musicales de genres différents) peuvent être très visuellement différent nous devons donc trouver une approche plus générale du problème, qui ne consiste pas à être contraint par la traduction entre domaines visuellement similaires.

Les spectrogrammes de différentes enceintes ou de genres musicaux peuvent être très différents visuellement

Introduit à l'origine ici, le TraVeLGAN (Transformation Vector Learning GAN) vise à résoudre exactement notre problème.

Exemples de traductions image à image TraVeLGAN avec des domaines très différents

En plus d’un générateur et d’un discriminateur (ou critique), TraVeLGAN introduit un Réseau siamois (un réseau qui encode les images en vecteurs latents) pour permettre les traductions entre domaines sensiblement différents conserver une relation de contenu entre les échantillons originaux et convertis.

Apprenons comment TraVeLGAN fonctionne exactement.

Architecture TraVeLGAN

Notre objectif est de trouver un moyen de garder un relation entre les échantillons d'origine et générés sans recourir à des pertes de pixels (telles que la contrainte de cohérence de cycle dans CycleGAN), ce qui limiterait les traductions entre domaines visuellement similaires. Ainsi, si nous encoder les images (ou spectrogrammes) en vecteurs qui capturent leurs informations de contenu dans un espace latent organisé nous sommes en mesure de maintenir une relation entre ces vecteurs au lieu de l’ensemble des images.

C’est exactement ce que Siamois réseau nous permet de réaliser. Initialement utilisé pour la reconnaissance des visages, le réseau siamois prend une image en entrée et sort un seul vecteur de longueur vec_len. Spécifier avec une fonction de perte quelle image les encodages doivent être proches (images du même visage par exemple) dans l’espace vectoriel et lesquelles doivent être loin l'un de l'autre (images de différents visages) nous pouvons organiser l'espace latent et le rendre utile pour notre objectif.

Le réseau siamois code des images en vecteurs

Plus spécifiquement, nous visons à garder le vecteurs de transformation entre des paires de codages égale: cela semble être un concept extrêmement difficile à comprendre, mais il est en fait assez facile compréhensible.

Avec G (X) comme l'image traduite X (sortie du générateur), S (X) comme encodage vectoriel de X et A1, A2 deux images du domaine source UNE, le réseau doit encoder des vecteurs tels que:

(S (A1) -S (A2)) = (S (G (A1) -S (G (A2)))

De cette manière, le vecteur de transformation qui relie les codages d’une paire d’images source doit être égal au vecteur de transformation entre la même paire traduite par le générateur.

Ça permet de préserver l'information sémantique (contrairement à CycleGAN qui conserve des informations de contenu plus géométriques avec sa contrainte de cohérence de cycle) dans la traduction, ce qui permet de contraindre plus de relations «abstraites» entre images de différents domaines.

Formellement, pour conserver les informations sur le contenu dans la traduction, nous allons: minimiser la distance euclidienne et la similarité cosinus entre les deux vecteurs de transformation, de sorte que les deux angle et ordre de grandeur des vecteurs sont conservés.

Perte formelle de TraVeL

En outre, il est important de préciser que les deux Générateur et le Siamois réseau doit coopérer pour atteindre cet objectif. Plus spécifiquement, les gradients de la perte TraVeL sont en arrière propagé par les deux réseaux et leurs poids sont mis à jour en conséquence. Ainsi, alors que le discriminateur et le générateur ont une objectif contradictoire (ils se défient les uns les autres pour atteindre leur objectif), le siamois et le générateur s'entraider, coopérant selon les mêmes règles.

En plus de cette perte de «contenu», le générateur apprendra à générer des échantillons réalistes grâce à une méthode traditionnelle. perte contradictoire (Dans mes expériences, j'ai utilisé la perte de charnière).

Si vous êtes nouveau sur GAN et comment ils fonctionnent, ou si vous voulez plonger un peu plus loin comment préserver les informations de contenu avec un espace latent, je vous recommande check-out mon article explique comment appliquer les mêmes techniques à une tâche de traduction simple image à image.

Maintenant que nous avons exploré une méthode qui nous permet de préserver le contenu informations dans la traduction, nous devons comprendre comment nous pouvons convertir le générateur des échantillons (spectrogrammes) qui sont arbitrairement long, sans mettre un travail supplémentaire sur les temps de calcul et d’entraînement.

Disons que nous avons un signal audio: “extrayant” le spectrogramme mel du signal, nous obtenons un image avec un seul canal (différent des images RVB à 3 canaux traditionnelles) avec un hauteur déterminée H (cela dépend de la taille de saut utilisée pour le STFT) et un largeur X cette dépend sur la longueur d'origine de l'échantillon audio.

Cependant, travailler avec des images qui ont dimensions variables est connu pour être un difficile tâche, surtout si nous ne décidons pas ces dimensions au préalable. C’est pourquoi nous allons Divisé tous les spectrogrammes (de forme XxH avec X qui varie) dans morceaux avec un largeur déterminée, Disons L. Parfait! Notre ensemble de données se compose maintenant de spectrogrammes source et cible avec dimensions connues (LxH), et nous sommes prêts à passer à l’étape suivante.

Chaque spectrogramme du jeu de données a une hauteur H et une largeur L fixes

Avant de créer notre générateur g, nous devons spécifier le dimensions de ses entrées, qui dans notre cas sera (L / 2) xH. En d'autres termes, G acceptera les spectrogrammes qui ont la moitié de la largeur de ceux de notre ensemble de données. Pourquoi? Parce que de cette manière nous pourrons faire traduire par G la tout l'original XxH spectrogrammes que nous nous sommes déjà séparés. Voyons comment.

Notre pipeline de formation consistera en les actions suivantes:

  1. Divisé la source LxH spectrogrammes à moitié, obtenir (L / 2) xH spectrogrammes
  2. Nourrir les couples des moitiés au générateur et obtenir le paires traduites comme sorties
  3. Enchaîner les moitiés traduites à leur forme originale (LxH)
  4. Alimentation le traduit et le cible LxH spectrogrammes au discriminateur, le rendant distinguer l'un de l'autre et permettant la formation contradictoire.
Illustration du pipeline de formation: division, conversion et concaténation.

Faire le discriminateur inspecter le "faux" spectrogrammes concaténés et comparant les au "réel" ceux-ci obligent le générateur à générer des échantillons qui quand concaténé ensemble aboutissent à un réaliste spectrogramme.

En d'autres termes, la traduction (L / 2) xH les échantillons ne doivent présenter aucune discontinuité sur les bords qui les rendraient l'air irréaliste au discriminateur. Ainsi, cet important contrainte sur le générateur, c’est ce qui nous permet de traduire des signaux audio de toute longueur d’un domaine à l’autre.

Après l'entraînement, quand tu veux traduire un arbitraire spectrogramme de forme XxHX varie et est donné par la longueur du signal audio d'origine, voici ce que nous devrons faire:

  1. Divisé le XxH spectrogramme en (L / 2) xH morceaux, en utilisant padding si X n'est pas parfaitement divisible par L / 2
  2. Alimentation chaque (L / 2) xH échantillon au générateur pour traduction
  3. Enchaîner les échantillons traduits dans l'original XxH forme, en coupant le supplément si un rembourrage a été utilisé.

L’échantillon final traduit ne doit pas présent discontinuités et devrait présenter le même style comme domaine cible (une voix ou un genre de musique particulier). Facile, n'est-ce pas?

Exemples de spectrogrammes source et converti: les échantillons concaténés ne présentent pas de discontinuités

Nous avons déjà appris comment nous pouvons préserver le contenu à partir de l’échantillon audio source (dans le cas d’un discours, ce serait la information verbale, dans le cas de la musique, ce serait le cas particulier mélodie d'une chanson) sans la contrainte de la traduction entre domaines visuellement similaires (les spectrogrammes de différentes voix ou genres musicaux peuvent être extrêmement visuels différent) et un simple mais efficace technique qui nous permet de convertir des échantillons de longueur arbitraire.

Maintenant, il est enfin temps de tout mettre ensemble.

C'est un extrait de mon papier qui présente cette technique:

Tout rassembler: le réseau siamois aide à préserver le contenu en maintenant l'arithmétique vectorielle entre les échantillons source et convertis

Procédure de formation MelGAN-VC. Nous divisons des échantillons de spectrogramme, les transmettons au générateur G, les concaténons ensemble et transmettons les échantillons résultants au discriminateur D pour permettre la traduction d'échantillons de longueur arbitraire sans divergences. Nous ajoutons un réseau S siamois S à l'architecture GAN génératrice-discriminante traditionnelle afin de préserver l'arithmétique des vecteurs dans l'espace latent et d'avoir ainsi une contrainte sur le contenu de bas niveau de la traduction. Une contrainte facultative de mappage d'identité est ajoutée aux tâches qui nécessitent également une préservation des informations de haut niveau (informations linguistiques dans le cas d'une traduction vocale).

De plus, il faut ajouter un perte de marge pour le réseau siamois pour éviter de dégénérant dans l'apprentissage d'un fonction triviale pour satisfaire son objectif. La perte de marge éloigne tous les vecteurs produits par S, de sorte que le réseau ne peut pas associer le même vecteur exact à chaque entrée et doit apprendre des relations significatives créer un espace utile latent.

où delta est une valeur fixe et t est le vecteur de transformation

Enfin, voici les pertes formelles utilisé pour former les trois réseaux:

Pertes finales pour le générateur G, le discriminateur D et le réseau siamois S

Il est important de noter que le supplément contrainte d'identité (erreur quadratique moyenne entre les échantillons du domaine cible et les mêmes échantillons traduits par le générateur) n’est utile que dans le cas où traduction vocale, où les informations linguistiques doivent être préservées et où nos perte de contenu (basé sur les sorties vectorielles du réseau siamois) des luttes pour capturer ceux haut niveau information.

Je vous recommande et vous invite à lire mon papier complet si vous recherchez plus d’informations sur cette technique particulière ou si vous préférez une formel et méthodique explication.

Aujourd'hui, nous avons appris à jouer traduction vocale et transfert de style audio (tels que la conversion de genres musicaux) en utilisant une architecture de réseau de neurones convolutionnel profond et quelques astuces et techniques atteindre réaliste traductions sur arbitrairement long échantillons audio.

Nous savons maintenant que nous sommes en mesure de influence une grande partie du recherche récente sur l'apprentissage en profondeur pour vision par ordinateur applications pour résoudre également des tâches liées à signaux audio, grâce à la représentation du spectrogramme équivalent à une image.

Enfin, je voudrais conclure en reconnaissant le fait que abuser cela et d'autres techniques pour buts mal intentionnés est possible, surtout dans le cas de traduction vocale. Avec le monter de puissantes méthodes d'apprentissage automatique pour créer fausses données réalistes nous devrions tous être très conscient et prudent lors de l'exploration et de l'utilisation de ce type d'algorithmes: et tout en la recherche ne s'arrêtera pas et ne devrait pas être arrêtée, nous devrions également allouer des ressources et examiner comment détecter les fausses données que nous avons aidé à créer.

Merci beaucoup pour votre précieuse attention, s'amuser!

P.S. Si vous êtes intéressé par les GAN et liés au GAN idées prêtes à l'emploi et les applications, vous devriez également check-out:

10 leçons que j'ai apprises à former des GAN pendant un an (si vous êtes intéressé par des trucs et astuces pour vous aider dans la tâche extrêmement difficile qu'est la formation de GAN)

Transfert de style avec GAN sur des images HD (où j'utilise une technique similaire pour permettre le transfert de style d'images de grande taille avec très peu de ressources de calcul)

Une nouvelle façon de regarder les GAN (où j'explore en détail le fonctionnement d'un espace latent et la manière dont il peut être exploité pour une tâche de traduction image à image)

Synthétiser l'audio avec des réseaux d'adversaire génératif (où j'explore un article proposant l'utilisation de GAN à convolution pour générer de l'audio à l'aide de données de forme d'onde brutes et de convolutions à 1 dimension)

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer