Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"Architectures de classification d’audio","local":"architectures-de-classification-daudio","sections":[{"title":"Classification à l’aide de spectrogrammes","local":"classification-à-laide-de-spectrogrammes","sections":[],"depth":2},{"title":"Tout transformer peut être un classifieur","local":"tout-transformer-peut-être-un-classifieur","sections":[],"depth":2}],"depth":1}"> | |
| <link href="/docs/audio-course/pr_239/fr/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/entry/start.48d22ca3.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/scheduler.a045fce0.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/singletons.932e46dd.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/index.2447c7d9.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/paths.50fd3c21.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/entry/app.4e1ef9b0.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/preload-helper.aa8f5fd5.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/index.5135b896.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/nodes/0.00a7cda2.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/each.e59479a4.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/nodes/16.aedc6e62.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/Tip.872c1b89.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/fr/_app/immutable/chunks/MermaidChart.svelte_svelte_type_style_lang.59591d32.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{"title":"Architectures de classification d’audio","local":"architectures-de-classification-daudio","sections":[{"title":"Classification à l’aide de spectrogrammes","local":"classification-à-laide-de-spectrogrammes","sections":[],"depth":2},{"title":"Tout transformer peut être un classifieur","local":"tout-transformer-peut-être-un-classifieur","sections":[],"depth":2}],"depth":1}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"><div class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg></span> <span>Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg></button></div> </div> <h1 class="relative group"><a id="architectures-de-classification-daudio" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#architectures-de-classification-daudio"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Architectures de classification d’audio</span></h1> <p data-svelte-h="svelte-iw95ma">L’objectif de la classification d’audio est de prédire une étiquette de classe pour une entrée audio. Le modèle peut prédire une étiquette de classe unique qui couvre toute la séquence d’entrée, ou il peut prédire une étiquette pour chaque trame audio (généralement toutes les 20 millisecondes d’entrée audio), auquel cas la sortie du modèle est une séquence de probabilités d’étiquette de classe. Un exemple du premier cas est la détection des chants des oiseaux. Un exemple du second est la séparation des locuteurs où le modèle prédit quel locuteur parle à un moment donné.</p> <h2 class="relative group"><a id="classification-à-laide-de-spectrogrammes" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#classification-à-laide-de-spectrogrammes"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Classification à l’aide de spectrogrammes</span></h2> <p data-svelte-h="svelte-1hqv2ds">L’un des moyens les plus simples d’effectuer une classification audio est de prétendre qu’il s’agit d’un problème de classification d’image ! | |
| Rappelons qu’un spectrogramme est un tenseur bidimensionnel de forme <code>(frequencies, sequence length)</code>. Dans le [chapitre sur les données audio](.. /chapter1/audio_data) nous avons tracé ces spectrogrammes sous forme d’images. Devinez quoi ? Nous pouvons littéralement traiter le spectrogramme comme une image et le transmettre à un modèle de classification de type ConvNet standard tel qu’un ResNet ou ConvNext et obtenir de très bonnes prédictions. Même chose avec un modèle de type <em>transformer</em> tel que le ViT. | |
| C’est ce que fait <strong>Audio Spectrogram Transformer</strong>. Il utilise le ViT et lui transmet des spectrogrammes en entrée au lieu d’images. Grâce aux couches d’auto-attention du <em>transformer</em>, le modèle est mieux en mesure de capturer le contexte global qu’un ConvNet. | |
| Tout comme le ViT, le modèle AST divise le spectrogramme audio en une séquence de patchs d’image partiellement chevauchants de 16×16 pixels. Cette séquence de patchs est ensuite projetée dans une séquence d’enchâssement, et ceux-ci sont donnés à l’encodeur du <em>transformer</em> en entrée comme d’habitude. L’AST est un modèle de <em>transformer</em> encodeur et la sortie est donc une séquence d’états cachés, un pour chaque patch d’entrée 16×16. En plus de cela, il y a une couche de classification simple avec activation sigmoïde pour associer les états cachés aux probabilités de classification.</p> <div class="flex justify-center" data-svelte-h="svelte-12cqizh"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/ast.png" alt="The audio spectrogram transformer works on a sequence of patches taken from the spectrogram"></div> <p data-svelte-h="svelte-1hhtjqt">Image tirée du papier <a href="https://arxiv.org/pdf/2104.01778.pdf" rel="nofollow"><em>AST: Audio Spectrogram Transformer</em></a></p> <blockquote class="tip">💡 Même si ici nous prétendons que les spectrogrammes sont comme les images, il existe des différences importantes. Par exemple, déplacer le contenu d'une image vers le haut ou vers le bas ne change généralement pas la signification de ce qui se trouve dans l'image. Cependant, déplacer un spectrogramme vers le haut ou vers le bas changera les fréquences qui sont dans le son et changera complètement son caractère. Les images sont invariantes sous translation mais les spectrogrammes ne le sont pas. Traiter les spectrogrammes comme des images peut très bien fonctionner dans la pratique, mais gardez à l'esprit que ce n'est pas vraiment la même chose.</blockquote> <h2 class="relative group"><a id="tout-transformer-peut-être-un-classifieur" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#tout-transformer-peut-être-un-classifieur"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Tout transformer peut être un classifieur</span></h2> <p data-svelte-h="svelte-1l8yd6t">Dans une <a href="CTC">section précédente</a>, vous avez vu que CTC est une technique efficace pour effectuer une reconnaissance automatique de la parole à l’aide d’un <em>transformer</em> encodeur. De tels modèles sont déjà des classifieurs, prédisant les probabilités pour les étiquettes de classe à partir d’un vocabulaire de <em>tokenizer</em>. Nous pouvons prendre un modèle avec CTC et le transformer en un classifieur d’audio à usage général en changeant les étiquettes et en l’entraînant avec une fonction de perte d’entropie croisée standard au lieu de la perte CTC spéciale. | |
| Par exemple, 🤗 <em>Transformers</em> a un modèle <code>Wav2Vec2ForCTC</code> mais aussi <code>Wav2Vec2ForSequenceClassification</code> et <code>Wav2Vec2ForAudioFrameClassification</code>. Les seules différences entre les architectures de ces modèles sont la taille de la couche de classification et la fonction de perte utilisée. | |
| En fait, n’importe quel <em>transformer</em> encodeur audio peut être transformé en classifieur d’audio en ajoutant une couche de classification au-dessus de la séquence d’états cachés. Les classifieurs n’ont généralement pas besoin du décodeur du <em>transformer</em>. | |
| Pour prédire un score de classification unique pour l’ensemble de la séquence (<code>Wav2Vec2ForSequenceClassification</code>), le modèle prend la moyenne sur les états masqués et l’introduit dans la couche de classification. Le résultat est une distribution de probabilité unique. | |
| Pour créer une classification distincte pour chaque trame audio (<code>Wav2Vec2ForAudioFrameClassification</code>), le classifieur est exécuté sur la séquence d’états masqués, et donc la sortie du classifieur est également une séquence.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/fr/chapter3/classification.mdx" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg> <span data-svelte-h="svelte-zjs2n5"><span class="underline">Update</span> on GitHub</span></a> <p></p> | |
| <script> | |
| { | |
| __sveltekit_oc6cu6 = { | |
| assets: "/docs/audio-course/pr_239/fr", | |
| base: "/docs/audio-course/pr_239/fr", | |
| env: {} | |
| }; | |
| const element = document.currentScript.parentElement; | |
| const data = [null,null]; | |
| Promise.all([ | |
| import("/docs/audio-course/pr_239/fr/_app/immutable/entry/start.48d22ca3.js"), | |
| import("/docs/audio-course/pr_239/fr/_app/immutable/entry/app.4e1ef9b0.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 16], | |
| data, | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 14.8 kB
- Xet hash:
- 74f6e095b353f006e6428d488d11df22d22db32f2cd61ed1932c34663b44a796
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.