import{S as Td,i as Ud,s as bd,e as o,k as i,w as m,t as a,M as vd,c as p,d as s,m as c,a as u,x as M,h as r,b as d,N as wd,G as l,g as n,y as f,q as y,o as J,B as h,v as Id}from"../../chunks/vendor-hf-doc-builder.js";import{T as Cd}from"../../chunks/Tip-hf-doc-builder.js";import{I as Z}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as j}from"../../chunks/CodeBlock-hf-doc-builder.js";function _d(St){let b,P;return{c(){b=o("p"),P=a("Dans notre exemple, nous utiliserons environ 40 heures de donn\xE9es d\u2019entra\xEEnement. Si vous souhaitez suivre en utilisant la version gratuite de Google Colab, vous devrez r\xE9duire la quantit\xE9 de donn\xE9es d\u2019entra\xEEnement \xE0 environ 10-15 heures, ainsi que r\xE9duire le nombre d\u2019\xE9tapes d\u2019entra\xEEnement.")},l(v){b=p(v,"P",{});var C=u(b);P=r(C,"Dans notre exemple, nous utiliserons environ 40 heures de donn\xE9es d\u2019entra\xEEnement. Si vous souhaitez suivre en utilisant la version gratuite de Google Colab, vous devrez r\xE9duire la quantit\xE9 de donn\xE9es d\u2019entra\xEEnement \xE0 environ 10-15 heures, ainsi que r\xE9duire le nombre d\u2019\xE9tapes d\u2019entra\xEEnement."),C.forEach(s)},m(v,C){n(v,b,C),l(b,P)},d(v){v&&s(b)}}}function $d(St){let b,P,v,C,bl,Ue,$r,vl,Er,Ft,D,Zr,Il,kr,Vr,Ht,g,L,Cl,be,Br,_l,xr,Pt,ve,Dt,K,Lt,Vs,Gr,Kt,Ie,Ot,Bs,Wr,en,Ce,sn,N,O,$l,_e,qr,El,zr,ln,_,gr,Zl,Nr,Ar,$e,Xr,Yr,Ee,Rr,Qr,tn,xs,Sr,nn,Gs,Fr,an,Ze,rn,Ws,kl,Hr,on,ke,pn,ee,Pr,Vl,Dr,Lr,un,Ve,cn,A,se,Bl,Be,Kr,xl,Or,dn,k,eo,Gl,so,lo,Wl,to,no,mn,xe,Mn,X,le,ql,Ge,ao,zl,ro,fn,te,oo,gl,po,uo,yn,We,Jn,qs,io,hn,qe,jn,zs,Nl,co,wn,ze,Tn,T,mo,Al,Mo,fo,Xl,yo,Jo,Yl,ho,jo,Rl,wo,To,Ql,Uo,bo,Sl,vo,Io,Un,$,Co,Fl,_o,$o,Hl,Eo,Zo,Pl,ko,Vo,bn,w,Bo,Dl,xo,Go,Ll,Wo,qo,Kl,zo,go,Ol,No,Ao,et,Xo,Yo,st,Ro,Qo,lt,So,Fo,tt,Ho,Po,vn,ge,In,V,Do,nt,Lo,Ko,at,Oo,ep,Cn,Ne,_n,gs,rt,sp,$n,Ae,En,E,lp,ot,tp,np,pt,ap,rp,ut,op,pp,Zn,Xe,kn,Ns,up,Vn,Y,ne,it,Ye,ip,ct,cp,Bn,As,dp,xn,Re,Gn,Xs,mp,Wn,Qe,qn,Se,Ys,Lu,zn,Rs,Mp,gn,Fe,Nn,Qs,fp,An,He,Xn,Ss,dt,yp,Yn,Pe,Rn,Fs,Jp,Qn,De,Sn,Hs,mt,hp,Fn,Le,Hn,Ps,jp,Pn,Ds,wp,Dn,R,ae,Mt,Ke,Tp,ft,Up,Ln,re,bp,Oe,vp,Ip,Kn,oe,Cp,yt,_p,$p,On,es,ea,pe,Ep,Jt,Zp,kp,sa,ue,Vp,ss,Bp,xp,la,Q,ie,ht,ls,Gp,jt,Wp,ta,B,qp,wt,zp,gp,Tt,Np,Ap,na,ts,aa,Ls,Xp,ra,ns,oa,Ks,Ut,Yp,pa,as,ua,Os,Rp,ia,rs,ca,el,bt,Qp,da,os,ma,sl,Sp,Ma,ps,fa,us,ll,Ku,ya,tl,Fp,Ja,nl,Hp,ha,is,ja,x,Pp,vt,Dp,Lp,It,Kp,Op,wa,cs,Ta,al,Ct,eu,Ua,ds,ba,rl,su,va,ms,Ia,S,ce,_t,Ms,lu,$t,tu,Ca,G,nu,Et,au,ru,Zt,ou,pu,_a,fs,$a,ol,uu,Ea,ys,Za,F,de,kt,Js,iu,Vt,cu,ka,me,du,Bt,mu,Mu,Va,hs,Ba,W,fu,xt,yu,Ju,Gt,hu,ju,xa,js,Ga,pl,wu,Wa,ws,qa,Me,Tu,Wt,Uu,bu,za,Ts,ga,q,vu,qt,Iu,Cu,zt,_u,$u,Na,Us,Aa,fe,Eu,gt,Zu,ku,Xa,bs,Ya,H,ye,Nt,vs,Vu,At,Bu,Ra,z,xu,Xt,Gu,Wu,Yt,qu,zu,Qa,Is,Sa,ul,gu,Fa,Cs,Ha,Je,Nu,Rt,Au,Xu,Pa,_s,Da,il,Yu,La,$s,Ka,cl,Ru,Oa,Es,er,dl,Qu,sr,Zs,lr,ml,Su,tr,he,Fu,Qt,Hu,Pu,nr,Ml,Du,ar;return Ue=new Z({}),be=new Z({}),ve=new j({props:{code:"bnZpZGlhLXNtaQ==",highlighted:"nvidia-smi"}}),K=new Cd({props:{warning:!0,$$slots:{default:[_d]},$$scope:{ctx:St}}}),Ie=new j({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwc291bmRmaWxlJTIwc3BlZWNoYnJhaW4lMjBhY2NlbGVyYXRl",highlighted:"pip install transformers datasets soundfile speechbrain accelerate"}}),Ce=new j({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

notebook_login()`}}),_e=new Z({}),Ze=new j({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFkYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMmZhY2Vib29rJTJGdm94cG9wdWxpJTIyJTJDJTIwJTIybmwlMjIlMkMlMjBzcGxpdCUzRCUyMnRyYWluJTIyKSUwQWxlbihkYXRhc2V0KQ==",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

dataset = load_dataset(<span class="hljs-string">&quot;facebook/voxpopuli&quot;</span>, <span class="hljs-string">&quot;nl&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
<span class="hljs-built_in">len</span>(dataset)`}}),ke=new j({props:{code:"MjA5Njg=",highlighted:"20968"}}),Ve=new j({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQuY2FzdF9jb2x1bW4oJTIyYXVkaW8lMjIlMkMlMjBBdWRpbyhzYW1wbGluZ19yYXRlJTNEMTYwMDApKQ==",highlighted:'dataset = dataset.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16000</span>))'}}),Be=new Z({}),xe=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1UHJvY2Vzc29yJTBBJTBBY2hlY2twb2ludCUyMCUzRCUyMCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X3R0cyUyMiUwQXByb2Nlc3NvciUyMCUzRCUyMFNwZWVjaFQ1UHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZChjaGVja3BvaW50KQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5Processor

checkpoint = <span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>
processor = SpeechT5Processor.from_pretrained(checkpoint)`}}),Ge=new Z({}),We=new j({props:{code:"dG9rZW5pemVyJTIwJTNEJTIwcHJvY2Vzc29yLnRva2VuaXplcg==",highlighted:"tokenizer = processor.tokenizer"}}),qe=new j({props:{code:"ZGF0YXNldCU1QjAlNUQ=",highlighted:'dataset[<span class="hljs-number">0</span>]'}}),ze=new j({props:{code:"JTdCJ2F1ZGlvX2lkJyUzQSUyMCcyMDEwMDIxMC0wOTAwLVBMRU5BUlktMy1ubF8yMDEwMDIxMC0wOSUzQTA2JTNBNDNfNCclMkMlMEElMjAnbGFuZ3VhZ2UnJTNBJTIwOSUyQyUwQSUyMCdhdWRpbyclM0ElMjAlN0IncGF0aCclM0ElMjAnJTJGcm9vdCUyRi5jYWNoZSUyRmh1Z2dpbmdmYWNlJTJGZGF0YXNldHMlMkZkb3dubG9hZHMlMkZleHRyYWN0ZWQlMkYwMmVjNmExOWQ1Yjk3YzAzZTEzNzkyNTAzNzg0NTRkYmYzZmEyOTcyOTQzNTA0YTkxYzdkYTUwNDVhYTI2YTg5JTJGdHJhaW5fcGFydF8wJTJGMjAxMDAyMTAtMDkwMC1QTEVOQVJZLTMtbmxfMjAxMDAyMTAtMDklM0EwNiUzQTQzXzQud2F2JyUyQyUwQSUyMCUyMCdhcnJheSclM0ElMjBhcnJheSglNUIlMjA0LjI3MjQ2MDk0ZS0wNCUyQyUyMCUyMDEuMzEyMjU1ODZlLTAzJTJDJTIwJTIwMS4wMzc1OTc2NmUtMDMlMkMlMjAuLi4lMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAtOS4xNTUyNzM0NGUtMDUlMkMlMjAlMjA3LjYyOTM5NDUzZS0wNCUyQyUyMC0yLjQ0MTQwNjI1ZS0wNCU1RCklMkMlMEElMjAlMjAnc2FtcGxpbmdfcmF0ZSclM0ElMjAxNjAwMCU3RCUyQyUwQSUyMCdyYXdfdGV4dCclM0ElMjAnRGF0JTIwa2FuJTIwbmFhciUyMG1pam4lMjBnZXZvZWwlMjBhbGxlZW4lMjBtZXQlMjBlZW4lMjBicmVkZSUyMG1lZXJkZXJoZWlkJTIwZGllJTIwd2lqJTIwc2FtZW4lMjB6b2VrZW4uJyUyQyUwQSUyMCdub3JtYWxpemVkX3RleHQnJTNBJTIwJ2RhdCUyMGthbiUyMG5hYXIlMjBtaWpuJTIwZ2V2b2VsJTIwYWxsZWVuJTIwbWV0JTIwZWVuJTIwYnJlZGUlMjBtZWVyZGVyaGVpZCUyMGRpZSUyMHdpaiUyMHNhbWVuJTIwem9la2VuLiclMkMlMEElMjAnZ2VuZGVyJyUzQSUyMCdmZW1hbGUnJTJDJTBBJTIwJ3NwZWFrZXJfaWQnJTNBJTIwJzExMjInJTJDJTBBJTIwJ2lzX2dvbGRfdHJhbnNjcmlwdCclM0ElMjBUcnVlJTJDJTBBJTIwJ2FjY2VudCclM0ElMjAnTm9uZSclN0Q=",highlighted:`{&#x27;audio_id&#x27;: &#x27;<span class="hljs-number">20100210-0900</span>-PLENARY-3-nl_<span class="hljs-number">20100210-09:06:43</span>_4&#x27;,
 &#x27;language&#x27;: <span class="hljs-number">9</span>,
 &#x27;audio&#x27;: {&#x27;path&#x27;: &#x27;/root/.cache/huggingface/datasets/downloads/extracted/02ec6a19d5b97c03e<span class="hljs-number">137925037845</span>4dbf3fa<span class="hljs-number">2972943504</span>a91c7da<span class="hljs-number">5045</span>aa26a89/train_part_0/<span class="hljs-number">20100210-0900</span>-PLENARY-3-nl_<span class="hljs-number">20100210-09:06:43</span>_4.wav&#x27;,
  &#x27;array&#x27;: array([ <span class="hljs-number">4.27246094</span>e-<span class="hljs-number">04</span>,  <span class="hljs-number">1.31225586</span>e-<span class="hljs-number">03</span>,  <span class="hljs-number">1.03759766</span>e-<span class="hljs-number">03</span>, ...,
         -<span class="hljs-number">9.15527344</span>e-<span class="hljs-number">05</span>,  <span class="hljs-number">7.62939453</span>e-<span class="hljs-number">04</span>, -<span class="hljs-number">2.44140625</span>e-<span class="hljs-number">04</span>]),
  &#x27;sampling_rate&#x27;: <span class="hljs-number">16000</span>},
 &#x27;raw_text&#x27;: &#x27;Dat kan naar mijn gevoel alleen met een brede meerderheid die wij samen zoeken.&#x27;,
 &#x27;normalized_text&#x27;: &#x27;dat kan naar mijn gevoel alleen met een brede meerderheid die wij samen zoeken.&#x27;,
 &#x27;gender&#x27;: &#x27;female&#x27;,
 &#x27;speaker_id&#x27;: &#x27;<span class="hljs-number">1122</span>&#x27;,
 &#x27;is_gold_transcript&#x27;: True,
 &#x27;accent&#x27;: &#x27;None&#x27;}`}}),ge=new j({props:{code:"ZGVmJTIwZXh0cmFjdF9hbGxfY2hhcnMoYmF0Y2gpJTNBJTBBJTIwJTIwJTIwJTIwYWxsX3RleHQlMjAlM0QlMjAlMjIlMjAlMjIuam9pbihiYXRjaCU1QiUyMm5vcm1hbGl6ZWRfdGV4dCUyMiU1RCklMEElMjAlMjAlMjAlMjB2b2NhYiUyMCUzRCUyMGxpc3Qoc2V0KGFsbF90ZXh0KSklMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMjJ2b2NhYiUyMiUzQSUyMCU1QnZvY2FiJTVEJTJDJTIwJTIyYWxsX3RleHQlMjIlM0ElMjAlNUJhbGxfdGV4dCU1RCU3RCUwQSUwQSUwQXZvY2FicyUyMCUzRCUyMGRhdGFzZXQubWFwKCUwQSUyMCUyMCUyMCUyMGV4dHJhY3RfYWxsX2NoYXJzJTJDJTBBJTIwJTIwJTIwJTIwYmF0Y2hlZCUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBiYXRjaF9zaXplJTNELTElMkMlMEElMjAlMjAlMjAlMjBrZWVwX2luX21lbW9yeSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjByZW1vdmVfY29sdW1ucyUzRGRhdGFzZXQuY29sdW1uX25hbWVzJTJDJTBBKSUwQSUwQWRhdGFzZXRfdm9jYWIlMjAlM0QlMjBzZXQodm9jYWJzJTVCJTIydm9jYWIlMjIlNUQlNUIwJTVEKSUwQXRva2VuaXplcl92b2NhYiUyMCUzRCUyMCU3QmslMjBmb3IlMjBrJTJDJTIwXyUyMGluJTIwdG9rZW5pemVyLmdldF92b2NhYigpLml0ZW1zKCklN0Q=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">extract_all_chars</span>(<span class="hljs-params">batch</span>):
    all_text = <span class="hljs-string">&quot; &quot;</span>.join(batch[<span class="hljs-string">&quot;normalized_text&quot;</span>])
    vocab = <span class="hljs-built_in">list</span>(<span class="hljs-built_in">set</span>(all_text))
    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;vocab&quot;</span>: [vocab], <span class="hljs-string">&quot;all_text&quot;</span>: [all_text]}


vocabs = dataset.<span class="hljs-built_in">map</span>(
    extract_all_chars,
    batched=<span class="hljs-literal">True</span>,
    batch_size=-<span class="hljs-number">1</span>,
    keep_in_memory=<span class="hljs-literal">True</span>,
    remove_columns=dataset.column_names,
)

dataset_vocab = <span class="hljs-built_in">set</span>(vocabs[<span class="hljs-string">&quot;vocab&quot;</span>][<span class="hljs-number">0</span>])
tokenizer_vocab = {k <span class="hljs-keyword">for</span> k, _ <span class="hljs-keyword">in</span> tokenizer.get_vocab().items()}`}}),Ne=new j({props:{code:"ZGF0YXNldF92b2NhYiUyMC0lMjB0b2tlbml6ZXJfdm9jYWI=",highlighted:"dataset_vocab - tokenizer_vocab"}}),Ae=new j({props:{code:"JTdCJyUyMCclMkMlMjAnJUMzJUEwJyUyQyUyMCclQzMlQTcnJTJDJTIwJyVDMyVBOCclMkMlMjAnJUMzJUFCJyUyQyUyMCclQzMlQUQnJTJDJTIwJyVDMyVBRiclMkMlMjAnJUMzJUI2JyUyQyUyMCclQzMlQkMnJTdE",highlighted:"{&#x27; &#x27;, &#x27;\xE0&#x27;, &#x27;\xE7&#x27;, &#x27;\xE8&#x27;, &#x27;\xEB&#x27;, &#x27;\xED&#x27;, &#x27;\xEF&#x27;, &#x27;\xF6&#x27;, &#x27;\xFC&#x27;}"}}),Xe=new j({props:{code:"cmVwbGFjZW1lbnRzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBMCUyMiUyQyUyMCUyMmElMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBNyUyMiUyQyUyMCUyMmMlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBOCUyMiUyQyUyMCUyMmUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBQiUyMiUyQyUyMCUyMmUlMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBRCUyMiUyQyUyMCUyMmklMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVBRiUyMiUyQyUyMCUyMmklMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVCNiUyMiUyQyUyMCUyMm8lMjIpJTJDJTBBJTIwJTIwJTIwJTIwKCUyMiVDMyVCQyUyMiUyQyUyMCUyMnUlMjIpJTJDJTBBJTVEJTBBJTBBJTBBZGVmJTIwY2xlYW51cF90ZXh0KGlucHV0cyklM0ElMEElMjAlMjAlMjAlMjBmb3IlMjBzcmMlMkMlMjBkc3QlMjBpbiUyMHJlcGxhY2VtZW50cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0cyU1QiUyMm5vcm1hbGl6ZWRfdGV4dCUyMiU1RCUyMCUzRCUyMGlucHV0cyU1QiUyMm5vcm1hbGl6ZWRfdGV4dCUyMiU1RC5yZXBsYWNlKHNyYyUyQyUyMGRzdCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBpbnB1dHMlMEElMEElMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldC5tYXAoY2xlYW51cF90ZXh0KQ==",highlighted:`replacements = [
    (<span class="hljs-string">&quot;\xE0&quot;</span>, <span class="hljs-string">&quot;a&quot;</span>),
    (<span class="hljs-string">&quot;\xE7&quot;</span>, <span class="hljs-string">&quot;c&quot;</span>),
    (<span class="hljs-string">&quot;\xE8&quot;</span>, <span class="hljs-string">&quot;e&quot;</span>),
    (<span class="hljs-string">&quot;\xEB&quot;</span>, <span class="hljs-string">&quot;e&quot;</span>),
    (<span class="hljs-string">&quot;\xED&quot;</span>, <span class="hljs-string">&quot;i&quot;</span>),
    (<span class="hljs-string">&quot;\xEF&quot;</span>, <span class="hljs-string">&quot;i&quot;</span>),
    (<span class="hljs-string">&quot;\xF6&quot;</span>, <span class="hljs-string">&quot;o&quot;</span>),
    (<span class="hljs-string">&quot;\xFC&quot;</span>, <span class="hljs-string">&quot;u&quot;</span>),
]


<span class="hljs-keyword">def</span> <span class="hljs-title function_">cleanup_text</span>(<span class="hljs-params">inputs</span>):
    <span class="hljs-keyword">for</span> src, dst <span class="hljs-keyword">in</span> replacements:
        inputs[<span class="hljs-string">&quot;normalized_text&quot;</span>] = inputs[<span class="hljs-string">&quot;normalized_text&quot;</span>].replace(src, dst)
    <span class="hljs-keyword">return</span> inputs


dataset = dataset.<span class="hljs-built_in">map</span>(cleanup_text)`}}),Ye=new Z({}),Re=new j({props:{code:"ZnJvbSUyMGNvbGxlY3Rpb25zJTIwaW1wb3J0JTIwZGVmYXVsdGRpY3QlMEElMEFzcGVha2VyX2NvdW50cyUyMCUzRCUyMGRlZmF1bHRkaWN0KGludCklMEElMEFmb3IlMjBzcGVha2VyX2lkJTIwaW4lMjBkYXRhc2V0JTVCJTIyc3BlYWtlcl9pZCUyMiU1RCUzQSUwQSUyMCUyMCUyMCUyMHNwZWFrZXJfY291bnRzJTVCc3BlYWtlcl9pZCU1RCUyMCUyQiUzRCUyMDE=",highlighted:`<span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> defaultdict

speaker_counts = defaultdict(<span class="hljs-built_in">int</span>)

<span class="hljs-keyword">for</span> speaker_id <span class="hljs-keyword">in</span> dataset[<span class="hljs-string">&quot;speaker_id&quot;</span>]:
    speaker_counts[speaker_id] += <span class="hljs-number">1</span>`}}),Qe=new j({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQSUwQXBsdC5maWd1cmUoKSUwQXBsdC5oaXN0KHNwZWFrZXJfY291bnRzLnZhbHVlcygpJTJDJTIwYmlucyUzRDIwKSUwQXBsdC55bGFiZWwoJTIyU3BlYWtlcnMlMjIpJTBBcGx0LnhsYWJlbCglMjJFeGFtcGxlcyUyMiklMEFwbHQuc2hvdygp",highlighted:`<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt

plt.figure()
plt.hist(speaker_counts.values(), bins=<span class="hljs-number">20</span>)
plt.ylabel(<span class="hljs-string">&quot;Speakers&quot;</span>)
plt.xlabel(<span class="hljs-string">&quot;Examples&quot;</span>)
plt.show()`}}),Fe=new j({props:{code:"ZGVmJTIwc2VsZWN0X3NwZWFrZXIoc3BlYWtlcl9pZCklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjAxMDAlMjAlM0MlM0QlMjBzcGVha2VyX2NvdW50cyU1QnNwZWFrZXJfaWQlNUQlMjAlM0MlM0QlMjA0MDAlMEElMEElMEFkYXRhc2V0JTIwJTNEJTIwZGF0YXNldC5maWx0ZXIoc2VsZWN0X3NwZWFrZXIlMkMlMjBpbnB1dF9jb2x1bW5zJTNEJTVCJTIyc3BlYWtlcl9pZCUyMiU1RCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">select_speaker</span>(<span class="hljs-params">speaker_id</span>):
    <span class="hljs-keyword">return</span> <span class="hljs-number">100</span> &lt;= speaker_counts[speaker_id] &lt;= <span class="hljs-number">400</span>


dataset = dataset.<span class="hljs-built_in">filter</span>(select_speaker, input_columns=[<span class="hljs-string">&quot;speaker_id&quot;</span>])`}}),He=new j({props:{code:"bGVuKHNldChkYXRhc2V0JTVCJTIyc3BlYWtlcl9pZCUyMiU1RCkp",highlighted:'<span class="hljs-built_in">len</span>(<span class="hljs-built_in">set</span>(dataset[<span class="hljs-string">&quot;speaker_id&quot;</span>]))'}}),Pe=new j({props:{code:"NDI=",highlighted:"42"}}),De=new j({props:{code:"bGVuKGRhdGFzZXQp",highlighted:'<span class="hljs-built_in">len</span>(dataset)'}}),Le=new j({props:{code:"OTk3Mw==",highlighted:'<span class="hljs-number">9973</span>'}}),Ke=new Z({}),es=new j({props:{code:"aW1wb3J0JTIwb3MlMEFpbXBvcnQlMjB0b3JjaCUwQWZyb20lMjBzcGVlY2hicmFpbi5wcmV0cmFpbmVkJTIwaW1wb3J0JTIwRW5jb2RlckNsYXNzaWZpZXIlMEElMEFzcGtfbW9kZWxfbmFtZSUyMCUzRCUyMCUyMnNwZWVjaGJyYWluJTJGc3BrcmVjLXh2ZWN0LXZveGNlbGViJTIyJTBBJTBBZGV2aWNlJTIwJTNEJTIwJTIyY3VkYSUyMiUyMGlmJTIwdG9yY2guY3VkYS5pc19hdmFpbGFibGUoKSUyMGVsc2UlMjAlMjJjcHUlMjIlMEFzcGVha2VyX21vZGVsJTIwJTNEJTIwRW5jb2RlckNsYXNzaWZpZXIuZnJvbV9ocGFyYW1zKCUwQSUyMCUyMCUyMCUyMHNvdXJjZSUzRHNwa19tb2RlbF9uYW1lJTJDJTBBJTIwJTIwJTIwJTIwcnVuX29wdHMlM0QlN0IlMjJkZXZpY2UlMjIlM0ElMjBkZXZpY2UlN0QlMkMlMEElMjAlMjAlMjAlMjBzYXZlZGlyJTNEb3MucGF0aC5qb2luKCUyMiUyRnRtcCUyMiUyQyUyMHNwa19tb2RlbF9uYW1lKSUyQyUwQSklMEElMEElMEFkZWYlMjBjcmVhdGVfc3BlYWtlcl9lbWJlZGRpbmcod2F2ZWZvcm0pJTNBJTBBJTIwJTIwJTIwJTIwd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyMCUzRCUyMHNwZWFrZXJfbW9kZWwuZW5jb2RlX2JhdGNoKHRvcmNoLnRlbnNvcih3YXZlZm9ybSkpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc3BlYWtlcl9lbWJlZGRpbmdzJTIwJTNEJTIwdG9yY2gubm4uZnVuY3Rpb25hbC5ub3JtYWxpemUoc3BlYWtlcl9lbWJlZGRpbmdzJTJDJTIwZGltJTNEMiklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzcGVha2VyX2VtYmVkZGluZ3MlMjAlM0QlMjBzcGVha2VyX2VtYmVkZGluZ3Muc3F1ZWV6ZSgpLmNwdSgpLm51bXB5KCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBzcGVha2VyX2VtYmVkZGluZ3M=",highlighted:`<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> speechbrain.pretrained <span class="hljs-keyword">import</span> EncoderClassifier

spk_model_name = <span class="hljs-string">&quot;speechbrain/spkrec-xvect-voxceleb&quot;</span>

device = <span class="hljs-string">&quot;cuda&quot;</span> <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> <span class="hljs-string">&quot;cpu&quot;</span>
speaker_model = EncoderClassifier.from_hparams(
    source=spk_model_name,
    run_opts={<span class="hljs-string">&quot;device&quot;</span>: device},
    savedir=os.path.join(<span class="hljs-string">&quot;/tmp&quot;</span>, spk_model_name),
)


<span class="hljs-keyword">def</span> <span class="hljs-title function_">create_speaker_embedding</span>(<span class="hljs-params">waveform</span>):
    <span class="hljs-keyword">with</span> torch.no_grad():
        speaker_embeddings = speaker_model.encode_batch(torch.tensor(waveform))
        speaker_embeddings = torch.nn.functional.normalize(speaker_embeddings, dim=<span class="hljs-number">2</span>)
        speaker_embeddings = speaker_embeddings.squeeze().cpu().numpy()
    <span class="hljs-keyword">return</span> speaker_embeddings`}}),ls=new Z({}),ts=new j({props:{code:"ZGVmJTIwcHJlcGFyZV9kYXRhc2V0KGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwYXVkaW8lMjAlM0QlMjBleGFtcGxlJTVCJTIyYXVkaW8lMjIlNUQlMEElMEElMjAlMjAlMjAlMjBleGFtcGxlJTIwJTNEJTIwcHJvY2Vzc29yKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHQlM0RleGFtcGxlJTVCJTIybm9ybWFsaXplZF90ZXh0JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYXVkaW9fdGFyZ2V0JTNEYXVkaW8lNUIlMjJhcnJheSUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNhbXBsaW5nX3JhdGUlM0RhdWRpbyU1QiUyMnNhbXBsaW5nX3JhdGUlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm5fYXR0ZW50aW9uX21hc2slM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMCklMEElMEElMjAlMjAlMjAlMjAlMjMlMjBzdHJpcCUyMG9mZiUyMHRoZSUyMGJhdGNoJTIwZGltZW5zaW9uJTBBJTIwJTIwJTIwJTIwZXhhbXBsZSU1QiUyMmxhYmVscyUyMiU1RCUyMCUzRCUyMGV4YW1wbGUlNUIlMjJsYWJlbHMlMjIlNUQlNUIwJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIzJTIwdXNlJTIwU3BlZWNoQnJhaW4lMjB0byUyMG9idGFpbiUyMHgtdmVjdG9yJTBBJTIwJTIwJTIwJTIwZXhhbXBsZSU1QiUyMnNwZWFrZXJfZW1iZWRkaW5ncyUyMiU1RCUyMCUzRCUyMGNyZWF0ZV9zcGVha2VyX2VtYmVkZGluZyhhdWRpbyU1QiUyMmFycmF5JTIyJTVEKSUwQSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGV4YW1wbGU=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">prepare_dataset</span>(<span class="hljs-params">example</span>):
    audio = example[<span class="hljs-string">&quot;audio&quot;</span>]

    example = processor(
        text=example[<span class="hljs-string">&quot;normalized_text&quot;</span>],
        audio_target=audio[<span class="hljs-string">&quot;array&quot;</span>],
        sampling_rate=audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>],
        return_attention_mask=<span class="hljs-literal">False</span>,
    )

    <span class="hljs-comment"># strip off the batch dimension</span>
    example[<span class="hljs-string">&quot;labels&quot;</span>] = example[<span class="hljs-string">&quot;labels&quot;</span>][<span class="hljs-number">0</span>]

    <span class="hljs-comment"># use SpeechBrain to obtain x-vector</span>
    example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] = create_speaker_embedding(audio[<span class="hljs-string">&quot;array&quot;</span>])

    <span class="hljs-keyword">return</span> example`}}),ns=new j({props:{code:"cHJvY2Vzc2VkX2V4YW1wbGUlMjAlM0QlMjBwcmVwYXJlX2RhdGFzZXQoZGF0YXNldCU1QjAlNUQpJTBBbGlzdChwcm9jZXNzZWRfZXhhbXBsZS5rZXlzKCkp",highlighted:`processed_example = prepare_dataset(dataset[<span class="hljs-number">0</span>])
<span class="hljs-built_in">list</span>(processed_example.keys())`}}),as=new j({props:{code:"JTVCJ2lucHV0X2lkcyclMkMlMjAnbGFiZWxzJyUyQyUyMCdzdG9wX2xhYmVscyclMkMlMjAnc3BlYWtlcl9lbWJlZGRpbmdzJyU1RA==",highlighted:'[<span class="hljs-symbol">&#x27;input_ids</span>&#x27;, <span class="hljs-symbol">&#x27;labels</span>&#x27;, <span class="hljs-symbol">&#x27;stop_labels</span>&#x27;, <span class="hljs-symbol">&#x27;speaker_embeddings</span>&#x27;]'}}),rs=new j({props:{code:"cHJvY2Vzc2VkX2V4YW1wbGUlNUIlMjJzcGVha2VyX2VtYmVkZGluZ3MlMjIlNUQuc2hhcGU=",highlighted:'processed_example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>].shape'}}),os=new j({props:{code:"KDUxMiUyQyk=",highlighted:'(<span class="hljs-number">512</span><span class="hljs-punctuation">,</span>)'}}),ps=new j({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQSUwQXBsdC5maWd1cmUoKSUwQXBsdC5pbXNob3cocHJvY2Vzc2VkX2V4YW1wbGUlNUIlMjJsYWJlbHMlMjIlNUQuVCklMEFwbHQuc2hvdygp",highlighted:`<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt

plt.figure()
plt.imshow(processed_example[<span class="hljs-string">&quot;labels&quot;</span>].T)
plt.show()`}}),is=new j({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQubWFwKHByZXBhcmVfZGF0YXNldCUyQyUyMHJlbW92ZV9jb2x1bW5zJTNEZGF0YXNldC5jb2x1bW5fbmFtZXMp",highlighted:'dataset = dataset.<span class="hljs-built_in">map</span>(prepare_dataset, remove_columns=dataset.column_names)'}}),cs=new j({props:{code:"ZGVmJTIwaXNfbm90X3Rvb19sb25nKGlucHV0X2lkcyklM0ElMEElMjAlMjAlMjAlMjBpbnB1dF9sZW5ndGglMjAlM0QlMjBsZW4oaW5wdXRfaWRzKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGlucHV0X2xlbmd0aCUyMCUzQyUyMDIwMCUwQSUwQSUwQWRhdGFzZXQlMjAlM0QlMjBkYXRhc2V0LmZpbHRlcihpc19ub3RfdG9vX2xvbmclMkMlMjBpbnB1dF9jb2x1bW5zJTNEJTVCJTIyaW5wdXRfaWRzJTIyJTVEKSUwQWxlbihkYXRhc2V0KQ==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">is_not_too_long</span>(<span class="hljs-params">input_ids</span>):
    input_length = <span class="hljs-built_in">len</span>(input_ids)
    <span class="hljs-keyword">return</span> input_length &lt; <span class="hljs-number">200</span>


dataset = dataset.<span class="hljs-built_in">filter</span>(is_not_too_long, input_columns=[<span class="hljs-string">&quot;input_ids&quot;</span>])
<span class="hljs-built_in">len</span>(dataset)`}}),ds=new j({props:{code:"ODI1OQ==",highlighted:'<span class="hljs-number">8259</span>'}}),ms=new j({props:{code:"ZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQudHJhaW5fdGVzdF9zcGxpdCh0ZXN0X3NpemUlM0QwLjEp",highlighted:'dataset = dataset.train_test_split(test_size=<span class="hljs-number">0.1</span>)'}}),Ms=new Z({}),fs=new j({props:{code:"ZnJvbSUyMGRhdGFjbGFzc2VzJTIwaW1wb3J0JTIwZGF0YWNsYXNzJTBBZnJvbSUyMHR5cGluZyUyMGltcG9ydCUyMEFueSUyQyUyMERpY3QlMkMlMjBMaXN0JTJDJTIwVW5pb24lMEElMEElMEElNDBkYXRhY2xhc3MlMEFjbGFzcyUyMFRUU0RhdGFDb2xsYXRvcldpdGhQYWRkaW5nJTNBJTBBJTIwJTIwJTIwJTIwcHJvY2Vzc29yJTNBJTIwQW55JTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19jYWxsX18oJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwc2VsZiUyQyUyMGZlYXR1cmVzJTNBJTIwTGlzdCU1QkRpY3QlNUJzdHIlMkMlMjBVbmlvbiU1Qkxpc3QlNUJpbnQlNUQlMkMlMjB0b3JjaC5UZW5zb3IlNUQlNUQlNUQlMEElMjAlMjAlMjAlMjApJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjB0b3JjaC5UZW5zb3IlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbnB1dF9pZHMlMjAlM0QlMjAlNUIlN0IlMjJpbnB1dF9pZHMlMjIlM0ElMjBmZWF0dXJlJTVCJTIyaW5wdXRfaWRzJTIyJTVEJTdEJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwZmVhdHVyZXMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbF9mZWF0dXJlcyUyMCUzRCUyMCU1QiU3QiUyMmlucHV0X3ZhbHVlcyUyMiUzQSUyMGZlYXR1cmUlNUIlMjJsYWJlbHMlMjIlNUQlN0QlMjBmb3IlMjBmZWF0dXJlJTIwaW4lMjBmZWF0dXJlcyU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNwZWFrZXJfZmVhdHVyZXMlMjAlM0QlMjAlNUJmZWF0dXJlJTVCJTIyc3BlYWtlcl9lbWJlZGRpbmdzJTIyJTVEJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwZmVhdHVyZXMlNUQlMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBhc3NlbWJsZXIlMjBsZXMlMjBkb25uJUMzJUE5ZXMlMjBkJ2VudHIlQzMlQTllJTIwZXQlMjBsZXMlMjBjaWJsZXMlMjBkYW5zJTIwdW4lMjBiYXRjaCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTIwJTNEJTIwcHJvY2Vzc29yLnBhZCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpbnB1dF9pZHMlM0RpbnB1dF9pZHMlMkMlMjBsYWJlbHMlM0RsYWJlbF9mZWF0dXJlcyUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwcmVtcGxhY2VyJTIwbGUlMjByZW1ib3VycmFnZSUyMHBhciUyMC0xMDAlMjBwb3VyJTIwaWdub3JlciUyMGNvcnJlY3RlbWVudCUyMGxlcyUyMHBlcnRlcyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIybGFiZWxzJTIyJTVEJTIwJTNEJTIwYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQubWFza2VkX2ZpbGwoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2guZGVjb2Rlcl9hdHRlbnRpb25fbWFzay51bnNxdWVlemUoLTEpLm5lKDEpJTJDJTIwLTEwMCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBub24lMjB1dGlsaXMlQzMlQTklMjBwZW5kYW50JTIwbGUlMjBmaW5ldHVuaW5nJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZGVsJTIwYmF0Y2glNUIlMjJkZWNvZGVyX2F0dGVudGlvbl9tYXNrJTIyJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwYXJyb25kaXIlMjBsZXMlMjBsb25ndWV1cnMlMjBjaWJsZXMlMjBhdSUyMG11bHRpcGxlJTIwZHUlMjBmYWN0ZXVyJTIwZGUlMjByJUMzJUE5ZHVjdGlvbiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwbW9kZWwuY29uZmlnLnJlZHVjdGlvbl9mYWN0b3IlMjAlM0UlMjAxJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGFyZ2V0X2xlbmd0aHMlMjAlM0QlMjB0b3JjaC50ZW5zb3IoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCbGVuKGZlYXR1cmUlNUIlMjJpbnB1dF92YWx1ZXMlMjIlNUQpJTIwZm9yJTIwZmVhdHVyZSUyMGluJTIwbGFiZWxfZmVhdHVyZXMlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGFyZ2V0X2xlbmd0aHMlMjAlM0QlMjB0YXJnZXRfbGVuZ3Rocy5uZXcoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGVuZ3RoJTIwLSUyMGxlbmd0aCUyMCUyNSUyMG1vZGVsLmNvbmZpZy5yZWR1Y3Rpb25fZmFjdG9yJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZm9yJTIwbGVuZ3RoJTIwaW4lMjB0YXJnZXRfbGVuZ3RocyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtYXhfbGVuZ3RoJTIwJTNEJTIwbWF4KHRhcmdldF9sZW5ndGhzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIybGFiZWxzJTIyJTVEJTIwJTNEJTIwYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQlNUIlM0ElMkMlMjAlM0FtYXhfbGVuZ3RoJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwYWpvdXRleiUyMCVDMyVBOWdhbGVtZW50JTIwbGVzJTIwZW5jaCVDMyVBMnNzZW1lbnRzJTIwZGUlMjBsb2N1dGV1ciUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGJhdGNoJTVCJTIyc3BlYWtlcl9lbWJlZGRpbmdzJTIyJTVEJTIwJTNEJTIwdG9yY2gudGVuc29yKHNwZWFrZXJfZmVhdHVyZXMpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwYmF0Y2g=",highlighted:`<span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> dataclass
<span class="hljs-keyword">from</span> typing <span class="hljs-keyword">import</span> <span class="hljs-type">Any</span>, <span class="hljs-type">Dict</span>, <span class="hljs-type">List</span>, <span class="hljs-type">Union</span>


<span class="hljs-meta">@dataclass</span>
<span class="hljs-keyword">class</span> <span class="hljs-title class_">TTSDataCollatorWithPadding</span>:
    processor: <span class="hljs-type">Any</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__call__</span>(<span class="hljs-params">
        self, features: <span class="hljs-type">List</span>[<span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, <span class="hljs-type">Union</span>[<span class="hljs-type">List</span>[<span class="hljs-built_in">int</span>], torch.Tensor]]]
    </span>) -&gt; <span class="hljs-type">Dict</span>[<span class="hljs-built_in">str</span>, torch.Tensor]:
        input_ids = [{<span class="hljs-string">&quot;input_ids&quot;</span>: feature[<span class="hljs-string">&quot;input_ids&quot;</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
        label_features = [{<span class="hljs-string">&quot;input_values&quot;</span>: feature[<span class="hljs-string">&quot;labels&quot;</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
        speaker_features = [feature[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]

        <span class="hljs-comment"># assembler les donn\xE9es d&#x27;entr\xE9e et les cibles dans un batch</span>
        batch = processor.pad(
            input_ids=input_ids, labels=label_features, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>
        )

        <span class="hljs-comment"># remplacer le rembourrage par -100 pour ignorer correctement les pertes</span>
        batch[<span class="hljs-string">&quot;labels&quot;</span>] = batch[<span class="hljs-string">&quot;labels&quot;</span>].masked_fill(
            batch.decoder_attention_mask.unsqueeze(-<span class="hljs-number">1</span>).ne(<span class="hljs-number">1</span>), -<span class="hljs-number">100</span>
        )

        <span class="hljs-comment"># non utilis\xE9 pendant le finetuning</span>
        <span class="hljs-keyword">del</span> batch[<span class="hljs-string">&quot;decoder_attention_mask&quot;</span>]

        <span class="hljs-comment"># arrondir les longueurs cibles au multiple du facteur de r\xE9duction</span>
        <span class="hljs-keyword">if</span> model.config.reduction_factor &gt; <span class="hljs-number">1</span>:
            target_lengths = torch.tensor(
                [<span class="hljs-built_in">len</span>(feature[<span class="hljs-string">&quot;input_values&quot;</span>]) <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> label_features]
            )
            target_lengths = target_lengths.new(
                [
                    length - length % model.config.reduction_factor
                    <span class="hljs-keyword">for</span> length <span class="hljs-keyword">in</span> target_lengths
                ]
            )
            max_length = <span class="hljs-built_in">max</span>(target_lengths)
            batch[<span class="hljs-string">&quot;labels&quot;</span>] = batch[<span class="hljs-string">&quot;labels&quot;</span>][:, :max_length]

        <span class="hljs-comment"># ajoutez \xE9galement les ench\xE2ssements de locuteur</span>
        batch[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>] = torch.tensor(speaker_features)

        <span class="hljs-keyword">return</span> batch`}}),ys=new j({props:{code:"ZGF0YV9jb2xsYXRvciUyMCUzRCUyMFRUU0RhdGFDb2xsYXRvcldpdGhQYWRkaW5nKHByb2Nlc3NvciUzRHByb2Nlc3Nvcik=",highlighted:"data_collator = TTSDataCollatorWithPadding(processor=processor)"}}),Js=new Z({}),hs=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1Rm9yVGV4dFRvU3BlZWNoJTBBJTBBbW9kZWwlMjAlM0QlMjBTcGVlY2hUNUZvclRleHRUb1NwZWVjaC5mcm9tX3ByZXRyYWluZWQoY2hlY2twb2ludCk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5ForTextToSpeech

model = SpeechT5ForTextToSpeech.from_pretrained(checkpoint)`}}),js=new j({props:{code:"ZnJvbSUyMGZ1bmN0b29scyUyMGltcG9ydCUyMHBhcnRpYWwlMEElMEElMjMlMjBkJUMzJUE5c2FjdGl2ZXIlMjBsZSUyMGNhY2hlJTIwcGVuZGFudCUyMGwnZW50cmElQzMlQUVuZW1lbnQlMjBjYXIlMjBpbCUyMGVzdCUyMGluY29tcGF0aWJsZSUyMGF2ZWMlMjBsZSUyMGNoZWNrcG9pbnRpbmclMjBkdSUyMGdyYWRpZW50JTBBbW9kZWwuY29uZmlnLnVzZV9jYWNoZSUyMCUzRCUyMEZhbHNlJTBBJTBBJTIzJTIwZCVDMyVBOWZpbmlyJTIwbGElMjBsYW5ndWUlMjBldCUyMGxhJTIwdCVDMyVBMmNoZSUyMHBvdXIlMjBsYSUyMGclQzMlQTluJUMzJUE5cmF0aW9uJTIwZXQlMjByJUMzJUE5YWN0aXZlciUyMGxlJTIwY2FjaGUlMEFtb2RlbC5nZW5lcmF0ZSUyMCUzRCUyMHBhcnRpYWwobW9kZWwuZ2VuZXJhdGUlMkMlMjB1c2VfY2FjaGUlM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">from</span> functools <span class="hljs-keyword">import</span> partial

<span class="hljs-comment"># d\xE9sactiver le cache pendant l&#x27;entra\xEEnement car il est incompatible avec le checkpointing du gradient</span>
model.config.use_cache = <span class="hljs-literal">False</span>

<span class="hljs-comment"># d\xE9finir la langue et la t\xE2che pour la g\xE9n\xE9ration et r\xE9activer le cache</span>
model.generate = partial(model.generate, use_cache=<span class="hljs-literal">True</span>)`}}),ws=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmluZ0FyZ3VtZW50cyUwQSUwQXRyYWluaW5nX2FyZ3MlMjAlM0QlMjBTZXEyU2VxVHJhaW5pbmdBcmd1bWVudHMoJTBBJTIwJTIwJTIwJTIwb3V0cHV0X2RpciUzRCUyMnNwZWVjaHQ1X2ZpbmV0dW5lZF92b3hwb3B1bGlfbmwlMjIlMkMlMjAlMjAlMjMlMjBjaGFuZ2VyJTIwcG91ciUyMHVuJTIwbm9tJTIwZGUlMjBkJUMzJUE5cCVDMyVCNHQlMjBkZSUyMHZvdHJlJTIwY2hvaXglMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0Q0JTJDJTBBJTIwJTIwJTIwJTIwZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzJTNEOCUyQyUwQSUyMCUyMCUyMCUyMGxlYXJuaW5nX3JhdGUlM0QxZS01JTJDJTBBJTIwJTIwJTIwJTIwd2FybXVwX3N0ZXBzJTNENTAwJTJDJTBBJTIwJTIwJTIwJTIwbWF4X3N0ZXBzJTNENDAwMCUyQyUwQSUyMCUyMCUyMCUyMGdyYWRpZW50X2NoZWNrcG9pbnRpbmclM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwZnAxNiUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBldmFsdWF0aW9uX3N0cmF0ZWd5JTNEJTIyc3RlcHMlMjIlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX2V2YWxfYmF0Y2hfc2l6ZSUzRDIlMkMlMEElMjAlMjAlMjAlMjBzYXZlX3N0ZXBzJTNEMTAwMCUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfc3RlcHMlM0QxMDAwJTJDJTBBJTIwJTIwJTIwJTIwbG9nZ2luZ19zdGVwcyUzRDI1JTJDJTBBJTIwJTIwJTIwJTIwcmVwb3J0X3RvJTNEJTVCJTIydGVuc29yYm9hcmQlMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGdyZWF0ZXJfaXNfYmV0dGVyJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjBsYWJlbF9uYW1lcyUzRCU1QiUyMmxhYmVscyUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSk=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainingArguments

training_args = Seq2SeqTrainingArguments(
    output_dir=<span class="hljs-string">&quot;speecht5_finetuned_voxpopuli_nl&quot;</span>,  <span class="hljs-comment"># changer pour un nom de d\xE9p\xF4t de votre choix</span>
    per_device_train_batch_size=<span class="hljs-number">4</span>,
    gradient_accumulation_steps=<span class="hljs-number">8</span>,
    learning_rate=<span class="hljs-number">1e-5</span>,
    warmup_steps=<span class="hljs-number">500</span>,
    max_steps=<span class="hljs-number">4000</span>,
    gradient_checkpointing=<span class="hljs-literal">True</span>,
    fp16=<span class="hljs-literal">True</span>,
    evaluation_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
    per_device_eval_batch_size=<span class="hljs-number">2</span>,
    save_steps=<span class="hljs-number">1000</span>,
    eval_steps=<span class="hljs-number">1000</span>,
    logging_steps=<span class="hljs-number">25</span>,
    report_to=[<span class="hljs-string">&quot;tensorboard&quot;</span>],
    load_best_model_at_end=<span class="hljs-literal">True</span>,
    greater_is_better=<span class="hljs-literal">False</span>,
    label_names=[<span class="hljs-string">&quot;labels&quot;</span>],
    push_to_hub=<span class="hljs-literal">True</span>,
)`}}),Ts=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNlcTJTZXFUcmFpbmVyJTBBJTBBdHJhaW5lciUyMCUzRCUyMFNlcTJTZXFUcmFpbmVyKCUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMHRyYWluX2RhdGFzZXQlM0RkYXRhc2V0JTVCJTIydHJhaW4lMjIlNUQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0RkYXRhc2V0JTVCJTIydGVzdCUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGRhdGFfY29sbGF0b3IlM0RkYXRhX2NvbGxhdG9yJTJDJTBBJTIwJTIwJTIwJTIwdG9rZW5pemVyJTNEcHJvY2Vzc29yJTJDJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> Seq2SeqTrainer

trainer = Seq2SeqTrainer(
    args=training_args,
    model=model,
    train_dataset=dataset[<span class="hljs-string">&quot;train&quot;</span>],
    eval_dataset=dataset[<span class="hljs-string">&quot;test&quot;</span>],
    data_collator=data_collator,
    tokenizer=processor,
)`}}),Us=new j({props:{code:"dHJhaW5lci50cmFpbigp",highlighted:"trainer.train()"}}),bs=new j({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:"trainer.push_to_hub()"}}),vs=new Z({}),Is=new j({props:{code:"bW9kZWwlMjAlM0QlMjBTcGVlY2hUNUZvclRleHRUb1NwZWVjaC5mcm9tX3ByZXRyYWluZWQoJTBBJTIwJTIwJTIwJTIwJTIyWU9VUl9BQ0NPVU5UJTJGc3BlZWNodDVfZmluZXR1bmVkX3ZveHBvcHVsaV9ubCUyMiUwQSk=",highlighted:`model = SpeechT5ForTextToSpeech.from_pretrained(
    <span class="hljs-string">&quot;YOUR_ACCOUNT/speecht5_finetuned_voxpopuli_nl&quot;</span>
)`}}),Cs=new j({props:{code:"ZXhhbXBsZSUyMCUzRCUyMGRhdGFzZXQlNUIlMjJ0ZXN0JTIyJTVEJTVCMzA0JTVEJTBBc3BlYWtlcl9lbWJlZGRpbmdzJTIwJTNEJTIwdG9yY2gudGVuc29yKGV4YW1wbGUlNUIlMjJzcGVha2VyX2VtYmVkZGluZ3MlMjIlNUQpLnVuc3F1ZWV6ZSgwKQ==",highlighted:`example = dataset[<span class="hljs-string">&quot;test&quot;</span>][<span class="hljs-number">304</span>]
speaker_embeddings = torch.tensor(example[<span class="hljs-string">&quot;speaker_embeddings&quot;</span>]).unsqueeze(<span class="hljs-number">0</span>)`}}),_s=new j({props:{code:"dGV4dCUyMCUzRCUyMCUyMmhhbGxvJTIwYWxsZW1hYWwlMkMlMjBpayUyMHByYWF0JTIwbmVkZXJsYW5kcy4lMjBncm9ldGplcyUyMGFhbiUyMGllZGVyZWVuISUyMg==",highlighted:'text = <span class="hljs-string">&quot;hallo allemaal, ik praat nederlands. groetjes aan iedereen!&quot;</span>'}}),$s=new j({props:{code:"aW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKHRleHQlM0R0ZXh0JTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMik=",highlighted:'inputs = processor(text=text, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)'}}),Es=new j({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1SGlmaUdhbiUwQSUwQXZvY29kZXIlMjAlM0QlMjBTcGVlY2hUNUhpZmlHYW4uZnJvbV9wcmV0cmFpbmVkKCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X2hpZmlnYW4lMjIpJTBBc3BlZWNoJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGVfc3BlZWNoKGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RCUyQyUyMHNwZWFrZXJfZW1iZWRkaW5ncyUyQyUyMHZvY29kZXIlM0R2b2NvZGVyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5HifiGan

vocoder = SpeechT5HifiGan.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_hifigan&quot;</span>)
speech = model.generate_speech(inputs[<span class="hljs-string">&quot;input_ids&quot;</span>], speaker_embeddings, vocoder=vocoder)`}}),Zs=new j({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc3BlZWNoLm51bXB5KCklMkMlMjByYXRlJTNEMTYwMDAp",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(speech.numpy(), rate=<span class="hljs-number">16000</span>)`}}),{c(){b=o("meta"),P=i(),v=o("h1"),C=o("a"),bl=o("span"),m(Ue.$$.fragment),$r=i(),vl=o("span"),Er=a("Finetuning du SpeechT5"),Ft=i(),D=o("p"),Zr=a("Maintenant que vous \xEAtes familiaris\xE9 avec la t\xE2che de synth\xE8se vocale et le fonctionnement interne du SpeechT5 qui a \xE9t\xE9 entra\xEEn\xE9 sur des donn\xE9es en langue anglaise, voyons comment nous pouvons le "),Il=o("em"),kr=a("finetuner"),Vr=a(" \xE0 une autre langue."),Ht=i(),g=o("h2"),L=o("a"),Cl=o("span"),m(be.$$.fragment),Br=i(),_l=o("span"),xr=a("Pr\xE9paration"),Pt=a(`

Assurez-vous de disposer d'un GPU si vous souhaitez reproduire cet exemple. Dans un *notebook*, vous pouvez v\xE9rifier avec la commande suivante :

	`),m(ve.$$.fragment),Dt=i(),m(K.$$.fragment),Lt=i(),Vs=o("p"),Gr=a("Vous aurez \xE9galement besoin de quelques d\xE9pendances suppl\xE9mentaires :"),Kt=i(),m(Ie.$$.fragment),Ot=i(),Bs=o("p"),Wr=a("Enfin, n\u2019oubliez pas de vous connecter \xE0 votre compte Hugging Face pour pouvoir t\xE9l\xE9charger et partager votre mod\xE8le avec la communaut\xE9 :"),en=i(),m(Ce.$$.fragment),sn=i(),N=o("h2"),O=o("a"),$l=o("span"),m(_e.$$.fragment),qr=i(),El=o("span"),zr=a("Le jeu de donn\xE9es"),ln=i(),_=o("p"),gr=a("Pour cet exemple, nous prendrons le sous-ensemble en n\xE9erlandais ("),Zl=o("code"),Nr=a("nl"),Ar=a(") du jeu de donn\xE9es "),$e=o("a"),Xr=a("VoxPopuli"),Yr=a(`.
`),Ee=o("a"),Rr=a("VoxPopuli"),Qr=a(` est un corpus de parole multilingue \xE0 grande \xE9chelle compos\xE9 de donn\xE9es provenant d\u2019enregistrements d\u2019\xE9v\xE9nements du Parlement europ\xE9en de 2009 \xE0 2020.
Il contient des donn\xE9es de transcription audio \xE9tiquet\xE9es pour 15 langues europ\xE9ennes. Nous utiliserons le sous-ensemble n\xE9erlandais, mais vous pouvez choisir un autre sous-ensemble.`),tn=i(),xs=o("p"),Sr=a("Il s\u2019agit d\u2019un jeu de donn\xE9es de reconnaissance automatique de la parole, donc comme mentionn\xE9 pr\xE9c\xE9demment, ce n\u2019est pas l\u2019option la plus appropri\xE9e pour entra\xEEner des mod\xE8les TTS. Cependant, il sera suffisant pour cet exercice."),nn=i(),Gs=o("p"),Fr=a("Chargeons les donn\xE9es :"),an=i(),m(Ze.$$.fragment),rn=i(),Ws=o("p"),kl=o("strong"),Hr=a("Sortie :"),on=i(),m(ke.$$.fragment),pn=i(),ee=o("p"),Pr=a("20968 exemples devraient suffire pour un "),Vl=o("em"),Dr=a("finetuning"),Lr=a(". SpeechT5 s\u2019attend \xE0 ce que les donn\xE9es audio aient une fr\xE9quence d\u2019\xE9chantillonnage de 16 kHz, assurez-vous donc que les exemples du jeu de donn\xE9es r\xE9pondent \xE0 cette exigence :"),un=i(),m(Ve.$$.fragment),cn=i(),A=o("h2"),se=o("a"),Bl=o("span"),m(Be.$$.fragment),Kr=i(),xl=o("span"),Or=a("Pr\xE9traitement des donn\xE9es"),dn=i(),k=o("p"),eo=a("Commen\xE7ons par d\xE9finir le "),Gl=o("em"),so=a("checkpoint"),lo=a(" du mod\xE8le \xE0 utiliser et par charger le processeur appropri\xE9 qui contient \xE0 la fois le "),Wl=o("em"),to=a("tokenizer"),no=a(" et l\u2019extracteur de caract\xE9ristiques dont nous aurons besoin pour pr\xE9parer les donn\xE9es en vue de l\u2019entra\xEEnement :"),mn=i(),m(xe.$$.fragment),Mn=i(),X=o("h3"),le=o("a"),ql=o("span"),m(Ge.$$.fragment),ao=i(),zl=o("span"),ro=a("Nettoyage du texte pour la tokenisation de SpeechT5"),fn=i(),te=o("p"),oo=a("Tout d\u2019abord, pour pr\xE9parer le texte, nous aurons besoin de la partie "),gl=o("em"),po=a("tokenizer"),uo=a(" du processeur, alors allons-y :"),yn=i(),m(We.$$.fragment),Jn=i(),qs=o("p"),io=a("Prenons un exemple :"),hn=i(),m(qe.$$.fragment),jn=i(),zs=o("p"),Nl=o("strong"),co=a("Sortie :"),wn=i(),m(ze.$$.fragment),Tn=i(),T=o("p"),mo=a("Vous remarquerez que les exemples du jeu de donn\xE9es contiennent les caract\xE9ristiques "),Al=o("code"),Mo=a("raw_text"),fo=a(" et "),Xl=o("code"),yo=a("normalized_text"),Jo=a(". Lorsque vous d\xE9cidez quelle caract\xE9ristique utiliser comme entr\xE9e de texte, il est important de savoir que le "),Yl=o("em"),ho=a("tokenizer"),jo=a(" de SpeechT5 n\u2019a pas de "),Rl=o("em"),wo=a("tokens"),To=a(" pour les nombres. Dans "),Ql=o("code"),Uo=a("normalized_text"),bo=a(", les nombres sont \xE9crits sous forme textuel. Il s\u2019agit donc d\u2019une meilleure option, et nous devrions utiliser "),Sl=o("code"),vo=a("normalized_text"),Io=a(" comme texte d\u2019entr\xE9e."),Un=i(),$=o("p"),Co=a(`Comme SpeechT5 a \xE9t\xE9 entra\xEEn\xE9 sur la langue anglaise, il se peut qu\u2019il ne reconnaisse pas certains caract\xE8res dans le jeu de donn\xE9es n\xE9erlandais.
S\u2019ils sont laiss\xE9s tels quels, ces caract\xE8res seront convertis en tokens `),Fl=o("code"),_o=a("<unk>"),$o=a(". Cependant, en n\xE9erlandais, certains caract\xE8res comme "),Hl=o("code"),Eo=a("\xE0"),Zo=a(" sont utilis\xE9s pour souligner les syllabes. Afin de pr\xE9server le sens du texte, nous pouvons remplacer ce caract\xE8re par un "),Pl=o("code"),ko=a("a"),Vo=a(" normal."),bn=i(),w=o("p"),Bo=a("Pour identifier les "),Dl=o("em"),xo=a("tokens"),Go=a(" non support\xE9s, extrayez tous les caract\xE8res uniques du jeu de donn\xE9es en utilisant le "),Ll=o("code"),Wo=a("SpeechT5Tokenizer"),qo=a(" qui fonctionne avec les caract\xE8res comme des "),Kl=o("em"),zo=a("tokens"),go=a(`.
Pour ce faire, nous allons \xE9crire la fonction `),Ol=o("code"),No=a("extract_all_chars"),Ao=a(` qui concat\xE8ne les transcriptions de tous les exemples en une cha\xEEne et la convertit en un ensemble de caract\xE8res.
Assurez-vous de mettre `),et=o("code"),Xo=a("batched=True"),Yo=a(" et "),st=o("code"),Ro=a("batch_size=-1"),Qo=a(" dans "),lt=o("code"),So=a("dataset.map()"),Fo=a(" afin que toutes les transcriptions soient disponibles en m\xEAme temps pour la fonction de "),tt=o("em"),Ho=a("mapping"),Po=a("."),vn=i(),m(ge.$$.fragment),In=i(),V=o("p"),Do=a("Vous disposez \xE0 pr\xE9sent de deux ensembles de caract\xE8res : l\u2019un avec le vocabulaire du jeu de donn\xE9es et l\u2019autre avec le vocabulaire du "),nt=o("em"),Lo=a("tokenizer"),Ko=a(`.
Pour identifier les caract\xE8res non pris en charge dans le jeu de donn\xE9es, vous pouvez prendre la diff\xE9rence entre ces deux ensembles. L\u2019ensemble r\xE9sultant contiendra les caract\xE8res qui se trouvent dans le jeu de donn\xE9es mais pas dans le `),at=o("em"),Oo=a("tokenizer"),ep=a("."),Cn=i(),m(Ne.$$.fragment),_n=i(),gs=o("p"),rt=o("strong"),sp=a("Sortie :"),$n=i(),m(Ae.$$.fragment),En=i(),E=o("p"),lp=a("Pour g\xE9rer les caract\xE8res non support\xE9s identifi\xE9s dans l\u2019\xE9tape pr\xE9c\xE9dente, nous pouvons d\xE9finir une fonction qui fait correspondre ces caract\xE8res \xE0 des "),ot=o("em"),tp=a("tokens"),np=a(" valides. Notez que les espaces sont d\xE9j\xE0 remplac\xE9s par "),pt=o("code"),ap=a("\u2581"),rp=a(" dans le "),ut=o("em"),op=a("tokenizer"),pp=a(" et n\u2019ont pas besoin d\u2019\xEAtre g\xE9r\xE9s s\xE9par\xE9ment."),Zn=i(),m(Xe.$$.fragment),kn=i(),Ns=o("p"),up=a("Maintenant que nous avons trait\xE9 les caract\xE8res sp\xE9ciaux dans le texte, il est temps de se concentrer sur les donn\xE9es audio."),Vn=i(),Y=o("h3"),ne=o("a"),it=o("span"),m(Ye.$$.fragment),ip=i(),ct=o("span"),cp=a("Les locuteurs"),Bn=i(),As=o("p"),dp=a(`Le jeu de donn\xE9es VoxPopuli comprend la parole de plusieurs locuteurs, mais combien de locuteurs sont repr\xE9sent\xE9s dans le jeu de donn\xE9es ? Pour le savoir, nous pouvons compter le nombre de locuteurs uniques et le nombre d\u2019exemples que chaque locuteur apporte au jeu de donn\xE9es.
Avec un total de 20 968 exemples dans le jeu de donn\xE9es, cette information nous permettra de mieux comprendre la distribution des locuteurs et des exemples dans les donn\xE9es.`),xn=i(),m(Re.$$.fragment),Gn=i(),Xs=o("p"),mp=a("En tra\xE7ant un histogramme, vous pouvez vous faire une id\xE9e de la quantit\xE9 de donn\xE9es pour chaque locuteur."),Wn=i(),m(Qe.$$.fragment),qn=i(),Se=o("div"),Ys=o("img"),zn=i(),Rs=o("p"),Mp=a("L\u2019histogramme r\xE9v\xE8le qu\u2019environ un tiers des locuteurs du jeu de donn\xE9es ont moins de 100 exemples, tandis qu\u2019une dizaine de locuteurs ont plus de 500 exemples. Pour am\xE9liorer l\u2019efficacit\xE9 de l\u2019entra\xEEnement et \xE9quilibrer le jeu de donn\xE9es, nous pouvons limiter les donn\xE9es aux locuteurs ayant entre 100 et 400 exemples."),gn=i(),m(Fe.$$.fragment),Nn=i(),Qs=o("p"),fp=a("V\xE9rifions le nombre de locuteurs restants :"),An=i(),m(He.$$.fragment),Xn=i(),Ss=o("p"),dt=o("strong"),yp=a("Sortie :"),Yn=i(),m(Pe.$$.fragment),Rn=i(),Fs=o("p"),Jp=a("Voyons combien d\u2019exemples il reste :"),Qn=i(),m(De.$$.fragment),Sn=i(),Hs=o("p"),mt=o("strong"),hp=a("Sortie :"),Fn=i(),m(Le.$$.fragment),Hn=i(),Ps=o("p"),jp=a("Vous vous retrouvez avec un peu moins de 10 000 exemples provenant d\u2019environ 40 locuteurs uniques, ce qui devrait \xEAtre suffisant."),Pn=i(),Ds=o("p"),wp=a("Notez que certains locuteurs ayant peu d\u2019exemples peuvent en fait avoir plus d\u2019audio disponible si les exemples sont longs. Cependant, pour d\xE9terminer la quantit\xE9 totale d\u2019audio pour chaque locuteur, il faut parcourir l\u2019ensemble des donn\xE9es, ce qui est un processus long qui implique le chargement et le d\xE9codage de chaque fichier audio. C\u2019est pourquoi nous avons choisi de sauter cette \xE9tape."),Dn=i(),R=o("h3"),ae=o("a"),Mt=o("span"),m(Ke.$$.fragment),Tp=i(),ft=o("span"),Up=a("Ench\xE2ssement des locuteurs"),Ln=i(),re=o("p"),bp=a(`Pour permettre au mod\xE8le TTS de diff\xE9rencier plusieurs locuteurs, vous devrez cr\xE9er un ench\xE2ssement de locuteur pour chaque exemple.
C\u2019est est une entr\xE9e suppl\xE9mentaire dans le mod\xE8le qui capture les caract\xE9ristiques de la voix d\u2019un locuteur particulier.
Pour g\xE9n\xE9rer ces ench\xE2ssements, utilisez le mod\xE8le pr\xE9-entra\xEEn\xE9 `),Oe=o("a"),vp=a("spkrec-xvect-voxceleb"),Ip=a(" de SpeechBrain."),Kn=i(),oe=o("p"),Cp=a("Cr\xE9ez une fonction "),yt=o("code"),_p=a("create_speaker_embedding()"),$p=a(" qui prend une forme d\u2019onde audio en entr\xE9e et produit un vecteur de 512 \xE9l\xE9ments contenant l\u2019ench\xE2ssement du locuteur correspondant."),On=i(),m(es.$$.fragment),ea=i(),pe=o("p"),Ep=a("Il est important de noter que le mod\xE8le "),Jt=o("code"),Zp=a("speechbrain/spkrec-xvect-voxceleb"),kp=a(" a \xE9t\xE9 entra\xEEn\xE9 sur de l\u2019anglais provenant du jeu de donn\xE9es VoxCeleb, alors que les exemples d\u2019entra\xEEnement dans ce guide sont en n\xE9erlandais. Bien que nous pensions que ce mod\xE8le g\xE9n\xE8rerait toujours des ench\xE2ssements de locuteurs raisonnables pour notre jeu de donn\xE9es n\xE9erlandais, cette hypoth\xE8se peut ne pas \xEAtre vraie dans tous les cas."),sa=i(),ue=o("p"),Vp=a("Pour obtenir des r\xE9sultats optimaux, nous devrions d\u2019abord entra\xEEner un mod\xE8le de vecteur X sur le discours cible. Ainsi, le mod\xE8le sera mieux \xE0 m\xEAme de capturer les caract\xE9ristiques vocales uniques pr\xE9sentes dans la langue n\xE9erlandaise. Si vous souhaitez entra\xEEner votre propre mod\xE8le X-vector, vous pouvez utiliser "),ss=o("a"),Bp=a("ce script"),xp=a(" comme exemple."),la=i(),Q=o("h3"),ie=o("a"),ht=o("span"),m(ls.$$.fragment),Gp=i(),jt=o("span"),Wp=a("Traitement du jeu de donn\xE9es"),ta=i(),B=o("p"),qp=a("Enfin, traitons les donn\xE9es dans le format attendu par le mod\xE8le. Cr\xE9ez une fonction "),wt=o("code"),zp=a("prepare_dataset"),gp=a(" qui prend un seul exemple et utilise l\u2019objet "),Tt=o("code"),Np=a("SpeechT5Processor"),Ap=a(` pour tokeniser le texte d\u2019entr\xE9e et charger l\u2019audio cible dans un spectrogramme log-mel.
Elle devrait \xE9galement ajouter les ench\xE2ssements de locuteur en tant qu\u2019entr\xE9e suppl\xE9mentaire.`),na=i(),m(ts.$$.fragment),aa=i(),Ls=o("p"),Xp=a("V\xE9rifiez que le traitement est correct en examinant un seul exemple :"),ra=i(),m(ns.$$.fragment),oa=i(),Ks=o("p"),Ut=o("strong"),Yp=a("Sortie :"),pa=i(),m(as.$$.fragment),ua=i(),Os=o("p"),Rp=a("Les ench\xE2ssements de locuteurs doivent \xEAtre un vecteur de 512 \xE9l\xE9ments :"),ia=i(),m(rs.$$.fragment),ca=i(),el=o("p"),bt=o("strong"),Qp=a("Sortie :"),da=i(),m(os.$$.fragment),ma=i(),sl=o("p"),Sp=a("Les \xE9tiquettes doivent \xEAtre un spectrogramme log-mel avec 80 bins mel."),Ma=i(),m(ps.$$.fragment),fa=i(),us=o("div"),ll=o("img"),ya=i(),tl=o("p"),Fp=a(`Remarque : si vous trouvez ce spectrogramme d\xE9routant, c\u2019est peut-\xEAtre parce que vous \xEAtes familier avec la convention qui consiste \xE0 placer les basses fr\xE9quences en bas et les hautes fr\xE9quences en haut d\u2019un graphique.
Cependant, lorsque l\u2019on trace des spectrogrammes sous forme d\u2019image \xE0 l\u2019aide de la biblioth\xE8que matplotlib, l\u2019axe des ordonn\xE9es est invers\xE9 et les spectrogrammes apparaissent \xE0 l\u2019envers.`),Ja=i(),nl=o("p"),Hp=a("Nous devons maintenant appliquer la fonction de traitement \xE0 l\u2019ensemble du jeu de donn\xE9es. Cela prendra entre 5 et 10 minutes."),ha=i(),m(is.$$.fragment),ja=i(),x=o("p"),Pp=a("Vous verrez un avertissement indiquant que certains exemples du jeu de donn\xE9es sont plus longs que la longueur d\u2019entr\xE9e maximale que le mod\xE8le peut traiter (600 "),vt=o("em"),Dp=a("tokens"),Lp=a(`).
Supprimez ces exemples du jeu de donn\xE9es. Ici, nous allons encore plus loin et, pour tenir compte de la taille des batchs, nous supprimons tout ce qui d\xE9passe 200 `),It=o("em"),Kp=a("tokens"),Op=a("."),wa=i(),m(cs.$$.fragment),Ta=i(),al=o("p"),Ct=o("strong"),eu=a("Sortie :"),Ua=i(),m(ds.$$.fragment),ba=i(),rl=o("p"),su=a("Next, create a basic train/test split:"),va=i(),m(ms.$$.fragment),Ia=i(),S=o("h3"),ce=o("a"),_t=o("span"),m(Ms.$$.fragment),lu=i(),$t=o("span"),tu=a("Assembleur de donn\xE9es"),Ca=i(),G=o("p"),nu=a("Afin de combiner plusieurs exemples dans un batch, vous devez d\xE9finir un assembleur de donn\xE9es personnalis\xE9. Il remplacera les s\xE9quences les plus courtes par des "),Et=o("em"),au=a("tokens"),ru=a(" de rembourrage, afin de s\u2019assurer que tous les exemples ont la m\xEAme longueur. Pour les \xE9tiquettes des spectrogrammes, les parties rembourr\xE9es sont remplac\xE9es par la valeur sp\xE9ciale "),Zt=o("code"),ou=a("-100"),pu=a(". Cette valeur sp\xE9ciale indique au mod\xE8le d\u2019ignorer cette partie du spectrogramme lors du calcul de la perte de spectrogramme."),_a=i(),m(fs.$$.fragment),$a=i(),ol=o("p"),uu=a("Dans SpeechT5, l\u2019entr\xE9e de la partie d\xE9codeur du mod\xE8le est r\xE9duite d\u2019un facteur 2. En d\u2019autres termes, il \xE9limine un pas de temps sur deux de la s\xE9quence cible. Le d\xE9codeur pr\xE9dit alors une s\xE9quence deux fois plus longue. \xC9tant donn\xE9 que la longueur de la s\xE9quence cible d\u2019origine peut \xEAtre impaire, l\u2019assembleur de donn\xE9es veille \xE0 arrondir la longueur maximale du batch \xE0 un multiple de 2."),Ea=i(),m(ys.$$.fragment),Za=i(),F=o("h2"),de=o("a"),kt=o("span"),m(Js.$$.fragment),iu=i(),Vt=o("span"),cu=a("Entra\xEEner le mod\xE8le"),ka=i(),me=o("p"),du=a("Chargez le mod\xE8le pr\xE9-entra\xEEn\xE9 \xE0 partir du m\xEAme "),Bt=o("em"),mu=a("checkpoint"),Mu=a(" que celui utilis\xE9 pour le chargement du processeur :"),Va=i(),m(hs.$$.fragment),Ba=i(),W=o("p"),fu=a("L\u2019option "),xt=o("code"),yu=a("use_cache=True"),Ju=a(" est incompatible avec le "),Gt=o("em"),hu=a("checkingpointing"),ju=a(" du gradient. D\xE9sactivez-la pour l\u2019entra\xEEnement, et r\xE9activez le cache pour la g\xE9n\xE9ration afin d\u2019acc\xE9l\xE9rer le temps d\u2019inf\xE9rence :"),xa=i(),m(js.$$.fragment),Ga=i(),pl=o("p"),wu=a("D\xE9finir les arguments d\u2019entra\xEEnement. Ici, nous ne calculons aucune m\xE9trique d\u2019\xE9valuation pendant le processus d\u2019entra\xEEnement, nous parlerons d\u2019\xE9valuation plus tard dans ce chapitre. Au lieu de cela, nous ne nous int\xE9resserons qu\u2019\xE0 la perte :"),Wa=i(),m(ws.$$.fragment),qa=i(),Me=o("p"),Tu=a("Instancie l\u2019objet "),Wt=o("code"),Uu=a("Trainer"),bu=a(" et lui passe le mod\xE8le, le jeu de donn\xE9es et l\u2019assembleur de donn\xE9es."),za=i(),m(Ts.$$.fragment),ga=i(),q=o("p"),vu=a("Et voil\xE0, nous sommes pr\xEAts \xE0 commencer l\u2019entra\xEEnement ! Il prendra plusieurs heures. En fonction de votre GPU, il est possible que vous rencontriez une erreur CUDA \u201Cout-of-memory\u201D lorsque vous commencez l\u2019entra\xEEnement. Dans ce cas, vous pouvez r\xE9duire la taille de "),qt=o("code"),Iu=a("per_device_train_batch_size"),Cu=a(" par incr\xE9ments d\u2019un facteur 2 et augmenter "),zt=o("code"),_u=a("gradient_accumulation_steps"),$u=a(" par 2 pour compenser."),Na=i(),m(Us.$$.fragment),Aa=i(),fe=o("p"),Eu=a("Pousser le mod\xE8le final sur le "),gt=o("em"),Zu=a("Hub"),ku=a(" :"),Xa=i(),m(bs.$$.fragment),Ya=i(),H=o("h2"),ye=o("a"),Nt=o("span"),m(vs.$$.fragment),Vu=i(),At=o("span"),Bu=a("Inf\xE9rence"),Ra=i(),z=o("p"),xu=a("Une fois que vous avez "),Xt=o("em"),Gu=a("finetun\xE9"),Wu=a(" un mod\xE8le, vous pouvez l\u2019utiliser pour l\u2019inf\xE9rence ! Chargez le mod\xE8le \xE0 partir du "),Yt=o("em"),qu=a("Hub"),zu=a(" (assurez-vous d\u2019utiliser votre nom de compte dans l\u2019extrait de code suivant) :"),Qa=i(),m(Is.$$.fragment),Sa=i(),ul=o("p"),gu=a("Choisissez un exemple, ici nous en prendrons un du jeu de donn\xE9es de test. Obtenez un ench\xE2ssement du locuteur."),Fa=i(),m(Cs.$$.fragment),Ha=i(),Je=o("p"),Nu=a("D\xE9finir un texte d\u2019entr\xE9e et le "),Rt=o("em"),Au=a("tokeniser"),Xu=a("."),Pa=i(),m(_s.$$.fragment),Da=i(),il=o("p"),Yu=a("Pr\xE9traiter le texte d\u2019entr\xE9e :"),La=i(),m($s.$$.fragment),Ka=i(),cl=o("p"),Ru=a("Installez un vocodeur et g\xE9n\xE9rez de la parole :"),Oa=i(),m(Es.$$.fragment),er=i(),dl=o("p"),Qu=a("On \xE9coute le r\xE9sultat ?"),sr=i(),m(Zs.$$.fragment),lr=i(),ml=o("p"),Su=a("Il peut \xEAtre difficile d\u2019obtenir des r\xE9sultats satisfaisants avec ce mod\xE8le dans une nouvelle langue. La qualit\xE9 de l\u2019ench\xE2ssement du locuteur peut \xEAtre un facteur important. Comme SpeechT5 a \xE9t\xE9 entra\xEEn\xE9 avec des X-vectors anglais, il donne de meilleurs r\xE9sultats lorsqu\u2019il utilise des ench\xE2ssements de locuteurs anglais. Si la synth\xE8se vocale semble m\xE9diocre, essayez d\u2019utiliser un autre ench\xE2ssement de locuteur."),tr=i(),he=o("p"),Fu=a(`L\u2019augmentation de la dur\xE9e d\u2019entra\xEEnement est \xE9galement susceptible d\u2019am\xE9liorer la qualit\xE9 des r\xE9sultats. Malgr\xE9 cela, le discours est clairement n\xE9erlandais et non anglais, et il capture les caract\xE9ristiques vocales du locuteur (comparez avec l\u2019audio original dans l\u2019exemple).
Une autre chose \xE0 exp\xE9rimenter est la configuration du mod\xE8le. Par exemple, essayez d\u2019utiliser `),Qt=o("code"),Hu=a("config.reduction_factor = 1"),Pu=a(" pour voir si cela am\xE9liore les r\xE9sultats."),nr=i(),Ml=o("p"),Du=a("Dans la section suivante, nous verrons comment nous \xE9valuons les mod\xE8les de synth\xE8se vocale."),this.h()},l(e){const t=vd('[data-svelte="svelte-1phssyn"]',document.head);b=p(t,"META",{name:!0,content:!0}),t.forEach(s),P=c(e),v=p(e,"H1",{class:!0});var ks=u(v);C=p(ks,"A",{id:!0,class:!0,href:!0});var Ou=u(C);bl=p(Ou,"SPAN",{});var ei=u(bl);M(Ue.$$.fragment,ei),ei.forEach(s),Ou.forEach(s),$r=c(ks),vl=p(ks,"SPAN",{});var si=u(vl);Er=r(si,"Finetuning du SpeechT5"),si.forEach(s),ks.forEach(s),Ft=c(e),D=p(e,"P",{});var rr=u(D);Zr=r(rr,"Maintenant que vous \xEAtes familiaris\xE9 avec la t\xE2che de synth\xE8se vocale et le fonctionnement interne du SpeechT5 qui a \xE9t\xE9 entra\xEEn\xE9 sur des donn\xE9es en langue anglaise, voyons comment nous pouvons le "),Il=p(rr,"EM",{});var li=u(Il);kr=r(li,"finetuner"),li.forEach(s),Vr=r(rr," \xE0 une autre langue."),rr.forEach(s),Ht=c(e),g=p(e,"H2",{class:!0});var or=u(g);L=p(or,"A",{id:!0,class:!0,href:!0});var ti=u(L);Cl=p(ti,"SPAN",{});var ni=u(Cl);M(be.$$.fragment,ni),ni.forEach(s),ti.forEach(s),Br=c(or),_l=p(or,"SPAN",{});var ai=u(_l);xr=r(ai,"Pr\xE9paration"),ai.forEach(s),or.forEach(s),Pt=r(e,`

Assurez-vous de disposer d'un GPU si vous souhaitez reproduire cet exemple. Dans un *notebook*, vous pouvez v\xE9rifier avec la commande suivante :

	`),M(ve.$$.fragment,e),Dt=c(e),M(K.$$.fragment,e),Lt=c(e),Vs=p(e,"P",{});var ri=u(Vs);Gr=r(ri,"Vous aurez \xE9galement besoin de quelques d\xE9pendances suppl\xE9mentaires :"),ri.forEach(s),Kt=c(e),M(Ie.$$.fragment,e),Ot=c(e),Bs=p(e,"P",{});var oi=u(Bs);Wr=r(oi,"Enfin, n\u2019oubliez pas de vous connecter \xE0 votre compte Hugging Face pour pouvoir t\xE9l\xE9charger et partager votre mod\xE8le avec la communaut\xE9 :"),oi.forEach(s),en=c(e),M(Ce.$$.fragment,e),sn=c(e),N=p(e,"H2",{class:!0});var pr=u(N);O=p(pr,"A",{id:!0,class:!0,href:!0});var pi=u(O);$l=p(pi,"SPAN",{});var ui=u($l);M(_e.$$.fragment,ui),ui.forEach(s),pi.forEach(s),qr=c(pr),El=p(pr,"SPAN",{});var ii=u(El);zr=r(ii,"Le jeu de donn\xE9es"),ii.forEach(s),pr.forEach(s),ln=c(e),_=p(e,"P",{});var je=u(_);gr=r(je,"Pour cet exemple, nous prendrons le sous-ensemble en n\xE9erlandais ("),Zl=p(je,"CODE",{});var ci=u(Zl);Nr=r(ci,"nl"),ci.forEach(s),Ar=r(je,") du jeu de donn\xE9es "),$e=p(je,"A",{href:!0,rel:!0});var di=u($e);Xr=r(di,"VoxPopuli"),di.forEach(s),Yr=r(je,`.
`),Ee=p(je,"A",{href:!0,rel:!0});var mi=u(Ee);Rr=r(mi,"VoxPopuli"),mi.forEach(s),Qr=r(je,` est un corpus de parole multilingue \xE0 grande \xE9chelle compos\xE9 de donn\xE9es provenant d\u2019enregistrements d\u2019\xE9v\xE9nements du Parlement europ\xE9en de 2009 \xE0 2020.
Il contient des donn\xE9es de transcription audio \xE9tiquet\xE9es pour 15 langues europ\xE9ennes. Nous utiliserons le sous-ensemble n\xE9erlandais, mais vous pouvez choisir un autre sous-ensemble.`),je.forEach(s),tn=c(e),xs=p(e,"P",{});var Mi=u(xs);Sr=r(Mi,"Il s\u2019agit d\u2019un jeu de donn\xE9es de reconnaissance automatique de la parole, donc comme mentionn\xE9 pr\xE9c\xE9demment, ce n\u2019est pas l\u2019option la plus appropri\xE9e pour entra\xEEner des mod\xE8les TTS. Cependant, il sera suffisant pour cet exercice."),Mi.forEach(s),nn=c(e),Gs=p(e,"P",{});var fi=u(Gs);Fr=r(fi,"Chargeons les donn\xE9es :"),fi.forEach(s),an=c(e),M(Ze.$$.fragment,e),rn=c(e),Ws=p(e,"P",{});var yi=u(Ws);kl=p(yi,"STRONG",{});var Ji=u(kl);Hr=r(Ji,"Sortie :"),Ji.forEach(s),yi.forEach(s),on=c(e),M(ke.$$.fragment,e),pn=c(e),ee=p(e,"P",{});var ur=u(ee);Pr=r(ur,"20968 exemples devraient suffire pour un "),Vl=p(ur,"EM",{});var hi=u(Vl);Dr=r(hi,"finetuning"),hi.forEach(s),Lr=r(ur,". SpeechT5 s\u2019attend \xE0 ce que les donn\xE9es audio aient une fr\xE9quence d\u2019\xE9chantillonnage de 16 kHz, assurez-vous donc que les exemples du jeu de donn\xE9es r\xE9pondent \xE0 cette exigence :"),ur.forEach(s),un=c(e),M(Ve.$$.fragment,e),cn=c(e),A=p(e,"H2",{class:!0});var ir=u(A);se=p(ir,"A",{id:!0,class:!0,href:!0});var ji=u(se);Bl=p(ji,"SPAN",{});var wi=u(Bl);M(Be.$$.fragment,wi),wi.forEach(s),ji.forEach(s),Kr=c(ir),xl=p(ir,"SPAN",{});var Ti=u(xl);Or=r(Ti,"Pr\xE9traitement des donn\xE9es"),Ti.forEach(s),ir.forEach(s),dn=c(e),k=p(e,"P",{});var fl=u(k);eo=r(fl,"Commen\xE7ons par d\xE9finir le "),Gl=p(fl,"EM",{});var Ui=u(Gl);so=r(Ui,"checkpoint"),Ui.forEach(s),lo=r(fl," du mod\xE8le \xE0 utiliser et par charger le processeur appropri\xE9 qui contient \xE0 la fois le "),Wl=p(fl,"EM",{});var bi=u(Wl);to=r(bi,"tokenizer"),bi.forEach(s),no=r(fl," et l\u2019extracteur de caract\xE9ristiques dont nous aurons besoin pour pr\xE9parer les donn\xE9es en vue de l\u2019entra\xEEnement :"),fl.forEach(s),mn=c(e),M(xe.$$.fragment,e),Mn=c(e),X=p(e,"H3",{class:!0});var cr=u(X);le=p(cr,"A",{id:!0,class:!0,href:!0});var vi=u(le);ql=p(vi,"SPAN",{});var Ii=u(ql);M(Ge.$$.fragment,Ii),Ii.forEach(s),vi.forEach(s),ao=c(cr),zl=p(cr,"SPAN",{});var Ci=u(zl);ro=r(Ci,"Nettoyage du texte pour la tokenisation de SpeechT5"),Ci.forEach(s),cr.forEach(s),fn=c(e),te=p(e,"P",{});var dr=u(te);oo=r(dr,"Tout d\u2019abord, pour pr\xE9parer le texte, nous aurons besoin de la partie "),gl=p(dr,"EM",{});var _i=u(gl);po=r(_i,"tokenizer"),_i.forEach(s),uo=r(dr," du processeur, alors allons-y :"),dr.forEach(s),yn=c(e),M(We.$$.fragment,e),Jn=c(e),qs=p(e,"P",{});var $i=u(qs);io=r($i,"Prenons un exemple :"),$i.forEach(s),hn=c(e),M(qe.$$.fragment,e),jn=c(e),zs=p(e,"P",{});var Ei=u(zs);Nl=p(Ei,"STRONG",{});var Zi=u(Nl);co=r(Zi,"Sortie :"),Zi.forEach(s),Ei.forEach(s),wn=c(e),M(ze.$$.fragment,e),Tn=c(e),T=p(e,"P",{});var I=u(T);mo=r(I,"Vous remarquerez que les exemples du jeu de donn\xE9es contiennent les caract\xE9ristiques "),Al=p(I,"CODE",{});var ki=u(Al);Mo=r(ki,"raw_text"),ki.forEach(s),fo=r(I," et "),Xl=p(I,"CODE",{});var Vi=u(Xl);yo=r(Vi,"normalized_text"),Vi.forEach(s),Jo=r(I,". Lorsque vous d\xE9cidez quelle caract\xE9ristique utiliser comme entr\xE9e de texte, il est important de savoir que le "),Yl=p(I,"EM",{});var Bi=u(Yl);ho=r(Bi,"tokenizer"),Bi.forEach(s),jo=r(I," de SpeechT5 n\u2019a pas de "),Rl=p(I,"EM",{});var xi=u(Rl);wo=r(xi,"tokens"),xi.forEach(s),To=r(I," pour les nombres. Dans "),Ql=p(I,"CODE",{});var Gi=u(Ql);Uo=r(Gi,"normalized_text"),Gi.forEach(s),bo=r(I,", les nombres sont \xE9crits sous forme textuel. Il s\u2019agit donc d\u2019une meilleure option, et nous devrions utiliser "),Sl=p(I,"CODE",{});var Wi=u(Sl);vo=r(Wi,"normalized_text"),Wi.forEach(s),Io=r(I," comme texte d\u2019entr\xE9e."),I.forEach(s),Un=c(e),$=p(e,"P",{});var we=u($);Co=r(we,`Comme SpeechT5 a \xE9t\xE9 entra\xEEn\xE9 sur la langue anglaise, il se peut qu\u2019il ne reconnaisse pas certains caract\xE8res dans le jeu de donn\xE9es n\xE9erlandais.
S\u2019ils sont laiss\xE9s tels quels, ces caract\xE8res seront convertis en tokens `),Fl=p(we,"CODE",{});var qi=u(Fl);_o=r(qi,"<unk>"),qi.forEach(s),$o=r(we,". Cependant, en n\xE9erlandais, certains caract\xE8res comme "),Hl=p(we,"CODE",{});var zi=u(Hl);Eo=r(zi,"\xE0"),zi.forEach(s),Zo=r(we," sont utilis\xE9s pour souligner les syllabes. Afin de pr\xE9server le sens du texte, nous pouvons remplacer ce caract\xE8re par un "),Pl=p(we,"CODE",{});var gi=u(Pl);ko=r(gi,"a"),gi.forEach(s),Vo=r(we," normal."),we.forEach(s),bn=c(e),w=p(e,"P",{});var U=u(w);Bo=r(U,"Pour identifier les "),Dl=p(U,"EM",{});var Ni=u(Dl);xo=r(Ni,"tokens"),Ni.forEach(s),Go=r(U," non support\xE9s, extrayez tous les caract\xE8res uniques du jeu de donn\xE9es en utilisant le "),Ll=p(U,"CODE",{});var Ai=u(Ll);Wo=r(Ai,"SpeechT5Tokenizer"),Ai.forEach(s),qo=r(U," qui fonctionne avec les caract\xE8res comme des "),Kl=p(U,"EM",{});var Xi=u(Kl);zo=r(Xi,"tokens"),Xi.forEach(s),go=r(U,`.
Pour ce faire, nous allons \xE9crire la fonction `),Ol=p(U,"CODE",{});var Yi=u(Ol);No=r(Yi,"extract_all_chars"),Yi.forEach(s),Ao=r(U,` qui concat\xE8ne les transcriptions de tous les exemples en une cha\xEEne et la convertit en un ensemble de caract\xE8res.
Assurez-vous de mettre `),et=p(U,"CODE",{});var Ri=u(et);Xo=r(Ri,"batched=True"),Ri.forEach(s),Yo=r(U," et "),st=p(U,"CODE",{});var Qi=u(st);Ro=r(Qi,"batch_size=-1"),Qi.forEach(s),Qo=r(U," dans "),lt=p(U,"CODE",{});var Si=u(lt);So=r(Si,"dataset.map()"),Si.forEach(s),Fo=r(U," afin que toutes les transcriptions soient disponibles en m\xEAme temps pour la fonction de "),tt=p(U,"EM",{});var Fi=u(tt);Ho=r(Fi,"mapping"),Fi.forEach(s),Po=r(U,"."),U.forEach(s),vn=c(e),M(ge.$$.fragment,e),In=c(e),V=p(e,"P",{});var yl=u(V);Do=r(yl,"Vous disposez \xE0 pr\xE9sent de deux ensembles de caract\xE8res : l\u2019un avec le vocabulaire du jeu de donn\xE9es et l\u2019autre avec le vocabulaire du "),nt=p(yl,"EM",{});var Hi=u(nt);Lo=r(Hi,"tokenizer"),Hi.forEach(s),Ko=r(yl,`.
Pour identifier les caract\xE8res non pris en charge dans le jeu de donn\xE9es, vous pouvez prendre la diff\xE9rence entre ces deux ensembles. L\u2019ensemble r\xE9sultant contiendra les caract\xE8res qui se trouvent dans le jeu de donn\xE9es mais pas dans le `),at=p(yl,"EM",{});var Pi=u(at);Oo=r(Pi,"tokenizer"),Pi.forEach(s),ep=r(yl,"."),yl.forEach(s),Cn=c(e),M(Ne.$$.fragment,e),_n=c(e),gs=p(e,"P",{});var Di=u(gs);rt=p(Di,"STRONG",{});var Li=u(rt);sp=r(Li,"Sortie :"),Li.forEach(s),Di.forEach(s),$n=c(e),M(Ae.$$.fragment,e),En=c(e),E=p(e,"P",{});var Te=u(E);lp=r(Te,"Pour g\xE9rer les caract\xE8res non support\xE9s identifi\xE9s dans l\u2019\xE9tape pr\xE9c\xE9dente, nous pouvons d\xE9finir une fonction qui fait correspondre ces caract\xE8res \xE0 des "),ot=p(Te,"EM",{});var Ki=u(ot);tp=r(Ki,"tokens"),Ki.forEach(s),np=r(Te," valides. Notez que les espaces sont d\xE9j\xE0 remplac\xE9s par "),pt=p(Te,"CODE",{});var Oi=u(pt);ap=r(Oi,"\u2581"),Oi.forEach(s),rp=r(Te," dans le "),ut=p(Te,"EM",{});var ec=u(ut);op=r(ec,"tokenizer"),ec.forEach(s),pp=r(Te," et n\u2019ont pas besoin d\u2019\xEAtre g\xE9r\xE9s s\xE9par\xE9ment."),Te.forEach(s),Zn=c(e),M(Xe.$$.fragment,e),kn=c(e),Ns=p(e,"P",{});var sc=u(Ns);up=r(sc,"Maintenant que nous avons trait\xE9 les caract\xE8res sp\xE9ciaux dans le texte, il est temps de se concentrer sur les donn\xE9es audio."),sc.forEach(s),Vn=c(e),Y=p(e,"H3",{class:!0});var mr=u(Y);ne=p(mr,"A",{id:!0,class:!0,href:!0});var lc=u(ne);it=p(lc,"SPAN",{});var tc=u(it);M(Ye.$$.fragment,tc),tc.forEach(s),lc.forEach(s),ip=c(mr),ct=p(mr,"SPAN",{});var nc=u(ct);cp=r(nc,"Les locuteurs"),nc.forEach(s),mr.forEach(s),Bn=c(e),As=p(e,"P",{});var ac=u(As);dp=r(ac,`Le jeu de donn\xE9es VoxPopuli comprend la parole de plusieurs locuteurs, mais combien de locuteurs sont repr\xE9sent\xE9s dans le jeu de donn\xE9es ? Pour le savoir, nous pouvons compter le nombre de locuteurs uniques et le nombre d\u2019exemples que chaque locuteur apporte au jeu de donn\xE9es.
Avec un total de 20 968 exemples dans le jeu de donn\xE9es, cette information nous permettra de mieux comprendre la distribution des locuteurs et des exemples dans les donn\xE9es.`),ac.forEach(s),xn=c(e),M(Re.$$.fragment,e),Gn=c(e),Xs=p(e,"P",{});var rc=u(Xs);mp=r(rc,"En tra\xE7ant un histogramme, vous pouvez vous faire une id\xE9e de la quantit\xE9 de donn\xE9es pour chaque locuteur."),rc.forEach(s),Wn=c(e),M(Qe.$$.fragment,e),qn=c(e),Se=p(e,"DIV",{class:!0});var oc=u(Se);Ys=p(oc,"IMG",{src:!0,alt:!0}),oc.forEach(s),zn=c(e),Rs=p(e,"P",{});var pc=u(Rs);Mp=r(pc,"L\u2019histogramme r\xE9v\xE8le qu\u2019environ un tiers des locuteurs du jeu de donn\xE9es ont moins de 100 exemples, tandis qu\u2019une dizaine de locuteurs ont plus de 500 exemples. Pour am\xE9liorer l\u2019efficacit\xE9 de l\u2019entra\xEEnement et \xE9quilibrer le jeu de donn\xE9es, nous pouvons limiter les donn\xE9es aux locuteurs ayant entre 100 et 400 exemples."),pc.forEach(s),gn=c(e),M(Fe.$$.fragment,e),Nn=c(e),Qs=p(e,"P",{});var uc=u(Qs);fp=r(uc,"V\xE9rifions le nombre de locuteurs restants :"),uc.forEach(s),An=c(e),M(He.$$.fragment,e),Xn=c(e),Ss=p(e,"P",{});var ic=u(Ss);dt=p(ic,"STRONG",{});var cc=u(dt);yp=r(cc,"Sortie :"),cc.forEach(s),ic.forEach(s),Yn=c(e),M(Pe.$$.fragment,e),Rn=c(e),Fs=p(e,"P",{});var dc=u(Fs);Jp=r(dc,"Voyons combien d\u2019exemples il reste :"),dc.forEach(s),Qn=c(e),M(De.$$.fragment,e),Sn=c(e),Hs=p(e,"P",{});var mc=u(Hs);mt=p(mc,"STRONG",{});var Mc=u(mt);hp=r(Mc,"Sortie :"),Mc.forEach(s),mc.forEach(s),Fn=c(e),M(Le.$$.fragment,e),Hn=c(e),Ps=p(e,"P",{});var fc=u(Ps);jp=r(fc,"Vous vous retrouvez avec un peu moins de 10 000 exemples provenant d\u2019environ 40 locuteurs uniques, ce qui devrait \xEAtre suffisant."),fc.forEach(s),Pn=c(e),Ds=p(e,"P",{});var yc=u(Ds);wp=r(yc,"Notez que certains locuteurs ayant peu d\u2019exemples peuvent en fait avoir plus d\u2019audio disponible si les exemples sont longs. Cependant, pour d\xE9terminer la quantit\xE9 totale d\u2019audio pour chaque locuteur, il faut parcourir l\u2019ensemble des donn\xE9es, ce qui est un processus long qui implique le chargement et le d\xE9codage de chaque fichier audio. C\u2019est pourquoi nous avons choisi de sauter cette \xE9tape."),yc.forEach(s),Dn=c(e),R=p(e,"H3",{class:!0});var Mr=u(R);ae=p(Mr,"A",{id:!0,class:!0,href:!0});var Jc=u(ae);Mt=p(Jc,"SPAN",{});var hc=u(Mt);M(Ke.$$.fragment,hc),hc.forEach(s),Jc.forEach(s),Tp=c(Mr),ft=p(Mr,"SPAN",{});var jc=u(ft);Up=r(jc,"Ench\xE2ssement des locuteurs"),jc.forEach(s),Mr.forEach(s),Ln=c(e),re=p(e,"P",{});var fr=u(re);bp=r(fr,`Pour permettre au mod\xE8le TTS de diff\xE9rencier plusieurs locuteurs, vous devrez cr\xE9er un ench\xE2ssement de locuteur pour chaque exemple.
C\u2019est est une entr\xE9e suppl\xE9mentaire dans le mod\xE8le qui capture les caract\xE9ristiques de la voix d\u2019un locuteur particulier.
Pour g\xE9n\xE9rer ces ench\xE2ssements, utilisez le mod\xE8le pr\xE9-entra\xEEn\xE9 `),Oe=p(fr,"A",{href:!0,rel:!0});var wc=u(Oe);vp=r(wc,"spkrec-xvect-voxceleb"),wc.forEach(s),Ip=r(fr," de SpeechBrain."),fr.forEach(s),Kn=c(e),oe=p(e,"P",{});var yr=u(oe);Cp=r(yr,"Cr\xE9ez une fonction "),yt=p(yr,"CODE",{});var Tc=u(yt);_p=r(Tc,"create_speaker_embedding()"),Tc.forEach(s),$p=r(yr," qui prend une forme d\u2019onde audio en entr\xE9e et produit un vecteur de 512 \xE9l\xE9ments contenant l\u2019ench\xE2ssement du locuteur correspondant."),yr.forEach(s),On=c(e),M(es.$$.fragment,e),ea=c(e),pe=p(e,"P",{});var Jr=u(pe);Ep=r(Jr,"Il est important de noter que le mod\xE8le "),Jt=p(Jr,"CODE",{});var Uc=u(Jt);Zp=r(Uc,"speechbrain/spkrec-xvect-voxceleb"),Uc.forEach(s),kp=r(Jr," a \xE9t\xE9 entra\xEEn\xE9 sur de l\u2019anglais provenant du jeu de donn\xE9es VoxCeleb, alors que les exemples d\u2019entra\xEEnement dans ce guide sont en n\xE9erlandais. Bien que nous pensions que ce mod\xE8le g\xE9n\xE8rerait toujours des ench\xE2ssements de locuteurs raisonnables pour notre jeu de donn\xE9es n\xE9erlandais, cette hypoth\xE8se peut ne pas \xEAtre vraie dans tous les cas."),Jr.forEach(s),sa=c(e),ue=p(e,"P",{});var hr=u(ue);Vp=r(hr,"Pour obtenir des r\xE9sultats optimaux, nous devrions d\u2019abord entra\xEEner un mod\xE8le de vecteur X sur le discours cible. Ainsi, le mod\xE8le sera mieux \xE0 m\xEAme de capturer les caract\xE9ristiques vocales uniques pr\xE9sentes dans la langue n\xE9erlandaise. Si vous souhaitez entra\xEEner votre propre mod\xE8le X-vector, vous pouvez utiliser "),ss=p(hr,"A",{href:!0,rel:!0});var bc=u(ss);Bp=r(bc,"ce script"),bc.forEach(s),xp=r(hr," comme exemple."),hr.forEach(s),la=c(e),Q=p(e,"H3",{class:!0});var jr=u(Q);ie=p(jr,"A",{id:!0,class:!0,href:!0});var vc=u(ie);ht=p(vc,"SPAN",{});var Ic=u(ht);M(ls.$$.fragment,Ic),Ic.forEach(s),vc.forEach(s),Gp=c(jr),jt=p(jr,"SPAN",{});var Cc=u(jt);Wp=r(Cc,"Traitement du jeu de donn\xE9es"),Cc.forEach(s),jr.forEach(s),ta=c(e),B=p(e,"P",{});var Jl=u(B);qp=r(Jl,"Enfin, traitons les donn\xE9es dans le format attendu par le mod\xE8le. Cr\xE9ez une fonction "),wt=p(Jl,"CODE",{});var _c=u(wt);zp=r(_c,"prepare_dataset"),_c.forEach(s),gp=r(Jl," qui prend un seul exemple et utilise l\u2019objet "),Tt=p(Jl,"CODE",{});var $c=u(Tt);Np=r($c,"SpeechT5Processor"),$c.forEach(s),Ap=r(Jl,` pour tokeniser le texte d\u2019entr\xE9e et charger l\u2019audio cible dans un spectrogramme log-mel.
Elle devrait \xE9galement ajouter les ench\xE2ssements de locuteur en tant qu\u2019entr\xE9e suppl\xE9mentaire.`),Jl.forEach(s),na=c(e),M(ts.$$.fragment,e),aa=c(e),Ls=p(e,"P",{});var Ec=u(Ls);Xp=r(Ec,"V\xE9rifiez que le traitement est correct en examinant un seul exemple :"),Ec.forEach(s),ra=c(e),M(ns.$$.fragment,e),oa=c(e),Ks=p(e,"P",{});var Zc=u(Ks);Ut=p(Zc,"STRONG",{});var kc=u(Ut);Yp=r(kc,"Sortie :"),kc.forEach(s),Zc.forEach(s),pa=c(e),M(as.$$.fragment,e),ua=c(e),Os=p(e,"P",{});var Vc=u(Os);Rp=r(Vc,"Les ench\xE2ssements de locuteurs doivent \xEAtre un vecteur de 512 \xE9l\xE9ments :"),Vc.forEach(s),ia=c(e),M(rs.$$.fragment,e),ca=c(e),el=p(e,"P",{});var Bc=u(el);bt=p(Bc,"STRONG",{});var xc=u(bt);Qp=r(xc,"Sortie :"),xc.forEach(s),Bc.forEach(s),da=c(e),M(os.$$.fragment,e),ma=c(e),sl=p(e,"P",{});var Gc=u(sl);Sp=r(Gc,"Les \xE9tiquettes doivent \xEAtre un spectrogramme log-mel avec 80 bins mel."),Gc.forEach(s),Ma=c(e),M(ps.$$.fragment,e),fa=c(e),us=p(e,"DIV",{class:!0});var Wc=u(us);ll=p(Wc,"IMG",{src:!0,alt:!0}),Wc.forEach(s),ya=c(e),tl=p(e,"P",{});var qc=u(tl);Fp=r(qc,`Remarque : si vous trouvez ce spectrogramme d\xE9routant, c\u2019est peut-\xEAtre parce que vous \xEAtes familier avec la convention qui consiste \xE0 placer les basses fr\xE9quences en bas et les hautes fr\xE9quences en haut d\u2019un graphique.
Cependant, lorsque l\u2019on trace des spectrogrammes sous forme d\u2019image \xE0 l\u2019aide de la biblioth\xE8que matplotlib, l\u2019axe des ordonn\xE9es est invers\xE9 et les spectrogrammes apparaissent \xE0 l\u2019envers.`),qc.forEach(s),Ja=c(e),nl=p(e,"P",{});var zc=u(nl);Hp=r(zc,"Nous devons maintenant appliquer la fonction de traitement \xE0 l\u2019ensemble du jeu de donn\xE9es. Cela prendra entre 5 et 10 minutes."),zc.forEach(s),ha=c(e),M(is.$$.fragment,e),ja=c(e),x=p(e,"P",{});var hl=u(x);Pp=r(hl,"Vous verrez un avertissement indiquant que certains exemples du jeu de donn\xE9es sont plus longs que la longueur d\u2019entr\xE9e maximale que le mod\xE8le peut traiter (600 "),vt=p(hl,"EM",{});var gc=u(vt);Dp=r(gc,"tokens"),gc.forEach(s),Lp=r(hl,`).
Supprimez ces exemples du jeu de donn\xE9es. Ici, nous allons encore plus loin et, pour tenir compte de la taille des batchs, nous supprimons tout ce qui d\xE9passe 200 `),It=p(hl,"EM",{});var Nc=u(It);Kp=r(Nc,"tokens"),Nc.forEach(s),Op=r(hl,"."),hl.forEach(s),wa=c(e),M(cs.$$.fragment,e),Ta=c(e),al=p(e,"P",{});var Ac=u(al);Ct=p(Ac,"STRONG",{});var Xc=u(Ct);eu=r(Xc,"Sortie :"),Xc.forEach(s),Ac.forEach(s),Ua=c(e),M(ds.$$.fragment,e),ba=c(e),rl=p(e,"P",{});var Yc=u(rl);su=r(Yc,"Next, create a basic train/test split:"),Yc.forEach(s),va=c(e),M(ms.$$.fragment,e),Ia=c(e),S=p(e,"H3",{class:!0});var wr=u(S);ce=p(wr,"A",{id:!0,class:!0,href:!0});var Rc=u(ce);_t=p(Rc,"SPAN",{});var Qc=u(_t);M(Ms.$$.fragment,Qc),Qc.forEach(s),Rc.forEach(s),lu=c(wr),$t=p(wr,"SPAN",{});var Sc=u($t);tu=r(Sc,"Assembleur de donn\xE9es"),Sc.forEach(s),wr.forEach(s),Ca=c(e),G=p(e,"P",{});var jl=u(G);nu=r(jl,"Afin de combiner plusieurs exemples dans un batch, vous devez d\xE9finir un assembleur de donn\xE9es personnalis\xE9. Il remplacera les s\xE9quences les plus courtes par des "),Et=p(jl,"EM",{});var Fc=u(Et);au=r(Fc,"tokens"),Fc.forEach(s),ru=r(jl," de rembourrage, afin de s\u2019assurer que tous les exemples ont la m\xEAme longueur. Pour les \xE9tiquettes des spectrogrammes, les parties rembourr\xE9es sont remplac\xE9es par la valeur sp\xE9ciale "),Zt=p(jl,"CODE",{});var Hc=u(Zt);ou=r(Hc,"-100"),Hc.forEach(s),pu=r(jl,". Cette valeur sp\xE9ciale indique au mod\xE8le d\u2019ignorer cette partie du spectrogramme lors du calcul de la perte de spectrogramme."),jl.forEach(s),_a=c(e),M(fs.$$.fragment,e),$a=c(e),ol=p(e,"P",{});var Pc=u(ol);uu=r(Pc,"Dans SpeechT5, l\u2019entr\xE9e de la partie d\xE9codeur du mod\xE8le est r\xE9duite d\u2019un facteur 2. En d\u2019autres termes, il \xE9limine un pas de temps sur deux de la s\xE9quence cible. Le d\xE9codeur pr\xE9dit alors une s\xE9quence deux fois plus longue. \xC9tant donn\xE9 que la longueur de la s\xE9quence cible d\u2019origine peut \xEAtre impaire, l\u2019assembleur de donn\xE9es veille \xE0 arrondir la longueur maximale du batch \xE0 un multiple de 2."),Pc.forEach(s),Ea=c(e),M(ys.$$.fragment,e),Za=c(e),F=p(e,"H2",{class:!0});var Tr=u(F);de=p(Tr,"A",{id:!0,class:!0,href:!0});var Dc=u(de);kt=p(Dc,"SPAN",{});var Lc=u(kt);M(Js.$$.fragment,Lc),Lc.forEach(s),Dc.forEach(s),iu=c(Tr),Vt=p(Tr,"SPAN",{});var Kc=u(Vt);cu=r(Kc,"Entra\xEEner le mod\xE8le"),Kc.forEach(s),Tr.forEach(s),ka=c(e),me=p(e,"P",{});var Ur=u(me);du=r(Ur,"Chargez le mod\xE8le pr\xE9-entra\xEEn\xE9 \xE0 partir du m\xEAme "),Bt=p(Ur,"EM",{});var Oc=u(Bt);mu=r(Oc,"checkpoint"),Oc.forEach(s),Mu=r(Ur," que celui utilis\xE9 pour le chargement du processeur :"),Ur.forEach(s),Va=c(e),M(hs.$$.fragment,e),Ba=c(e),W=p(e,"P",{});var wl=u(W);fu=r(wl,"L\u2019option "),xt=p(wl,"CODE",{});var ed=u(xt);yu=r(ed,"use_cache=True"),ed.forEach(s),Ju=r(wl," est incompatible avec le "),Gt=p(wl,"EM",{});var sd=u(Gt);hu=r(sd,"checkingpointing"),sd.forEach(s),ju=r(wl," du gradient. D\xE9sactivez-la pour l\u2019entra\xEEnement, et r\xE9activez le cache pour la g\xE9n\xE9ration afin d\u2019acc\xE9l\xE9rer le temps d\u2019inf\xE9rence :"),wl.forEach(s),xa=c(e),M(js.$$.fragment,e),Ga=c(e),pl=p(e,"P",{});var ld=u(pl);wu=r(ld,"D\xE9finir les arguments d\u2019entra\xEEnement. Ici, nous ne calculons aucune m\xE9trique d\u2019\xE9valuation pendant le processus d\u2019entra\xEEnement, nous parlerons d\u2019\xE9valuation plus tard dans ce chapitre. Au lieu de cela, nous ne nous int\xE9resserons qu\u2019\xE0 la perte :"),ld.forEach(s),Wa=c(e),M(ws.$$.fragment,e),qa=c(e),Me=p(e,"P",{});var br=u(Me);Tu=r(br,"Instancie l\u2019objet "),Wt=p(br,"CODE",{});var td=u(Wt);Uu=r(td,"Trainer"),td.forEach(s),bu=r(br," et lui passe le mod\xE8le, le jeu de donn\xE9es et l\u2019assembleur de donn\xE9es."),br.forEach(s),za=c(e),M(Ts.$$.fragment,e),ga=c(e),q=p(e,"P",{});var Tl=u(q);vu=r(Tl,"Et voil\xE0, nous sommes pr\xEAts \xE0 commencer l\u2019entra\xEEnement ! Il prendra plusieurs heures. En fonction de votre GPU, il est possible que vous rencontriez une erreur CUDA \u201Cout-of-memory\u201D lorsque vous commencez l\u2019entra\xEEnement. Dans ce cas, vous pouvez r\xE9duire la taille de "),qt=p(Tl,"CODE",{});var nd=u(qt);Iu=r(nd,"per_device_train_batch_size"),nd.forEach(s),Cu=r(Tl," par incr\xE9ments d\u2019un facteur 2 et augmenter "),zt=p(Tl,"CODE",{});var ad=u(zt);_u=r(ad,"gradient_accumulation_steps"),ad.forEach(s),$u=r(Tl," par 2 pour compenser."),Tl.forEach(s),Na=c(e),M(Us.$$.fragment,e),Aa=c(e),fe=p(e,"P",{});var vr=u(fe);Eu=r(vr,"Pousser le mod\xE8le final sur le "),gt=p(vr,"EM",{});var rd=u(gt);Zu=r(rd,"Hub"),rd.forEach(s),ku=r(vr," :"),vr.forEach(s),Xa=c(e),M(bs.$$.fragment,e),Ya=c(e),H=p(e,"H2",{class:!0});var Ir=u(H);ye=p(Ir,"A",{id:!0,class:!0,href:!0});var od=u(ye);Nt=p(od,"SPAN",{});var pd=u(Nt);M(vs.$$.fragment,pd),pd.forEach(s),od.forEach(s),Vu=c(Ir),At=p(Ir,"SPAN",{});var ud=u(At);Bu=r(ud,"Inf\xE9rence"),ud.forEach(s),Ir.forEach(s),Ra=c(e),z=p(e,"P",{});var Ul=u(z);xu=r(Ul,"Une fois que vous avez "),Xt=p(Ul,"EM",{});var id=u(Xt);Gu=r(id,"finetun\xE9"),id.forEach(s),Wu=r(Ul," un mod\xE8le, vous pouvez l\u2019utiliser pour l\u2019inf\xE9rence ! Chargez le mod\xE8le \xE0 partir du "),Yt=p(Ul,"EM",{});var cd=u(Yt);qu=r(cd,"Hub"),cd.forEach(s),zu=r(Ul," (assurez-vous d\u2019utiliser votre nom de compte dans l\u2019extrait de code suivant) :"),Ul.forEach(s),Qa=c(e),M(Is.$$.fragment,e),Sa=c(e),ul=p(e,"P",{});var dd=u(ul);gu=r(dd,"Choisissez un exemple, ici nous en prendrons un du jeu de donn\xE9es de test. Obtenez un ench\xE2ssement du locuteur."),dd.forEach(s),Fa=c(e),M(Cs.$$.fragment,e),Ha=c(e),Je=p(e,"P",{});var Cr=u(Je);Nu=r(Cr,"D\xE9finir un texte d\u2019entr\xE9e et le "),Rt=p(Cr,"EM",{});var md=u(Rt);Au=r(md,"tokeniser"),md.forEach(s),Xu=r(Cr,"."),Cr.forEach(s),Pa=c(e),M(_s.$$.fragment,e),Da=c(e),il=p(e,"P",{});var Md=u(il);Yu=r(Md,"Pr\xE9traiter le texte d\u2019entr\xE9e :"),Md.forEach(s),La=c(e),M($s.$$.fragment,e),Ka=c(e),cl=p(e,"P",{});var fd=u(cl);Ru=r(fd,"Installez un vocodeur et g\xE9n\xE9rez de la parole :"),fd.forEach(s),Oa=c(e),M(Es.$$.fragment,e),er=c(e),dl=p(e,"P",{});var yd=u(dl);Qu=r(yd,"On \xE9coute le r\xE9sultat ?"),yd.forEach(s),sr=c(e),M(Zs.$$.fragment,e),lr=c(e),ml=p(e,"P",{});var Jd=u(ml);Su=r(Jd,"Il peut \xEAtre difficile d\u2019obtenir des r\xE9sultats satisfaisants avec ce mod\xE8le dans une nouvelle langue. La qualit\xE9 de l\u2019ench\xE2ssement du locuteur peut \xEAtre un facteur important. Comme SpeechT5 a \xE9t\xE9 entra\xEEn\xE9 avec des X-vectors anglais, il donne de meilleurs r\xE9sultats lorsqu\u2019il utilise des ench\xE2ssements de locuteurs anglais. Si la synth\xE8se vocale semble m\xE9diocre, essayez d\u2019utiliser un autre ench\xE2ssement de locuteur."),Jd.forEach(s),tr=c(e),he=p(e,"P",{});var _r=u(he);Fu=r(_r,`L\u2019augmentation de la dur\xE9e d\u2019entra\xEEnement est \xE9galement susceptible d\u2019am\xE9liorer la qualit\xE9 des r\xE9sultats. Malgr\xE9 cela, le discours est clairement n\xE9erlandais et non anglais, et il capture les caract\xE9ristiques vocales du locuteur (comparez avec l\u2019audio original dans l\u2019exemple).
Une autre chose \xE0 exp\xE9rimenter est la configuration du mod\xE8le. Par exemple, essayez d\u2019utiliser `),Qt=p(_r,"CODE",{});var hd=u(Qt);Hu=r(hd,"config.reduction_factor = 1"),hd.forEach(s),Pu=r(_r," pour voir si cela am\xE9liore les r\xE9sultats."),_r.forEach(s),nr=c(e),Ml=p(e,"P",{});var jd=u(Ml);Du=r(jd,"Dans la section suivante, nous verrons comment nous \xE9valuons les mod\xE8les de synth\xE8se vocale."),jd.forEach(s),this.h()},h(){d(b,"name","hf:doc:metadata"),d(b,"content",JSON.stringify(Ed)),d(C,"id","finetuning-du-speecht5"),d(C,"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(C,"href","#finetuning-du-speecht5"),d(v,"class","relative group"),d(L,"id","prparation"),d(L,"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(L,"href","#prparation"),d(g,"class","relative group"),d(O,"id","le-jeu-de-donnes"),d(O,"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(O,"href","#le-jeu-de-donnes"),d(N,"class","relative group"),d($e,"href","https://huggingface.co/datasets/facebook/voxpopuli"),d($e,"rel","nofollow"),d(Ee,"href","https://huggingface.co/datasets/facebook/voxpopuli"),d(Ee,"rel","nofollow"),d(se,"id","prtraitement-des-donnes"),d(se,"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(se,"href","#prtraitement-des-donnes"),d(A,"class","relative group"),d(le,"id","nettoyage-du-texte-pour-la-tokenisation-de-speecht5"),d(le,"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(le,"href","#nettoyage-du-texte-pour-la-tokenisation-de-speecht5"),d(X,"class","relative group"),d(ne,"id","les-locuteurs"),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","#les-locuteurs"),d(Y,"class","relative group"),wd(Ys.src,Lu="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/tts_speakers_histogram.png")||d(Ys,"src",Lu),d(Ys,"alt","Speakers histogram"),d(Se,"class","flex justify-center"),d(ae,"id","enchssement-des-locuteurs"),d(ae,"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(ae,"href","#enchssement-des-locuteurs"),d(R,"class","relative group"),d(Oe,"href","https://huggingface.co/speechbrain/spkrec-xvect-voxceleb"),d(Oe,"rel","nofollow"),d(ss,"href","https://huggingface.co/mechanicalsea/speecht5-vc/blob/main/manifest/utils/prep_cmu_arctic_spkemb.py"),d(ss,"rel","nofollow"),d(ie,"id","traitement-du-jeu-de-donnes"),d(ie,"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(ie,"href","#traitement-du-jeu-de-donnes"),d(Q,"class","relative group"),wd(ll.src,Ku="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/tts_logmelspectrogram_1.png")||d(ll,"src",Ku),d(ll,"alt","Log-mel spectrogram with 80 mel bins"),d(us,"class","flex justify-center"),d(ce,"id","assembleur-de-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","#assembleur-de-donnes"),d(S,"class","relative group"),d(de,"id","entraner-le-modle"),d(de,"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(de,"href","#entraner-le-modle"),d(F,"class","relative group"),d(ye,"id","infrence"),d(ye,"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(ye,"href","#infrence"),d(H,"class","relative group")},m(e,t){l(document.head,b),n(e,P,t),n(e,v,t),l(v,C),l(C,bl),f(Ue,bl,null),l(v,$r),l(v,vl),l(vl,Er),n(e,Ft,t),n(e,D,t),l(D,Zr),l(D,Il),l(Il,kr),l(D,Vr),n(e,Ht,t),n(e,g,t),l(g,L),l(L,Cl),f(be,Cl,null),l(g,Br),l(g,_l),l(_l,xr),n(e,Pt,t),f(ve,e,t),n(e,Dt,t),f(K,e,t),n(e,Lt,t),n(e,Vs,t),l(Vs,Gr),n(e,Kt,t),f(Ie,e,t),n(e,Ot,t),n(e,Bs,t),l(Bs,Wr),n(e,en,t),f(Ce,e,t),n(e,sn,t),n(e,N,t),l(N,O),l(O,$l),f(_e,$l,null),l(N,qr),l(N,El),l(El,zr),n(e,ln,t),n(e,_,t),l(_,gr),l(_,Zl),l(Zl,Nr),l(_,Ar),l(_,$e),l($e,Xr),l(_,Yr),l(_,Ee),l(Ee,Rr),l(_,Qr),n(e,tn,t),n(e,xs,t),l(xs,Sr),n(e,nn,t),n(e,Gs,t),l(Gs,Fr),n(e,an,t),f(Ze,e,t),n(e,rn,t),n(e,Ws,t),l(Ws,kl),l(kl,Hr),n(e,on,t),f(ke,e,t),n(e,pn,t),n(e,ee,t),l(ee,Pr),l(ee,Vl),l(Vl,Dr),l(ee,Lr),n(e,un,t),f(Ve,e,t),n(e,cn,t),n(e,A,t),l(A,se),l(se,Bl),f(Be,Bl,null),l(A,Kr),l(A,xl),l(xl,Or),n(e,dn,t),n(e,k,t),l(k,eo),l(k,Gl),l(Gl,so),l(k,lo),l(k,Wl),l(Wl,to),l(k,no),n(e,mn,t),f(xe,e,t),n(e,Mn,t),n(e,X,t),l(X,le),l(le,ql),f(Ge,ql,null),l(X,ao),l(X,zl),l(zl,ro),n(e,fn,t),n(e,te,t),l(te,oo),l(te,gl),l(gl,po),l(te,uo),n(e,yn,t),f(We,e,t),n(e,Jn,t),n(e,qs,t),l(qs,io),n(e,hn,t),f(qe,e,t),n(e,jn,t),n(e,zs,t),l(zs,Nl),l(Nl,co),n(e,wn,t),f(ze,e,t),n(e,Tn,t),n(e,T,t),l(T,mo),l(T,Al),l(Al,Mo),l(T,fo),l(T,Xl),l(Xl,yo),l(T,Jo),l(T,Yl),l(Yl,ho),l(T,jo),l(T,Rl),l(Rl,wo),l(T,To),l(T,Ql),l(Ql,Uo),l(T,bo),l(T,Sl),l(Sl,vo),l(T,Io),n(e,Un,t),n(e,$,t),l($,Co),l($,Fl),l(Fl,_o),l($,$o),l($,Hl),l(Hl,Eo),l($,Zo),l($,Pl),l(Pl,ko),l($,Vo),n(e,bn,t),n(e,w,t),l(w,Bo),l(w,Dl),l(Dl,xo),l(w,Go),l(w,Ll),l(Ll,Wo),l(w,qo),l(w,Kl),l(Kl,zo),l(w,go),l(w,Ol),l(Ol,No),l(w,Ao),l(w,et),l(et,Xo),l(w,Yo),l(w,st),l(st,Ro),l(w,Qo),l(w,lt),l(lt,So),l(w,Fo),l(w,tt),l(tt,Ho),l(w,Po),n(e,vn,t),f(ge,e,t),n(e,In,t),n(e,V,t),l(V,Do),l(V,nt),l(nt,Lo),l(V,Ko),l(V,at),l(at,Oo),l(V,ep),n(e,Cn,t),f(Ne,e,t),n(e,_n,t),n(e,gs,t),l(gs,rt),l(rt,sp),n(e,$n,t),f(Ae,e,t),n(e,En,t),n(e,E,t),l(E,lp),l(E,ot),l(ot,tp),l(E,np),l(E,pt),l(pt,ap),l(E,rp),l(E,ut),l(ut,op),l(E,pp),n(e,Zn,t),f(Xe,e,t),n(e,kn,t),n(e,Ns,t),l(Ns,up),n(e,Vn,t),n(e,Y,t),l(Y,ne),l(ne,it),f(Ye,it,null),l(Y,ip),l(Y,ct),l(ct,cp),n(e,Bn,t),n(e,As,t),l(As,dp),n(e,xn,t),f(Re,e,t),n(e,Gn,t),n(e,Xs,t),l(Xs,mp),n(e,Wn,t),f(Qe,e,t),n(e,qn,t),n(e,Se,t),l(Se,Ys),n(e,zn,t),n(e,Rs,t),l(Rs,Mp),n(e,gn,t),f(Fe,e,t),n(e,Nn,t),n(e,Qs,t),l(Qs,fp),n(e,An,t),f(He,e,t),n(e,Xn,t),n(e,Ss,t),l(Ss,dt),l(dt,yp),n(e,Yn,t),f(Pe,e,t),n(e,Rn,t),n(e,Fs,t),l(Fs,Jp),n(e,Qn,t),f(De,e,t),n(e,Sn,t),n(e,Hs,t),l(Hs,mt),l(mt,hp),n(e,Fn,t),f(Le,e,t),n(e,Hn,t),n(e,Ps,t),l(Ps,jp),n(e,Pn,t),n(e,Ds,t),l(Ds,wp),n(e,Dn,t),n(e,R,t),l(R,ae),l(ae,Mt),f(Ke,Mt,null),l(R,Tp),l(R,ft),l(ft,Up),n(e,Ln,t),n(e,re,t),l(re,bp),l(re,Oe),l(Oe,vp),l(re,Ip),n(e,Kn,t),n(e,oe,t),l(oe,Cp),l(oe,yt),l(yt,_p),l(oe,$p),n(e,On,t),f(es,e,t),n(e,ea,t),n(e,pe,t),l(pe,Ep),l(pe,Jt),l(Jt,Zp),l(pe,kp),n(e,sa,t),n(e,ue,t),l(ue,Vp),l(ue,ss),l(ss,Bp),l(ue,xp),n(e,la,t),n(e,Q,t),l(Q,ie),l(ie,ht),f(ls,ht,null),l(Q,Gp),l(Q,jt),l(jt,Wp),n(e,ta,t),n(e,B,t),l(B,qp),l(B,wt),l(wt,zp),l(B,gp),l(B,Tt),l(Tt,Np),l(B,Ap),n(e,na,t),f(ts,e,t),n(e,aa,t),n(e,Ls,t),l(Ls,Xp),n(e,ra,t),f(ns,e,t),n(e,oa,t),n(e,Ks,t),l(Ks,Ut),l(Ut,Yp),n(e,pa,t),f(as,e,t),n(e,ua,t),n(e,Os,t),l(Os,Rp),n(e,ia,t),f(rs,e,t),n(e,ca,t),n(e,el,t),l(el,bt),l(bt,Qp),n(e,da,t),f(os,e,t),n(e,ma,t),n(e,sl,t),l(sl,Sp),n(e,Ma,t),f(ps,e,t),n(e,fa,t),n(e,us,t),l(us,ll),n(e,ya,t),n(e,tl,t),l(tl,Fp),n(e,Ja,t),n(e,nl,t),l(nl,Hp),n(e,ha,t),f(is,e,t),n(e,ja,t),n(e,x,t),l(x,Pp),l(x,vt),l(vt,Dp),l(x,Lp),l(x,It),l(It,Kp),l(x,Op),n(e,wa,t),f(cs,e,t),n(e,Ta,t),n(e,al,t),l(al,Ct),l(Ct,eu),n(e,Ua,t),f(ds,e,t),n(e,ba,t),n(e,rl,t),l(rl,su),n(e,va,t),f(ms,e,t),n(e,Ia,t),n(e,S,t),l(S,ce),l(ce,_t),f(Ms,_t,null),l(S,lu),l(S,$t),l($t,tu),n(e,Ca,t),n(e,G,t),l(G,nu),l(G,Et),l(Et,au),l(G,ru),l(G,Zt),l(Zt,ou),l(G,pu),n(e,_a,t),f(fs,e,t),n(e,$a,t),n(e,ol,t),l(ol,uu),n(e,Ea,t),f(ys,e,t),n(e,Za,t),n(e,F,t),l(F,de),l(de,kt),f(Js,kt,null),l(F,iu),l(F,Vt),l(Vt,cu),n(e,ka,t),n(e,me,t),l(me,du),l(me,Bt),l(Bt,mu),l(me,Mu),n(e,Va,t),f(hs,e,t),n(e,Ba,t),n(e,W,t),l(W,fu),l(W,xt),l(xt,yu),l(W,Ju),l(W,Gt),l(Gt,hu),l(W,ju),n(e,xa,t),f(js,e,t),n(e,Ga,t),n(e,pl,t),l(pl,wu),n(e,Wa,t),f(ws,e,t),n(e,qa,t),n(e,Me,t),l(Me,Tu),l(Me,Wt),l(Wt,Uu),l(Me,bu),n(e,za,t),f(Ts,e,t),n(e,ga,t),n(e,q,t),l(q,vu),l(q,qt),l(qt,Iu),l(q,Cu),l(q,zt),l(zt,_u),l(q,$u),n(e,Na,t),f(Us,e,t),n(e,Aa,t),n(e,fe,t),l(fe,Eu),l(fe,gt),l(gt,Zu),l(fe,ku),n(e,Xa,t),f(bs,e,t),n(e,Ya,t),n(e,H,t),l(H,ye),l(ye,Nt),f(vs,Nt,null),l(H,Vu),l(H,At),l(At,Bu),n(e,Ra,t),n(e,z,t),l(z,xu),l(z,Xt),l(Xt,Gu),l(z,Wu),l(z,Yt),l(Yt,qu),l(z,zu),n(e,Qa,t),f(Is,e,t),n(e,Sa,t),n(e,ul,t),l(ul,gu),n(e,Fa,t),f(Cs,e,t),n(e,Ha,t),n(e,Je,t),l(Je,Nu),l(Je,Rt),l(Rt,Au),l(Je,Xu),n(e,Pa,t),f(_s,e,t),n(e,Da,t),n(e,il,t),l(il,Yu),n(e,La,t),f($s,e,t),n(e,Ka,t),n(e,cl,t),l(cl,Ru),n(e,Oa,t),f(Es,e,t),n(e,er,t),n(e,dl,t),l(dl,Qu),n(e,sr,t),f(Zs,e,t),n(e,lr,t),n(e,ml,t),l(ml,Su),n(e,tr,t),n(e,he,t),l(he,Fu),l(he,Qt),l(Qt,Hu),l(he,Pu),n(e,nr,t),n(e,Ml,t),l(Ml,Du),ar=!0},p(e,[t]){const ks={};t&2&&(ks.$$scope={dirty:t,ctx:e}),K.$set(ks)},i(e){ar||(y(Ue.$$.fragment,e),y(be.$$.fragment,e),y(ve.$$.fragment,e),y(K.$$.fragment,e),y(Ie.$$.fragment,e),y(Ce.$$.fragment,e),y(_e.$$.fragment,e),y(Ze.$$.fragment,e),y(ke.$$.fragment,e),y(Ve.$$.fragment,e),y(Be.$$.fragment,e),y(xe.$$.fragment,e),y(Ge.$$.fragment,e),y(We.$$.fragment,e),y(qe.$$.fragment,e),y(ze.$$.fragment,e),y(ge.$$.fragment,e),y(Ne.$$.fragment,e),y(Ae.$$.fragment,e),y(Xe.$$.fragment,e),y(Ye.$$.fragment,e),y(Re.$$.fragment,e),y(Qe.$$.fragment,e),y(Fe.$$.fragment,e),y(He.$$.fragment,e),y(Pe.$$.fragment,e),y(De.$$.fragment,e),y(Le.$$.fragment,e),y(Ke.$$.fragment,e),y(es.$$.fragment,e),y(ls.$$.fragment,e),y(ts.$$.fragment,e),y(ns.$$.fragment,e),y(as.$$.fragment,e),y(rs.$$.fragment,e),y(os.$$.fragment,e),y(ps.$$.fragment,e),y(is.$$.fragment,e),y(cs.$$.fragment,e),y(ds.$$.fragment,e),y(ms.$$.fragment,e),y(Ms.$$.fragment,e),y(fs.$$.fragment,e),y(ys.$$.fragment,e),y(Js.$$.fragment,e),y(hs.$$.fragment,e),y(js.$$.fragment,e),y(ws.$$.fragment,e),y(Ts.$$.fragment,e),y(Us.$$.fragment,e),y(bs.$$.fragment,e),y(vs.$$.fragment,e),y(Is.$$.fragment,e),y(Cs.$$.fragment,e),y(_s.$$.fragment,e),y($s.$$.fragment,e),y(Es.$$.fragment,e),y(Zs.$$.fragment,e),ar=!0)},o(e){J(Ue.$$.fragment,e),J(be.$$.fragment,e),J(ve.$$.fragment,e),J(K.$$.fragment,e),J(Ie.$$.fragment,e),J(Ce.$$.fragment,e),J(_e.$$.fragment,e),J(Ze.$$.fragment,e),J(ke.$$.fragment,e),J(Ve.$$.fragment,e),J(Be.$$.fragment,e),J(xe.$$.fragment,e),J(Ge.$$.fragment,e),J(We.$$.fragment,e),J(qe.$$.fragment,e),J(ze.$$.fragment,e),J(ge.$$.fragment,e),J(Ne.$$.fragment,e),J(Ae.$$.fragment,e),J(Xe.$$.fragment,e),J(Ye.$$.fragment,e),J(Re.$$.fragment,e),J(Qe.$$.fragment,e),J(Fe.$$.fragment,e),J(He.$$.fragment,e),J(Pe.$$.fragment,e),J(De.$$.fragment,e),J(Le.$$.fragment,e),J(Ke.$$.fragment,e),J(es.$$.fragment,e),J(ls.$$.fragment,e),J(ts.$$.fragment,e),J(ns.$$.fragment,e),J(as.$$.fragment,e),J(rs.$$.fragment,e),J(os.$$.fragment,e),J(ps.$$.fragment,e),J(is.$$.fragment,e),J(cs.$$.fragment,e),J(ds.$$.fragment,e),J(ms.$$.fragment,e),J(Ms.$$.fragment,e),J(fs.$$.fragment,e),J(ys.$$.fragment,e),J(Js.$$.fragment,e),J(hs.$$.fragment,e),J(js.$$.fragment,e),J(ws.$$.fragment,e),J(Ts.$$.fragment,e),J(Us.$$.fragment,e),J(bs.$$.fragment,e),J(vs.$$.fragment,e),J(Is.$$.fragment,e),J(Cs.$$.fragment,e),J(_s.$$.fragment,e),J($s.$$.fragment,e),J(Es.$$.fragment,e),J(Zs.$$.fragment,e),ar=!1},d(e){s(b),e&&s(P),e&&s(v),h(Ue),e&&s(Ft),e&&s(D),e&&s(Ht),e&&s(g),h(be),e&&s(Pt),h(ve,e),e&&s(Dt),h(K,e),e&&s(Lt),e&&s(Vs),e&&s(Kt),h(Ie,e),e&&s(Ot),e&&s(Bs),e&&s(en),h(Ce,e),e&&s(sn),e&&s(N),h(_e),e&&s(ln),e&&s(_),e&&s(tn),e&&s(xs),e&&s(nn),e&&s(Gs),e&&s(an),h(Ze,e),e&&s(rn),e&&s(Ws),e&&s(on),h(ke,e),e&&s(pn),e&&s(ee),e&&s(un),h(Ve,e),e&&s(cn),e&&s(A),h(Be),e&&s(dn),e&&s(k),e&&s(mn),h(xe,e),e&&s(Mn),e&&s(X),h(Ge),e&&s(fn),e&&s(te),e&&s(yn),h(We,e),e&&s(Jn),e&&s(qs),e&&s(hn),h(qe,e),e&&s(jn),e&&s(zs),e&&s(wn),h(ze,e),e&&s(Tn),e&&s(T),e&&s(Un),e&&s($),e&&s(bn),e&&s(w),e&&s(vn),h(ge,e),e&&s(In),e&&s(V),e&&s(Cn),h(Ne,e),e&&s(_n),e&&s(gs),e&&s($n),h(Ae,e),e&&s(En),e&&s(E),e&&s(Zn),h(Xe,e),e&&s(kn),e&&s(Ns),e&&s(Vn),e&&s(Y),h(Ye),e&&s(Bn),e&&s(As),e&&s(xn),h(Re,e),e&&s(Gn),e&&s(Xs),e&&s(Wn),h(Qe,e),e&&s(qn),e&&s(Se),e&&s(zn),e&&s(Rs),e&&s(gn),h(Fe,e),e&&s(Nn),e&&s(Qs),e&&s(An),h(He,e),e&&s(Xn),e&&s(Ss),e&&s(Yn),h(Pe,e),e&&s(Rn),e&&s(Fs),e&&s(Qn),h(De,e),e&&s(Sn),e&&s(Hs),e&&s(Fn),h(Le,e),e&&s(Hn),e&&s(Ps),e&&s(Pn),e&&s(Ds),e&&s(Dn),e&&s(R),h(Ke),e&&s(Ln),e&&s(re),e&&s(Kn),e&&s(oe),e&&s(On),h(es,e),e&&s(ea),e&&s(pe),e&&s(sa),e&&s(ue),e&&s(la),e&&s(Q),h(ls),e&&s(ta),e&&s(B),e&&s(na),h(ts,e),e&&s(aa),e&&s(Ls),e&&s(ra),h(ns,e),e&&s(oa),e&&s(Ks),e&&s(pa),h(as,e),e&&s(ua),e&&s(Os),e&&s(ia),h(rs,e),e&&s(ca),e&&s(el),e&&s(da),h(os,e),e&&s(ma),e&&s(sl),e&&s(Ma),h(ps,e),e&&s(fa),e&&s(us),e&&s(ya),e&&s(tl),e&&s(Ja),e&&s(nl),e&&s(ha),h(is,e),e&&s(ja),e&&s(x),e&&s(wa),h(cs,e),e&&s(Ta),e&&s(al),e&&s(Ua),h(ds,e),e&&s(ba),e&&s(rl),e&&s(va),h(ms,e),e&&s(Ia),e&&s(S),h(Ms),e&&s(Ca),e&&s(G),e&&s(_a),h(fs,e),e&&s($a),e&&s(ol),e&&s(Ea),h(ys,e),e&&s(Za),e&&s(F),h(Js),e&&s(ka),e&&s(me),e&&s(Va),h(hs,e),e&&s(Ba),e&&s(W),e&&s(xa),h(js,e),e&&s(Ga),e&&s(pl),e&&s(Wa),h(ws,e),e&&s(qa),e&&s(Me),e&&s(za),h(Ts,e),e&&s(ga),e&&s(q),e&&s(Na),h(Us,e),e&&s(Aa),e&&s(fe),e&&s(Xa),h(bs,e),e&&s(Ya),e&&s(H),h(vs),e&&s(Ra),e&&s(z),e&&s(Qa),h(Is,e),e&&s(Sa),e&&s(ul),e&&s(Fa),h(Cs,e),e&&s(Ha),e&&s(Je),e&&s(Pa),h(_s,e),e&&s(Da),e&&s(il),e&&s(La),h($s,e),e&&s(Ka),e&&s(cl),e&&s(Oa),h(Es,e),e&&s(er),e&&s(dl),e&&s(sr),h(Zs,e),e&&s(lr),e&&s(ml),e&&s(tr),e&&s(he),e&&s(nr),e&&s(Ml)}}}const Ed={local:"finetuning-du-speecht5",sections:[{local:"prparation",title:"Pr\xE9paration"},{local:"le-jeu-de-donnes",title:"Le jeu de donn\xE9es"},{local:"prtraitement-des-donnes",sections:[{local:"nettoyage-du-texte-pour-la-tokenisation-de-speecht5",title:"Nettoyage du texte pour la tokenisation de SpeechT5"},{local:"les-locuteurs",title:"Les locuteurs"},{local:"enchssement-des-locuteurs",title:"Ench\xE2ssement des locuteurs"},{local:"traitement-du-jeu-de-donnes",title:"Traitement du jeu de donn\xE9es"},{local:"assembleur-de-donnes",title:"Assembleur de donn\xE9es"}],title:"Pr\xE9traitement des donn\xE9es "},{local:"entraner-le-modle",title:"Entra\xEEner le mod\xE8le"},{local:"infrence",title:"Inf\xE9rence"}],title:"Finetuning du SpeechT5"};function Zd(St){return Id(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Gd extends Td{constructor(b){super();Ud(this,b,Zd,$d,bd,{})}}export{Gd as default,Ed as metadata};
