Si vous vous êtes lancé dans le domaine de la reconnaissance vocale automatique (« ASR »), il y a de fortes chances que vous ayez rencontré wav2vec 2.0 (« wav2vec2 ») de Meta AI Research. Il existe d'excellentes ressources techniques, dont la moindre n'est pas l' article original wav2vec2 lui-même, qui décrit le fonctionnement du modèle d'apprentissage automatique (« ML »). De plus, l'équipe Meta AI Research propose un bel aperçu de wav2vec2 sur son site Web.
Je vous encourage à y jeter un œil car il offre un joli résumé de l'article académique et puisque les illustrations du modèle wav2vec2 dans cet article proviennent de cette page. Compte tenu de ce qui précède, il ne semble pas y avoir beaucoup d’articles expliquant wav2vec2 en « anglais simple ». C’est exactement ce que j’essaie de faire avec cet article.
Cet article suppose que vous comprenez certains concepts de base du ML et que vous souhaitez comprendre comment wav2vec2 fonctionne à un niveau élevé, sans trop entrer dans les détails.
En conséquence, les sections suivantes tentent d’éviter de nombreux détails techniques au profit d’explications simples et d’analogies utiles, le cas échéant.
Cela étant dit, il est utile de savoir dès le début que wav2vec2 est composé de 3 composants principaux : le Feature Encoder , le Quantization Module et le Transformer .
Chacun sera discuté au cours du démarrage de la discussion avec quelques idées de base tout en développant des points plus complexes (mais toujours digestes). Gardez à l’esprit que wav2vec2 peut être utilisé à d’autres fins que l’ASR.
Cela étant dit, ce qui suit traite du modèle dans un contexte spécifique à l'ASR.
Au moment de son introduction en 2020, wav2vec2 offrait un nouveau cadre pour créer des systèmes ASR. Qu’y avait-il de si spécial ? Avant wav2vec2, les systèmes ASR étaient généralement formés à l'aide de données étiquetées . Autrement dit, les modèles antérieurs ont été formés sur de nombreux exemples d’audio vocal, chaque exemple étant associé à une transcription. Pour expliquer l'idée, considérons cette forme d'onde :
Il n’est pas tout à fait clair ce que représente cette forme d’onde rien qu’en la regardant. Mais si l'on vous dit que l'orateur qui a généré cet audio a prononcé les mots « hello world », vous pouvez probablement faire des suppositions intelligentes quant aux parties de la forme d'onde qui correspondent au texte qui la représente.
Vous pourriez supposer – à juste titre – que le premier segment de la forme d’onde est associé au mot « bonjour ». De même, les modèles ASR peuvent apprendre à établir des associations entre des segments de forme d'onde audio parlée et du texte écrit.
Cependant, comme le soulignent les chercheurs originaux de wav2vec2 dans leur article, « [de nombreux] systèmes de reconnaissance vocale nécessitent des milliers d'heures de transcription de la parole pour atteindre des performances acceptables, ce qui n'est pas disponible pour la grande majorité des près de 7 000 langues parlées dans le monde. »
Ainsi, les enquêteurs de wav2vec2 ont inventé un nouveau modèle dans lequel il n'est pas nécessaire d'avoir « des milliers d'heures de parole transcrite » pour entraîner le système. Ils font référence à une analogie humaine utile : les bébés n’apprennent pas à parler en entendant un mot, puis en voyant immédiatement une représentation textuelle de ce mot.
Ils apprennent les représentations de la parole en écoutant les personnes de leur environnement (par exemple leurs parents, leurs frères et sœurs, etc.). wav2vec2 apprend de manière analogue : en écoutant d'abord.
Bien entendu, la manière dont cela est réalisé est le point de discussion dans cet article. Gardez à l’esprit que wav2vec2 est globalement conçu pour accomplir 2 choses :
Découvrez ce que les unités vocales doivent recevoir des échantillons d'audio non étiquetés.
Prédisez les unités vocales correctes.
À ce stade, vous n’avez pas besoin de bien comprendre ce que signifient ces points. Ils seront expliqués ci-dessous. Gardez-les simplement à l’arrière de votre tête pour le moment.
Imaginez que vous disposez d'un énorme ensemble de données d'échantillons audio, par exemple pour un certain nombre d'anglophones. Même sans formation formelle en phonétique , vous comprendrez peut-être intuitivement que la langue anglaise est vocalisée à l'aide d'un ensemble de sons de base qui sont « enchaînés » pour former des mots, des phrases, etc.
Bien sûr, si vous êtes anglophone, vous ne pensez pas à parler de cette façon et vos vocalisations sur tout ce que vous voulez dire sont plus ou moins automatiques ! Mais le fait est que la langue anglaise parlée – et en réalité n’importe quelle langue parlée – peut être décomposée en sons plus basiques et plus discrets.
Si nous pouvions d'une manière ou d'une autre convaincre un modèle ASR d'« extraire » ces sons de base, cela nous permettrait d' encoder n'importe quel échantillon audio de langage parlé en les utilisant. C'est ce que fait wav2vec2 en pré-entraînant sur les données audio.
Le pré-entraînement, dans ce contexte, signifie que la première partie de l'entraînement du modèle est auto-supervisée dans la mesure où il n'est pas explicitement « indiqué » quels devraient être les sons de base pour un ensemble donné de données audio.
En plongeant un peu plus, le système est « nourri » d'un grand nombre d'exemples uniquement audio et, à partir de ces exemples, est capable d'apprendre un ensemble d' unités vocales de base .
Ainsi, chaque exemple audio est effectivement composé d’une combinaison de ces unités vocales ; de la même manière que vous pouvez diviser un échantillon audio parlé en une séquence de phonèmes .
Il est important de noter que les unités vocales de base apprises par wav2vec2 sont plus courtes que les phonèmes et durent 25 millisecondes.
La question qui se pose à ce stade est la suivante : comment wav2vec2 apprend-il ces unités vocales à partir de l'audio uniquement ?
Le processus d'apprentissage des unités vocales commence avec le Feature Encoder. wav2vec2 "encode l'audio vocal via un réseau neuronal convolutif multicouche."
Les réseaux de neurones convolutifs, ou CNN, sont des modèles qui nous permettent d'apprendre des fonctionnalités à partir d'une entrée donnée sans que ces fonctionnalités soient explicitement identifiées au préalable.
Chaque couche d'un CNN peut être considérée comme extrayant des fonctionnalités d'une entrée, ces fonctionnalités devenant de plus en plus complexes à mesure que vous progressez vers des couches supérieures.
Dans le cas des données audio, vous pourriez imaginer la première couche d'un CNN examinant les fenêtres d'informations audio et extrayant des caractéristiques de bas niveau, telles que des sons primitifs.
Une couche ultérieure du même CNN, exploitant les caractéristiques de niveau inférieur extraites dans les couches précédentes, coderait des caractéristiques de niveau supérieur, telles que des sons se rapprochant des phonèmes.
Suivant cette idée, wav2vec2 peut commencer à "apprendre quels échantillons d'audio non étiquetés les unités vocales doivent recevoir" en transmettant des tranches de temps de chaque exemple audio dans l'encodeur de fonctionnalités et en générant une représentation latente de chaque tranche.
Cependant, l’ensemble des représentations latentes ne représente pas des unités vocales discrètes. Ces représentations doivent être discrétisées d'une manière ou d'une autre. Ceci est accompli en transmettant la sortie du Feature Encoder à un module de quantification .
En effet, le module de quantification prend toutes les différentes représentations audio générées par le Feature Encoder et les réduit à un ensemble fini d'unités vocales. Il vaut la peine de se demander à ce stade si wav2vec2 doit être pré-entraîné sur une seule langue ou sur plusieurs langues.
La logique nous dit que la capture d'unités vocales représentant plusieurs langues plutôt qu'une seule langue sera probablement plus utile lors de la conception de systèmes ASR pouvant être utilisés dans de nombreuses langues.
À cette fin, le pré-entraînement de wav2vec2 avec une sélection d'échantillons audio multilingues permet au modèle de produire des unités vocales qui capturent en fait plusieurs langues.
Les enquêteurs de wav2vec2 ont noté la valeur de cette approche puisque « pour certaines langues, même les données [audio] sont limitées ». Leurs découvertes initiales ont déterminé "que certaines unités sont utilisées uniquement pour une langue particulière, tandis que d'autres sont utilisées dans des langues similaires et parfois même dans des langues qui ne sont pas très similaires".
L'inventaire des unités vocales est une première étape vers la possibilité de coder des échantillons audio de langue parlée. Mais ce que nous voulons vraiment réaliser, c'est former wav2vec2 sur la façon dont ces unités interagissent les unes avec les autres.
En d’autres termes, nous voulons comprendre quelles unités vocales sont susceptibles d’apparaître dans le même contexte les unes que les autres. wav2vec2 s'attaque à cette tâche via la couche Transformer.
Le Transformer permet essentiellement à wav2vec2 d'apprendre, de manière statistique, comment les unités vocales sont réparties entre les différents exemples audio. Cette compréhension facilite l'encodage des échantillons audio que le modèle « verra » après le pré-entraînement.
En fin de compte, un système ASR doit être capable de générer une transcription textuelle pour une séquence audio donnée qu’il n’a jamais « vue » auparavant. Après un pré-entraînement via les étapes décrites ci-dessus, wav2vec2 est affiné à cet effet. Cette fois, le modèle montre explicitement des exemples d'échantillons audio et leurs transcriptions associées.
À ce stade, le modèle est capable d'utiliser ce qu'il a appris au cours du pré-entraînement pour coder des échantillons audio sous forme de séquences d'unités vocales et pour mapper ces séquences d'unités vocales à des lettres individuelles du vocabulaire représentant les transcriptions (c'est-à-dire les lettres "a" à " z" dans le cas de l'anglais).
L'apprentissage lors du réglage fin complète l'entraînement du modèle wav2vec2 et lui permet de prédire le texte de nouveaux exemples audio qui ne faisaient pas partie de son apprentissage lors du réglage fin.
Bien entendu, les mécanismes de bas niveau de wav2vec2 sont bien plus complexes que ce qui est présenté ci-dessus. Cependant, je le répète, l'idée de cet article est de vous fournir une compréhension simple et conceptuelle du fonctionnement du modèle et de la manière dont il est entraîné.
wav2vec2 est un framework ML très puissant pour la création de systèmes ASR et sa variante XLS-R introduite fin 2021 a été formée sur 128 langages, fournissant ainsi une plate-forme améliorée pour la conception de modèles ASR dans plusieurs langages.
Comme mentionné dans l'introduction, il existe un certain nombre d'excellentes ressources techniques disponibles pour vous aider à en savoir plus. En particulier, vous trouverez peut-être que ceux fournis par Hugging Face sont particulièrement utiles.