Amélioration de la qualité audio de Google Duo avec WaveNetEQ

Les appels Internet sont devenus partie intégrante de la vie de millions de personnes - ils simplifient donc leur flux de travail et se connectent avec leurs proches. Pour transférer un appel sur Internet, les données d'appel sont divisées en petits morceaux appelés «packages». Les paquets transitent par le réseau de l'expéditeur au destinataire, où ils sont récupérés pour recevoir un flux vidéo et audio continu. Cependant, souvent les paquets arrivent au destinataire dans le mauvais ordre et au mauvais moment - c'est ce qu'on appelle généralement la gigue.(tremblant) - ou complètement perdu. Ces problèmes réduisent la qualité des appels, car le destinataire doit essayer de combler les lacunes, ce qui affecte gravement l'audio et la vidéo. Par exemple, 99% des appels via Google Duo subissent une perte de paquets, une gigue excessive ou une latence du réseau. Parmi ceux-ci, 20% des appels perdent plus de 3% des données audio en raison de problèmes de réseau, et 10% des appels perdent plus de 8% des données.


Diagramme simplifié des problèmes de réseau

Afin de rendre la communication en temps réel plus fiable, vous devez en quelque sorte traiter les colis nécessaires qui n'ont pas atteint le destinataire. Par exemple, si vous ne donnez pas de signal audio continu, vous entendrez des interruptions et du bégaiement, mais vous ne pouvez pas appeler cela une solution idéale pour essayer de répéter le même signal encore et encore - cela conduira à des artefacts et réduira la qualité globale des appels. La technologie permettant de gérer la situation en l'absence de paquets est appelée «dissimulation de perte de paquets» (PLC). Le module PLC du récepteur est responsable de la création de l'audio (ou de la vidéo) qui comble les interruptions causées par la perte de paquets, la forte gigue ou les problèmes de réseau - des problèmes qui, dans tous les cas, conduisent à un manque de données nécessaires.

Pour faire face à ces problèmes audio, nous avons introduit un nouveau système PLC appelé WaveNetEQ dans Duo. Il s'agit d'un modèle génératif basé sur la technologie WaveRNN de DeepMind , formé sur un grand corps de données de parole pour compléter de manière réaliste les segments de parole. Elle est capable de synthétiser pleinement le signal sonore des fragments de discours manquants. Étant donné que les appels à Duo subissent un chiffrement de bout en bout, tout le traitement doit être effectué sur l'appareil lui-même. Le modèle WaveNetEQ est assez rapide pour un téléphone, tout en offrant une excellente qualité audio et un API plus naturel par rapport aux autres systèmes existants.

Nouveau système PLC pour Duo


Comme de nombreux autres programmes de communication sur le Web, Duo est basé sur le projet open source WebRTC . Pour masquer les conséquences de la perte de paquets, le composant système NetEQ utilise des méthodes de traitement du signal qui analysent la parole et produisent une continuité continue - cela fonctionne bien pour les petites pertes (jusqu'à 20 ms), mais cela commence à sonner mal lorsque la perte de paquets entraîne des interruptions de communication de 60 ms ou plus. Dans de tels cas, le discours devient similaire au discours répétitif du robot - ce son caractéristique, malheureusement, est bien connu de nombreux fans des appels sur Internet.

Pour améliorer la qualité du traitement de la perte de paquets, nous avons remplacé NetEQ PLC par une version modifiée de WaveRNN. Il s'agit d'un réseau neuronal récurrent conçu pour la synthèse vocale, composé de deux parties - les réseaux neuronaux autorégressifs et conditionnés. Le réseau neuronal autorégressif est responsable de la continuité du signal et produit une structure de la parole à court et moyen terme. Au cours de son fonctionnement, chaque fragment généré dépend des résultats précédents du réseau. Un réseau de neurones conditionné affecte autorégressif de sorte qu'il produit un signal audio correspondant à des données entrantes plus lentes.

Cependant, WaveRNN, comme son prédécesseur, WaveNet, a été créé dans le but de convertir du texte en parole (text-to-speech, TTS). Étant donné que WaveRNN est un modèle TTS, il reçoit des informations sur ce qui doit être dit et comment. Un réseau de climatisation reçoit directement ces informations à l'entrée sous la forme de phonèmes constituant le mot et les caractéristiques de la prosodie (des informations non textuelles telles que la hauteur ou l'intonation). Dans un sens, un réseau climatisé est capable de «regarder vers l'avenir», puis de rediriger le réseau autorégressif vers ses sons correspondants. Dans le cas du système PLC et de la communication en temps réel, nous n'aurons pas un tel contexte.

Pour créer un système PLC fonctionnel, vous devez à la fois extraire le contexte du discours actuel (c'est-à-dire du passé) et générer un son acceptable pour sa continuation. Notre solution, WaveNetEQ, fait les deux. Il utilise un réseau autorégressif, qui continue de sonner en cas de perte de paquets, et un réseau neuronal conditionné qui simule des symptômes à long terme, tels que les caractéristiques de la voix. Le spectrogramme du signal audio précédent est envoyé à l'entrée du réseau neuronal conditionné, d'où une quantité limitée d'informations est extraite qui décrit la prosodie et le contenu du texte. Ces informations concentrées sont introduites dans un réseau neuronal autorégressif, en les combinant avec un son récent pour prédire le prochain fragment sonore.

Ceci est légèrement différent de la procédure que nous avons suivie lors de la formation WaveNetEQ. Ensuite, le réseau neuronal autorégressif a reçu un véritable échantillon sonore en entrée pour l'étape suivante, au lieu d'utiliser l'échantillon précédent. Dans un tel processus, connu sous le nom de forçage des enseignants, il est garanti que le modèle apprend des informations précieuses dès les premiers stades de la formation, lorsque ses prévisions sont de mauvaise qualité. Lorsque le modèle est entièrement formé et utilisé dans les appels audio ou vidéo, la formation imposée est utilisée uniquement pour «réchauffer» le modèle dans le premier échantillon, et après cela, il reçoit déjà sa propre sortie.


Architecture WaveNetEQ. Lors du fonctionnement d'un réseau neuronal autorégressif, nous le «réchauffons» par l'entraînement avec imposition. Après cela, elle obtient déjà sa propre sortie à l'entrée. Un spectrogramme à basse fréquence de longues sections audio est utilisé comme entrée pour un réseau de neurones climatisé.

Ce modèle est appliqué aux données audio dans un tampon de gigue Duo. Lorsque, après la perte de paquets, la communication reprend et que le signal audio réel continue d'arriver, nous combinons soigneusement les flux audio synthétique et réel. Pour composer au mieux ces deux signaux, le modèle génère un peu plus de sortie que nécessaire, puis effectue une transition en douceur de l'un à l'autre. Cela rend la transition fluide et pratiquement silencieuse.


Simulation d'événements PLC dans un flux audio sur une fenêtre coulissante de 60 ms. La ligne bleue est un véritable son, y compris les parties passées et futures de l'automate. À chaque mesure, la ligne orange représente l'audio synthétique que le système WaveNetEQ prédirait si le son était coupé le long de la ligne grise verticale.

Perte de paquets de 60 ms

[ Remarque perev.: les exemples d'audio sont si maladroits en apparence, car l'éditeur Habr ne permet pas d'incorporer des fichiers audio. Voici à quoi ressemble mp4 avec un seul son, sans image. ]

NetEQ


WaveNetEQ


NetEQ


WaveNetEQ




Perte de paquets NetEQ de 120 ms


WaveNetEQ


NetEQ


WaveNetEQ


Nous garantissons la fiabilité


L'un des facteurs importants à prendre en compte dans l'automate est la capacité du réseau neuronal à s'adapter aux signaux entrants variables, par exemple, lorsque plusieurs personnes parlent ou lorsque le bruit de fond change. Pour garantir la fiabilité du modèle à un large éventail d'utilisateurs, nous avons formé WaveNetEQ sur un ensemble de données vocales provenant de plus de 100 personnes différentes qui parlent 48 langues différentes. Cela a permis au modèle d'apprendre les caractéristiques générales de la parole humaine, et non les caractéristiques d'une langue particulière. Afin d'assurer le fonctionnement de WaveNetEQ en cas de bruit en arrière-plan, lorsque, par exemple, vous répondez à un appel dans un train ou dans un café, nous complétons les données en les mélangeant avec le bruit de fond d'une vaste base de données.

Et bien que notre modèle soit capable d'apprendre à continuer de façon plausible votre discours, il ne fonctionne que pendant de courtes périodes - il peut terminer les syllabes, mais ne peut pas prédire les mots. En cas de perte de paquets sur de longues périodes, nous diminuons progressivement le volume, et après 120 ms, le modèle ne produit que du silence. De plus, pour nous assurer que le modèle ne produit pas de fausses syllabes, nous avons examiné les échantillons sonores de WaveNetEQ et NetEQ à l'aide de l' API Google Cloud Speech-to-Textet a constaté que le modèle ne change pratiquement pas le pourcentage d'erreurs dans le texte résultant, c'est-à-dire le nombre d'erreurs qui se produisent pendant la reconnaissance vocale. Nous avons expérimenté WaveNetEQ chez Duo, et son utilisation a eu un impact positif sur la qualité des appels et l'expérience utilisateur. WaveNetEQ fonctionne déjà sur tous les appels Duo sur les téléphones Pixel 4, et maintenant nous le déployons sur d'autres téléphones.

All Articles