import{S as Dc,i as Yc,s as Fc,e as o,k as p,w as M,t,M as Xc,c as r,d as s,m as c,a as i,x as m,h as a,b as d,N as Sc,G as l,g as u,y as f,q as y,o as j,B as J,v as Hc}from"../../chunks/vendor-hf-doc-builder.js";import{T as Wa}from"../../chunks/Tip-hf-doc-builder.js";import{I as Ae}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as h}from"../../chunks/CodeBlock-hf-doc-builder.js";function Pc(R){let U;return{c(){U=t("L'un des enregistrements dans GTZAN est corrompu, il a donc \xE9t\xE9 supprim\xE9 du jeu de donn\xE9es. C'est pourquoi nous avons 999 exemples au lieu de 1 000.")},l(T){U=a(T,"L'un des enregistrements dans GTZAN est corrompu, il a donc \xE9t\xE9 supprim\xE9 du jeu de donn\xE9es. C'est pourquoi nous avons 999 exemples au lieu de 1 000.")},m(T,C){u(T,U,C)},d(T){T&&s(U)}}}function Lc(R){let U;return{c(){U=t("Notez comment nous avons transmis le taux d'\xE9chantillonnage de nos donn\xE9es audio \xE0 notre extracteur de caract\xE9ristiques. Il s'agit d'une bonne pratique, car l'extracteur de caract\xE9ristiques effectue une v\xE9rification sous le capot pour s'assurer que le taux d'\xE9chantillonnage de nos donn\xE9es audio correspond au taux d'\xE9chantillonnage attendu par le mod\xE8le. Si le taux d'\xE9chantillonnage de nos donn\xE9es audio ne correspondait pas au taux d'\xE9chantillonnage de notre mod\xE8le, nous aurions besoin de sur\xE9chantillonner ou de sous-\xE9chantillonner les donn\xE9es audio au taux d'\xE9chantillonnage correct.")},l(T){U=a(T,"Notez comment nous avons transmis le taux d'\xE9chantillonnage de nos donn\xE9es audio \xE0 notre extracteur de caract\xE9ristiques. Il s'agit d'une bonne pratique, car l'extracteur de caract\xE9ristiques effectue une v\xE9rification sous le capot pour s'assurer que le taux d'\xE9chantillonnage de nos donn\xE9es audio correspond au taux d'\xE9chantillonnage attendu par le mod\xE8le. Si le taux d'\xE9chantillonnage de nos donn\xE9es audio ne correspondait pas au taux d'\xE9chantillonnage de notre mod\xE8le, nous aurions besoin de sur\xE9chantillonner ou de sous-\xE9chantillonner les donn\xE9es audio au taux d'\xE9chantillonnage correct.")},m(T,C){u(T,U,C)},d(T){T&&s(U)}}}function Oc(R){let U;return{c(){U=t("Ici, nous avons d\xE9fini `push_to_hub=True` pour activer le t\xE9l\xE9chargement automatique de nos *checkpoints* *finetun\xE9s* pendant l'entra\xEEnement. Si vous ne souhaitez pas que vos *checkpoints*  soient t\xE9l\xE9charg\xE9s sur le *Hub*, vous pouvez d\xE9finir cette option sur `False`.")},l(T){U=a(T,"Ici, nous avons d\xE9fini `push_to_hub=True` pour activer le t\xE9l\xE9chargement automatique de nos *checkpoints* *finetun\xE9s* pendant l'entra\xEEnement. Si vous ne souhaitez pas que vos *checkpoints*  soient t\xE9l\xE9charg\xE9s sur le *Hub*, vous pouvez d\xE9finir cette option sur `False`.")},m(T,C){u(T,U,C)},d(T){T&&s(U)}}}function Kc(R){let U;return{c(){U=t(`Selon votre GPU, il est possible que vous rencontriez une erreur CUDA \`"out-of-memory"\` lorsque vous commencez \xE0 vous entra\xEEner.
Dans ce cas, vous pouvez r\xE9duire la taille du batch de mani\xE8re incr\xE9mentielle par des facteurs de 2 et utiliser ['gradient_accumulation_steps'](https://huggingface.co/docs/transentra\xEEners/main_classes/trainer#transentra\xEEners.TrainingArguments.gradient_accumulation_steps) pour compenser.`)},l(T){U=a(T,`Selon votre GPU, il est possible que vous rencontriez une erreur CUDA \`"out-of-memory"\` lorsque vous commencez \xE0 vous entra\xEEner.
Dans ce cas, vous pouvez r\xE9duire la taille du batch de mani\xE8re incr\xE9mentielle par des facteurs de 2 et utiliser ['gradient_accumulation_steps'](https://huggingface.co/docs/transentra\xEEners/main_classes/trainer#transentra\xEEners.TrainingArguments.gradient_accumulation_steps) pour compenser.`)},m(T,C){u(T,U,C)},d(T){T&&s(U)}}}function ed(R){let U,T,C,ne,Ps,ge,Qa,Ls,xa,Qn,z,Ga,Os,Ra,za,Ks,Va,Sa,xn,P,te,el,Ee,Da,sl,Ya,Gn,q,Fa,qe,Xa,Ha,ll,Pa,La,nl,Oa,Ka,tl,eo,so,Rn,_e,zn,Is,al,lo,Vn,$e,Sn,ae,Dn,oe,no,ol,to,ao,Yn,Ne,Fn,Cs,rl,oo,Xn,Ze,Hn,As,ro,Pn,ke,Ln,gs,il,io,On,Be,Kn,B,uo,ul,po,co,pl,Mo,mo,cl,fo,yo,et,We,st,Es,dl,jo,lt,Qe,nt,re,Jo,Ml,ho,Uo,tt,xe,at,Z,Iu,ot,ie,To,ml,wo,vo,rt,L,ue,fl,Ge,bo,yl,Io,it,A,Co,Re,Ao,go,ze,Eo,qo,jl,_o,$o,Jl,No,Zo,Ve,ko,Bo,ut,k,Cu,pt,O,pe,hl,Se,Wo,Ul,Qo,ct,K,ce,Tl,De,xo,wl,Go,dt,_,Ro,vl,zo,Vo,bl,So,Do,Il,Yo,Fo,Cl,Xo,Ho,Mt,Ye,mt,qs,Po,ft,Fe,yt,_s,Al,Lo,jt,Xe,Jt,W,Oo,gl,Ko,er,El,sr,lr,ql,nr,tr,ht,He,Ut,V,ar,_l,or,rr,$l,ir,ur,Tt,Pe,wt,$s,Nl,pr,vt,Le,bt,de,cr,Zl,dr,Mr,It,Oe,Ct,Ns,kl,mr,At,Ke,gt,Zs,fr,Et,es,qt,ks,Bl,yr,_t,ss,$t,g,jr,Wl,Jr,hr,Ql,Ur,Tr,xl,wr,vr,ls,Gl,br,Ir,Rl,Cr,Ar,Nt,Me,Zt,S,gr,zl,Er,qr,Vl,_r,$r,kt,ns,Bt,me,Nr,Sl,Zr,kr,Wt,ts,Qt,Bs,Dl,Br,xt,as,Gt,w,Wr,Yl,Qr,xr,Fl,Gr,Rr,Xl,zr,Vr,Hl,Sr,Dr,Pl,Yr,Fr,Ll,Xr,Hr,Ol,Pr,Lr,Kl,Or,Kr,Rt,os,zt,Q,ei,en,si,li,sn,ni,ti,ln,ai,oi,Vt,rs,St,Ws,nn,ri,Dt,is,Yt,Qs,ii,Ft,ee,fe,tn,us,ui,an,pi,Xt,ye,ci,on,di,Mi,Ht,xs,mi,Pt,Gs,fi,Lt,Rs,yi,Ot,ps,Kt,zs,rn,ji,ea,cs,sa,Vs,Ji,la,ds,na,je,ta,Je,hi,un,Ui,Ti,aa,Ms,oa,he,wi,pn,vi,bi,ra,ms,ia,Ue,ua,Ss,cn,Ii,pa,fs,ca,$,Ci,dn,Ai,gi,Te,Ei,Mn,qi,_i,mn,$i,Ni,fn,Zi,ki,da,ys,Ma,D,Bi,yn,Wi,Qi,jn,xi,Gi,ma,js,fa,Y,Ri,Jn,zi,Vi,Js,hn,Si,Di,ya,se,we,Un,hs,Yi,Tn,Fi,ja,b,Xi,wn,Hi,Pi,vn,Li,Oi,bn,Ki,eu,In,su,lu,Cn,nu,tu,Us,au,ou,Ja,Ts,ha,le,ve,An,ws,ru,gn,iu,Ua,v,uu,En,pu,cu,qn,du,Mu,_n,mu,fu,vs,yu,ju,$n,Ju,hu,Nn,Uu,Tu,Zn,wu,vu,Ta;return ge=new Ae({}),Ee=new Ae({}),_e=new h({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZ3R6YW4lMjAlM0QlMjBsb2FkX2RhdGFzZXQoJTIybWFyc3lhcyUyRmd0emFuJTIyJTJDJTIwJTIyYWxsJTIyKSUwQWd0emFu",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

gtzan = load_dataset(<span class="hljs-string">&quot;marsyas/gtzan&quot;</span>, <span class="hljs-string">&quot;all&quot;</span>)
gtzan`}}),$e=new h({props:{code:"RGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidmaWxlJyUyQyUyMCdhdWRpbyclMkMlMjAnZ2VucmUnJTVEJTJDJTBBJTIwJTIwJTIwJTIwbnVtX3Jvd3MlM0ElMjA5OTklMEElN0Qp",highlighted:`<span class="hljs-built_in">Dataset</span>({
    features: <span class="hljs-selector-attr">[<span class="hljs-string">&#x27;file&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;genre&#x27;</span>]</span>,
    num_rows: <span class="hljs-number">999</span>
})`}}),ae=new Wa({props:{warning:!0,$$slots:{default:[Pc]},$$scope:{ctx:R}}}),Ne=new h({props:{code:"Z3R6YW4lMjAlM0QlMjBndHphbiU1QiUyMnRyYWluJTIyJTVELnRyYWluX3Rlc3Rfc3BsaXQoc2VlZCUzRDQyJTJDJTIwc2h1ZmZsZSUzRFRydWUlMkMlMjB0ZXN0X3NpemUlM0QwLjEpJTBBZ3R6YW4=",highlighted:`gtzan = gtzan[<span class="hljs-string">&quot;train&quot;</span>].train_test_split(seed=<span class="hljs-number">42</span>, shuffle=<span class="hljs-literal">True</span>, test_size=<span class="hljs-number">0.1</span>)
gtzan`}}),Ze=new h({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2ZpbGUnJTJDJTIwJ2F1ZGlvJyUyQyUyMCdnZW5yZSclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDg5OSUwQSUyMCUyMCUyMCUyMCU3RCklMEElMjAlMjAlMjAlMjB0ZXN0JTNBJTIwRGF0YXNldCglN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QidmaWxlJyUyQyUyMCdhdWRpbyclMkMlMjAnZ2VucmUnJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3Jvd3MlM0ElMjAxMDAlMEElMjAlMjAlMjAlMjAlN0QpJTBBJTdEKQ==",highlighted:`DatasetDict({
    train: <span class="hljs-built_in">Dataset</span>({
        features: [<span class="hljs-string">&#x27;file&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;genre&#x27;</span>],
        num_rows: <span class="hljs-number">899</span>
    })
    test: <span class="hljs-built_in">Dataset</span>({
        features: [<span class="hljs-string">&#x27;file&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;genre&#x27;</span>],
        num_rows: <span class="hljs-number">100</span>
    })
})`}}),ke=new h({props:{code:"Z3R6YW4lNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQ=",highlighted:'gtzan[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]'}}),Be=new h({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIyZmlsZSUyMiUzQSUyMCUyMn4lMkYuY2FjaGUlMkZodWdnaW5nZmFjZSUyRmRhdGFzZXRzJTJGZG93bmxvYWRzJTJGZXh0cmFjdGVkJTJGZmEwNmNlNDYxMzBkMzQ2NzY4MzEwMGFjYTk0NWQ2ZGVhZmI2NDIzMTU3NjVhNzg0NDU2ZTFkODFjOTQ3MTVhOCUyRmdlbnJlcyUyRnBvcCUyRnBvcC4wMDA5OC53YXYlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJhdWRpbyUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBhdGglMjIlM0ElMjAlMjJ+JTJGLmNhY2hlJTJGaHVnZ2luZ2ZhY2UlMkZkYXRhc2V0cyUyRmRvd25sb2FkcyUyRmV4dHJhY3RlZCUyRmZhMDZjZTQ2MTMwZDM0Njc2ODMxMDBhY2E5NDVkNmRlYWZiNjQyMzE1NzY1YTc4NDQ1NmUxZDgxYzk0NzE1YTglMkZnZW5yZXMlMkZwb3AlMkZwb3AuMDAwOTgud2F2JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXJyYXklMjIlM0ElMjBhcnJheSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjEwNzIwODI1JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMC4xNjEyMjQzNyUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDAuMjg1ODU4MTUlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuLi4lMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtMC4yMjkyNDgwNSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC0wLjIwNjI5ODgzJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLTAuMTEzMzQyMjklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkdHlwZSUzRGZsb2F0MzIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyc2FtcGxpbmdfcmF0ZSUyMiUzQSUyMDIyMDUwJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIyZ2VucmUlMjIlM0ElMjA3JTJDJTBBJTdE",highlighted:`{
    <span class="hljs-string">&quot;file&quot;</span>: <span class="hljs-string">&quot;~/.cache/huggingface/datasets/downloads/extracted/fa06ce46130d3467683100aca945d6deafb642315765a784456e1d81c94715a8/genres/pop/pop.00098.wav&quot;</span>,
    <span class="hljs-string">&quot;audio&quot;</span>: {
        <span class="hljs-string">&quot;path&quot;</span>: <span class="hljs-string">&quot;~/.cache/huggingface/datasets/downloads/extracted/fa06ce46130d3467683100aca945d6deafb642315765a784456e1d81c94715a8/genres/pop/pop.00098.wav&quot;</span>,
        <span class="hljs-string">&quot;array&quot;</span>: array(
            [
                <span class="hljs-number">0.10720825</span>,
                <span class="hljs-number">0.16122437</span>,
                <span class="hljs-number">0.28585815</span>,
                ...,
                <span class="hljs-number">-0.22924805</span>,
                <span class="hljs-number">-0.20629883</span>,
                <span class="hljs-number">-0.11334229</span>,
            ],
            d<span class="hljs-keyword">type</span>=float32,
        ),
        <span class="hljs-string">&quot;sampling_rate&quot;</span>: <span class="hljs-number">22050</span>,
    },
    <span class="hljs-string">&quot;genre&quot;</span>: <span class="hljs-number">7</span>,
}`}}),We=new h({props:{code:"aWQybGFiZWxfZm4lMjAlM0QlMjBndHphbiU1QiUyMnRyYWluJTIyJTVELmZlYXR1cmVzJTVCJTIyZ2VucmUlMjIlNUQuaW50MnN0ciUwQWlkMmxhYmVsX2ZuKGd0emFuJTVCJTIydHJhaW4lMjIlNUQlNUIwJTVEJTVCJTIyZ2VucmUlMjIlNUQp",highlighted:`id2label_fn = gtzan[<span class="hljs-string">&quot;train&quot;</span>].features[<span class="hljs-string">&quot;genre&quot;</span>].int2str
id2label_fn(gtzan[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>][<span class="hljs-string">&quot;genre&quot;</span>])`}}),Qe=new h({props:{code:"J3BvcCc=",highlighted:'<span class="hljs-symbol">&#x27;pop</span>&#x27;'}}),xe=new h({props:{code:"ZGVmJTIwZ2VuZXJhdGVfYXVkaW8oKSUzQSUwQSUyMCUyMCUyMCUyMGV4YW1wbGUlMjAlM0QlMjBndHphbiU1QiUyMnRyYWluJTIyJTVELnNodWZmbGUoKSU1QjAlNUQlMEElMjAlMjAlMjAlMjBhdWRpbyUyMCUzRCUyMGV4YW1wbGUlNUIlMjJhdWRpbyUyMiU1RCUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdWRpbyU1QiUyMnNhbXBsaW5nX3JhdGUlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBhdWRpbyU1QiUyMmFycmF5JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwKSUyQyUyMGlkMmxhYmVsX2ZuKGV4YW1wbGUlNUIlMjJnZW5yZSUyMiU1RCklMEElMEElMEF3aXRoJTIwZ3IuQmxvY2tzKCklMjBhcyUyMGRlbW8lM0ElMEElMjAlMjAlMjAlMjB3aXRoJTIwZ3IuQ29sdW1uKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmb3IlMjBfJTIwaW4lMjByYW5nZSg0KSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF1ZGlvJTJDJTIwbGFiZWwlMjAlM0QlMjBnZW5lcmF0ZV9hdWRpbygpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwb3V0cHV0JTIwJTNEJTIwZ3IuQXVkaW8oYXVkaW8lMkMlMjBsYWJlbCUzRGxhYmVsKSUwQSUwQWRlbW8ubGF1bmNoKGRlYnVnJTNEVHJ1ZSk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">generate_audio</span>():
    example = gtzan[<span class="hljs-string">&quot;train&quot;</span>].shuffle()[<span class="hljs-number">0</span>]
    audio = example[<span class="hljs-string">&quot;audio&quot;</span>]
    <span class="hljs-keyword">return</span> (
        audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>],
        audio[<span class="hljs-string">&quot;array&quot;</span>],
    ), id2label_fn(example[<span class="hljs-string">&quot;genre&quot;</span>])


<span class="hljs-keyword">with</span> gr.Blocks() <span class="hljs-keyword">as</span> demo:
    <span class="hljs-keyword">with</span> gr.Column():
        <span class="hljs-keyword">for</span> _ <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">4</span>):
            audio, label = generate_audio()
            output = gr.Audio(audio, label=label)

demo.launch(debug=<span class="hljs-literal">True</span>)`}}),Ge=new Ae({}),Se=new Ae({}),De=new Ae({}),Ye=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9GZWF0dXJlRXh0cmFjdG9yJTBBJTBBbW9kZWxfaWQlMjAlM0QlMjAlMjJudHUtc3BtbCUyRmRpc3RpbGh1YmVydCUyMiUwQWZlYXR1cmVfZXh0cmFjdG9yJTIwJTNEJTIwQXV0b0ZlYXR1cmVFeHRyYWN0b3IuZnJvbV9wcmV0cmFpbmVkKCUwQSUyMCUyMCUyMCUyMG1vZGVsX2lkJTJDJTIwZG9fbm9ybWFsaXplJTNEVHJ1ZSUyQyUyMHJldHVybl9hdHRlbnRpb25fbWFzayUzRFRydWUlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoFeatureExtractor

model_id = <span class="hljs-string">&quot;ntu-spml/distilhubert&quot;</span>
feature_extractor = AutoFeatureExtractor.from_pretrained(
    model_id, do_normalize=<span class="hljs-literal">True</span>, return_attention_mask=<span class="hljs-literal">True</span>
)`}}),Fe=new h({props:{code:"c2FtcGxpbmdfcmF0ZSUyMCUzRCUyMGZlYXR1cmVfZXh0cmFjdG9yLnNhbXBsaW5nX3JhdGUlMEFzYW1wbGluZ19yYXRl",highlighted:`sampling_rate = feature_extractor.sampling_rate
sampling_rate`}}),Xe=new h({props:{code:"MTYwMDA=",highlighted:"16000"}}),He=new h({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwQXVkaW8lMEElMEFndHphbiUyMCUzRCUyMGd0emFuLmNhc3RfY29sdW1uKCUyMmF1ZGlvJTIyJTJDJTIwQXVkaW8oc2FtcGxpbmdfcmF0ZSUzRHNhbXBsaW5nX3JhdGUpKQ==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Audio

gtzan = gtzan.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=sampling_rate))`}}),Pe=new h({props:{code:"Z3R6YW4lNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQ=",highlighted:'gtzan[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]'}}),Le=new h({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIyZmlsZSUyMiUzQSUyMCUyMn4lMkYuY2FjaGUlMkZodWdnaW5nZmFjZSUyRmRhdGFzZXRzJTJGZG93bmxvYWRzJTJGZXh0cmFjdGVkJTJGZmEwNmNlNDYxMzBkMzQ2NzY4MzEwMGFjYTk0NWQ2ZGVhZmI2NDIzMTU3NjVhNzg0NDU2ZTFkODFjOTQ3MTVhOCUyRmdlbnJlcyUyRnBvcCUyRnBvcC4wMDA5OC53YXYlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJhdWRpbyUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBhdGglMjIlM0ElMjAlMjJ+JTJGLmNhY2hlJTJGaHVnZ2luZ2ZhY2UlMkZkYXRhc2V0cyUyRmRvd25sb2FkcyUyRmV4dHJhY3RlZCUyRmZhMDZjZTQ2MTMwZDM0Njc2ODMxMDBhY2E5NDVkNmRlYWZiNjQyMzE1NzY1YTc4NDQ1NmUxZDgxYzk0NzE1YTglMkZnZW5yZXMlMkZwb3AlMkZwb3AuMDAwOTgud2F2JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXJyYXklMjIlM0ElMjBhcnJheSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjA4NzM1MDklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAwLjIwMTgzMzg0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMC40NzkwODY3JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLTAuMTg3NDMxNzglMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtMC4yMzI5NDQwMSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC0wLjEzNTE3NDI3JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZHR5cGUlM0RmbG9hdDMyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnNhbXBsaW5nX3JhdGUlMjIlM0ElMjAxNjAwMCUyQyUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMmdlbnJlJTIyJTNBJTIwNyUyQyUwQSU3RA==",highlighted:`{
    <span class="hljs-string">&quot;file&quot;</span>: <span class="hljs-string">&quot;~/.cache/huggingface/datasets/downloads/extracted/fa06ce46130d3467683100aca945d6deafb642315765a784456e1d81c94715a8/genres/pop/pop.00098.wav&quot;</span>,
    <span class="hljs-string">&quot;audio&quot;</span>: {
        <span class="hljs-string">&quot;path&quot;</span>: <span class="hljs-string">&quot;~/.cache/huggingface/datasets/downloads/extracted/fa06ce46130d3467683100aca945d6deafb642315765a784456e1d81c94715a8/genres/pop/pop.00098.wav&quot;</span>,
        <span class="hljs-string">&quot;array&quot;</span>: array(
            [
                <span class="hljs-number">0.0873509</span>,
                <span class="hljs-number">0.20183384</span>,
                <span class="hljs-number">0.4790867</span>,
                ...,
                <span class="hljs-number">-0.18743178</span>,
                <span class="hljs-number">-0.23294401</span>,
                <span class="hljs-number">-0.13517427</span>,
            ],
            d<span class="hljs-keyword">type</span>=float32,
        ),
        <span class="hljs-string">&quot;sampling_rate&quot;</span>: <span class="hljs-number">16000</span>,
    },
    <span class="hljs-string">&quot;genre&quot;</span>: <span class="hljs-number">7</span>,
}`}}),Oe=new h({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBc2FtcGxlJTIwJTNEJTIwZ3R6YW4lNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQlNUIlMjJhdWRpbyUyMiU1RCUwQSUwQXByaW50KGYlMjJNZWFuJTNBJTIwJTdCbnAubWVhbihzYW1wbGUlNUInYXJyYXknJTVEKSUzQS4zJTdEJTJDJTIwVmFyaWFuY2UlM0ElMjAlN0JucC52YXIoc2FtcGxlJTVCJ2FycmF5JyU1RCklM0EuMyU3RCUyMik=",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

sample = gtzan[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>][<span class="hljs-string">&quot;audio&quot;</span>]

<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;Mean: <span class="hljs-subst">{np.mean(sample[<span class="hljs-string">&#x27;array&#x27;</span>]):<span class="hljs-number">.3</span>}</span>, Variance: <span class="hljs-subst">{np.var(sample[<span class="hljs-string">&#x27;array&#x27;</span>]):<span class="hljs-number">.3</span>}</span>&quot;</span>)`}}),Ke=new h({props:{code:"TWVhbiUzQSUyMDAuMDAwMTg1JTJDJTIwVmFyaWFuY2UlM0ElMjAwLjA0OTM=",highlighted:'<span class="hljs-attribute">Mean</span>: <span class="hljs-number">0</span>.<span class="hljs-number">000185</span>, Variance: <span class="hljs-number">0</span>.<span class="hljs-number">0493</span>'}}),es=new h({props:{code:"aW5wdXRzJTIwJTNEJTIwZmVhdHVyZV9leHRyYWN0b3Ioc2FtcGxlJTVCJTIyYXJyYXklMjIlNUQlMkMlMjBzYW1wbGluZ19yYXRlJTNEc2FtcGxlJTVCJTIyc2FtcGxpbmdfcmF0ZSUyMiU1RCklMEElMEFwcmludChmJTIyaW5wdXRzJTIwa2V5cyUzQSUyMCU3Qmxpc3QoaW5wdXRzLmtleXMoKSklN0QlMjIpJTBBJTBBcHJpbnQoJTBBJTIwJTIwJTIwJTIwZiUyMk1lYW4lM0ElMjAlN0JucC5tZWFuKGlucHV0cyU1QidpbnB1dF92YWx1ZXMnJTVEKSUzQS4zJTdEJTJDJTIwVmFyaWFuY2UlM0ElMjAlN0JucC52YXIoaW5wdXRzJTVCJ2lucHV0X3ZhbHVlcyclNUQpJTNBLjMlN0QlMjIlMEEp",highlighted:`inputs = feature_extractor(sample[<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=sample[<span class="hljs-string">&quot;sampling_rate&quot;</span>])

<span class="hljs-built_in">print</span>(<span class="hljs-string">f&quot;inputs keys: <span class="hljs-subst">{<span class="hljs-built_in">list</span>(inputs.keys())}</span>&quot;</span>)

<span class="hljs-built_in">print</span>(
    <span class="hljs-string">f&quot;Mean: <span class="hljs-subst">{np.mean(inputs[<span class="hljs-string">&#x27;input_values&#x27;</span>]):<span class="hljs-number">.3</span>}</span>, Variance: <span class="hljs-subst">{np.var(inputs[<span class="hljs-string">&#x27;input_values&#x27;</span>]):<span class="hljs-number">.3</span>}</span>&quot;</span>
)`}}),ss=new h({props:{code:"aW5wdXRzJTIwa2V5cyUzQSUyMCU1QidpbnB1dF92YWx1ZXMnJTJDJTIwJ2F0dGVudGlvbl9tYXNrJyU1RCUwQU1lYW4lM0ElMjAtNC41M2UtMDklMkMlMjBWYXJpYW5jZSUzQSUyMDEuMA==",highlighted:`<span class="hljs-attribute">inputs</span> keys:<span class="hljs-meta"> [&#x27;input_values&#x27;, &#x27;attention_mask&#x27;]</span>
<span class="hljs-attribute">Mean</span>: -<span class="hljs-number">4</span>.<span class="hljs-number">53</span>e-<span class="hljs-number">09</span>, Variance: <span class="hljs-number">1</span>.<span class="hljs-number">0</span>`}}),Me=new Wa({props:{warning:!0,$$slots:{default:[Lc]},$$scope:{ctx:R}}}),ns=new h({props:{code:"bWF4X2R1cmF0aW9uJTIwJTNEJTIwMzAuMCUwQSUwQSUwQWRlZiUyMHByZXByb2Nlc3NfZnVuY3Rpb24oZXhhbXBsZXMpJTNBJTBBJTIwJTIwJTIwJTIwYXVkaW9fYXJyYXlzJTIwJTNEJTIwJTVCeCU1QiUyMmFycmF5JTIyJTVEJTIwZm9yJTIweCUyMGluJTIwZXhhbXBsZXMlNUIlMjJhdWRpbyUyMiU1RCU1RCUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMGZlYXR1cmVfZXh0cmFjdG9yKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF1ZGlvX2FycmF5cyUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNhbXBsaW5nX3JhdGUlM0RmZWF0dXJlX2V4dHJhY3Rvci5zYW1wbGluZ19yYXRlJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbWF4X2xlbmd0aCUzRGludChmZWF0dXJlX2V4dHJhY3Rvci5zYW1wbGluZ19yYXRlJTIwKiUyMG1heF9kdXJhdGlvbiklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB0cnVuY2F0aW9uJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybl9hdHRlbnRpb25fbWFzayUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwaW5wdXRz",highlighted:`max_duration = <span class="hljs-number">30.0</span>


<span class="hljs-keyword">def</span> <span class="hljs-title function_">preprocess_function</span>(<span class="hljs-params">examples</span>):
    audio_arrays = [x[<span class="hljs-string">&quot;array&quot;</span>] <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> examples[<span class="hljs-string">&quot;audio&quot;</span>]]
    inputs = feature_extractor(
        audio_arrays,
        sampling_rate=feature_extractor.sampling_rate,
        max_length=<span class="hljs-built_in">int</span>(feature_extractor.sampling_rate * max_duration),
        truncation=<span class="hljs-literal">True</span>,
        return_attention_mask=<span class="hljs-literal">True</span>,
    )
    <span class="hljs-keyword">return</span> inputs`}}),ts=new h({props:{code:"Z3R6YW5fZW5jb2RlZCUyMCUzRCUyMGd0emFuLm1hcCglMEElMjAlMjAlMjAlMjBwcmVwcm9jZXNzX2Z1bmN0aW9uJTJDJTIwcmVtb3ZlX2NvbHVtbnMlM0QlNUIlMjJhdWRpbyUyMiUyQyUyMCUyMmZpbGUlMjIlNUQlMkMlMjBiYXRjaGVkJTNEVHJ1ZSUyQyUyMG51bV9wcm9jJTNEMSUwQSklMEFndHphbl9lbmNvZGVk",highlighted:`gtzan_encoded = gtzan.<span class="hljs-built_in">map</span>(
    preprocess_function, remove_columns=[<span class="hljs-string">&quot;audio&quot;</span>, <span class="hljs-string">&quot;file&quot;</span>], batched=<span class="hljs-literal">True</span>, num_proc=<span class="hljs-number">1</span>
)
gtzan_encoded`}}),as=new h({props:{code:"RGF0YXNldERpY3QoJTdCJTBBJTIwJTIwJTIwJTIwdHJhaW4lM0ElMjBEYXRhc2V0KCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZlYXR1cmVzJTNBJTIwJTVCJ2dlbnJlJyUyQyUyMCdpbnB1dF92YWx1ZXMnJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbnVtX3Jvd3MlM0ElMjA4OTklMEElMjAlMjAlMjAlMjAlN0QpJTBBJTIwJTIwJTIwJTIwdGVzdCUzQSUyMERhdGFzZXQoJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZmVhdHVyZXMlM0ElMjAlNUInZ2VucmUnJTJDJTIwJ2lucHV0X3ZhbHVlcyclNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBudW1fcm93cyUzQSUyMDEwMCUwQSUyMCUyMCUyMCUyMCU3RCklMEElN0Qp",highlighted:`DatasetDict({
    train: <span class="hljs-built_in">Dataset</span>({
        features: [<span class="hljs-string">&#x27;genre&#x27;</span>, <span class="hljs-string">&#x27;input_values&#x27;</span>],
        num_rows: <span class="hljs-number">899</span>
    })
    test: <span class="hljs-built_in">Dataset</span>({
        features: [<span class="hljs-string">&#x27;genre&#x27;</span>, <span class="hljs-string">&#x27;input_values&#x27;</span>],
        num_rows: <span class="hljs-number">100</span>
    })
})`}}),os=new h({props:{code:"Z3R6YW5fZW5jb2RlZCUyMCUzRCUyMGd0emFuX2VuY29kZWQucmVuYW1lX2NvbHVtbiglMjJnZW5yZSUyMiUyQyUyMCUyMmxhYmVsJTIyKQ==",highlighted:'gtzan_encoded = gtzan_encoded.rename_column(<span class="hljs-string">&quot;genre&quot;</span>, <span class="hljs-string">&quot;label&quot;</span>)'}}),rs=new h({props:{code:"aWQybGFiZWwlMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjBzdHIoaSklM0ElMjBpZDJsYWJlbF9mbihpKSUwQSUyMCUyMCUyMCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKGxlbihndHphbl9lbmNvZGVkJTVCJTIydHJhaW4lMjIlNUQuZmVhdHVyZXMlNUIlMjJsYWJlbCUyMiU1RC5uYW1lcykpJTBBJTdEJTBBbGFiZWwyaWQlMjAlM0QlMjAlN0J2JTNBJTIwayUyMGZvciUyMGslMkMlMjB2JTIwaW4lMjBpZDJsYWJlbC5pdGVtcygpJTdEJTBBJTBBaWQybGFiZWwlNUIlMjI3JTIyJTVE",highlighted:`id2label = {
    <span class="hljs-built_in">str</span>(i): id2label_fn(i)
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(gtzan_encoded[<span class="hljs-string">&quot;train&quot;</span>].features[<span class="hljs-string">&quot;label&quot;</span>].names))
}
label2id = {v: k <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> id2label.items()}

id2label[<span class="hljs-string">&quot;7&quot;</span>]`}}),is=new h({props:{code:"J3BvcCc=",highlighted:'<span class="hljs-symbol">&#x27;pop</span>&#x27;'}}),us=new Ae({}),ps=new h({props:{code:"JTBBTm91cyUyMHZvdXMlMjBjb25zZWlsbG9ucyUyMGZvcnRlbWVudCUyMGRlJTIwdCVDMyVBOWwlQzMlQTljaGFyZ2VyJTIwbGVzJTIwKmNoZWNrcG9pbnRzKiUyMGR1JTIwbW9kJUMzJUE4bGUlMjBkaXJlY3RlbWVudCUyMHN1ciUyMGxlJTIwJTVCKkh1YiolNUQoaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRiklMjBwZW5kYW50JTIwbCdlbnRyYSVDMyVBRW5lbWVudC4lMEFMZSUyMCpIdWIqJTIwZm91cm5pdCUyMCUzQSUwQS0lMjBVbiUyMGNvbnRyJUMzJUI0bGUlMjBkZSUyMHZlcnNpb24lMjBpbnQlQzMlQTlnciVDMyVBOSUyMCUzQSUyMHZvdXMlMjBwb3V2ZXolMjAlQzMlQUF0cmUlMjBzJUMzJUJCciUyMHF1J2F1Y3VuJTIwKmNoZWNrcG9pbnQqJTIwZHUlMjBtb2QlQzMlQThsZSUyMG4nZXN0JTIwcGVyZHUlMjBwZW5kYW50JTIwbCVFMiU4MCU5OWVudHJhJUMzJUFFbmVtZW50LiUwQS0lMjBUZW5zb3Jib2FyZCUyMCUzQSUyMHN1aXZleiUyMGxlcyUyMG0lQzMlQTl0cmlxdWVzJTIwaW1wb3J0YW50ZXMlMjBhdSUyMGNvdXJzJTIwZGUlMjBsJUUyJTgwJTk5ZW50cmElQzMlQUVuZW1lbnQuJTBBLSUyMExhJTIwY2FydGUlMjBkdSUyMG1vZCVDMyVBOGxlJTIwJTNBJTIwZG9jdW1lbnRhbnQlMjBjZSUyMHF1ZSUyMGZhaXQlMjB1biUyMG1vZCVDMyVBOGxlJTIwZXQlMjBzZXMlMjBjYXMlMjBkJ3V0aWxpc2F0aW9uJTIwcHIlQzMlQTl2dXMuJTBBLSUyMENvbW11bmF1dCVDMyVBOSUyMCUzQSUyMHVuJTIwbW95ZW4lMjBmYWNpbGUlMjBkZSUyMHBhcnRhZ2VyJTIwZXQlMjBkZSUyMGNvbGxhYm9yZXIlMjBhdmVjJTIwbGElMjBjb21tdW5hdXQlQzMlQTklMjAhJTIwJTBBTGllciUyMGxlJTIwKm5vdGVib29rKiUyMGF1JTIwKkh1YiolMjBlc3QlMjBzaW1wbGUuJTIwSWwlMjBzdWZmaXQlMjBkJ2VudHJlciUyMHZvdHJlJTIwKnRva2VuKiUyMGQnYXV0aGVudGlmaWNhdGlvbiUyMGF1JTIwKkh1YiolMjBsb3JzcXVlJTIwdm91cyUyMHklMjAlQzMlQUF0ZXMlMjBpbnZpdCVDMyVBOS4lMEFWb3VzJTIwcG91dmV6JTIwdHJvdXZlciUyMHZvdHJlJTIwKnRva2VuKiUyMGQnYXV0aGVudGlmaWNhdGlvbiUyMCU1QmljaSU1RChodHRwcyUzQSUyRiUyRmh1Z2dpbmdmYWNlLmNvJTJGc2V0dGluZ3MlMkZ0b2tlbnMpJTIwZXQlMjBsZSUyMHNhaXNpciUyMGRhbnMlMEElMEElNjAlNjAlNjBweXRob24lMEFmcm9tJTIwaHVnZ2luZ2ZhY2VfaHViJTIwaW1wb3J0JTIwbm90ZWJvb2tfbG9naW4lMEElMEFub3RlYm9va19sb2dpbigp",highlighted:`
Nous vous conseillons fortement <span class="hljs-keyword">de</span> t\xE9<span class="hljs-keyword">l</span>\xE9charger les *checkpoints* du mod\xE8le directement sur le [*Hub*](https:<span class="hljs-comment">//huggingface.co/) pendant l&#x27;entra\xEEnement.</span>
Le *Hub* fournit :
- Un contr\xF4le <span class="hljs-keyword">de</span> <span class="hljs-keyword">version</span> int\xE9<span class="hljs-keyword">gr</span>\xE9 : vous pouvez \xEAtre s\xFBr <span class="hljs-keyword">qu</span>&#x27;aucun *checkpoint* du mod\xE8le <span class="hljs-keyword">n</span>&#x27;<span class="hljs-keyword">est</span> perdu pendant <span class="hljs-keyword">l</span>\u2019entra\xEEnement.
- Tensorboard : suivez les <span class="hljs-keyword">m</span>\xE9triques importantes au cours <span class="hljs-keyword">de</span> <span class="hljs-keyword">l</span>\u2019entra\xEEnement.
- <span class="hljs-keyword">La</span> carte du mod\xE8le : documentant ce <span class="hljs-keyword">que</span> fait un mod\xE8le et ses cas <span class="hljs-keyword">d</span>&#x27;utilisation <span class="hljs-keyword">pr</span>\xE9vus.
- Communaut\xE9 : un moyen facile <span class="hljs-keyword">de</span> partager et <span class="hljs-keyword">de</span> collaborer avec <span class="hljs-keyword">la</span> communaut\xE9 ! 
Lier le *notebook* au *Hub* <span class="hljs-keyword">est</span> simple. Il suffit <span class="hljs-keyword">d</span>&#x27;entrer votre *<span class="hljs-keyword">token</span>* <span class="hljs-keyword">d</span>&#x27;authentification au *Hub* lorsque vous y \xEA<span class="hljs-keyword">tes</span> invit\xE9.
Vous pouvez trouver votre *<span class="hljs-keyword">token</span>* <span class="hljs-keyword">d</span>&#x27;authentification [ici](https:<span class="hljs-comment">//huggingface.co/settings/tokens) et le saisir dans</span>

\`\`\`python
from huggingface_hub import notebook_login

notebook_login()`}}),cs=new h({props:{code:"TG9naW4lMjBzdWNjZXNzZnVsJTBBWW91ciUyMHRva2VuJTIwaGFzJTIwYmVlbiUyMHNhdmVkJTIwdG8lMjAlMkZyb290JTJGLmh1Z2dpbmdmYWNlJTJGdG9rZW4=",highlighted:`Login successful
Your token has been saved to /root/.huggingface/token`}}),ds=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTBBJTBBbW9kZWxfbmFtZSUyMCUzRCUyMG1vZGVsX2lkLnNwbGl0KCUyMiUyRiUyMiklNUItMSU1RCUwQWJhdGNoX3NpemUlMjAlM0QlMjA4JTBBZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTIwJTNEJTIwMSUwQW51bV90cmFpbl9lcG9jaHMlMjAlM0QlMjAxMCUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBmJTIyJTdCbW9kZWxfbmFtZSU3RC1maW5ldHVuZWQtZ3R6YW4lMjIlMkMlMEElMjAlMjAlMjAlMjBldmFsdWF0aW9uX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3N0cmF0ZWd5JTNEJTIyZXBvY2glMjIlMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNENWUtNSUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfdHJhaW5fYmF0Y2hfc2l6ZSUzRGJhdGNoX3NpemUlMkMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9hY2N1bXVsYXRpb25fc3RlcHMlM0RncmFkaWVudF9hY2N1bXVsYXRpb25fc3RlcHMlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX2V2YWxfYmF0Y2hfc2l6ZSUzRGJhdGNoX3NpemUlMkMlMEElMjAlMjAlMjAlMjBudW1fdHJhaW5fZXBvY2hzJTNEbnVtX3RyYWluX2Vwb2NocyUyQyUwQSUyMCUyMCUyMCUyMHdhcm11cF9yYXRpbyUzRDAuMSUyQyUwQSUyMCUyMCUyMCUyMGxvZ2dpbmdfc3RlcHMlM0Q1JTJDJTBBJTIwJTIwJTIwJTIwbG9hZF9iZXN0X21vZGVsX2F0X2VuZCUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBtZXRyaWNfZm9yX2Jlc3RfbW9kZWwlM0QlMjJhY2N1cmFjeSUyMiUyQyUwQSUyMCUyMCUyMCUyMGZwMTYlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwcHVzaF90b19odWIlM0RUcnVlJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments

model_name = model_id.split(<span class="hljs-string">&quot;/&quot;</span>)[-<span class="hljs-number">1</span>]
batch_size = <span class="hljs-number">8</span>
gradient_accumulation_steps = <span class="hljs-number">1</span>
num_train_epochs = <span class="hljs-number">10</span>

training_args = TrainingArguments(
    <span class="hljs-string">f&quot;<span class="hljs-subst">{model_name}</span>-finetuned-gtzan&quot;</span>,
    evaluation_strategy=<span class="hljs-string">&quot;epoch&quot;</span>,
    save_strategy=<span class="hljs-string">&quot;epoch&quot;</span>,
    learning_rate=<span class="hljs-number">5e-5</span>,
    per_device_train_batch_size=batch_size,
    gradient_accumulation_steps=gradient_accumulation_steps,
    per_device_eval_batch_size=batch_size,
    num_train_epochs=num_train_epochs,
    warmup_ratio=<span class="hljs-number">0.1</span>,
    logging_steps=<span class="hljs-number">5</span>,
    load_best_model_at_end=<span class="hljs-literal">True</span>,
    metric_for_best_model=<span class="hljs-string">&quot;accuracy&quot;</span>,
    fp16=<span class="hljs-literal">True</span>,
    push_to_hub=<span class="hljs-literal">True</span>,
)`}}),je=new Wa({props:{warning:!0,$$slots:{default:[Oc]},$$scope:{ctx:R}}}),Ms=new h({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKSUwQSUwQSUwQWRlZiUyMGNvbXB1dGVfbWV0cmljcyhldmFsX3ByZWQpJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyQ29tcHV0ZXMlMjBhY2N1cmFjeSUyMG9uJTIwYSUyMGJhdGNoJTIwb2YlMjBwcmVkaWN0aW9ucyUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMHByZWRpY3Rpb25zJTIwJTNEJTIwbnAuYXJnbWF4KGV2YWxfcHJlZC5wcmVkaWN0aW9ucyUyQyUyMGF4aXMlM0QxKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMG1ldHJpYy5jb21wdXRlKHByZWRpY3Rpb25zJTNEcHJlZGljdGlvbnMlMkMlMjByZWZlcmVuY2VzJTNEZXZhbF9wcmVkLmxhYmVsX2lkcyk=",highlighted:`<span class="hljs-keyword">import</span> evaluate

metric = evaluate.load(<span class="hljs-string">&quot;accuracy&quot;</span>)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>):
    <span class="hljs-string">&quot;&quot;&quot;Computes accuracy on a batch of predictions&quot;&quot;&quot;</span>
    predictions = np.argmax(eval_pred.predictions, axis=<span class="hljs-number">1</span>)
    <span class="hljs-keyword">return</span> metric.compute(predictions=predictions, references=eval_pred.label_ids)`}}),ms=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluZXIlMEElMEF0cmFpbmVyJTIwJTNEJTIwVHJhaW5lciglMEElMjAlMjAlMjAlMjBtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMHRyYWluaW5nX2FyZ3MlMkMlMEElMjAlMjAlMjAlMjB0cmFpbl9kYXRhc2V0JTNEZ3R6YW5fZW5jb2RlZCU1QiUyMnRyYWluJTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9kYXRhc2V0JTNEZ3R6YW5fZW5jb2RlZCU1QiUyMnRlc3QlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjB0b2tlbml6ZXIlM0RmZWF0dXJlX2V4dHJhY3RvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSklMEElMEF0cmFpbmVyLnRyYWluKCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Trainer

trainer = Trainer(
    model,
    training_args,
    train_dataset=gtzan_encoded[<span class="hljs-string">&quot;train&quot;</span>],
    eval_dataset=gtzan_encoded[<span class="hljs-string">&quot;test&quot;</span>],
    tokenizer=feature_extractor,
    compute_metrics=compute_metrics,
)

trainer.train()`}}),Ue=new Wa({props:{warning:!0,$$slots:{default:[Kc]},$$scope:{ctx:R}}}),fs=new h({props:{code:"JTdDJTIwVHJhaW5pbmclMjBMb3NzJTIwJTdDJTIwRXBvY2glMjAlN0MlMjBTdGVwJTIwJTdDJTIwVmFsaWRhdGlvbiUyMExvc3MlMjAlN0MlMjBBY2N1cmFjeSUyMCU3QyUwQSU3QyUzQS0tLS0tLS0tLS0tLS0lM0ElN0MlM0EtLS0tLSUzQSU3QyUzQS0tLS0lM0ElN0MlM0EtLS0tLS0tLS0tLS0tLS0lM0ElN0MlM0EtLS0tLS0tLSUzQSU3QyUwQSU3QyUyMDEuNzI5NyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDEuMCUyMCUyMCUyMCU3QyUyMDExMyUyMCUyMCU3QyUyMDEuODAxMSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuNDQlMjAlMjAlMjAlMjAlMjAlN0MlMEElN0MlMjAxLjI0JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwMi4wJTIwJTIwJTIwJTdDJTIwMjI2JTIwJTIwJTdDJTIwMS4zMDQ1JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwMC42NCUyMCUyMCUyMCUyMCUyMCU3QyUwQSU3QyUyMDAuOTgwNSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDMuMCUyMCUyMCUyMCU3QyUyMDMzOSUyMCUyMCU3QyUyMDAuOTg4OCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuNyUyMCUyMCUyMCUyMCUyMCUyMCU3QyUwQSU3QyUyMDAuNjg1MyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDQuMCUyMCUyMCUyMCU3QyUyMDQ1MiUyMCUyMCU3QyUyMDAuNzUwOCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuNzklMjAlMjAlMjAlMjAlMjAlN0MlMEElN0MlMjAwLjQ1MDIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjA1LjAlMjAlMjAlMjAlN0MlMjA1NjUlMjAlMjAlN0MlMjAwLjYyMjQlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjAwLjgxJTIwJTIwJTIwJTIwJTIwJTdDJTBBJTdDJTIwMC4zMDE1JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwNi4wJTIwJTIwJTIwJTdDJTIwNjc4JTIwJTIwJTdDJTIwMC41NDExJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwMC44MyUyMCUyMCUyMCUyMCUyMCU3QyUwQSU3QyUyMDAuMjI0NCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDcuMCUyMCUyMCUyMCU3QyUyMDc5MSUyMCUyMCU3QyUyMDAuNjI5MyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuNzglMjAlMjAlMjAlMjAlMjAlN0MlMEElN0MlMjAwLjMxMDglMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjA4LjAlMjAlMjAlMjAlN0MlMjA5MDQlMjAlMjAlN0MlMjAwLjU4NTclMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjAwLjgxJTIwJTIwJTIwJTIwJTIwJTdDJTBBJTdDJTIwMC4xNjQ0JTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwOS4wJTIwJTIwJTIwJTdDJTIwMTAxNyUyMCU3QyUyMDAuNTM1NSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuODMlMjAlMjAlMjAlMjAlMjAlN0MlMEElN0MlMjAwLjExOTglMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0MlMjAxMC4wJTIwJTIwJTdDJTIwMTEzMCUyMCU3QyUyMDAuNTcxNiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QyUyMDAuODIlMjAlMjAlMjAlMjAlMjAlN0M=",highlighted:`|<span class="hljs-string"> Training Loss </span>|<span class="hljs-string"> Epoch </span>|<span class="hljs-string"> Step </span>|<span class="hljs-string"> Validation Loss </span>|<span class="hljs-string"> Accuracy </span>|
|<span class="hljs-string">:-------------:</span>|<span class="hljs-string">:-----:</span>|<span class="hljs-string">:----:</span>|<span class="hljs-string">:---------------:</span>|<span class="hljs-string">:--------:</span>|
|<span class="hljs-string"> 1.7297        </span>|<span class="hljs-string"> 1.0   </span>|<span class="hljs-string"> 113  </span>|<span class="hljs-string"> 1.8011          </span>|<span class="hljs-string"> 0.44     </span>|
|<span class="hljs-string"> 1.24          </span>|<span class="hljs-string"> 2.0   </span>|<span class="hljs-string"> 226  </span>|<span class="hljs-string"> 1.3045          </span>|<span class="hljs-string"> 0.64     </span>|
|<span class="hljs-string"> 0.9805        </span>|<span class="hljs-string"> 3.0   </span>|<span class="hljs-string"> 339  </span>|<span class="hljs-string"> 0.9888          </span>|<span class="hljs-string"> 0.7      </span>|
|<span class="hljs-string"> 0.6853        </span>|<span class="hljs-string"> 4.0   </span>|<span class="hljs-string"> 452  </span>|<span class="hljs-string"> 0.7508          </span>|<span class="hljs-string"> 0.79     </span>|
|<span class="hljs-string"> 0.4502        </span>|<span class="hljs-string"> 5.0   </span>|<span class="hljs-string"> 565  </span>|<span class="hljs-string"> 0.6224          </span>|<span class="hljs-string"> 0.81     </span>|
|<span class="hljs-string"> 0.3015        </span>|<span class="hljs-string"> 6.0   </span>|<span class="hljs-string"> 678  </span>|<span class="hljs-string"> 0.5411          </span>|<span class="hljs-string"> 0.83     </span>|
|<span class="hljs-string"> 0.2244        </span>|<span class="hljs-string"> 7.0   </span>|<span class="hljs-string"> 791  </span>|<span class="hljs-string"> 0.6293          </span>|<span class="hljs-string"> 0.78     </span>|
|<span class="hljs-string"> 0.3108        </span>|<span class="hljs-string"> 8.0   </span>|<span class="hljs-string"> 904  </span>|<span class="hljs-string"> 0.5857          </span>|<span class="hljs-string"> 0.81     </span>|
|<span class="hljs-string"> 0.1644        </span>|<span class="hljs-string"> 9.0   </span>|<span class="hljs-string"> 1017 </span>|<span class="hljs-string"> 0.5355          </span>|<span class="hljs-string"> 0.83     </span>|
|<span class="hljs-string"> 0.1198        </span>|<span class="hljs-string"> 10.0  </span>|<span class="hljs-string"> 1130 </span>|<span class="hljs-string"> 0.5716          </span>|<span class="hljs-string"> 0.82     </span>|`}}),ys=new h({props:{code:"a3dhcmdzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIyZGF0YXNldF90YWdzJTIyJTNBJTIwJTIybWFyc3lhcyUyRmd0emFuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyZGF0YXNldCUyMiUzQSUyMCUyMkdUWkFOJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIybW9kZWxfbmFtZSUyMiUzQSUyMGYlMjIlN0Jtb2RlbF9uYW1lJTdELWZpbmV0dW5lZC1ndHphbiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMmZpbmV0dW5lZF9mcm9tJTIyJTNBJTIwbW9kZWxfaWQlMkMlMEElMjAlMjAlMjAlMjAlMjJ0YXNrcyUyMiUzQSUyMCUyMmF1ZGlvLWNsYXNzaWZpY2F0aW9uJTIyJTJDJTBBJTdE",highlighted:`kwargs = {
    <span class="hljs-string">&quot;dataset_tags&quot;</span>: <span class="hljs-string">&quot;marsyas/gtzan&quot;</span>,
    <span class="hljs-string">&quot;dataset&quot;</span>: <span class="hljs-string">&quot;GTZAN&quot;</span>,
    <span class="hljs-string">&quot;model_name&quot;</span>: <span class="hljs-string">f&quot;<span class="hljs-subst">{model_name}</span>-finetuned-gtzan&quot;</span>,
    <span class="hljs-string">&quot;finetuned_from&quot;</span>: model_id,
    <span class="hljs-string">&quot;tasks&quot;</span>: <span class="hljs-string">&quot;audio-classification&quot;</span>,
}`}}),js=new h({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1YigqKmt3YXJncyk=",highlighted:"trainer.push_to_hub(**kwargs)"}}),hs=new Ae({}),Ts=new h({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBcGlwZSUyMCUzRCUyMHBpcGVsaW5lKCUwQSUyMCUyMCUyMCUyMCUyMmF1ZGlvLWNsYXNzaWZpY2F0aW9uJTIyJTJDJTIwbW9kZWwlM0QlMjJzYW5jaGl0LWdhbmRoaSUyRmRpc3RpbGh1YmVydC1maW5ldHVuZWQtZ3R6YW4lMjIlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

pipe = pipeline(
    <span class="hljs-string">&quot;audio-classification&quot;</span>, model=<span class="hljs-string">&quot;sanchit-gandhi/distilhubert-finetuned-gtzan&quot;</span>
)`}}),ws=new Ae({}),{c(){U=o("meta"),T=p(),C=o("h1"),ne=o("a"),Ps=o("span"),M(ge.$$.fragment),Qa=p(),Ls=o("span"),xa=t("Finetuner un mod\xE8le de classification musicale"),Qn=p(),z=o("p"),Ga=t("Dans cette section, nous pr\xE9senterons un guide \xE9tape par \xE9tape sur le "),Os=o("em"),Ra=t("finetuning"),za=t(" d\u2019un "),Ks=o("em"),Va=t("transformer"),Sa=t(` encodeur pour la classification de la musique.
Nous utiliserons un mod\xE8le l\xE9ger pour cette d\xE9monstration et un jeu de donn\xE9es assez petit, ce qui signifie que le code est ex\xE9cutable de bout en bout sur n\u2019importe quel GPU grand public, y compris le GPU T4 16GB fourni gratuitement par Google Colab. La section comprend divers conseils que vous pouvez essayer si vous avez un GPU plus petit et rencontrez des probl\xE8mes de m\xE9moire en cours de route.`),xn=p(),P=o("h2"),te=o("a"),el=o("span"),M(Ee.$$.fragment),Da=p(),sl=o("span"),Ya=t("Le de donn\xE9es"),Gn=p(),q=o("p"),Fa=t("Pour entra\xEEner notre mod\xE8le, nous utiliserons le jeu de donn\xE9es "),qe=o("a"),Xa=t("GTZAN"),Ha=t(", qui est un jeu de donn\xE9es populaire de 1 000 chansons pour la classification des genres musicaux. Chaque chanson dure 30 secondes et fait partie de l\u2019un des 10 genres de musique disponible, allant du disco au m\xE9tal. Nous pouvons obtenir les fichiers audio et leurs \xE9tiquettes correspondantes \xE0 partir du "),ll=o("em"),Pa=t("Hub"),La=t(" avec la fonction "),nl=o("code"),Oa=t("load_dataset()"),Ka=t("  de \u{1F917} "),tl=o("em"),eo=t("Datasets"),so=t(" :"),Rn=p(),M(_e.$$.fragment),zn=p(),Is=o("p"),al=o("strong"),lo=t("Sortie :"),Vn=p(),M($e.$$.fragment),Sn=p(),M(ae.$$.fragment),Dn=p(),oe=o("p"),no=t("GTZAN ne fournit pas de jeu de validation pr\xE9d\xE9fini, nous devrons donc en cr\xE9er un nous-m\xEAmes. Le jeu de donn\xE9es est \xE9quilibr\xE9 entre les genres, nous pouvons donc utiliser la m\xE9thode "),ol=o("code"),to=t("train_test_split()"),ao=t(" pour cr\xE9er rapidement une r\xE9partition 90/10 comme suit :"),Yn=p(),M(Ne.$$.fragment),Fn=p(),Cs=o("p"),rl=o("strong"),oo=t("Sortie :"),Xn=p(),M(Ze.$$.fragment),Hn=p(),As=o("p"),ro=t("Maintenant que nous avons nos jeux d\u2019entra\xEEnement et de validation, jetons un coup d\u2019\u0153il \xE0 l\u2019un des fichiers audio :"),Pn=p(),M(ke.$$.fragment),Ln=p(),gs=o("p"),il=o("strong"),io=t("Sortie :"),On=p(),M(Be.$$.fragment),Kn=p(),B=o("p"),uo=t("Comme nous l\u2019avons vu dans [Unit\xE9 1](.. /chapter1/audio"),ul=o("em"),po=t("data), les fichiers audio sont repr\xE9sent\xE9s sous forme de tableaux NumPy \xE0 1 dimension, o\xF9 la valeur du tableau repr\xE9sente l\u2019amplitude \xE0 ce pas de temps. Pour ces chansons, la fr\xE9quence d\u2019\xE9chantillonnage est de 22 050 Hz, ce qui signifie qu\u2019il y a 22 050 valeurs d\u2019amplitude \xE9chantillonn\xE9es par seconde. Nous devrons garder cela \xE0 l\u2019esprit lorsque nous utiliserons un mod\xE8le pr\xE9-entra\xEEn\xE9 avec un taux d\u2019\xE9chantillonnage diff\xE9rent, en convertissant nous-m\xEAmes les taux d\u2019\xE9chantillonnage pour nous assurer qu\u2019ils correspondent. Nous pouvons \xE9galement voir que le genre est repr\xE9sent\xE9 sous la forme d\u2019un entier, ou _class label"),co=t(", qui est le format dans lequel le mod\xE8le fera ses pr\xE9dictions. Utilisons la m\xE9thode "),pl=o("code"),Mo=t("int2str()"),mo=t(" de la caract\xE9ristique "),cl=o("code"),fo=t("genre"),yo=t(" pour associer ces entiers \xE0 des noms lisibles par l\u2019homme :"),et=p(),M(We.$$.fragment),st=p(),Es=o("p"),dl=o("strong"),jo=t("Sortie :"),lt=p(),M(Qe.$$.fragment),nt=p(),re=o("p"),Jo=t("Cette \xE9tiquette semble correcte, car elle correspond au nom de fichier du fichier audio. \xC9coutons maintenant quelques exemples suppl\xE9mentaires en utilisant Gradio pour cr\xE9er une interface simple avec l\u2019API "),Ml=o("code"),ho=t("Blocks"),Uo=t(" :"),tt=p(),M(xe.$$.fragment),at=p(),Z=o("iframe"),ot=p(),ie=o("p"),To=t("\xC0 partir de ces \xE9chantillons, nous pouvons certainement entendre la diff\xE9rence entre les genres, mais un "),ml=o("em"),wo=t("transformer"),vo=t(" peut-il le faire aussi ? Entra\xEEnons un mod\xE8le pour le d\xE9couvrir ! Tout d\u2019abord, nous devrons trouver un mod\xE8le pr\xE9-entra\xEEn\xE9 appropri\xE9 pour cette t\xE2che. Voyons comment nous pouvons le faire."),rt=p(),L=o("h2"),ue=o("a"),fl=o("span"),M(Ge.$$.fragment),bo=p(),yl=o("span"),Io=t("Choisir un mod\xE8le pr\xE9-entra\xEEn\xE9 pour la classification audio"),it=p(),A=o("p"),Co=t("Pour commencer, choisissons un mod\xE8le pr\xE9-entra\xEEn\xE9 appropri\xE9 pour la classification audio. Dans ce domaine, le pr\xE9-entra\xEEnement est g\xE9n\xE9ralement effectu\xE9e sur de grandes quantit\xE9s de donn\xE9es audio non \xE9tiquet\xE9es, en utilisant des jeux de donn\xE9es tels que "),Re=o("a"),Ao=t("LibriSpeech"),go=t(" et "),ze=o("a"),Eo=t("Voxpopuli"),qo=t(". La meilleure fa\xE7on de trouver ces mod\xE8les sur le "),jl=o("em"),_o=t("Hub"),$o=t(" est d\u2019utiliser le filtre \xAB classification audio \xBB, comme d\xE9crit dans la section pr\xE9c\xE9dente. Bien que des mod\xE8les comme Wav2Vec2 et HuBERT soient tr\xE8s populaires, nous utiliserons un mod\xE8le appel\xE9 "),Jl=o("em"),No=t("DistilHuBERT"),Zo=t(". Il s\u2019agit d\u2019une version beaucoup plus petite (ou distill\xE9e) du mod\xE8le "),Ve=o("a"),ko=t("HuBERT"),Bo=t(", qui s\u2019entra\xEEne environ 73% plus vite, tout en pr\xE9servant la plupart des performances."),ut=p(),k=o("iframe"),pt=p(),O=o("h2"),pe=o("a"),hl=o("span"),M(Se.$$.fragment),Wo=p(),Ul=o("span"),Qo=t("De l'audio aux caract\xE9ristiques d'apprentissage automatique"),ct=p(),K=o("h2"),ce=o("a"),Tl=o("span"),M(De.$$.fragment),xo=p(),wl=o("span"),Go=t("Pr\xE9traitement des donn\xE9es"),dt=p(),_=o("p"),Ro=t("\xC0 l\u2019instar de la tokenisation en NLP, les mod\xE8les audio et vocaux n\xE9cessitent que l\u2019entr\xE9e soit encod\xE9e dans un format que le mod\xE8le peut traiter. Dans \u{1F917} "),vl=o("em"),zo=t("Transformers"),Vo=t(", la conversion de l\u2019audio au format d\u2019entr\xE9e est g\xE9r\xE9e par l\u2019extracteur de caract\xE9ristique du mod\xE8le. \u{1F917} "),bl=o("em"),So=t("Transformers"),Do=t(" fournit une classe pratique "),Il=o("code"),Yo=t("AutoFeatureExtractor"),Fo=t(" qui peut s\xE9lectionner automatiquement le bon extracteur de caract\xE9ristiques pour un mod\xE8le donn\xE9. Pour voir comment nous pouvons traiter nos fichiers audio, commen\xE7ons par instancier l\u2019extracteur de caract\xE9ristiques pour DistilHuBERT \xE0 partir du "),Cl=o("em"),Xo=t("checkpoint"),Ho=t(" pr\xE9-entra\xEEn\xE9 :"),Mt=p(),M(Ye.$$.fragment),mt=p(),qs=o("p"),Po=t("Comme le taux d\u2019\xE9chantillonnage du mod\xE8le et de le jeu de donn\xE9es est diff\xE9rent, nous devons r\xE9\xE9chantillonner le fichier audio \xE0 16 000 Hz avant de le transmettre \xE0 l\u2019extracteur de caract\xE9ristiques. Nous pouvons le faire en obtenant d\u2019abord la fr\xE9quence d\u2019\xE9chantillonnage du mod\xE8le \xE0 partir de l\u2019extracteur de caract\xE9ristiques :"),ft=p(),M(Fe.$$.fragment),yt=p(),_s=o("p"),Al=o("strong"),Lo=t("Sortie :"),jt=p(),M(Xe.$$.fragment),Jt=p(),W=o("p"),Oo=t("Ensuite, nous r\xE9\xE9chantillonnons le jeu de donn\xE9es \xE0 l\u2019aide de la m\xE9thode "),gl=o("code"),Ko=t("cast_column()"),er=t(" et de la fonction "),El=o("code"),sr=t("Audio"),lr=t("  de \u{1F917} "),ql=o("em"),nr=t("Datasets"),tr=t(" :"),ht=p(),M(He.$$.fragment),Ut=p(),V=o("p"),ar=t("Nous pouvons maintenant v\xE9rifier le premier \xE9chantillon de l\u2019\xE9chantillon d\u2019entra\xEEnement de notre jeu de donn\xE9es pour v\xE9rifier qu\u2019il est bien \xE0 16 000 Hz. \u{1F917} "),_l=o("em"),or=t("Datasets"),rr=t(" r\xE9\xE9chantillonnent le fichier audio "),$l=o("em"),ir=t("\xE0 la vol\xE9e"),ur=t(" lorsque nous chargeons chaque \xE9chantillon audio :"),Tt=p(),M(Pe.$$.fragment),wt=p(),$s=o("p"),Nl=o("strong"),pr=t("Sortie :"),vt=p(),M(Le.$$.fragment),bt=p(),de=o("p"),cr=t(`Bien. Nous pouvons voir que le taux d\u2019\xE9chantillonnage a \xE9t\xE9 sous-\xE9chantillonn\xE9 \xE0 16kHz. Les valeurs de tableau sont \xE9galement diff\xE9rentes car nous n\u2019avons maintenant qu\u2019environ une valeur d\u2019amplitude pour chaque 1,5 pas que nous avions auparavant.
Une caract\xE9ristique de conception des mod\xE8les de type Wav2Vec2 et HuBERT est qu\u2019ils acceptent un tableau de flottants correspondant \xE0 la forme d\u2019onde brute du signal vocal comme entr\xE9e. Cela contraste avec d\u2019autres mod\xE8les, comme Whisper, o\xF9 nous pr\xE9traitons la forme d\u2019onde audio brute au format spectrogramme.
Nous avons mentionn\xE9 que les donn\xE9es audio sont repr\xE9sent\xE9es comme un tableau \xE0 1 dimension, elles sont donc d\xE9j\xE0 dans le bon format pour \xEAtre lues par le mod\xE8le (un ensemble d\u2019entr\xE9es continues \xE0 pas de temps discrets). Alors, que fait exactement l\u2019extracteur de caract\xE9ristiques ?
Eh bien, les donn\xE9es audio sont dans le bon format, mais nous n\u2019avons impos\xE9 aucune restriction sur les valeurs qu\u2019elles peuvent prendre. Pour que notre mod\xE8le fonctionne de mani\xE8re optimale, nous voulons conserver toutes les entr\xE9es dans la m\xEAme plage dynamique. Cela va nous assurer d\u2019obtenir une plage similaire d\u2019activations et de gradients pour nos \xE9chantillons, ce qui nous aidera \xE0 la stabilit\xE9 et \xE0 la convergence pendant l\u2019entra\xEEnement.
Pour ce faire, nous `),Zl=o("em"),dr=t("normalisons"),Mr=t(` nos donn\xE9es audio, en redimensionnant chaque \xE9chantillon \xE0 une moyenne nulle et une variance unitaire pour avoir des variables centr\xE9es r\xE9duites. C\u2019est exactement cette normalisation des caract\xE9ristiques que notre extracteur de caract\xE9ristiques effectue.
Nous pouvons jeter un coup d\u2019\u0153il \xE0 l\u2019extracteur de caract\xE9ristiques en fonctionnement en l\u2019appliquant \xE0 notre premier \xE9chantillon audio. Tout d\u2019abord, calculons la moyenne et la variance de nos donn\xE9es audio brutes :`),It=p(),M(Oe.$$.fragment),Ct=p(),Ns=o("p"),kl=o("strong"),mr=t("Sortie :"),At=p(),M(Ke.$$.fragment),gt=p(),Zs=o("p"),fr=t("Nous pouvons voir que la moyenne est d\xE9j\xE0 proche de 0, mais la variance est plus proche de 0,05. Si la variance de l\u2019\xE9chantillon \xE9tait plus grande, cela pourrait causer des probl\xE8mes \xE0 notre mod\xE8le, car la plage dynamique des donn\xE9es audio serait tr\xE8s petite et donc difficile \xE0 s\xE9parer. Appliquons l\u2019extracteur de caract\xE9ristiques et voyons \xE0 quoi ressemblent les sorties:"),Et=p(),M(es.$$.fragment),qt=p(),ks=o("p"),Bl=o("strong"),yr=t("Sortie :"),_t=p(),M(ss.$$.fragment),$t=p(),g=o("p"),jr=t("Notre extracteur de caract\xE9ristiques renvoie un dictionnaire de deux tableaux : "),Wl=o("code"),Jr=t("input_values"),hr=t(" et "),Ql=o("code"),Ur=t("attention_mask"),Tr=t(". Les "),xl=o("code"),wr=t("input_values"),vr=t(" sont les entr\xE9es audio pr\xE9trait\xE9es que nous passerons au mod\xE8le HuBERT. L\u2019"),ls=o("a"),Gl=o("code"),br=t("attention_mask"),Ir=t(" est utilis\xE9 lorsque nous traitons un "),Rl=o("em"),Cr=t("batch"),Ar=t(` d\u2019entr\xE9es audio \xE0 la fois. Il est utilis\xE9 pour indiquer au mod\xE8le o\xF9 nous avons des entr\xE9es rembourr\xE9es de diff\xE9rentes longueurs.
Nous pouvons voir que la valeur moyenne est maintenant beaucoup plus proche de 0, et la variance est \xE0 1 ! C\u2019est exactement la forme sous laquelle nous voulons que nos \xE9chantillons audio soient avant de les passer dans notre HuBERT.`),Nt=p(),M(Me.$$.fragment),Zt=p(),S=o("p"),gr=t("Alors maintenant que nous savons comment traiter nos fichiers audio r\xE9\xE9chantillonn\xE9s, la derni\xE8re chose \xE0 faire est de d\xE9finir une fonction que nous pouvons appliquer \xE0 tous les exemples du jeu de donn\xE9es. \xC9tant donn\xE9 que nous nous attendons \xE0 des \xE9chantillons de 30 secondes, nous tronquerons aussi les \xE9chantillons plus longs en utilisant les arguments "),zl=o("code"),Er=t("max_length"),qr=t(" et "),Vl=o("code"),_r=t("truncation"),$r=t(" de l\u2019extracteur de caract\xE9ristiques comme suit :"),kt=p(),M(ns.$$.fragment),Bt=p(),me=o("p"),Nr=t("Une fois cette fonction d\xE9finie, nous pouvons maintenant l\u2019appliquer au jeu de donn\xE9es \xE0 l\u2019aide de la m\xE9thode "),Sl=o("code"),Zr=t("map()"),kr=t("."),Wt=p(),M(ts.$$.fragment),Qt=p(),Bs=o("p"),Dl=o("strong"),Br=t("Sortie :"),xt=p(),M(as.$$.fragment),Gt=p(),w=o("p"),Wr=t("Pour simplifier l\u2019entra\xEEnement, nous avons supprim\xE9 les colonnes "),Yl=o("code"),Qr=t("audio"),xr=t(" et "),Fl=o("code"),Gr=t("file"),Rr=t(" du jeu de donn\xE9es. La colonne "),Xl=o("code"),zr=t("input_values"),Vr=t(" contient les fichiers audio encod\xE9s, la colonne "),Hl=o("code"),Sr=t("attention_mask"),Dr=t(" est un masque binaire de valeurs 0/1 qui indique o\xF9 nous avons rempli l\u2019entr\xE9e audio, et la colonne "),Pl=o("code"),Yr=t("genre"),Fr=t(" contient les \xE9tiquettes (ou cibles) correspondantes. Pour permettre au "),Ll=o("code"),Xr=t("Trainer"),Hr=t(" de traiter les \xE9tiquettes de classe, nous devons renommer la colonne "),Ol=o("code"),Pr=t("genre"),Lr=t(" en "),Kl=o("code"),Or=t("label"),Kr=t(" :"),Rt=p(),M(os.$$.fragment),zt=p(),Q=o("p"),ei=t("Enfin, nous devons obtenir les associations d\u2019\xE9tiquettes \xE0 partir du jeu de donn\xE9es. L\u2019association nous m\xE8nera des identifiants entiers (par exemple "),en=o("code"),si=t("7"),li=t(") aux \xE9tiquettes de classe lisibles par l\u2019homme (par exemple "),sn=o("code"),ni=t("pop"),ti=t(") et inversement. Ce faisant, nous pouvons convertir la pr\xE9diction de notre mod\xE8le dans un format lisible par l\u2019homme, ce qui nous permet d\u2019utiliser le mod\xE8le dans n\u2019importe quelle application en aval. Nous pouvons le faire en utilisant la m\xE9thode "),ln=o("code"),ai=t("int2str()"),oi=t(" comme suit:"),Vt=p(),M(rs.$$.fragment),St=p(),Ws=o("p"),nn=o("strong"),ri=t("Sortie :"),Dt=p(),M(is.$$.fragment),Yt=p(),Qs=o("p"),ii=t("Nous avons maintenant un jeu de donn\xE9es pr\xEAt pour l\u2019entra\xEEnement. Voyons comment nous pouvons entra\xEEner un mod\xE8le sur ce jeu de donn\xE9es."),Ft=p(),ee=o("h2"),fe=o("a"),tn=o("span"),M(us.$$.fragment),ui=p(),an=o("span"),pi=t("Finetuner le mod\xE8le"),Xt=p(),ye=o("p"),ci=t("Pour affiner le mod\xE8le, nous utiliserons la classe \u2018Trainer\u2019 de \u{1F917} "),on=o("em"),di=t("Transformers"),Mi=t(". Comme nous l\u2019avons vu dans d\u2019autres chapitres, le \xAB Trainer \xBB est une API de haut niveau con\xE7ue pour g\xE9rer les sc\xE9narios de formation les plus courants. Dans ce cas, nous utiliserons le \u2018Trainer\u2019 pour affiner le mod\xE8le sur GTZAN. Pour ce faire, nous devons d\u2019abord charger un mod\xE8le pour cette t\xE2che. Nous pouvons le faire en utilisant la classe \u2018AutoModelForAudioClassification\u2019, qui ajoutera automatiquement la t\xEAte de classification appropri\xE9e \xE0 notre mod\xE8le DistilHuBERT pr\xE9entra\xEEn\xE9. Allons de l\u2019avant et instancions le mod\xE8le :"),Ht=p(),xs=o("p"),mi=t(`'''python
from transformers import AutoModelForAudioClassification`),Pt=p(),Gs=o("p"),fi=t("num_labels = len(id2label)"),Lt=p(),Rs=o("p"),yi=t(`mod\xE8le = AutoModelForAudioClassification.from_pretrained(
model_id,
num_labels=num_labels,
label2id=label2id,
id2label=id2label,
)`),Ot=p(),M(ps.$$.fragment),Kt=p(),zs=o("p"),rn=o("strong"),ji=t("Sortie :"),ea=p(),M(cs.$$.fragment),sa=p(),Vs=o("p"),Ji=t("L\u2019\xE9tape suivante consiste \xE0 d\xE9finir les arguments d\u2019apprentissage, y compris la taille du batch, les \xE9tapes d\u2019accumulation du gradient, le nombre d\u2019\xE9poques d\u2019apprentissage et le taux d\u2019apprentissage :"),la=p(),M(ds.$$.fragment),na=p(),M(je.$$.fragment),ta=p(),Je=o("p"),hi=t("La derni\xE8re chose que nous devons faire est de d\xE9finir les m\xE9triques. \xC9tant donn\xE9 que le jeu de donn\xE9es est \xE9quilibr\xE9, nous utiliserons la pr\xE9cision comme m\xE9trique et le chargerons \xE0 l\u2019aide de la biblioth\xE8que \u{1F917} "),un=o("em"),Ui=t("Evaluate"),Ti=t(" :"),aa=p(),M(Ms.$$.fragment),oa=p(),he=o("p"),wi=t("Nous avons maintenant toutes les pi\xE8ces ! Instancions le "),pn=o("code"),vi=t("Trainer"),bi=t(" et entra\xEEnons le mod\xE8le :"),ra=p(),M(ms.$$.fragment),ia=p(),M(Ue.$$.fragment),ua=p(),Ss=o("p"),cn=o("strong"),Ii=t("Sortie :"),pa=p(),M(fs.$$.fragment),ca=p(),$=o("p"),Ci=t("L\u2019entra\xEEnement durera environ 1 heure en fonction de votre GPU ou de celui allou\xE9 par Google Colab. Notre meilleure pr\xE9cision d\u2019\xE9valuation est de 83%. Pas mal pour seulement 10 \xE9poques avec 899 exemples d\u2019entra\xEEnement ! Nous pourrions certainement am\xE9liorer ce r\xE9sultat en entra\xEEnant sur plus d\u2019\xE9poques, en utilisant des techniques de r\xE9gularisation telles que le "),dn=o("em"),Ai=t("dropout"),gi=t(`, ou en d\xE9coupant chaque segment d\u2019audio de 30s en segments de 15s pour utiliser une strat\xE9gie de pr\xE9traitement de donn\xE9es plus efficace.
La grande question est de savoir comment ce syst\xE8me se compare \xE0 d\u2019autres syst\xE8mes de classification de musique \u{1F914}
Pour cela, nous pouvons afficher le `),Te=o("a"),Ei=t("classement "),Mn=o("em"),qi=t("autoevaluate"),_i=t(`, un classement qui cat\xE9gorise les mod\xE8les par langue et jeu de donn\xE9es, puis les classe en fonction de leur pr\xE9cision.
Nous pouvons automatiquement soumettre notre `),mn=o("em"),$i=t("checkpoint"),Ni=t(" au classement lorsque nous transmettons les r\xE9sultats de l\u2019entra\xEEnement au "),fn=o("em"),Zi=t("Hub"),ki=t(". Nous devons simplement d\xE9finir les arguments appropri\xE9s (kwargs). Vous pouvez modifier ces valeurs pour qu\u2019elles correspondent \xE0 votre jeu de donn\xE9es, \xE0 votre langue et au nom de votre mod\xE8le en cons\xE9quence :"),da=p(),M(ys.$$.fragment),Ma=p(),D=o("p"),Bi=t("Les r\xE9sultats de l\u2019entra\xEEnement peuvent maintenant \xEAtre t\xE9l\xE9charg\xE9s sur le "),yn=o("em"),Wi=t("Hub"),Qi=t(". Pour ce faire, ex\xE9cutez la commande "),jn=o("code"),xi=t(".push_to_hub"),Gi=t(" :"),ma=p(),M(js.$$.fragment),fa=p(),Y=o("p"),Ri=t("Cela enregistrera les logs d\u2019entra\xEEnement et les poids du mod\xE8le sous "),Jn=o("code"),zi=t('"your-username/distilhubert-finetuned-gtzan"'),Vi=t(". Pour cet exemple, consultez "),Js=o("a"),hn=o("code"),Si=t('"sanchit-gandhi/distilhubert-finetuned-gtzan"'),Di=t("."),ya=p(),se=o("h2"),we=o("a"),Un=o("span"),M(hs.$$.fragment),Yi=p(),Tn=o("span"),Fi=t("Partager le mod\xE8le"),ja=p(),b=o("p"),Xi=t("Vous pouvez d\xE9sormais partager votre mod\xE8le avec n\u2019importe qui en utilisant le lien sur le "),wn=o("em"),Hi=t("Hub"),Pi=t(". Il sera utilisable avec l\u2019identifiant "),vn=o("code"),Li=t('"your-username/distilhubert-finetuned-gtzan"'),Oi=t(" directement dans la classe "),bn=o("code"),Ki=t("pipeline()"),eu=t(". Par exemple, pour charger le "),In=o("em"),su=t("checkpoint"),lu=p(),Cn=o("em"),nu=t("finetun\xE9"),tu=p(),Us=o("a"),au=t("\u2018\u201Csanchit-gandhi/distilhubert-finetuned-gtzan\u201D\u2019"),ou=t(":"),Ja=p(),M(Ts.$$.fragment),ha=p(),le=o("h2"),ve=o("a"),An=o("span"),M(ws.$$.fragment),ru=p(),gn=o("span"),iu=t("Conclusion"),Ua=p(),v=o("p"),uu=t("Dans cette section, nous avons couvert un guide \xE9tape par \xE9tape pour "),En=o("em"),pu=t("finetuner"),cu=t(" le mod\xE8le DistilHuBERT pour la t\xE2che de classification de la musique. Bien que nous nous soyons concentr\xE9s sur cette t\xE2che et le jeu de donn\xE9es GTZAN, les \xE9tapes pr\xE9sent\xE9es ici s\u2019appliquent plus g\xE9n\xE9ralement \xE0 toute t\xE2che de classification audio. Le m\xEAme script peut \xEAtre utilis\xE9 pour les t\xE2ches de d\xE9tection de mots-cl\xE9s ou l\u2019identification de la langue. Il vous suffit de changer le jeu de donn\xE9es avec celui de votre t\xE2che d\u2019int\xE9r\xEAt ! Si vous souhaitez "),qn=o("em"),du=t("finetuner"),Mu=t(" d\u2019autres mod\xE8les du "),_n=o("em"),mu=t("Hub"),fu=t(" pour la classification d\u2019audio, nous vous encourageons \xE0 consulter les "),vs=o("a"),yu=t("exemples"),ju=t(" trouvables sur le d\xE9p\xF4t \u{1F917} "),$n=o("em"),Ju=t("Transformers"),hu=t(`.
Dans la section suivante, nous prendrons le mod\xE8le que nous venons de `),Nn=o("em"),Uu=t("finetuner"),Tu=t(" et construirons une d\xE9mo avec "),Zn=o("em"),wu=t("Gradio"),vu=t(" que nous pourrons partager sur le Hub."),this.h()},l(e){const n=Xc('[data-svelte="svelte-1phssyn"]',document.head);U=r(n,"META",{name:!0,content:!0}),n.forEach(s),T=c(e),C=r(e,"H1",{class:!0});var bs=i(C);ne=r(bs,"A",{id:!0,class:!0,href:!0});var kn=i(ne);Ps=r(kn,"SPAN",{});var Bn=i(Ps);m(ge.$$.fragment,Bn),Bn.forEach(s),kn.forEach(s),Qa=c(bs),Ls=r(bs,"SPAN",{});var Wn=i(Ls);xa=a(Wn,"Finetuner un mod\xE8le de classification musicale"),Wn.forEach(s),bs.forEach(s),Qn=c(e),z=r(e,"P",{});var Ds=i(z);Ga=a(Ds,"Dans cette section, nous pr\xE9senterons un guide \xE9tape par \xE9tape sur le "),Os=r(Ds,"EM",{});var Au=i(Os);Ra=a(Au,"finetuning"),Au.forEach(s),za=a(Ds," d\u2019un "),Ks=r(Ds,"EM",{});var gu=i(Ks);Va=a(gu,"transformer"),gu.forEach(s),Sa=a(Ds,` encodeur pour la classification de la musique.
Nous utiliserons un mod\xE8le l\xE9ger pour cette d\xE9monstration et un jeu de donn\xE9es assez petit, ce qui signifie que le code est ex\xE9cutable de bout en bout sur n\u2019importe quel GPU grand public, y compris le GPU T4 16GB fourni gratuitement par Google Colab. La section comprend divers conseils que vous pouvez essayer si vous avez un GPU plus petit et rencontrez des probl\xE8mes de m\xE9moire en cours de route.`),Ds.forEach(s),xn=c(e),P=r(e,"H2",{class:!0});var wa=i(P);te=r(wa,"A",{id:!0,class:!0,href:!0});var Eu=i(te);el=r(Eu,"SPAN",{});var qu=i(el);m(Ee.$$.fragment,qu),qu.forEach(s),Eu.forEach(s),Da=c(wa),sl=r(wa,"SPAN",{});var _u=i(sl);Ya=a(_u,"Le de donn\xE9es"),_u.forEach(s),wa.forEach(s),Gn=c(e),q=r(e,"P",{});var F=i(q);Fa=a(F,"Pour entra\xEEner notre mod\xE8le, nous utiliserons le jeu de donn\xE9es "),qe=r(F,"A",{href:!0,rel:!0});var $u=i(qe);Xa=a($u,"GTZAN"),$u.forEach(s),Ha=a(F,", qui est un jeu de donn\xE9es populaire de 1 000 chansons pour la classification des genres musicaux. Chaque chanson dure 30 secondes et fait partie de l\u2019un des 10 genres de musique disponible, allant du disco au m\xE9tal. Nous pouvons obtenir les fichiers audio et leurs \xE9tiquettes correspondantes \xE0 partir du "),ll=r(F,"EM",{});var Nu=i(ll);Pa=a(Nu,"Hub"),Nu.forEach(s),La=a(F," avec la fonction "),nl=r(F,"CODE",{});var Zu=i(nl);Oa=a(Zu,"load_dataset()"),Zu.forEach(s),Ka=a(F,"  de \u{1F917} "),tl=r(F,"EM",{});var ku=i(tl);eo=a(ku,"Datasets"),ku.forEach(s),so=a(F," :"),F.forEach(s),Rn=c(e),m(_e.$$.fragment,e),zn=c(e),Is=r(e,"P",{});var Bu=i(Is);al=r(Bu,"STRONG",{});var Wu=i(al);lo=a(Wu,"Sortie :"),Wu.forEach(s),Bu.forEach(s),Vn=c(e),m($e.$$.fragment,e),Sn=c(e),m(ae.$$.fragment,e),Dn=c(e),oe=r(e,"P",{});var va=i(oe);no=a(va,"GTZAN ne fournit pas de jeu de validation pr\xE9d\xE9fini, nous devrons donc en cr\xE9er un nous-m\xEAmes. Le jeu de donn\xE9es est \xE9quilibr\xE9 entre les genres, nous pouvons donc utiliser la m\xE9thode "),ol=r(va,"CODE",{});var Qu=i(ol);to=a(Qu,"train_test_split()"),Qu.forEach(s),ao=a(va," pour cr\xE9er rapidement une r\xE9partition 90/10 comme suit :"),va.forEach(s),Yn=c(e),m(Ne.$$.fragment,e),Fn=c(e),Cs=r(e,"P",{});var xu=i(Cs);rl=r(xu,"STRONG",{});var Gu=i(rl);oo=a(Gu,"Sortie :"),Gu.forEach(s),xu.forEach(s),Xn=c(e),m(Ze.$$.fragment,e),Hn=c(e),As=r(e,"P",{});var Ru=i(As);ro=a(Ru,"Maintenant que nous avons nos jeux d\u2019entra\xEEnement et de validation, jetons un coup d\u2019\u0153il \xE0 l\u2019un des fichiers audio :"),Ru.forEach(s),Pn=c(e),m(ke.$$.fragment,e),Ln=c(e),gs=r(e,"P",{});var zu=i(gs);il=r(zu,"STRONG",{});var Vu=i(il);io=a(Vu,"Sortie :"),Vu.forEach(s),zu.forEach(s),On=c(e),m(Be.$$.fragment,e),Kn=c(e),B=r(e,"P",{});var be=i(B);uo=a(be,"Comme nous l\u2019avons vu dans [Unit\xE9 1](.. /chapter1/audio"),ul=r(be,"EM",{});var Su=i(ul);po=a(Su,"data), les fichiers audio sont repr\xE9sent\xE9s sous forme de tableaux NumPy \xE0 1 dimension, o\xF9 la valeur du tableau repr\xE9sente l\u2019amplitude \xE0 ce pas de temps. Pour ces chansons, la fr\xE9quence d\u2019\xE9chantillonnage est de 22 050 Hz, ce qui signifie qu\u2019il y a 22 050 valeurs d\u2019amplitude \xE9chantillonn\xE9es par seconde. Nous devrons garder cela \xE0 l\u2019esprit lorsque nous utiliserons un mod\xE8le pr\xE9-entra\xEEn\xE9 avec un taux d\u2019\xE9chantillonnage diff\xE9rent, en convertissant nous-m\xEAmes les taux d\u2019\xE9chantillonnage pour nous assurer qu\u2019ils correspondent. Nous pouvons \xE9galement voir que le genre est repr\xE9sent\xE9 sous la forme d\u2019un entier, ou _class label"),Su.forEach(s),co=a(be,", qui est le format dans lequel le mod\xE8le fera ses pr\xE9dictions. Utilisons la m\xE9thode "),pl=r(be,"CODE",{});var Du=i(pl);Mo=a(Du,"int2str()"),Du.forEach(s),mo=a(be," de la caract\xE9ristique "),cl=r(be,"CODE",{});var Yu=i(cl);fo=a(Yu,"genre"),Yu.forEach(s),yo=a(be," pour associer ces entiers \xE0 des noms lisibles par l\u2019homme :"),be.forEach(s),et=c(e),m(We.$$.fragment,e),st=c(e),Es=r(e,"P",{});var Fu=i(Es);dl=r(Fu,"STRONG",{});var Xu=i(dl);jo=a(Xu,"Sortie :"),Xu.forEach(s),Fu.forEach(s),lt=c(e),m(Qe.$$.fragment,e),nt=c(e),re=r(e,"P",{});var ba=i(re);Jo=a(ba,"Cette \xE9tiquette semble correcte, car elle correspond au nom de fichier du fichier audio. \xC9coutons maintenant quelques exemples suppl\xE9mentaires en utilisant Gradio pour cr\xE9er une interface simple avec l\u2019API "),Ml=r(ba,"CODE",{});var Hu=i(Ml);ho=a(Hu,"Blocks"),Hu.forEach(s),Uo=a(ba," :"),ba.forEach(s),tt=c(e),m(xe.$$.fragment,e),at=c(e),Z=r(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),i(Z).forEach(s),ot=c(e),ie=r(e,"P",{});var Ia=i(ie);To=a(Ia,"\xC0 partir de ces \xE9chantillons, nous pouvons certainement entendre la diff\xE9rence entre les genres, mais un "),ml=r(Ia,"EM",{});var Pu=i(ml);wo=a(Pu,"transformer"),Pu.forEach(s),vo=a(Ia," peut-il le faire aussi ? Entra\xEEnons un mod\xE8le pour le d\xE9couvrir ! Tout d\u2019abord, nous devrons trouver un mod\xE8le pr\xE9-entra\xEEn\xE9 appropri\xE9 pour cette t\xE2che. Voyons comment nous pouvons le faire."),Ia.forEach(s),rt=c(e),L=r(e,"H2",{class:!0});var Ca=i(L);ue=r(Ca,"A",{id:!0,class:!0,href:!0});var Lu=i(ue);fl=r(Lu,"SPAN",{});var Ou=i(fl);m(Ge.$$.fragment,Ou),Ou.forEach(s),Lu.forEach(s),bo=c(Ca),yl=r(Ca,"SPAN",{});var Ku=i(yl);Io=a(Ku,"Choisir un mod\xE8le pr\xE9-entra\xEEn\xE9 pour la classification audio"),Ku.forEach(s),Ca.forEach(s),it=c(e),A=r(e,"P",{});var x=i(A);Co=a(x,"Pour commencer, choisissons un mod\xE8le pr\xE9-entra\xEEn\xE9 appropri\xE9 pour la classification audio. Dans ce domaine, le pr\xE9-entra\xEEnement est g\xE9n\xE9ralement effectu\xE9e sur de grandes quantit\xE9s de donn\xE9es audio non \xE9tiquet\xE9es, en utilisant des jeux de donn\xE9es tels que "),Re=r(x,"A",{href:!0,rel:!0});var ep=i(Re);Ao=a(ep,"LibriSpeech"),ep.forEach(s),go=a(x," et "),ze=r(x,"A",{href:!0,rel:!0});var sp=i(ze);Eo=a(sp,"Voxpopuli"),sp.forEach(s),qo=a(x,". La meilleure fa\xE7on de trouver ces mod\xE8les sur le "),jl=r(x,"EM",{});var lp=i(jl);_o=a(lp,"Hub"),lp.forEach(s),$o=a(x," est d\u2019utiliser le filtre \xAB classification audio \xBB, comme d\xE9crit dans la section pr\xE9c\xE9dente. Bien que des mod\xE8les comme Wav2Vec2 et HuBERT soient tr\xE8s populaires, nous utiliserons un mod\xE8le appel\xE9 "),Jl=r(x,"EM",{});var np=i(Jl);No=a(np,"DistilHuBERT"),np.forEach(s),Zo=a(x,". Il s\u2019agit d\u2019une version beaucoup plus petite (ou distill\xE9e) du mod\xE8le "),Ve=r(x,"A",{href:!0,rel:!0});var tp=i(Ve);ko=a(tp,"HuBERT"),tp.forEach(s),Bo=a(x,", qui s\u2019entra\xEEne environ 73% plus vite, tout en pr\xE9servant la plupart des performances."),x.forEach(s),ut=c(e),k=r(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),i(k).forEach(s),pt=c(e),O=r(e,"H2",{class:!0});var Aa=i(O);pe=r(Aa,"A",{id:!0,class:!0,href:!0});var ap=i(pe);hl=r(ap,"SPAN",{});var op=i(hl);m(Se.$$.fragment,op),op.forEach(s),ap.forEach(s),Wo=c(Aa),Ul=r(Aa,"SPAN",{});var rp=i(Ul);Qo=a(rp,"De l'audio aux caract\xE9ristiques d'apprentissage automatique"),rp.forEach(s),Aa.forEach(s),ct=c(e),K=r(e,"H2",{class:!0});var ga=i(K);ce=r(ga,"A",{id:!0,class:!0,href:!0});var ip=i(ce);Tl=r(ip,"SPAN",{});var up=i(Tl);m(De.$$.fragment,up),up.forEach(s),ip.forEach(s),xo=c(ga),wl=r(ga,"SPAN",{});var pp=i(wl);Go=a(pp,"Pr\xE9traitement des donn\xE9es"),pp.forEach(s),ga.forEach(s),dt=c(e),_=r(e,"P",{});var X=i(_);Ro=a(X,"\xC0 l\u2019instar de la tokenisation en NLP, les mod\xE8les audio et vocaux n\xE9cessitent que l\u2019entr\xE9e soit encod\xE9e dans un format que le mod\xE8le peut traiter. Dans \u{1F917} "),vl=r(X,"EM",{});var cp=i(vl);zo=a(cp,"Transformers"),cp.forEach(s),Vo=a(X,", la conversion de l\u2019audio au format d\u2019entr\xE9e est g\xE9r\xE9e par l\u2019extracteur de caract\xE9ristique du mod\xE8le. \u{1F917} "),bl=r(X,"EM",{});var dp=i(bl);So=a(dp,"Transformers"),dp.forEach(s),Do=a(X," fournit une classe pratique "),Il=r(X,"CODE",{});var Mp=i(Il);Yo=a(Mp,"AutoFeatureExtractor"),Mp.forEach(s),Fo=a(X," qui peut s\xE9lectionner automatiquement le bon extracteur de caract\xE9ristiques pour un mod\xE8le donn\xE9. Pour voir comment nous pouvons traiter nos fichiers audio, commen\xE7ons par instancier l\u2019extracteur de caract\xE9ristiques pour DistilHuBERT \xE0 partir du "),Cl=r(X,"EM",{});var mp=i(Cl);Xo=a(mp,"checkpoint"),mp.forEach(s),Ho=a(X," pr\xE9-entra\xEEn\xE9 :"),X.forEach(s),Mt=c(e),m(Ye.$$.fragment,e),mt=c(e),qs=r(e,"P",{});var fp=i(qs);Po=a(fp,"Comme le taux d\u2019\xE9chantillonnage du mod\xE8le et de le jeu de donn\xE9es est diff\xE9rent, nous devons r\xE9\xE9chantillonner le fichier audio \xE0 16 000 Hz avant de le transmettre \xE0 l\u2019extracteur de caract\xE9ristiques. Nous pouvons le faire en obtenant d\u2019abord la fr\xE9quence d\u2019\xE9chantillonnage du mod\xE8le \xE0 partir de l\u2019extracteur de caract\xE9ristiques :"),fp.forEach(s),ft=c(e),m(Fe.$$.fragment,e),yt=c(e),_s=r(e,"P",{});var yp=i(_s);Al=r(yp,"STRONG",{});var jp=i(Al);Lo=a(jp,"Sortie :"),jp.forEach(s),yp.forEach(s),jt=c(e),m(Xe.$$.fragment,e),Jt=c(e),W=r(e,"P",{});var Ie=i(W);Oo=a(Ie,"Ensuite, nous r\xE9\xE9chantillonnons le jeu de donn\xE9es \xE0 l\u2019aide de la m\xE9thode "),gl=r(Ie,"CODE",{});var Jp=i(gl);Ko=a(Jp,"cast_column()"),Jp.forEach(s),er=a(Ie," et de la fonction "),El=r(Ie,"CODE",{});var hp=i(El);sr=a(hp,"Audio"),hp.forEach(s),lr=a(Ie,"  de \u{1F917} "),ql=r(Ie,"EM",{});var Up=i(ql);nr=a(Up,"Datasets"),Up.forEach(s),tr=a(Ie," :"),Ie.forEach(s),ht=c(e),m(He.$$.fragment,e),Ut=c(e),V=r(e,"P",{});var Ys=i(V);ar=a(Ys,"Nous pouvons maintenant v\xE9rifier le premier \xE9chantillon de l\u2019\xE9chantillon d\u2019entra\xEEnement de notre jeu de donn\xE9es pour v\xE9rifier qu\u2019il est bien \xE0 16 000 Hz. \u{1F917} "),_l=r(Ys,"EM",{});var Tp=i(_l);or=a(Tp,"Datasets"),Tp.forEach(s),rr=a(Ys," r\xE9\xE9chantillonnent le fichier audio "),$l=r(Ys,"EM",{});var wp=i($l);ir=a(wp,"\xE0 la vol\xE9e"),wp.forEach(s),ur=a(Ys," lorsque nous chargeons chaque \xE9chantillon audio :"),Ys.forEach(s),Tt=c(e),m(Pe.$$.fragment,e),wt=c(e),$s=r(e,"P",{});var vp=i($s);Nl=r(vp,"STRONG",{});var bp=i(Nl);pr=a(bp,"Sortie :"),bp.forEach(s),vp.forEach(s),vt=c(e),m(Le.$$.fragment,e),bt=c(e),de=r(e,"P",{});var Ea=i(de);cr=a(Ea,`Bien. Nous pouvons voir que le taux d\u2019\xE9chantillonnage a \xE9t\xE9 sous-\xE9chantillonn\xE9 \xE0 16kHz. Les valeurs de tableau sont \xE9galement diff\xE9rentes car nous n\u2019avons maintenant qu\u2019environ une valeur d\u2019amplitude pour chaque 1,5 pas que nous avions auparavant.
Une caract\xE9ristique de conception des mod\xE8les de type Wav2Vec2 et HuBERT est qu\u2019ils acceptent un tableau de flottants correspondant \xE0 la forme d\u2019onde brute du signal vocal comme entr\xE9e. Cela contraste avec d\u2019autres mod\xE8les, comme Whisper, o\xF9 nous pr\xE9traitons la forme d\u2019onde audio brute au format spectrogramme.
Nous avons mentionn\xE9 que les donn\xE9es audio sont repr\xE9sent\xE9es comme un tableau \xE0 1 dimension, elles sont donc d\xE9j\xE0 dans le bon format pour \xEAtre lues par le mod\xE8le (un ensemble d\u2019entr\xE9es continues \xE0 pas de temps discrets). Alors, que fait exactement l\u2019extracteur de caract\xE9ristiques ?
Eh bien, les donn\xE9es audio sont dans le bon format, mais nous n\u2019avons impos\xE9 aucune restriction sur les valeurs qu\u2019elles peuvent prendre. Pour que notre mod\xE8le fonctionne de mani\xE8re optimale, nous voulons conserver toutes les entr\xE9es dans la m\xEAme plage dynamique. Cela va nous assurer d\u2019obtenir une plage similaire d\u2019activations et de gradients pour nos \xE9chantillons, ce qui nous aidera \xE0 la stabilit\xE9 et \xE0 la convergence pendant l\u2019entra\xEEnement.
Pour ce faire, nous `),Zl=r(Ea,"EM",{});var Ip=i(Zl);dr=a(Ip,"normalisons"),Ip.forEach(s),Mr=a(Ea,` nos donn\xE9es audio, en redimensionnant chaque \xE9chantillon \xE0 une moyenne nulle et une variance unitaire pour avoir des variables centr\xE9es r\xE9duites. C\u2019est exactement cette normalisation des caract\xE9ristiques que notre extracteur de caract\xE9ristiques effectue.
Nous pouvons jeter un coup d\u2019\u0153il \xE0 l\u2019extracteur de caract\xE9ristiques en fonctionnement en l\u2019appliquant \xE0 notre premier \xE9chantillon audio. Tout d\u2019abord, calculons la moyenne et la variance de nos donn\xE9es audio brutes :`),Ea.forEach(s),It=c(e),m(Oe.$$.fragment,e),Ct=c(e),Ns=r(e,"P",{});var Cp=i(Ns);kl=r(Cp,"STRONG",{});var Ap=i(kl);mr=a(Ap,"Sortie :"),Ap.forEach(s),Cp.forEach(s),At=c(e),m(Ke.$$.fragment,e),gt=c(e),Zs=r(e,"P",{});var gp=i(Zs);fr=a(gp,"Nous pouvons voir que la moyenne est d\xE9j\xE0 proche de 0, mais la variance est plus proche de 0,05. Si la variance de l\u2019\xE9chantillon \xE9tait plus grande, cela pourrait causer des probl\xE8mes \xE0 notre mod\xE8le, car la plage dynamique des donn\xE9es audio serait tr\xE8s petite et donc difficile \xE0 s\xE9parer. Appliquons l\u2019extracteur de caract\xE9ristiques et voyons \xE0 quoi ressemblent les sorties:"),gp.forEach(s),Et=c(e),m(es.$$.fragment,e),qt=c(e),ks=r(e,"P",{});var Ep=i(ks);Bl=r(Ep,"STRONG",{});var qp=i(Bl);yr=a(qp,"Sortie :"),qp.forEach(s),Ep.forEach(s),_t=c(e),m(ss.$$.fragment,e),$t=c(e),g=r(e,"P",{});var G=i(g);jr=a(G,"Notre extracteur de caract\xE9ristiques renvoie un dictionnaire de deux tableaux : "),Wl=r(G,"CODE",{});var _p=i(Wl);Jr=a(_p,"input_values"),_p.forEach(s),hr=a(G," et "),Ql=r(G,"CODE",{});var $p=i(Ql);Ur=a($p,"attention_mask"),$p.forEach(s),Tr=a(G,". Les "),xl=r(G,"CODE",{});var Np=i(xl);wr=a(Np,"input_values"),Np.forEach(s),vr=a(G," sont les entr\xE9es audio pr\xE9trait\xE9es que nous passerons au mod\xE8le HuBERT. L\u2019"),ls=r(G,"A",{href:!0,rel:!0});var Zp=i(ls);Gl=r(Zp,"CODE",{});var kp=i(Gl);br=a(kp,"attention_mask"),kp.forEach(s),Zp.forEach(s),Ir=a(G," est utilis\xE9 lorsque nous traitons un "),Rl=r(G,"EM",{});var Bp=i(Rl);Cr=a(Bp,"batch"),Bp.forEach(s),Ar=a(G,` d\u2019entr\xE9es audio \xE0 la fois. Il est utilis\xE9 pour indiquer au mod\xE8le o\xF9 nous avons des entr\xE9es rembourr\xE9es de diff\xE9rentes longueurs.
Nous pouvons voir que la valeur moyenne est maintenant beaucoup plus proche de 0, et la variance est \xE0 1 ! C\u2019est exactement la forme sous laquelle nous voulons que nos \xE9chantillons audio soient avant de les passer dans notre HuBERT.`),G.forEach(s),Nt=c(e),m(Me.$$.fragment,e),Zt=c(e),S=r(e,"P",{});var Fs=i(S);gr=a(Fs,"Alors maintenant que nous savons comment traiter nos fichiers audio r\xE9\xE9chantillonn\xE9s, la derni\xE8re chose \xE0 faire est de d\xE9finir une fonction que nous pouvons appliquer \xE0 tous les exemples du jeu de donn\xE9es. \xC9tant donn\xE9 que nous nous attendons \xE0 des \xE9chantillons de 30 secondes, nous tronquerons aussi les \xE9chantillons plus longs en utilisant les arguments "),zl=r(Fs,"CODE",{});var Wp=i(zl);Er=a(Wp,"max_length"),Wp.forEach(s),qr=a(Fs," et "),Vl=r(Fs,"CODE",{});var Qp=i(Vl);_r=a(Qp,"truncation"),Qp.forEach(s),$r=a(Fs," de l\u2019extracteur de caract\xE9ristiques comme suit :"),Fs.forEach(s),kt=c(e),m(ns.$$.fragment,e),Bt=c(e),me=r(e,"P",{});var qa=i(me);Nr=a(qa,"Une fois cette fonction d\xE9finie, nous pouvons maintenant l\u2019appliquer au jeu de donn\xE9es \xE0 l\u2019aide de la m\xE9thode "),Sl=r(qa,"CODE",{});var xp=i(Sl);Zr=a(xp,"map()"),xp.forEach(s),kr=a(qa,"."),qa.forEach(s),Wt=c(e),m(ts.$$.fragment,e),Qt=c(e),Bs=r(e,"P",{});var Gp=i(Bs);Dl=r(Gp,"STRONG",{});var Rp=i(Dl);Br=a(Rp,"Sortie :"),Rp.forEach(s),Gp.forEach(s),xt=c(e),m(as.$$.fragment,e),Gt=c(e),w=r(e,"P",{});var I=i(w);Wr=a(I,"Pour simplifier l\u2019entra\xEEnement, nous avons supprim\xE9 les colonnes "),Yl=r(I,"CODE",{});var zp=i(Yl);Qr=a(zp,"audio"),zp.forEach(s),xr=a(I," et "),Fl=r(I,"CODE",{});var Vp=i(Fl);Gr=a(Vp,"file"),Vp.forEach(s),Rr=a(I," du jeu de donn\xE9es. La colonne "),Xl=r(I,"CODE",{});var Sp=i(Xl);zr=a(Sp,"input_values"),Sp.forEach(s),Vr=a(I," contient les fichiers audio encod\xE9s, la colonne "),Hl=r(I,"CODE",{});var Dp=i(Hl);Sr=a(Dp,"attention_mask"),Dp.forEach(s),Dr=a(I," est un masque binaire de valeurs 0/1 qui indique o\xF9 nous avons rempli l\u2019entr\xE9e audio, et la colonne "),Pl=r(I,"CODE",{});var Yp=i(Pl);Yr=a(Yp,"genre"),Yp.forEach(s),Fr=a(I," contient les \xE9tiquettes (ou cibles) correspondantes. Pour permettre au "),Ll=r(I,"CODE",{});var Fp=i(Ll);Xr=a(Fp,"Trainer"),Fp.forEach(s),Hr=a(I," de traiter les \xE9tiquettes de classe, nous devons renommer la colonne "),Ol=r(I,"CODE",{});var Xp=i(Ol);Pr=a(Xp,"genre"),Xp.forEach(s),Lr=a(I," en "),Kl=r(I,"CODE",{});var Hp=i(Kl);Or=a(Hp,"label"),Hp.forEach(s),Kr=a(I," :"),I.forEach(s),Rt=c(e),m(os.$$.fragment,e),zt=c(e),Q=r(e,"P",{});var Ce=i(Q);ei=a(Ce,"Enfin, nous devons obtenir les associations d\u2019\xE9tiquettes \xE0 partir du jeu de donn\xE9es. L\u2019association nous m\xE8nera des identifiants entiers (par exemple "),en=r(Ce,"CODE",{});var Pp=i(en);si=a(Pp,"7"),Pp.forEach(s),li=a(Ce,") aux \xE9tiquettes de classe lisibles par l\u2019homme (par exemple "),sn=r(Ce,"CODE",{});var Lp=i(sn);ni=a(Lp,"pop"),Lp.forEach(s),ti=a(Ce,") et inversement. Ce faisant, nous pouvons convertir la pr\xE9diction de notre mod\xE8le dans un format lisible par l\u2019homme, ce qui nous permet d\u2019utiliser le mod\xE8le dans n\u2019importe quelle application en aval. Nous pouvons le faire en utilisant la m\xE9thode "),ln=r(Ce,"CODE",{});var Op=i(ln);ai=a(Op,"int2str()"),Op.forEach(s),oi=a(Ce," comme suit:"),Ce.forEach(s),Vt=c(e),m(rs.$$.fragment,e),St=c(e),Ws=r(e,"P",{});var Kp=i(Ws);nn=r(Kp,"STRONG",{});var ec=i(nn);ri=a(ec,"Sortie :"),ec.forEach(s),Kp.forEach(s),Dt=c(e),m(is.$$.fragment,e),Yt=c(e),Qs=r(e,"P",{});var sc=i(Qs);ii=a(sc,"Nous avons maintenant un jeu de donn\xE9es pr\xEAt pour l\u2019entra\xEEnement. Voyons comment nous pouvons entra\xEEner un mod\xE8le sur ce jeu de donn\xE9es."),sc.forEach(s),Ft=c(e),ee=r(e,"H2",{class:!0});var _a=i(ee);fe=r(_a,"A",{id:!0,class:!0,href:!0});var lc=i(fe);tn=r(lc,"SPAN",{});var nc=i(tn);m(us.$$.fragment,nc),nc.forEach(s),lc.forEach(s),ui=c(_a),an=r(_a,"SPAN",{});var tc=i(an);pi=a(tc,"Finetuner le mod\xE8le"),tc.forEach(s),_a.forEach(s),Xt=c(e),ye=r(e,"P",{});var $a=i(ye);ci=a($a,"Pour affiner le mod\xE8le, nous utiliserons la classe \u2018Trainer\u2019 de \u{1F917} "),on=r($a,"EM",{});var ac=i(on);di=a(ac,"Transformers"),ac.forEach(s),Mi=a($a,". Comme nous l\u2019avons vu dans d\u2019autres chapitres, le \xAB Trainer \xBB est une API de haut niveau con\xE7ue pour g\xE9rer les sc\xE9narios de formation les plus courants. Dans ce cas, nous utiliserons le \u2018Trainer\u2019 pour affiner le mod\xE8le sur GTZAN. Pour ce faire, nous devons d\u2019abord charger un mod\xE8le pour cette t\xE2che. Nous pouvons le faire en utilisant la classe \u2018AutoModelForAudioClassification\u2019, qui ajoutera automatiquement la t\xEAte de classification appropri\xE9e \xE0 notre mod\xE8le DistilHuBERT pr\xE9entra\xEEn\xE9. Allons de l\u2019avant et instancions le mod\xE8le :"),$a.forEach(s),Ht=c(e),xs=r(e,"P",{});var oc=i(xs);mi=a(oc,`'''python
from transformers import AutoModelForAudioClassification`),oc.forEach(s),Pt=c(e),Gs=r(e,"P",{});var rc=i(Gs);fi=a(rc,"num_labels = len(id2label)"),rc.forEach(s),Lt=c(e),Rs=r(e,"P",{});var ic=i(Rs);yi=a(ic,`mod\xE8le = AutoModelForAudioClassification.from_pretrained(
model_id,
num_labels=num_labels,
label2id=label2id,
id2label=id2label,
)`),ic.forEach(s),Ot=c(e),m(ps.$$.fragment,e),Kt=c(e),zs=r(e,"P",{});var uc=i(zs);rn=r(uc,"STRONG",{});var pc=i(rn);ji=a(pc,"Sortie :"),pc.forEach(s),uc.forEach(s),ea=c(e),m(cs.$$.fragment,e),sa=c(e),Vs=r(e,"P",{});var cc=i(Vs);Ji=a(cc,"L\u2019\xE9tape suivante consiste \xE0 d\xE9finir les arguments d\u2019apprentissage, y compris la taille du batch, les \xE9tapes d\u2019accumulation du gradient, le nombre d\u2019\xE9poques d\u2019apprentissage et le taux d\u2019apprentissage :"),cc.forEach(s),la=c(e),m(ds.$$.fragment,e),na=c(e),m(je.$$.fragment,e),ta=c(e),Je=r(e,"P",{});var Na=i(Je);hi=a(Na,"La derni\xE8re chose que nous devons faire est de d\xE9finir les m\xE9triques. \xC9tant donn\xE9 que le jeu de donn\xE9es est \xE9quilibr\xE9, nous utiliserons la pr\xE9cision comme m\xE9trique et le chargerons \xE0 l\u2019aide de la biblioth\xE8que \u{1F917} "),un=r(Na,"EM",{});var dc=i(un);Ui=a(dc,"Evaluate"),dc.forEach(s),Ti=a(Na," :"),Na.forEach(s),aa=c(e),m(Ms.$$.fragment,e),oa=c(e),he=r(e,"P",{});var Za=i(he);wi=a(Za,"Nous avons maintenant toutes les pi\xE8ces ! Instancions le "),pn=r(Za,"CODE",{});var Mc=i(pn);vi=a(Mc,"Trainer"),Mc.forEach(s),bi=a(Za," et entra\xEEnons le mod\xE8le :"),Za.forEach(s),ra=c(e),m(ms.$$.fragment,e),ia=c(e),m(Ue.$$.fragment,e),ua=c(e),Ss=r(e,"P",{});var mc=i(Ss);cn=r(mc,"STRONG",{});var fc=i(cn);Ii=a(fc,"Sortie :"),fc.forEach(s),mc.forEach(s),pa=c(e),m(fs.$$.fragment,e),ca=c(e),$=r(e,"P",{});var H=i($);Ci=a(H,"L\u2019entra\xEEnement durera environ 1 heure en fonction de votre GPU ou de celui allou\xE9 par Google Colab. Notre meilleure pr\xE9cision d\u2019\xE9valuation est de 83%. Pas mal pour seulement 10 \xE9poques avec 899 exemples d\u2019entra\xEEnement ! Nous pourrions certainement am\xE9liorer ce r\xE9sultat en entra\xEEnant sur plus d\u2019\xE9poques, en utilisant des techniques de r\xE9gularisation telles que le "),dn=r(H,"EM",{});var yc=i(dn);Ai=a(yc,"dropout"),yc.forEach(s),gi=a(H,`, ou en d\xE9coupant chaque segment d\u2019audio de 30s en segments de 15s pour utiliser une strat\xE9gie de pr\xE9traitement de donn\xE9es plus efficace.
La grande question est de savoir comment ce syst\xE8me se compare \xE0 d\u2019autres syst\xE8mes de classification de musique \u{1F914}
Pour cela, nous pouvons afficher le `),Te=r(H,"A",{href:!0,rel:!0});var bu=i(Te);Ei=a(bu,"classement "),Mn=r(bu,"EM",{});var jc=i(Mn);qi=a(jc,"autoevaluate"),jc.forEach(s),bu.forEach(s),_i=a(H,`, un classement qui cat\xE9gorise les mod\xE8les par langue et jeu de donn\xE9es, puis les classe en fonction de leur pr\xE9cision.
Nous pouvons automatiquement soumettre notre `),mn=r(H,"EM",{});var Jc=i(mn);$i=a(Jc,"checkpoint"),Jc.forEach(s),Ni=a(H," au classement lorsque nous transmettons les r\xE9sultats de l\u2019entra\xEEnement au "),fn=r(H,"EM",{});var hc=i(fn);Zi=a(hc,"Hub"),hc.forEach(s),ki=a(H,". Nous devons simplement d\xE9finir les arguments appropri\xE9s (kwargs). Vous pouvez modifier ces valeurs pour qu\u2019elles correspondent \xE0 votre jeu de donn\xE9es, \xE0 votre langue et au nom de votre mod\xE8le en cons\xE9quence :"),H.forEach(s),da=c(e),m(ys.$$.fragment,e),Ma=c(e),D=r(e,"P",{});var Xs=i(D);Bi=a(Xs,"Les r\xE9sultats de l\u2019entra\xEEnement peuvent maintenant \xEAtre t\xE9l\xE9charg\xE9s sur le "),yn=r(Xs,"EM",{});var Uc=i(yn);Wi=a(Uc,"Hub"),Uc.forEach(s),Qi=a(Xs,". Pour ce faire, ex\xE9cutez la commande "),jn=r(Xs,"CODE",{});var Tc=i(jn);xi=a(Tc,".push_to_hub"),Tc.forEach(s),Gi=a(Xs," :"),Xs.forEach(s),ma=c(e),m(js.$$.fragment,e),fa=c(e),Y=r(e,"P",{});var Hs=i(Y);Ri=a(Hs,"Cela enregistrera les logs d\u2019entra\xEEnement et les poids du mod\xE8le sous "),Jn=r(Hs,"CODE",{});var wc=i(Jn);zi=a(wc,'"your-username/distilhubert-finetuned-gtzan"'),wc.forEach(s),Vi=a(Hs,". Pour cet exemple, consultez "),Js=r(Hs,"A",{href:!0,rel:!0});var vc=i(Js);hn=r(vc,"CODE",{});var bc=i(hn);Si=a(bc,'"sanchit-gandhi/distilhubert-finetuned-gtzan"'),bc.forEach(s),vc.forEach(s),Di=a(Hs,"."),Hs.forEach(s),ya=c(e),se=r(e,"H2",{class:!0});var ka=i(se);we=r(ka,"A",{id:!0,class:!0,href:!0});var Ic=i(we);Un=r(Ic,"SPAN",{});var Cc=i(Un);m(hs.$$.fragment,Cc),Cc.forEach(s),Ic.forEach(s),Yi=c(ka),Tn=r(ka,"SPAN",{});var Ac=i(Tn);Fi=a(Ac,"Partager le mod\xE8le"),Ac.forEach(s),ka.forEach(s),ja=c(e),b=r(e,"P",{});var N=i(b);Xi=a(N,"Vous pouvez d\xE9sormais partager votre mod\xE8le avec n\u2019importe qui en utilisant le lien sur le "),wn=r(N,"EM",{});var gc=i(wn);Hi=a(gc,"Hub"),gc.forEach(s),Pi=a(N,". Il sera utilisable avec l\u2019identifiant "),vn=r(N,"CODE",{});var Ec=i(vn);Li=a(Ec,'"your-username/distilhubert-finetuned-gtzan"'),Ec.forEach(s),Oi=a(N," directement dans la classe "),bn=r(N,"CODE",{});var qc=i(bn);Ki=a(qc,"pipeline()"),qc.forEach(s),eu=a(N,". Par exemple, pour charger le "),In=r(N,"EM",{});var _c=i(In);su=a(_c,"checkpoint"),_c.forEach(s),lu=c(N),Cn=r(N,"EM",{});var $c=i(Cn);nu=a($c,"finetun\xE9"),$c.forEach(s),tu=c(N),Us=r(N,"A",{href:!0,rel:!0});var Nc=i(Us);au=a(Nc,"\u2018\u201Csanchit-gandhi/distilhubert-finetuned-gtzan\u201D\u2019"),Nc.forEach(s),ou=a(N,":"),N.forEach(s),Ja=c(e),m(Ts.$$.fragment,e),ha=c(e),le=r(e,"H2",{class:!0});var Ba=i(le);ve=r(Ba,"A",{id:!0,class:!0,href:!0});var Zc=i(ve);An=r(Zc,"SPAN",{});var kc=i(An);m(ws.$$.fragment,kc),kc.forEach(s),Zc.forEach(s),ru=c(Ba),gn=r(Ba,"SPAN",{});var Bc=i(gn);iu=a(Bc,"Conclusion"),Bc.forEach(s),Ba.forEach(s),Ua=c(e),v=r(e,"P",{});var E=i(v);uu=a(E,"Dans cette section, nous avons couvert un guide \xE9tape par \xE9tape pour "),En=r(E,"EM",{});var Wc=i(En);pu=a(Wc,"finetuner"),Wc.forEach(s),cu=a(E," le mod\xE8le DistilHuBERT pour la t\xE2che de classification de la musique. Bien que nous nous soyons concentr\xE9s sur cette t\xE2che et le jeu de donn\xE9es GTZAN, les \xE9tapes pr\xE9sent\xE9es ici s\u2019appliquent plus g\xE9n\xE9ralement \xE0 toute t\xE2che de classification audio. Le m\xEAme script peut \xEAtre utilis\xE9 pour les t\xE2ches de d\xE9tection de mots-cl\xE9s ou l\u2019identification de la langue. Il vous suffit de changer le jeu de donn\xE9es avec celui de votre t\xE2che d\u2019int\xE9r\xEAt ! Si vous souhaitez "),qn=r(E,"EM",{});var Qc=i(qn);du=a(Qc,"finetuner"),Qc.forEach(s),Mu=a(E," d\u2019autres mod\xE8les du "),_n=r(E,"EM",{});var xc=i(_n);mu=a(xc,"Hub"),xc.forEach(s),fu=a(E," pour la classification d\u2019audio, nous vous encourageons \xE0 consulter les "),vs=r(E,"A",{href:!0,rel:!0});var Gc=i(vs);yu=a(Gc,"exemples"),Gc.forEach(s),ju=a(E," trouvables sur le d\xE9p\xF4t \u{1F917} "),$n=r(E,"EM",{});var Rc=i($n);Ju=a(Rc,"Transformers"),Rc.forEach(s),hu=a(E,`.
Dans la section suivante, nous prendrons le mod\xE8le que nous venons de `),Nn=r(E,"EM",{});var zc=i(Nn);Uu=a(zc,"finetuner"),zc.forEach(s),Tu=a(E," et construirons une d\xE9mo avec "),Zn=r(E,"EM",{});var Vc=i(Zn);wu=a(Vc,"Gradio"),Vc.forEach(s),vu=a(E," que nous pourrons partager sur le Hub."),E.forEach(s),this.h()},h(){d(U,"name","hf:doc:metadata"),d(U,"content",JSON.stringify(sd)),d(ne,"id","finetuner-un-modle-de-classification-musicale"),d(ne,"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"),d(ne,"href","#finetuner-un-modle-de-classification-musicale"),d(C,"class","relative group"),d(te,"id","le-de-donnes"),d(te,"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"),d(te,"href","#le-de-donnes"),d(P,"class","relative group"),d(qe,"href","https://huggingface.co/datasets/marsyas/gtzan"),d(qe,"rel","nofollow"),Sc(Z.src,Iu="https://course-demos-gtzan-samples.hf.space")||d(Z,"src",Iu),d(Z,"frameborder","0"),d(Z,"height","450"),d(Z,"title","Gradio app"),d(Z,"class","container p-0 flex-grow space-iframe"),d(Z,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),d(Z,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),d(ue,"id","choisir-un-modle-prentran-pour-la-classification-audio"),d(ue,"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"),d(ue,"href","#choisir-un-modle-prentran-pour-la-classification-audio"),d(L,"class","relative group"),d(Re,"href","https://huggingface.co/datasets/librispeech_asr"),d(Re,"rel","nofollow"),d(ze,"href","https://huggingface.co/datasets/facebook/voxpopuli"),d(ze,"rel","nofollow"),d(Ve,"href","https://huggingface.co/docs/transentra%C3%AEners/model_doc/hubert"),d(Ve,"rel","nofollow"),Sc(k.src,Cu="https://autoevaluate-leaderboards.hf.space")||d(k,"src",Cu),d(k,"frameborder","0"),d(k,"height","450"),d(k,"title","Gradio app"),d(k,"class","container p-0 flex-grow space-iframe"),d(k,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),d(k,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),d(pe,"id","de-laudio-aux-caractristiques-dapprentissage-automatique"),d(pe,"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"),d(pe,"href","#de-laudio-aux-caractristiques-dapprentissage-automatique"),d(O,"class","relative group"),d(ce,"id","prtraitement-des-donnes"),d(ce,"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"),d(ce,"href","#prtraitement-des-donnes"),d(K,"class","relative group"),d(ls,"href","https://huggingface.co/docs/transentra%C3%AEners/glossary#attention-mask"),d(ls,"rel","nofollow"),d(fe,"id","finetuner-le-modle"),d(fe,"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"),d(fe,"href","#finetuner-le-modle"),d(ee,"class","relative group"),d(Te,"href","https://huggingface.co/spaces/autoevaluate/leaderboards?dataset=marsyas%2Fgtzan&only_verified=0&task=audio-classification&config=all&split=train&metric=accuracy"),d(Te,"rel","nofollow"),d(Js,"href","https://huggingface.co/sanchit-gandhi/distilhubert-finetuned-gtzan"),d(Js,"rel","nofollow"),d(we,"id","partager-le-mod\xE8le"),d(we,"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"),d(we,"href","#partager-le-mod\xE8le"),d(se,"class","relative group"),d(Us,"href","https://huggingface.co/sanchit-gandhi/distilhubert-finetuned-gtzan"),d(Us,"rel","nofollow"),d(ve,"id","conclusion"),d(ve,"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"),d(ve,"href","#conclusion"),d(le,"class","relative group"),d(vs,"href","https://github.com/huggingface/transformers/tree/main/examples/pytorch/audio-classification"),d(vs,"rel","nofollow")},m(e,n){l(document.head,U),u(e,T,n),u(e,C,n),l(C,ne),l(ne,Ps),f(ge,Ps,null),l(C,Qa),l(C,Ls),l(Ls,xa),u(e,Qn,n),u(e,z,n),l(z,Ga),l(z,Os),l(Os,Ra),l(z,za),l(z,Ks),l(Ks,Va),l(z,Sa),u(e,xn,n),u(e,P,n),l(P,te),l(te,el),f(Ee,el,null),l(P,Da),l(P,sl),l(sl,Ya),u(e,Gn,n),u(e,q,n),l(q,Fa),l(q,qe),l(qe,Xa),l(q,Ha),l(q,ll),l(ll,Pa),l(q,La),l(q,nl),l(nl,Oa),l(q,Ka),l(q,tl),l(tl,eo),l(q,so),u(e,Rn,n),f(_e,e,n),u(e,zn,n),u(e,Is,n),l(Is,al),l(al,lo),u(e,Vn,n),f($e,e,n),u(e,Sn,n),f(ae,e,n),u(e,Dn,n),u(e,oe,n),l(oe,no),l(oe,ol),l(ol,to),l(oe,ao),u(e,Yn,n),f(Ne,e,n),u(e,Fn,n),u(e,Cs,n),l(Cs,rl),l(rl,oo),u(e,Xn,n),f(Ze,e,n),u(e,Hn,n),u(e,As,n),l(As,ro),u(e,Pn,n),f(ke,e,n),u(e,Ln,n),u(e,gs,n),l(gs,il),l(il,io),u(e,On,n),f(Be,e,n),u(e,Kn,n),u(e,B,n),l(B,uo),l(B,ul),l(ul,po),l(B,co),l(B,pl),l(pl,Mo),l(B,mo),l(B,cl),l(cl,fo),l(B,yo),u(e,et,n),f(We,e,n),u(e,st,n),u(e,Es,n),l(Es,dl),l(dl,jo),u(e,lt,n),f(Qe,e,n),u(e,nt,n),u(e,re,n),l(re,Jo),l(re,Ml),l(Ml,ho),l(re,Uo),u(e,tt,n),f(xe,e,n),u(e,at,n),u(e,Z,n),u(e,ot,n),u(e,ie,n),l(ie,To),l(ie,ml),l(ml,wo),l(ie,vo),u(e,rt,n),u(e,L,n),l(L,ue),l(ue,fl),f(Ge,fl,null),l(L,bo),l(L,yl),l(yl,Io),u(e,it,n),u(e,A,n),l(A,Co),l(A,Re),l(Re,Ao),l(A,go),l(A,ze),l(ze,Eo),l(A,qo),l(A,jl),l(jl,_o),l(A,$o),l(A,Jl),l(Jl,No),l(A,Zo),l(A,Ve),l(Ve,ko),l(A,Bo),u(e,ut,n),u(e,k,n),u(e,pt,n),u(e,O,n),l(O,pe),l(pe,hl),f(Se,hl,null),l(O,Wo),l(O,Ul),l(Ul,Qo),u(e,ct,n),u(e,K,n),l(K,ce),l(ce,Tl),f(De,Tl,null),l(K,xo),l(K,wl),l(wl,Go),u(e,dt,n),u(e,_,n),l(_,Ro),l(_,vl),l(vl,zo),l(_,Vo),l(_,bl),l(bl,So),l(_,Do),l(_,Il),l(Il,Yo),l(_,Fo),l(_,Cl),l(Cl,Xo),l(_,Ho),u(e,Mt,n),f(Ye,e,n),u(e,mt,n),u(e,qs,n),l(qs,Po),u(e,ft,n),f(Fe,e,n),u(e,yt,n),u(e,_s,n),l(_s,Al),l(Al,Lo),u(e,jt,n),f(Xe,e,n),u(e,Jt,n),u(e,W,n),l(W,Oo),l(W,gl),l(gl,Ko),l(W,er),l(W,El),l(El,sr),l(W,lr),l(W,ql),l(ql,nr),l(W,tr),u(e,ht,n),f(He,e,n),u(e,Ut,n),u(e,V,n),l(V,ar),l(V,_l),l(_l,or),l(V,rr),l(V,$l),l($l,ir),l(V,ur),u(e,Tt,n),f(Pe,e,n),u(e,wt,n),u(e,$s,n),l($s,Nl),l(Nl,pr),u(e,vt,n),f(Le,e,n),u(e,bt,n),u(e,de,n),l(de,cr),l(de,Zl),l(Zl,dr),l(de,Mr),u(e,It,n),f(Oe,e,n),u(e,Ct,n),u(e,Ns,n),l(Ns,kl),l(kl,mr),u(e,At,n),f(Ke,e,n),u(e,gt,n),u(e,Zs,n),l(Zs,fr),u(e,Et,n),f(es,e,n),u(e,qt,n),u(e,ks,n),l(ks,Bl),l(Bl,yr),u(e,_t,n),f(ss,e,n),u(e,$t,n),u(e,g,n),l(g,jr),l(g,Wl),l(Wl,Jr),l(g,hr),l(g,Ql),l(Ql,Ur),l(g,Tr),l(g,xl),l(xl,wr),l(g,vr),l(g,ls),l(ls,Gl),l(Gl,br),l(g,Ir),l(g,Rl),l(Rl,Cr),l(g,Ar),u(e,Nt,n),f(Me,e,n),u(e,Zt,n),u(e,S,n),l(S,gr),l(S,zl),l(zl,Er),l(S,qr),l(S,Vl),l(Vl,_r),l(S,$r),u(e,kt,n),f(ns,e,n),u(e,Bt,n),u(e,me,n),l(me,Nr),l(me,Sl),l(Sl,Zr),l(me,kr),u(e,Wt,n),f(ts,e,n),u(e,Qt,n),u(e,Bs,n),l(Bs,Dl),l(Dl,Br),u(e,xt,n),f(as,e,n),u(e,Gt,n),u(e,w,n),l(w,Wr),l(w,Yl),l(Yl,Qr),l(w,xr),l(w,Fl),l(Fl,Gr),l(w,Rr),l(w,Xl),l(Xl,zr),l(w,Vr),l(w,Hl),l(Hl,Sr),l(w,Dr),l(w,Pl),l(Pl,Yr),l(w,Fr),l(w,Ll),l(Ll,Xr),l(w,Hr),l(w,Ol),l(Ol,Pr),l(w,Lr),l(w,Kl),l(Kl,Or),l(w,Kr),u(e,Rt,n),f(os,e,n),u(e,zt,n),u(e,Q,n),l(Q,ei),l(Q,en),l(en,si),l(Q,li),l(Q,sn),l(sn,ni),l(Q,ti),l(Q,ln),l(ln,ai),l(Q,oi),u(e,Vt,n),f(rs,e,n),u(e,St,n),u(e,Ws,n),l(Ws,nn),l(nn,ri),u(e,Dt,n),f(is,e,n),u(e,Yt,n),u(e,Qs,n),l(Qs,ii),u(e,Ft,n),u(e,ee,n),l(ee,fe),l(fe,tn),f(us,tn,null),l(ee,ui),l(ee,an),l(an,pi),u(e,Xt,n),u(e,ye,n),l(ye,ci),l(ye,on),l(on,di),l(ye,Mi),u(e,Ht,n),u(e,xs,n),l(xs,mi),u(e,Pt,n),u(e,Gs,n),l(Gs,fi),u(e,Lt,n),u(e,Rs,n),l(Rs,yi),u(e,Ot,n),f(ps,e,n),u(e,Kt,n),u(e,zs,n),l(zs,rn),l(rn,ji),u(e,ea,n),f(cs,e,n),u(e,sa,n),u(e,Vs,n),l(Vs,Ji),u(e,la,n),f(ds,e,n),u(e,na,n),f(je,e,n),u(e,ta,n),u(e,Je,n),l(Je,hi),l(Je,un),l(un,Ui),l(Je,Ti),u(e,aa,n),f(Ms,e,n),u(e,oa,n),u(e,he,n),l(he,wi),l(he,pn),l(pn,vi),l(he,bi),u(e,ra,n),f(ms,e,n),u(e,ia,n),f(Ue,e,n),u(e,ua,n),u(e,Ss,n),l(Ss,cn),l(cn,Ii),u(e,pa,n),f(fs,e,n),u(e,ca,n),u(e,$,n),l($,Ci),l($,dn),l(dn,Ai),l($,gi),l($,Te),l(Te,Ei),l(Te,Mn),l(Mn,qi),l($,_i),l($,mn),l(mn,$i),l($,Ni),l($,fn),l(fn,Zi),l($,ki),u(e,da,n),f(ys,e,n),u(e,Ma,n),u(e,D,n),l(D,Bi),l(D,yn),l(yn,Wi),l(D,Qi),l(D,jn),l(jn,xi),l(D,Gi),u(e,ma,n),f(js,e,n),u(e,fa,n),u(e,Y,n),l(Y,Ri),l(Y,Jn),l(Jn,zi),l(Y,Vi),l(Y,Js),l(Js,hn),l(hn,Si),l(Y,Di),u(e,ya,n),u(e,se,n),l(se,we),l(we,Un),f(hs,Un,null),l(se,Yi),l(se,Tn),l(Tn,Fi),u(e,ja,n),u(e,b,n),l(b,Xi),l(b,wn),l(wn,Hi),l(b,Pi),l(b,vn),l(vn,Li),l(b,Oi),l(b,bn),l(bn,Ki),l(b,eu),l(b,In),l(In,su),l(b,lu),l(b,Cn),l(Cn,nu),l(b,tu),l(b,Us),l(Us,au),l(b,ou),u(e,Ja,n),f(Ts,e,n),u(e,ha,n),u(e,le,n),l(le,ve),l(ve,An),f(ws,An,null),l(le,ru),l(le,gn),l(gn,iu),u(e,Ua,n),u(e,v,n),l(v,uu),l(v,En),l(En,pu),l(v,cu),l(v,qn),l(qn,du),l(v,Mu),l(v,_n),l(_n,mu),l(v,fu),l(v,vs),l(vs,yu),l(v,ju),l(v,$n),l($n,Ju),l(v,hu),l(v,Nn),l(Nn,Uu),l(v,Tu),l(v,Zn),l(Zn,wu),l(v,vu),Ta=!0},p(e,[n]){const bs={};n&2&&(bs.$$scope={dirty:n,ctx:e}),ae.$set(bs);const kn={};n&2&&(kn.$$scope={dirty:n,ctx:e}),Me.$set(kn);const Bn={};n&2&&(Bn.$$scope={dirty:n,ctx:e}),je.$set(Bn);const Wn={};n&2&&(Wn.$$scope={dirty:n,ctx:e}),Ue.$set(Wn)},i(e){Ta||(y(ge.$$.fragment,e),y(Ee.$$.fragment,e),y(_e.$$.fragment,e),y($e.$$.fragment,e),y(ae.$$.fragment,e),y(Ne.$$.fragment,e),y(Ze.$$.fragment,e),y(ke.$$.fragment,e),y(Be.$$.fragment,e),y(We.$$.fragment,e),y(Qe.$$.fragment,e),y(xe.$$.fragment,e),y(Ge.$$.fragment,e),y(Se.$$.fragment,e),y(De.$$.fragment,e),y(Ye.$$.fragment,e),y(Fe.$$.fragment,e),y(Xe.$$.fragment,e),y(He.$$.fragment,e),y(Pe.$$.fragment,e),y(Le.$$.fragment,e),y(Oe.$$.fragment,e),y(Ke.$$.fragment,e),y(es.$$.fragment,e),y(ss.$$.fragment,e),y(Me.$$.fragment,e),y(ns.$$.fragment,e),y(ts.$$.fragment,e),y(as.$$.fragment,e),y(os.$$.fragment,e),y(rs.$$.fragment,e),y(is.$$.fragment,e),y(us.$$.fragment,e),y(ps.$$.fragment,e),y(cs.$$.fragment,e),y(ds.$$.fragment,e),y(je.$$.fragment,e),y(Ms.$$.fragment,e),y(ms.$$.fragment,e),y(Ue.$$.fragment,e),y(fs.$$.fragment,e),y(ys.$$.fragment,e),y(js.$$.fragment,e),y(hs.$$.fragment,e),y(Ts.$$.fragment,e),y(ws.$$.fragment,e),Ta=!0)},o(e){j(ge.$$.fragment,e),j(Ee.$$.fragment,e),j(_e.$$.fragment,e),j($e.$$.fragment,e),j(ae.$$.fragment,e),j(Ne.$$.fragment,e),j(Ze.$$.fragment,e),j(ke.$$.fragment,e),j(Be.$$.fragment,e),j(We.$$.fragment,e),j(Qe.$$.fragment,e),j(xe.$$.fragment,e),j(Ge.$$.fragment,e),j(Se.$$.fragment,e),j(De.$$.fragment,e),j(Ye.$$.fragment,e),j(Fe.$$.fragment,e),j(Xe.$$.fragment,e),j(He.$$.fragment,e),j(Pe.$$.fragment,e),j(Le.$$.fragment,e),j(Oe.$$.fragment,e),j(Ke.$$.fragment,e),j(es.$$.fragment,e),j(ss.$$.fragment,e),j(Me.$$.fragment,e),j(ns.$$.fragment,e),j(ts.$$.fragment,e),j(as.$$.fragment,e),j(os.$$.fragment,e),j(rs.$$.fragment,e),j(is.$$.fragment,e),j(us.$$.fragment,e),j(ps.$$.fragment,e),j(cs.$$.fragment,e),j(ds.$$.fragment,e),j(je.$$.fragment,e),j(Ms.$$.fragment,e),j(ms.$$.fragment,e),j(Ue.$$.fragment,e),j(fs.$$.fragment,e),j(ys.$$.fragment,e),j(js.$$.fragment,e),j(hs.$$.fragment,e),j(Ts.$$.fragment,e),j(ws.$$.fragment,e),Ta=!1},d(e){s(U),e&&s(T),e&&s(C),J(ge),e&&s(Qn),e&&s(z),e&&s(xn),e&&s(P),J(Ee),e&&s(Gn),e&&s(q),e&&s(Rn),J(_e,e),e&&s(zn),e&&s(Is),e&&s(Vn),J($e,e),e&&s(Sn),J(ae,e),e&&s(Dn),e&&s(oe),e&&s(Yn),J(Ne,e),e&&s(Fn),e&&s(Cs),e&&s(Xn),J(Ze,e),e&&s(Hn),e&&s(As),e&&s(Pn),J(ke,e),e&&s(Ln),e&&s(gs),e&&s(On),J(Be,e),e&&s(Kn),e&&s(B),e&&s(et),J(We,e),e&&s(st),e&&s(Es),e&&s(lt),J(Qe,e),e&&s(nt),e&&s(re),e&&s(tt),J(xe,e),e&&s(at),e&&s(Z),e&&s(ot),e&&s(ie),e&&s(rt),e&&s(L),J(Ge),e&&s(it),e&&s(A),e&&s(ut),e&&s(k),e&&s(pt),e&&s(O),J(Se),e&&s(ct),e&&s(K),J(De),e&&s(dt),e&&s(_),e&&s(Mt),J(Ye,e),e&&s(mt),e&&s(qs),e&&s(ft),J(Fe,e),e&&s(yt),e&&s(_s),e&&s(jt),J(Xe,e),e&&s(Jt),e&&s(W),e&&s(ht),J(He,e),e&&s(Ut),e&&s(V),e&&s(Tt),J(Pe,e),e&&s(wt),e&&s($s),e&&s(vt),J(Le,e),e&&s(bt),e&&s(de),e&&s(It),J(Oe,e),e&&s(Ct),e&&s(Ns),e&&s(At),J(Ke,e),e&&s(gt),e&&s(Zs),e&&s(Et),J(es,e),e&&s(qt),e&&s(ks),e&&s(_t),J(ss,e),e&&s($t),e&&s(g),e&&s(Nt),J(Me,e),e&&s(Zt),e&&s(S),e&&s(kt),J(ns,e),e&&s(Bt),e&&s(me),e&&s(Wt),J(ts,e),e&&s(Qt),e&&s(Bs),e&&s(xt),J(as,e),e&&s(Gt),e&&s(w),e&&s(Rt),J(os,e),e&&s(zt),e&&s(Q),e&&s(Vt),J(rs,e),e&&s(St),e&&s(Ws),e&&s(Dt),J(is,e),e&&s(Yt),e&&s(Qs),e&&s(Ft),e&&s(ee),J(us),e&&s(Xt),e&&s(ye),e&&s(Ht),e&&s(xs),e&&s(Pt),e&&s(Gs),e&&s(Lt),e&&s(Rs),e&&s(Ot),J(ps,e),e&&s(Kt),e&&s(zs),e&&s(ea),J(cs,e),e&&s(sa),e&&s(Vs),e&&s(la),J(ds,e),e&&s(na),J(je,e),e&&s(ta),e&&s(Je),e&&s(aa),J(Ms,e),e&&s(oa),e&&s(he),e&&s(ra),J(ms,e),e&&s(ia),J(Ue,e),e&&s(ua),e&&s(Ss),e&&s(pa),J(fs,e),e&&s(ca),e&&s($),e&&s(da),J(ys,e),e&&s(Ma),e&&s(D),e&&s(ma),J(js,e),e&&s(fa),e&&s(Y),e&&s(ya),e&&s(se),J(hs),e&&s(ja),e&&s(b),e&&s(Ja),J(Ts,e),e&&s(ha),e&&s(le),J(ws),e&&s(Ua),e&&s(v)}}}const sd={local:"finetuner-un-modle-de-classification-musicale",sections:[{local:"le-de-donnes",title:"Le de donn\xE9es"},{local:"choisir-un-modle-prentran-pour-la-classification-audio",title:"Choisir un mod\xE8le pr\xE9-entra\xEEn\xE9 pour la classification audio"},{local:"de-laudio-aux-caractristiques-dapprentissage-automatique",title:"De l'audio aux caract\xE9ristiques d'apprentissage automatique"},{local:"prtraitement-des-donnes",title:"Pr\xE9traitement des donn\xE9es"},{local:"finetuner-le-modle",title:"Finetuner le mod\xE8le"}],title:"Finetuner un mod\xE8le de classification musicale"};function ld(R){return Hc(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class rd extends Dc{constructor(U){super();Yc(this,U,ld,ed,Fc,{})}}export{rd as default,sd as metadata};
