import{S as gr,i as Ur,s as Sr,e as r,k as p,w as f,t as a,M as jr,c as o,d as t,m as c,a as u,x as h,h as n,b as d,N as nn,G as s,g as i,y as v,q as y,o as T,B as M,v as $r}from"../../chunks/vendor-hf-doc-builder.js";import{T as Jr}from"../../chunks/Tip-hf-doc-builder.js";import{I as At}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as U}from"../../chunks/CodeBlock-hf-doc-builder.js";function qr(Re){let m,S,w,_,B,j,pe,V,C,H;return{c(){m=r("p"),S=a("Whisper peut aussi \xEAtre \u201Ctromp\xE9\u201D pour traduire de la parole dans n\u2019importe quelle langue X vers n\u2019importe quelle langue Y. Il suffit de mettre la t\xE2che \xE0 "),w=r("code"),_=a('"transcribe"'),B=a(" et "),j=r("code"),pe=a('"language"'),V=a(" \xE0 votre langue cible en argument. Par exemple pour l\u2019espagnol, on mettrait : "),C=r("code"),H=a('generate_kwargs={"task" : "transcribe", "language" : "es"}')},l(J){m=o(J,"P",{});var $=u(m);S=n($,"Whisper peut aussi \xEAtre \u201Ctromp\xE9\u201D pour traduire de la parole dans n\u2019importe quelle langue X vers n\u2019importe quelle langue Y. Il suffit de mettre la t\xE2che \xE0 "),w=o($,"CODE",{});var P=u(w);_=n(P,'"transcribe"'),P.forEach(t),B=n($," et "),j=o($,"CODE",{});var Ye=u(j);pe=n(Ye,'"language"'),Ye.forEach(t),V=n($," \xE0 votre langue cible en argument. Par exemple pour l\u2019espagnol, on mettrait : "),C=o($,"CODE",{});var ze=u(C);H=n(ze,'generate_kwargs={"task" : "transcribe", "language" : "es"}'),ze.forEach(t),$.forEach(t)},m(J,$){i(J,m,$),s(m,S),s(m,w),s(w,_),s(m,B),s(m,j),s(j,pe),s(m,V),s(m,C),s(C,H)},d(J){J&&t(m)}}}function _r(Re){let m;return{c(){m=a("Nous utilisons ici le *checkpoint* SpeechT5 entra\xEEn\xE9 sp\xE9cifiquement pour le TTS anglais. Si vous souhaitez traduire dans une autre langue que l'anglais, remplacez le *checkpoint* par un mod\xE8le SpeechT5 TTS *finetun\xE9* dans la langue de votre choix, ou utilisez un *checkpoint* MMS TTS pr\xE9-entra\xEEn\xE9 dans la langue cible.")},l(S){m=n(S,"Nous utilisons ici le *checkpoint* SpeechT5 entra\xEEn\xE9 sp\xE9cifiquement pour le TTS anglais. Si vous souhaitez traduire dans une autre langue que l'anglais, remplacez le *checkpoint* par un mod\xE8le SpeechT5 TTS *finetun\xE9* dans la langue de votre choix, ou utilisez un *checkpoint* MMS TTS pr\xE9-entra\xEEn\xE9 dans la langue cible.")},m(S,w){i(S,m,w)},d(S){S&&t(m)}}}function Er(Re){let m,S,w,_,B,j,pe,V,C,H,J,$,P,Ye,ze,dt,rl,ol,Ft,ce,Qe,rn,Dt,x,il,mt,ul,pl,ft,cl,dl,Kt,He,ml,Lt,E,fl,ht,hl,vl,vt,yl,Tl,yt,Ml,bl,Ot,de,Pe,on,es,Ae,wl,ts,A,Jl,me,Tt,gl,Ul,ss,Fe,Sl,ls,X,F,Mt,fe,jl,bt,$l,as,G,ql,wt,_l,El,he,Gl,Zl,R,Nl,Jt,kl,xl,Il,ns,ve,rs,I,Wl,gt,Bl,Vl,ye,Cl,Xl,os,Te,is,k,Rl,Ut,Yl,zl,St,Ql,Hl,Me,Pl,us,De,Al,ps,be,cs,D,Fl,jt,Dl,Kl,ds,we,ms,K,fs,Ke,Ll,hs,Je,vs,ge,ys,Le,Ol,Ts,Ue,Ms,Se,bs,Oe,ea,ws,L,ta,et,sa,la,Js,Y,O,$t,je,aa,qt,na,gs,Z,ra,$e,oa,ia,_t,ua,pa,Et,ca,da,Us,ee,ma,Gt,fa,ha,Ss,qe,js,te,$s,tt,va,qs,_e,_s,st,ya,Es,Ee,Gs,se,Ta,Zt,Ma,ba,Zs,Ge,Ns,lt,wa,ks,Ze,xs,at,Ja,Is,z,le,Nt,Ne,ga,kt,Ua,Ws,b,Sa,ke,ja,$a,xt,qa,_a,It,Ea,Ga,Wt,Za,Na,Bt,ka,xa,Vt,Ia,Wa,Ct,Ba,Va,Bs,xe,Vs,nt,Ca,Cs,Ie,Xs,rt,Xa,Rs,We,Ys,ae,Ra,Xt,Ya,za,zs,q,un,Qs,N,Qa,Be,Ha,Pa,Rt,Aa,Fa,Yt,Da,Ka,Hs,Q,ne,zt,Ve,La,Qt,Oa,Ps,W,en,Ht,tn,sn,ot,ln,an,As;return j=new At({}),fe=new At({}),ve=new U({props:{code:"aW1wb3J0JTIwdG9yY2glMEFmcm9tJTIwdHJhbnNmb3JtZXJzJTIwaW1wb3J0JTIwcGlwZWxpbmUlMEElMEFkZXZpY2UlMjAlM0QlMjAlMjJjdWRhJTNBMCUyMiUyMGlmJTIwdG9yY2guY3VkYS5pc19hdmFpbGFibGUoKSUyMGVsc2UlMjAlMjJjcHUlMjIlMEFwaXBlJTIwJTNEJTIwcGlwZWxpbmUoJTBBJTIwJTIwJTIwJTIwJTIyYXV0b21hdGljLXNwZWVjaC1yZWNvZ25pdGlvbiUyMiUyQyUyMG1vZGVsJTNEJTIyb3BlbmFpJTJGd2hpc3Blci1iYXNlJTIyJTJDJTIwZGV2aWNlJTNEZGV2aWNlJTBBKQ==",highlighted:`<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

device = <span class="hljs-string">&quot;cuda:0&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>
pipe = pipeline(
    <span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>, model=<span class="hljs-string">&quot;openai/whisper-base&quot;</span>, device=device
)`}}),Te=new U({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJmYWNlYm9vayUyRnZveHBvcHVsaSUyMiUyQyUyMCUyMml0JTIyJTJDJTIwc3BsaXQlM0QlMjJ2YWxpZGF0aW9uJTIyJTJDJTIwc3RyZWFtaW5nJTNEVHJ1ZSklMEFzYW1wbGUlMjAlM0QlMjBuZXh0KGl0ZXIoZGF0YXNldCkp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

dataset = load_dataset(<span class="hljs-string">&quot;facebook/voxpopuli&quot;</span>, <span class="hljs-string">&quot;it&quot;</span>, split=<span class="hljs-string">&quot;validation&quot;</span>, streaming=<span class="hljs-literal">True</span>)
sample = <span class="hljs-built_in">next</span>(<span class="hljs-built_in">iter</span>(dataset))`}}),be=new U({props:{code:"ZnJvbSUyMElQeXRob24uZGlzcGxheSUyMGltcG9ydCUyMEF1ZGlvJTBBJTBBQXVkaW8oc2FtcGxlJTVCJTIyYXVkaW8lMjIlNUQlNUIlMjJhcnJheSUyMiU1RCUyQyUyMHJhdGUlM0RzYW1wbGUlNUIlMjJhdWRpbyUyMiU1RCU1QiUyMnNhbXBsaW5nX3JhdGUlMjIlNUQp",highlighted:`<span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Audio

Audio(sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>], rate=sample[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;sampling_rate&quot;</span>])`}}),we=new U({props:{code:"ZGVmJTIwdHJhbnNsYXRlKGF1ZGlvKSUzQSUwQSUyMCUyMCUyMCUyMG91dHB1dHMlMjAlM0QlMjBwaXBlKGF1ZGlvJTJDJTIwbWF4X25ld190b2tlbnMlM0QyNTYlMkMlMjBnZW5lcmF0ZV9rd2FyZ3MlM0QlN0IlMjJ0YXNrJTIyJTNBJTIwJTIydHJhbnNsYXRlJTIyJTdEKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMG91dHB1dHMlNUIlMjJ0ZXh0JTIyJTVE",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">translate</span>(<span class="hljs-params">audio</span>):
    outputs = pipe(audio, max_new_tokens=<span class="hljs-number">256</span>, generate_kwargs={<span class="hljs-string">&quot;task&quot;</span>: <span class="hljs-string">&quot;translate&quot;</span>})
    <span class="hljs-keyword">return</span> outputs[<span class="hljs-string">&quot;text&quot;</span>]`}}),K=new Jr({props:{$$slots:{default:[qr]},$$scope:{ctx:Re}}}),Je=new U({props:{code:"dHJhbnNsYXRlKHNhbXBsZSU1QiUyMmF1ZGlvJTIyJTVELmNvcHkoKSk=",highlighted:'translate(sample[<span class="hljs-string">&quot;audio&quot;</span>].copy())'}}),ge=new U({props:{code:"JyUyMHBzeWNob2xvZ2ljYWwlMjBhbmQlMjBzb2NpYWwuJTIwSSUyMHRoaW5rJTIwdGhhdCUyMGl0JTIwaXMlMjBhJTIwdmVyeSUyMGltcG9ydGFudCUyMHN0ZXAlMjBpbiUyMHRoZSUyMGNvbnN0cnVjdGlvbiUyMG9mJTIwYSUyMGp1cmlkaWNhbCUyMHNwYWNlJTIwb2YlMjBmcmVlZG9tJTJDJTIwY2lyY3VsYXRpb24lMjBhbmQlMjBwcm90ZWN0aW9uJTIwb2YlMjByaWdodHMuJw==",highlighted:'<span class="hljs-comment">&#x27; psychological and social. I think that it is a very important step in the construction of a juridical space of freedom, circulation and protection of rights.&#x27;</span>'}}),Ue=new U({props:{code:"c2FtcGxlJTVCJTIycmF3X3RleHQlMjIlNUQ=",highlighted:'sample[<span class="hljs-string">&quot;raw_text&quot;</span>]'}}),Se=new U({props:{code:"J1BlbnNvJTIwY2hlJTIwcXVlc3RvJTIwc2lhJTIwdW4lMjBwYXNzbyUyMGluJTIwYXZhbnRpJTIwaW1wb3J0YW50ZSUyMG5lbGxhJTIwY29zdHJ1emlvbmUlMjBkaSUyMHVubyUyMHNwYXppbyUyMGdpdXJpZGljbyUyMGRpJTIwbGliZXJ0JUMzJUEwJTIwZGklMjBjaXJjb2xhemlvbmUlMjBlJTIwZGklMjBwcm90ZXppb25lJTIwZGVpJTIwZGlyaXR0aSUyMHBlciUyMGxlJTIwcGVyc29uZSUyMGluJTIwRXVyb3BhLic=",highlighted:'<span class="hljs-comment">&#x27;Penso che questo sia un passo in avanti importante nella costruzione di uno spazio giuridico di libert\xE0 di circolazione e di protezione dei diritti per le persone in Europa.&#x27;</span>'}}),je=new At({}),qe=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFNwZWVjaFQ1UHJvY2Vzc29yJTJDJTIwU3BlZWNoVDVGb3JUZXh0VG9TcGVlY2glMkMlMjBTcGVlY2hUNUhpZmlHYW4lMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBTcGVlY2hUNVByb2Nlc3Nvci5mcm9tX3ByZXRyYWluZWQoJTIybWljcm9zb2Z0JTJGc3BlZWNodDVfdHRzJTIyKSUwQSUwQW1vZGVsJTIwJTNEJTIwU3BlZWNoVDVGb3JUZXh0VG9TcGVlY2guZnJvbV9wcmV0cmFpbmVkKCUyMm1pY3Jvc29mdCUyRnNwZWVjaHQ1X3R0cyUyMiklMEF2b2NvZGVyJTIwJTNEJTIwU3BlZWNoVDVIaWZpR2FuLmZyb21fcHJldHJhaW5lZCglMjJtaWNyb3NvZnQlMkZzcGVlY2h0NV9oaWZpZ2FuJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan

processor = SpeechT5Processor.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>)

model = SpeechT5ForTextToSpeech.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_tts&quot;</span>)
vocoder = SpeechT5HifiGan.from_pretrained(<span class="hljs-string">&quot;microsoft/speecht5_hifigan&quot;</span>)`}}),te=new Jr({props:{$$slots:{default:[_r]},$$scope:{ctx:Re}}}),_e=new U({props:{code:"bW9kZWwudG8oZGV2aWNlKSUwQXZvY29kZXIudG8oZGV2aWNlKQ==",highlighted:`model.to(device)
vocoder.to(device)`}}),Ee=new U({props:{code:"ZW1iZWRkaW5nc19kYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMk1hdHRoaWpzJTJGY211LWFyY3RpYy14dmVjdG9ycyUyMiUyQyUyMHNwbGl0JTNEJTIydmFsaWRhdGlvbiUyMiklMEFzcGVha2VyX2VtYmVkZGluZ3MlMjAlM0QlMjB0b3JjaC50ZW5zb3IoZW1iZWRkaW5nc19kYXRhc2V0JTVCNzMwNiU1RCU1QiUyMnh2ZWN0b3IlMjIlNUQpLnVuc3F1ZWV6ZSgwKQ==",highlighted:`embeddings_dataset = load_dataset(<span class="hljs-string">&quot;Matthijs/cmu-arctic-xvectors&quot;</span>, split=<span class="hljs-string">&quot;validation&quot;</span>)
speaker_embeddings = torch.tensor(embeddings_dataset[<span class="hljs-number">7306</span>][<span class="hljs-string">&quot;xvector&quot;</span>]).unsqueeze(<span class="hljs-number">0</span>)`}}),Ge=new U({props:{code:"ZGVmJTIwc3ludGhlc2lzZSh0ZXh0KSUzQSUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMHByb2Nlc3Nvcih0ZXh0JTNEdGV4dCUyQyUyMHJldHVybl90ZW5zb3JzJTNEJTIycHQlMjIpJTBBJTIwJTIwJTIwJTIwc3BlZWNoJTIwJTNEJTIwbW9kZWwuZ2VuZXJhdGVfc3BlZWNoKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0cyU1QiUyMmlucHV0X2lkcyUyMiU1RC50byhkZXZpY2UpJTJDJTIwc3BlYWtlcl9lbWJlZGRpbmdzLnRvKGRldmljZSklMkMlMjB2b2NvZGVyJTNEdm9jb2RlciUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjByZXR1cm4lMjBzcGVlY2guY3B1KCk=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">synthesise</span>(<span class="hljs-params">text</span>):
    inputs = processor(text=text, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)
    speech = model.generate_speech(
        inputs[<span class="hljs-string">&quot;input_ids&quot;</span>].to(device), speaker_embeddings.to(device), vocoder=vocoder
    )
    <span class="hljs-keyword">return</span> speech.cpu()`}}),Ze=new U({props:{code:"c3BlZWNoJTIwJTNEJTIwc3ludGhlc2lzZSglMjJIZXklMjB0aGVyZSElMjBUaGlzJTIwaXMlMjBhJTIwdGVzdCElMjIpJTBBJTBBQXVkaW8oc3BlZWNoJTJDJTIwcmF0ZSUzRDE2MDAwKQ==",highlighted:`speech = synthesise(<span class="hljs-string">&quot;Hey there! This is a test!&quot;</span>)

Audio(speech, rate=<span class="hljs-number">16000</span>)`}}),Ne=new At({}),xe=new U({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBdGFyZ2V0X2R0eXBlJTIwJTNEJTIwbnAuaW50MTYlMEFtYXhfcmFuZ2UlMjAlM0QlMjBucC5paW5mbyh0YXJnZXRfZHR5cGUpLm1heCUwQSUwQSUwQWRlZiUyMHNwZWVjaF90b19zcGVlY2hfdHJhbnNsYXRpb24oYXVkaW8pJTNBJTBBJTIwJTIwJTIwJTIwdHJhbnNsYXRlZF90ZXh0JTIwJTNEJTIwdHJhbnNsYXRlKGF1ZGlvKSUwQSUyMCUyMCUyMCUyMHN5bnRoZXNpc2VkX3NwZWVjaCUyMCUzRCUyMHN5bnRoZXNpc2UodHJhbnNsYXRlZF90ZXh0KSUwQSUyMCUyMCUyMCUyMHN5bnRoZXNpc2VkX3NwZWVjaCUyMCUzRCUyMChzeW50aGVzaXNlZF9zcGVlY2gubnVtcHkoKSUyMColMjBtYXhfcmFuZ2UpLmFzdHlwZShucC5pbnQxNiklMEElMjAlMjAlMjAlMjByZXR1cm4lMjAxNjAwMCUyQyUyMHN5bnRoZXNpc2VkX3NwZWVjaA==",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

target_dtype = np.int16
max_range = np.iinfo(target_dtype).<span class="hljs-built_in">max</span>


<span class="hljs-keyword">def</span> <span class="hljs-title function_">speech_to_speech_translation</span>(<span class="hljs-params">audio</span>):
    translated_text = translate(audio)
    synthesised_speech = synthesise(translated_text)
    synthesised_speech = (synthesised_speech.numpy() * max_range).astype(np.int16)
    <span class="hljs-keyword">return</span> <span class="hljs-number">16000</span>, synthesised_speech`}}),Ie=new U({props:{code:"c2FtcGxpbmdfcmF0ZSUyQyUyMHN5bnRoZXNpc2VkX3NwZWVjaCUyMCUzRCUyMHNwZWVjaF90b19zcGVlY2hfdHJhbnNsYXRpb24oc2FtcGxlJTVCJTIyYXVkaW8lMjIlNUQpJTBBJTBBQXVkaW8oc3ludGhlc2lzZWRfc3BlZWNoJTJDJTIwcmF0ZSUzRHNhbXBsaW5nX3JhdGUp",highlighted:`sampling_rate, synthesised_speech = speech_to_speech_translation(sample[<span class="hljs-string">&quot;audio&quot;</span>])

Audio(synthesised_speech, rate=sampling_rate)`}}),We=new U({props:{code:"aW1wb3J0JTIwZ3JhZGlvJTIwYXMlMjBnciUwQSUwQWRlbW8lMjAlM0QlMjBnci5CbG9ja3MoKSUwQSUwQW1pY190cmFuc2xhdGUlMjAlM0QlMjBnci5JbnRlcmZhY2UoJTBBJTIwJTIwJTIwJTIwZm4lM0RzcGVlY2hfdG9fc3BlZWNoX3RyYW5zbGF0aW9uJTJDJTBBJTIwJTIwJTIwJTIwaW5wdXRzJTNEZ3IuQXVkaW8oc291cmNlJTNEJTIybWljcm9waG9uZSUyMiUyQyUyMHR5cGUlM0QlMjJmaWxlcGF0aCUyMiklMkMlMEElMjAlMjAlMjAlMjBvdXRwdXRzJTNEZ3IuQXVkaW8obGFiZWwlM0QlMjJHZW5lcmF0ZWQlMjBTcGVlY2glMjIlMkMlMjB0eXBlJTNEJTIybnVtcHklMjIpJTJDJTBBKSUwQSUwQWZpbGVfdHJhbnNsYXRlJTIwJTNEJTIwZ3IuSW50ZXJmYWNlKCUwQSUyMCUyMCUyMCUyMGZuJTNEc3BlZWNoX3RvX3NwZWVjaF90cmFuc2xhdGlvbiUyQyUwQSUyMCUyMCUyMCUyMGlucHV0cyUzRGdyLkF1ZGlvKHNvdXJjZSUzRCUyMnVwbG9hZCUyMiUyQyUyMHR5cGUlM0QlMjJmaWxlcGF0aCUyMiklMkMlMEElMjAlMjAlMjAlMjBvdXRwdXRzJTNEZ3IuQXVkaW8obGFiZWwlM0QlMjJHZW5lcmF0ZWQlMjBTcGVlY2glMjIlMkMlMjB0eXBlJTNEJTIybnVtcHklMjIpJTJDJTBBKSUwQSUwQXdpdGglMjBkZW1vJTNBJTBBJTIwJTIwJTIwJTIwZ3IuVGFiYmVkSW50ZXJmYWNlKCU1Qm1pY190cmFuc2xhdGUlMkMlMjBmaWxlX3RyYW5zbGF0ZSU1RCUyQyUyMCU1QiUyMk1pY3JvcGhvbmUlMjIlMkMlMjAlMjJBdWRpbyUyMEZpbGUlMjIlNUQpJTBBJTBBZGVtby5sYXVuY2goZGVidWclM0RUcnVlKQ==",highlighted:`<span class="hljs-keyword">import</span> gradio <span class="hljs-keyword">as</span> gr

demo = gr.Blocks()

mic_translate = gr.Interface(
    fn=speech_to_speech_translation,
    inputs=gr.Audio(source=<span class="hljs-string">&quot;microphone&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;filepath&quot;</span>),
    outputs=gr.Audio(label=<span class="hljs-string">&quot;Generated Speech&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;numpy&quot;</span>),
)

file_translate = gr.Interface(
    fn=speech_to_speech_translation,
    inputs=gr.Audio(source=<span class="hljs-string">&quot;upload&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;filepath&quot;</span>),
    outputs=gr.Audio(label=<span class="hljs-string">&quot;Generated Speech&quot;</span>, <span class="hljs-built_in">type</span>=<span class="hljs-string">&quot;numpy&quot;</span>),
)

<span class="hljs-keyword">with</span> demo:
    gr.TabbedInterface([mic_translate, file_translate], [<span class="hljs-string">&quot;Microphone&quot;</span>, <span class="hljs-string">&quot;Audio File&quot;</span>])

demo.launch(debug=<span class="hljs-literal">True</span>)`}}),Ve=new At({}),{c(){m=r("meta"),S=p(),w=r("h1"),_=r("a"),B=r("span"),f(j.$$.fragment),pe=p(),V=r("span"),C=a("Traduction parole-\xE0-parole"),H=p(),J=r("p"),$=a("La traduction parole-\xE0-parole (STST ou S2ST pour "),P=r("em"),Ye=a("Speech-to-speech translation"),ze=a(") est une t\xE2che de traitement du langage parl\xE9 relativement nouvelle. Elle consiste \xE0 traduire le discours d\u2019une langue en un discours dans une langue "),dt=r("strong"),rl=a("diff\xE9rente"),ol=a(" :"),Ft=p(),ce=r("div"),Qe=r("img"),Dt=p(),x=r("p"),il=a("La STST peut \xEAtre consid\xE9r\xE9e comme une extension de la t\xE2che traditionnelle de traduction automatique : au lieu de traduire du "),mt=r("strong"),ul=a("texte"),pl=a(" d\u2019une langue \xE0 une autre, nous traduisons de la "),ft=r("strong"),cl=a("parole"),dl=a(" d\u2019une langue \xE0 une autre. La STST trouve des applications dans le domaine de la communication multilingue, en permettant \xE0 des locuteurs de langues diff\xE9rentes de communiquer entre eux par l\u2019interm\xE9diaire de la parole."),Kt=p(),He=r("p"),ml=a("Supposons que vous souhaitiez communiquer avec une autre personne au-del\xE0 de la barri\xE8re de la langue. Plut\xF4t que d\u2019\xE9crire l\u2019information que vous souhaitez transmettre et de la traduire ensuite en texte dans la langue cible, vous pouvez la parler directement et demander \xE0 un syst\xE8me STST de convertir votre discours dans la langue cible. Le destinataire peut alors r\xE9pondre en s\u2019adressant au syst\xE8me STST, et vous pouvez \xE9couter sa r\xE9ponse. Cette m\xE9thode de communication est plus naturelle que la traduction automatique bas\xE9e sur le texte."),Lt=p(),E=r("p"),fl=a("Dans ce chapitre, nous allons explorer une approche "),ht=r("em"),hl=a("cascad\xE9e"),vl=a(" de la STST, en rassemblant les connaissances que vous avez acquises dans les unit\xE9s 5 et 6 du cours. Nous utiliserons un syst\xE8me de "),vt=r("em"),yl=a("traduction vocale"),Tl=a(" pour transcrire le discours source en texte dans la langue cible, puis un syst\xE8me de "),yt=r("em"),Ml=a("text-to-speech"),bl=a(" pour g\xE9n\xE9rer du discours dans la langue cible \xE0 partir du texte traduit :"),Ot=p(),de=r("div"),Pe=r("img"),es=p(),Ae=r("p"),wl=a("Nous aurions \xE9galement pu utiliser une approche en trois \xE9tapes, en commen\xE7ant par utiliser un syst\xE8me de reconnaissance automatique de la parole (ASR) pour transcrire la parole source en texte dans la m\xEAme langue, puis la traduction automatique pour traduire le texte transcrit dans la langue cible, et enfin la synth\xE8se vocale pour g\xE9n\xE9rer de la parole dans la langue cible. Cependant, l\u2019ajout d\u2019autres composants au pipeline se pr\xEAte \xE0 la propagation d\u2019erreurs, o\xF9 les erreurs introduites dans un syst\xE8me sont aggrav\xE9es lorsqu\u2019elles passent par les syst\xE8mes restants, et augmente \xE9galement le temps de latence, puisque l\u2019inf\xE9rence doit \xEAtre effectu\xE9e pour davantage de mod\xE8les."),ts=p(),A=r("p"),Jl=a("Bien que cette approche en deux \xE9tapes de la STST soit assez simple, elle permet d\u2019obtenir des syst\xE8mes tr\xE8s efficaces. Le syst\xE8me en deux \xE9tapes \xE0 trois \xE9tapes ASR + traduction automatique + TTS a \xE9t\xE9 utilis\xE9 pr\xE9c\xE9demment pour de nombreux produits STST commerciaux, y compris "),me=r("a"),Tt=r("em"),gl=a("Google Translate"),Ul=a(`.
Il s\u2019agit \xE9galement d\u2019une m\xE9thode tr\xE8s efficace en termes de donn\xE9es et de calcul, puisque les syst\xE8mes de reconnaissance vocale et de synth\xE8se vocale existants peuvent \xEAtre coupl\xE9s pour produire un nouveau mod\xE8le de STST sans aucun entra\xEEnement suppl\xE9mentaire.`),ss=p(),Fe=r("p"),Sl=a("Dans la suite de cette unit\xE9, nous nous concentrerons sur la cr\xE9ation d\u2019un syst\xE8me de STST qui traduit la parole de n\u2019importe quelle langue X en anglais. Les m\xE9thodes abord\xE9es peuvent \xEAtre \xE9tendues aux syst\xE8mes de STST qui traduisent de n\u2019importe quelle langue X vers n\u2019importe quelle langue Y, mais nous laissons cette extension au lecteur et fournissons des pointeurs le cas \xE9ch\xE9ant. Nous divisons ensuite la t\xE2che de STST en ses deux composantes constitutives : traduction vocale et synth\xE8se vocale. Nous terminerons en les assemblant pour construire une d\xE9mo Gradio afin de pr\xE9senter notre syst\xE8me."),ls=p(),X=r("h2"),F=r("a"),Mt=r("span"),f(fe.$$.fragment),jl=p(),bt=r("span"),$l=a("Traduction vocale"),as=p(),G=r("p"),ql=a("Nous utilisons le mod\xE8le Whisper puisqu\u2019il est capable de traduire plus de 96 langues vers l\u2019anglais. Plus pr\xE9cis\xE9ment, nous chargerons le "),wt=r("em"),_l=a("checkpoint"),El=p(),he=r("a"),Gl=a("Whisper Base"),Zl=a(", qui contient 74 millions de param\xE8tres. Ce n\u2019est en aucun cas le mod\xE8le Whisper le plus performant (le "),R=r("a"),Nl=a("plus grand "),Jt=r("em"),kl=a("checkpoint"),xl=a(" Whisper"),Il=a(" \xE9tant plus de 20 fois plus grand) mais comme nous concat\xE9nons deux syst\xE8mes autor\xE9gressifs, nous voulons nous assurer que chaque mod\xE8le peut g\xE9n\xE9rer relativement rapidement afin d\u2019obtenir une vitesse d\u2019inf\xE9rence raisonnable :"),ns=p(),f(ve.$$.fragment),rs=p(),I=r("p"),Wl=a("C\u2019est tr\xE8s bien ! Pour tester notre syst\xE8me de STST, nous allons charger un \xE9chantillon audio dans une autre langue que l\u2019anglais. Chargeons le premier exemple de la partie italienne ("),gt=r("code"),Bl=a("it"),Vl=a(") du jeu de donn\xE9es "),ye=r("a"),Cl=a("VoxPopuli"),Xl=a(" :"),os=p(),f(Te.$$.fragment),is=p(),k=r("p"),Rl=a("Pour \xE9couter cet \xE9chantillon, nous pouvons soit le jouer en utilisant le "),Ut=r("em"),Yl=a("viewer"),zl=a(" sur le "),St=r("em"),Ql=a("Hub"),Hl=a(" : "),Me=r("a"),Pl=a("facebook/voxpopuli/viewer"),us=p(),De=r("p"),Al=a("Ou le lire \xE0 l\u2019aide de la fonction audio d\u2019ipynb :"),ps=p(),f(be.$$.fragment),cs=p(),D=r("p"),Fl=a("Maintenant, d\xE9finissons une fonction qui prend cette entr\xE9e audio et retourne le texte traduit. Vous vous rappelez que nous devons passer l\u2019argument "),jt=r("code"),Dl=a('"task": "translate"'),Kl=a(" pour s\u2019assurer que Whisper effectue de la traduction vocale et non de la reconnaissance vocale :"),ds=p(),f(we.$$.fragment),ms=p(),f(K.$$.fragment),fs=p(),Ke=r("p"),Ll=a("Bien, v\xE9rifions rapidement que nous obtenons un r\xE9sultat raisonnable \xE0 partir du mod\xE8le :"),hs=p(),f(Je.$$.fragment),vs=p(),f(ge.$$.fragment),ys=p(),Le=r("p"),Ol=a("Ok, et si nous comparons cela au texte source :"),Ts=p(),f(Ue.$$.fragment),Ms=p(),f(Se.$$.fragment),bs=p(),Oe=r("p"),ea=a("Nous constatons que la traduction est plus ou moins conforme (vous pouvez la v\xE9rifier en utilisant Google Translate ou DeepL), \xE0 l\u2019exception de quelques mots suppl\xE9mentaires au d\xE9but de la transcription, lorsque le locuteur terminait sa phrase pr\xE9c\xE9dente."),ws=p(),L=r("p"),ta=a("Nous avons ainsi termin\xE9 la premi\xE8re moiti\xE9 de notre pipeline de STST en deux \xE9tapes, en mettant en pratique les comp\xE9tences acquises dans l\u2019unit\xE9 5 lorsque nous avons appris \xE0 utiliser le mod\xE8le Whisper pour la reconnaissance vocale et la traduction. Si vous souhaitez vous rafra\xEEchir la m\xE9moire sur l\u2019une des \xE9tapes que nous avons couvertes, lisez la section "),et=r("a"),sa=a("Mod\xE8les pr\xE9-entra\xEEn\xE9s pour la reconnaissance automatique de la parole"),la=a(" de l\u2019unit\xE9 5."),Js=p(),Y=r("h2"),O=r("a"),$t=r("span"),f(je.$$.fragment),aa=p(),qt=r("span"),na=a("Synth\xE8se vocale"),gs=p(),Z=r("p"),ra=a("La deuxi\xE8me partie de notre syst\xE8me de STST en deux \xE9tapes consiste \xE0 passer d\u2019un texte anglais \xE0 la parole en anglais. Pour cela, nous utiliserons le mod\xE8le pr\xE9-entra\xEEn\xE9 "),$e=r("a"),oa=a("SpeechT5 TTS"),ia=a(". \u{1F917} "),_t=r("em"),ua=a("Transformers"),pa=a(" n\u2019a actuellement pas de "),Et=r("code"),ca=a("pipeline"),da=a(" TTS, donc nous devrons utiliser le mod\xE8le directement nous-m\xEAmes. Ce n\u2019est pas grave, vous \xEAtes tous experts dans l\u2019utilisation du mod\xE8le pour l\u2019inf\xE9rence apr\xE8s l\u2019unit\xE9 6 !"),Us=p(),ee=r("p"),ma=a("Tout d\u2019abord, chargeons le processeur SpeechT5, le mod\xE8le et le vocodeur \xE0 partir du "),Gt=r("em"),fa=a("checkpoint"),ha=a(" pr\xE9-entra\xEEn\xE9 :"),Ss=p(),f(qe.$$.fragment),js=p(),f(te.$$.fragment),$s=p(),tt=r("p"),va=a("Comme pour le Whisper, nous placerons le SpeechT5 et le vocodeur sur notre GPU, si nous en avons un :"),qs=p(),f(_e.$$.fragment),_s=p(),st=r("p"),ya=a("Bien, chargeons les enregistrements du locuteur :"),Es=p(),f(Ee.$$.fragment),Gs=p(),se=r("p"),Ta=a("Nous pouvons maintenant \xE9crire une fonction qui prend en entr\xE9e un prompt de texte et g\xE9n\xE8re le discours correspondant. Nous allons d\u2019abord pr\xE9traiter l\u2019entr\xE9e textuelle \xE0 l\u2019aide du processeur SpeechT5, en tokenisant le texte pour obtenir nos identifiants d\u2019entr\xE9e. Nous transmettons ensuite les identifiants d\u2019entr\xE9e et les ench\xE2ssements de locuteurs au mod\xE8le SpeechT5, en pla\xE7ant chacun d\u2019entre eux sur le GPU s\u2019il est disponible. Enfin, nous renverrons le discours g\xE9n\xE9r\xE9 au CPU pour qu\u2019il puisse \xEAtre lu dans notre "),Zt=r("em"),Ma=a("notebook"),ba=a(" :"),Zs=p(),f(Ge.$$.fragment),Ns=p(),lt=r("p"),wa=a("V\xE9rifions qu\u2019il fonctionne avec une entr\xE9e de texte fictive :"),ks=p(),f(Ze.$$.fragment),xs=p(),at=r("p"),Ja=a("\xC7a a l\u2019air bien ! Passons maintenant \xE0 la partie la plus excitante : assembler le tout."),Is=p(),z=r("h2"),le=r("a"),Nt=r("span"),f(Ne.$$.fragment),ga=p(),kt=r("span"),Ua=a("Creating a STST demo"),Ws=p(),b=r("p"),Sa=a("Avant de cr\xE9er une d\xE9mo "),ke=r("a"),ja=a("Gradio"),$a=a(" pour pr\xE9senter notre syst\xE8me de STST, effectuons d\u2019abord une v\xE9rification rapide pour nous assurer que nous pouvons concat\xE9ner les deux mod\xE8les, en introduisant un \xE9chantillon audio et en obtenant un \xE9chantillon audio. Pour ce faire, nous concat\xE9nerons les deux fonctions d\xE9finies dans les deux sous-sections pr\xE9c\xE9dentes, de sorte que nous entrons l\u2019audio source et r\xE9cup\xE9rons le texte traduit, puis nous synth\xE9tisons le texte traduit pour obtenir la parole traduite. Enfin, nous allons convertir la synth\xE8se vocale en un "),xt=r("em"),qa=a("array"),_a=p(),It=r("code"),Ea=a("int16"),Ga=a(", qui est le format de fichier audio de sortie attendu par Gradio. Pour ce faire, nous devons d\u2019abord normaliser l\u2019"),Wt=r("em"),Za=a("array"),Na=a(" audio par la plage dynamique de la cible de type ("),Bt=r("code"),ka=a("int16"),xa=a("), puis convertir le type par d\xE9faut de NumPy ("),Vt=r("code"),Ia=a("float64"),Wa=a(") vers la cible de type ("),Ct=r("code"),Ba=a("int16"),Va=a(") :"),Bs=p(),f(xe.$$.fragment),Vs=p(),nt=r("p"),Ca=a("V\xE9rifions que cette fonction concat\xE9n\xE9e donne le r\xE9sultat attendu :"),Cs=p(),f(Ie.$$.fragment),Xs=p(),rt=r("p"),Xa=a("Parfait ! Nous allons \xE0 pr\xE9sent int\xE9grer tout cela dans une belle d\xE9mo Gradio afin d\u2019enregistrer notre source vocale \xE0 l\u2019aide d\u2019un microphone ou d\u2019un fichier et de lire la pr\xE9diction du syst\xE8me :"),Rs=p(),f(We.$$.fragment),Ys=p(),ae=r("p"),Ra=a("Cela lancera une d\xE9mo Gradio similaire \xE0 celle qui fonctionne sur le "),Xt=r("em"),Ya=a("Space"),za=a(" suivant :"),zs=p(),q=r("iframe"),Qs=p(),N=r("p"),Qa=a("Vous pouvez "),Be=r("a"),Ha=a("dupliquer"),Pa=a(" cette d\xE9mo et l\u2019adapter pour utiliser un "),Rt=r("em"),Aa=a("checkpoint"),Fa=a(" Whisper diff\xE9rent, un "),Yt=r("em"),Da=a("checkpoint"),Ka=a(" TTS diff\xE9rent, ou travailler sur une autre langue que l\u2019anglais et suivre les conseils fournis pour traduire dans la langue de votre choix !"),Hs=p(),Q=r("h2"),ne=r("a"),zt=r("span"),f(Ve.$$.fragment),La=p(),Qt=r("span"),Oa=a("Pour aller plus loin"),Ps=p(),W=r("p"),en=a("Bien que le syst\xE8me en deux \xE9tapes soit un moyen efficace de construire un syst\xE8me de STST, il souffre des probl\xE8mes de propagation d\u2019erreurs et de latence additive d\xE9crits ci-dessus. Des travaux r\xE9cents ont explor\xE9 une approche "),Ht=r("em"),tn=a("directe"),sn=a(" de la STST, qui ne pr\xE9dit pas de texte interm\xE9diaire et qui, au lieu de cela, \xE9tablit une correspondance directe entre la parole source et la parole cible. Ces syst\xE8mes sont \xE9galement capables de conserver les caract\xE9ristiques de la parole du locuteur source dans la parole cible (telles que la prosodie, la hauteur et l\u2019intonation). Si vous souhaitez en savoir plus sur ces syst\xE8mes, consultez les ressources r\xE9pertori\xE9es dans la section "),ot=r("a"),ln=a("lectures compl\xE9mentaires"),an=a("."),this.h()},l(e){const l=jr('[data-svelte="svelte-1phssyn"]',document.head);m=o(l,"META",{name:!0,content:!0}),l.forEach(t),S=c(e),w=o(e,"H1",{class:!0});var Ce=u(w);_=o(Ce,"A",{id:!0,class:!0,href:!0});var Pt=u(_);B=o(Pt,"SPAN",{});var pn=u(B);h(j.$$.fragment,pn),pn.forEach(t),Pt.forEach(t),pe=c(Ce),V=o(Ce,"SPAN",{});var cn=u(V);C=n(cn,"Traduction parole-\xE0-parole"),cn.forEach(t),Ce.forEach(t),H=c(e),J=o(e,"P",{});var it=u(J);$=n(it,"La traduction parole-\xE0-parole (STST ou S2ST pour "),P=o(it,"EM",{});var dn=u(P);Ye=n(dn,"Speech-to-speech translation"),dn.forEach(t),ze=n(it,") est une t\xE2che de traitement du langage parl\xE9 relativement nouvelle. Elle consiste \xE0 traduire le discours d\u2019une langue en un discours dans une langue "),dt=o(it,"STRONG",{});var mn=u(dt);rl=n(mn,"diff\xE9rente"),mn.forEach(t),ol=n(it," :"),it.forEach(t),Ft=c(e),ce=o(e,"DIV",{class:!0});var fn=u(ce);Qe=o(fn,"IMG",{src:!0,alt:!0}),fn.forEach(t),Dt=c(e),x=o(e,"P",{});var ut=u(x);il=n(ut,"La STST peut \xEAtre consid\xE9r\xE9e comme une extension de la t\xE2che traditionnelle de traduction automatique : au lieu de traduire du "),mt=o(ut,"STRONG",{});var hn=u(mt);ul=n(hn,"texte"),hn.forEach(t),pl=n(ut," d\u2019une langue \xE0 une autre, nous traduisons de la "),ft=o(ut,"STRONG",{});var vn=u(ft);cl=n(vn,"parole"),vn.forEach(t),dl=n(ut," d\u2019une langue \xE0 une autre. La STST trouve des applications dans le domaine de la communication multilingue, en permettant \xE0 des locuteurs de langues diff\xE9rentes de communiquer entre eux par l\u2019interm\xE9diaire de la parole."),ut.forEach(t),Kt=c(e),He=o(e,"P",{});var yn=u(He);ml=n(yn,"Supposons que vous souhaitiez communiquer avec une autre personne au-del\xE0 de la barri\xE8re de la langue. Plut\xF4t que d\u2019\xE9crire l\u2019information que vous souhaitez transmettre et de la traduire ensuite en texte dans la langue cible, vous pouvez la parler directement et demander \xE0 un syst\xE8me STST de convertir votre discours dans la langue cible. Le destinataire peut alors r\xE9pondre en s\u2019adressant au syst\xE8me STST, et vous pouvez \xE9couter sa r\xE9ponse. Cette m\xE9thode de communication est plus naturelle que la traduction automatique bas\xE9e sur le texte."),yn.forEach(t),Lt=c(e),E=o(e,"P",{});var re=u(E);fl=n(re,"Dans ce chapitre, nous allons explorer une approche "),ht=o(re,"EM",{});var Tn=u(ht);hl=n(Tn,"cascad\xE9e"),Tn.forEach(t),vl=n(re," de la STST, en rassemblant les connaissances que vous avez acquises dans les unit\xE9s 5 et 6 du cours. Nous utiliserons un syst\xE8me de "),vt=o(re,"EM",{});var Mn=u(vt);yl=n(Mn,"traduction vocale"),Mn.forEach(t),Tl=n(re," pour transcrire le discours source en texte dans la langue cible, puis un syst\xE8me de "),yt=o(re,"EM",{});var bn=u(yt);Ml=n(bn,"text-to-speech"),bn.forEach(t),bl=n(re," pour g\xE9n\xE9rer du discours dans la langue cible \xE0 partir du texte traduit :"),re.forEach(t),Ot=c(e),de=o(e,"DIV",{class:!0});var wn=u(de);Pe=o(wn,"IMG",{src:!0,alt:!0}),wn.forEach(t),es=c(e),Ae=o(e,"P",{});var Jn=u(Ae);wl=n(Jn,"Nous aurions \xE9galement pu utiliser une approche en trois \xE9tapes, en commen\xE7ant par utiliser un syst\xE8me de reconnaissance automatique de la parole (ASR) pour transcrire la parole source en texte dans la m\xEAme langue, puis la traduction automatique pour traduire le texte transcrit dans la langue cible, et enfin la synth\xE8se vocale pour g\xE9n\xE9rer de la parole dans la langue cible. Cependant, l\u2019ajout d\u2019autres composants au pipeline se pr\xEAte \xE0 la propagation d\u2019erreurs, o\xF9 les erreurs introduites dans un syst\xE8me sont aggrav\xE9es lorsqu\u2019elles passent par les syst\xE8mes restants, et augmente \xE9galement le temps de latence, puisque l\u2019inf\xE9rence doit \xEAtre effectu\xE9e pour davantage de mod\xE8les."),Jn.forEach(t),ts=c(e),A=o(e,"P",{});var Fs=u(A);Jl=n(Fs,"Bien que cette approche en deux \xE9tapes de la STST soit assez simple, elle permet d\u2019obtenir des syst\xE8mes tr\xE8s efficaces. Le syst\xE8me en deux \xE9tapes \xE0 trois \xE9tapes ASR + traduction automatique + TTS a \xE9t\xE9 utilis\xE9 pr\xE9c\xE9demment pour de nombreux produits STST commerciaux, y compris "),me=o(Fs,"A",{href:!0,rel:!0});var gn=u(me);Tt=o(gn,"EM",{});var Un=u(Tt);gl=n(Un,"Google Translate"),Un.forEach(t),gn.forEach(t),Ul=n(Fs,`.
Il s\u2019agit \xE9galement d\u2019une m\xE9thode tr\xE8s efficace en termes de donn\xE9es et de calcul, puisque les syst\xE8mes de reconnaissance vocale et de synth\xE8se vocale existants peuvent \xEAtre coupl\xE9s pour produire un nouveau mod\xE8le de STST sans aucun entra\xEEnement suppl\xE9mentaire.`),Fs.forEach(t),ss=c(e),Fe=o(e,"P",{});var Sn=u(Fe);Sl=n(Sn,"Dans la suite de cette unit\xE9, nous nous concentrerons sur la cr\xE9ation d\u2019un syst\xE8me de STST qui traduit la parole de n\u2019importe quelle langue X en anglais. Les m\xE9thodes abord\xE9es peuvent \xEAtre \xE9tendues aux syst\xE8mes de STST qui traduisent de n\u2019importe quelle langue X vers n\u2019importe quelle langue Y, mais nous laissons cette extension au lecteur et fournissons des pointeurs le cas \xE9ch\xE9ant. Nous divisons ensuite la t\xE2che de STST en ses deux composantes constitutives : traduction vocale et synth\xE8se vocale. Nous terminerons en les assemblant pour construire une d\xE9mo Gradio afin de pr\xE9senter notre syst\xE8me."),Sn.forEach(t),ls=c(e),X=o(e,"H2",{class:!0});var Ds=u(X);F=o(Ds,"A",{id:!0,class:!0,href:!0});var jn=u(F);Mt=o(jn,"SPAN",{});var $n=u(Mt);h(fe.$$.fragment,$n),$n.forEach(t),jn.forEach(t),jl=c(Ds),bt=o(Ds,"SPAN",{});var qn=u(bt);$l=n(qn,"Traduction vocale"),qn.forEach(t),Ds.forEach(t),as=c(e),G=o(e,"P",{});var oe=u(G);ql=n(oe,"Nous utilisons le mod\xE8le Whisper puisqu\u2019il est capable de traduire plus de 96 langues vers l\u2019anglais. Plus pr\xE9cis\xE9ment, nous chargerons le "),wt=o(oe,"EM",{});var _n=u(wt);_l=n(_n,"checkpoint"),_n.forEach(t),El=c(oe),he=o(oe,"A",{href:!0,rel:!0});var En=u(he);Gl=n(En,"Whisper Base"),En.forEach(t),Zl=n(oe,", qui contient 74 millions de param\xE8tres. Ce n\u2019est en aucun cas le mod\xE8le Whisper le plus performant (le "),R=o(oe,"A",{href:!0,rel:!0});var Ks=u(R);Nl=n(Ks,"plus grand "),Jt=o(Ks,"EM",{});var Gn=u(Jt);kl=n(Gn,"checkpoint"),Gn.forEach(t),xl=n(Ks," Whisper"),Ks.forEach(t),Il=n(oe," \xE9tant plus de 20 fois plus grand) mais comme nous concat\xE9nons deux syst\xE8mes autor\xE9gressifs, nous voulons nous assurer que chaque mod\xE8le peut g\xE9n\xE9rer relativement rapidement afin d\u2019obtenir une vitesse d\u2019inf\xE9rence raisonnable :"),oe.forEach(t),ns=c(e),h(ve.$$.fragment,e),rs=c(e),I=o(e,"P",{});var pt=u(I);Wl=n(pt,"C\u2019est tr\xE8s bien ! Pour tester notre syst\xE8me de STST, nous allons charger un \xE9chantillon audio dans une autre langue que l\u2019anglais. Chargeons le premier exemple de la partie italienne ("),gt=o(pt,"CODE",{});var Zn=u(gt);Bl=n(Zn,"it"),Zn.forEach(t),Vl=n(pt,") du jeu de donn\xE9es "),ye=o(pt,"A",{href:!0,rel:!0});var Nn=u(ye);Cl=n(Nn,"VoxPopuli"),Nn.forEach(t),Xl=n(pt," :"),pt.forEach(t),os=c(e),h(Te.$$.fragment,e),is=c(e),k=o(e,"P",{});var Xe=u(k);Rl=n(Xe,"Pour \xE9couter cet \xE9chantillon, nous pouvons soit le jouer en utilisant le "),Ut=o(Xe,"EM",{});var kn=u(Ut);Yl=n(kn,"viewer"),kn.forEach(t),zl=n(Xe," sur le "),St=o(Xe,"EM",{});var xn=u(St);Ql=n(xn,"Hub"),xn.forEach(t),Hl=n(Xe," : "),Me=o(Xe,"A",{href:!0,rel:!0});var In=u(Me);Pl=n(In,"facebook/voxpopuli/viewer"),In.forEach(t),Xe.forEach(t),us=c(e),De=o(e,"P",{});var Wn=u(De);Al=n(Wn,"Ou le lire \xE0 l\u2019aide de la fonction audio d\u2019ipynb :"),Wn.forEach(t),ps=c(e),h(be.$$.fragment,e),cs=c(e),D=o(e,"P",{});var Ls=u(D);Fl=n(Ls,"Maintenant, d\xE9finissons une fonction qui prend cette entr\xE9e audio et retourne le texte traduit. Vous vous rappelez que nous devons passer l\u2019argument "),jt=o(Ls,"CODE",{});var Bn=u(jt);Dl=n(Bn,'"task": "translate"'),Bn.forEach(t),Kl=n(Ls," pour s\u2019assurer que Whisper effectue de la traduction vocale et non de la reconnaissance vocale :"),Ls.forEach(t),ds=c(e),h(we.$$.fragment,e),ms=c(e),h(K.$$.fragment,e),fs=c(e),Ke=o(e,"P",{});var Vn=u(Ke);Ll=n(Vn,"Bien, v\xE9rifions rapidement que nous obtenons un r\xE9sultat raisonnable \xE0 partir du mod\xE8le :"),Vn.forEach(t),hs=c(e),h(Je.$$.fragment,e),vs=c(e),h(ge.$$.fragment,e),ys=c(e),Le=o(e,"P",{});var Cn=u(Le);Ol=n(Cn,"Ok, et si nous comparons cela au texte source :"),Cn.forEach(t),Ts=c(e),h(Ue.$$.fragment,e),Ms=c(e),h(Se.$$.fragment,e),bs=c(e),Oe=o(e,"P",{});var Xn=u(Oe);ea=n(Xn,"Nous constatons que la traduction est plus ou moins conforme (vous pouvez la v\xE9rifier en utilisant Google Translate ou DeepL), \xE0 l\u2019exception de quelques mots suppl\xE9mentaires au d\xE9but de la transcription, lorsque le locuteur terminait sa phrase pr\xE9c\xE9dente."),Xn.forEach(t),ws=c(e),L=o(e,"P",{});var Os=u(L);ta=n(Os,"Nous avons ainsi termin\xE9 la premi\xE8re moiti\xE9 de notre pipeline de STST en deux \xE9tapes, en mettant en pratique les comp\xE9tences acquises dans l\u2019unit\xE9 5 lorsque nous avons appris \xE0 utiliser le mod\xE8le Whisper pour la reconnaissance vocale et la traduction. Si vous souhaitez vous rafra\xEEchir la m\xE9moire sur l\u2019une des \xE9tapes que nous avons couvertes, lisez la section "),et=o(Os,"A",{href:!0});var Rn=u(et);sa=n(Rn,"Mod\xE8les pr\xE9-entra\xEEn\xE9s pour la reconnaissance automatique de la parole"),Rn.forEach(t),la=n(Os," de l\u2019unit\xE9 5."),Os.forEach(t),Js=c(e),Y=o(e,"H2",{class:!0});var el=u(Y);O=o(el,"A",{id:!0,class:!0,href:!0});var Yn=u(O);$t=o(Yn,"SPAN",{});var zn=u($t);h(je.$$.fragment,zn),zn.forEach(t),Yn.forEach(t),aa=c(el),qt=o(el,"SPAN",{});var Qn=u(qt);na=n(Qn,"Synth\xE8se vocale"),Qn.forEach(t),el.forEach(t),gs=c(e),Z=o(e,"P",{});var ie=u(Z);ra=n(ie,"La deuxi\xE8me partie de notre syst\xE8me de STST en deux \xE9tapes consiste \xE0 passer d\u2019un texte anglais \xE0 la parole en anglais. Pour cela, nous utiliserons le mod\xE8le pr\xE9-entra\xEEn\xE9 "),$e=o(ie,"A",{href:!0,rel:!0});var Hn=u($e);oa=n(Hn,"SpeechT5 TTS"),Hn.forEach(t),ia=n(ie,". \u{1F917} "),_t=o(ie,"EM",{});var Pn=u(_t);ua=n(Pn,"Transformers"),Pn.forEach(t),pa=n(ie," n\u2019a actuellement pas de "),Et=o(ie,"CODE",{});var An=u(Et);ca=n(An,"pipeline"),An.forEach(t),da=n(ie," TTS, donc nous devrons utiliser le mod\xE8le directement nous-m\xEAmes. Ce n\u2019est pas grave, vous \xEAtes tous experts dans l\u2019utilisation du mod\xE8le pour l\u2019inf\xE9rence apr\xE8s l\u2019unit\xE9 6 !"),ie.forEach(t),Us=c(e),ee=o(e,"P",{});var tl=u(ee);ma=n(tl,"Tout d\u2019abord, chargeons le processeur SpeechT5, le mod\xE8le et le vocodeur \xE0 partir du "),Gt=o(tl,"EM",{});var Fn=u(Gt);fa=n(Fn,"checkpoint"),Fn.forEach(t),ha=n(tl," pr\xE9-entra\xEEn\xE9 :"),tl.forEach(t),Ss=c(e),h(qe.$$.fragment,e),js=c(e),h(te.$$.fragment,e),$s=c(e),tt=o(e,"P",{});var Dn=u(tt);va=n(Dn,"Comme pour le Whisper, nous placerons le SpeechT5 et le vocodeur sur notre GPU, si nous en avons un :"),Dn.forEach(t),qs=c(e),h(_e.$$.fragment,e),_s=c(e),st=o(e,"P",{});var Kn=u(st);ya=n(Kn,"Bien, chargeons les enregistrements du locuteur :"),Kn.forEach(t),Es=c(e),h(Ee.$$.fragment,e),Gs=c(e),se=o(e,"P",{});var sl=u(se);Ta=n(sl,"Nous pouvons maintenant \xE9crire une fonction qui prend en entr\xE9e un prompt de texte et g\xE9n\xE8re le discours correspondant. Nous allons d\u2019abord pr\xE9traiter l\u2019entr\xE9e textuelle \xE0 l\u2019aide du processeur SpeechT5, en tokenisant le texte pour obtenir nos identifiants d\u2019entr\xE9e. Nous transmettons ensuite les identifiants d\u2019entr\xE9e et les ench\xE2ssements de locuteurs au mod\xE8le SpeechT5, en pla\xE7ant chacun d\u2019entre eux sur le GPU s\u2019il est disponible. Enfin, nous renverrons le discours g\xE9n\xE9r\xE9 au CPU pour qu\u2019il puisse \xEAtre lu dans notre "),Zt=o(sl,"EM",{});var Ln=u(Zt);Ma=n(Ln,"notebook"),Ln.forEach(t),ba=n(sl," :"),sl.forEach(t),Zs=c(e),h(Ge.$$.fragment,e),Ns=c(e),lt=o(e,"P",{});var On=u(lt);wa=n(On,"V\xE9rifions qu\u2019il fonctionne avec une entr\xE9e de texte fictive :"),On.forEach(t),ks=c(e),h(Ze.$$.fragment,e),xs=c(e),at=o(e,"P",{});var er=u(at);Ja=n(er,"\xC7a a l\u2019air bien ! Passons maintenant \xE0 la partie la plus excitante : assembler le tout."),er.forEach(t),Is=c(e),z=o(e,"H2",{class:!0});var ll=u(z);le=o(ll,"A",{id:!0,class:!0,href:!0});var tr=u(le);Nt=o(tr,"SPAN",{});var sr=u(Nt);h(Ne.$$.fragment,sr),sr.forEach(t),tr.forEach(t),ga=c(ll),kt=o(ll,"SPAN",{});var lr=u(kt);Ua=n(lr,"Creating a STST demo"),lr.forEach(t),ll.forEach(t),Ws=c(e),b=o(e,"P",{});var g=u(b);Sa=n(g,"Avant de cr\xE9er une d\xE9mo "),ke=o(g,"A",{href:!0,rel:!0});var ar=u(ke);ja=n(ar,"Gradio"),ar.forEach(t),$a=n(g," pour pr\xE9senter notre syst\xE8me de STST, effectuons d\u2019abord une v\xE9rification rapide pour nous assurer que nous pouvons concat\xE9ner les deux mod\xE8les, en introduisant un \xE9chantillon audio et en obtenant un \xE9chantillon audio. Pour ce faire, nous concat\xE9nerons les deux fonctions d\xE9finies dans les deux sous-sections pr\xE9c\xE9dentes, de sorte que nous entrons l\u2019audio source et r\xE9cup\xE9rons le texte traduit, puis nous synth\xE9tisons le texte traduit pour obtenir la parole traduite. Enfin, nous allons convertir la synth\xE8se vocale en un "),xt=o(g,"EM",{});var nr=u(xt);qa=n(nr,"array"),nr.forEach(t),_a=c(g),It=o(g,"CODE",{});var rr=u(It);Ea=n(rr,"int16"),rr.forEach(t),Ga=n(g,", qui est le format de fichier audio de sortie attendu par Gradio. Pour ce faire, nous devons d\u2019abord normaliser l\u2019"),Wt=o(g,"EM",{});var or=u(Wt);Za=n(or,"array"),or.forEach(t),Na=n(g," audio par la plage dynamique de la cible de type ("),Bt=o(g,"CODE",{});var ir=u(Bt);ka=n(ir,"int16"),ir.forEach(t),xa=n(g,"), puis convertir le type par d\xE9faut de NumPy ("),Vt=o(g,"CODE",{});var ur=u(Vt);Ia=n(ur,"float64"),ur.forEach(t),Wa=n(g,") vers la cible de type ("),Ct=o(g,"CODE",{});var pr=u(Ct);Ba=n(pr,"int16"),pr.forEach(t),Va=n(g,") :"),g.forEach(t),Bs=c(e),h(xe.$$.fragment,e),Vs=c(e),nt=o(e,"P",{});var cr=u(nt);Ca=n(cr,"V\xE9rifions que cette fonction concat\xE9n\xE9e donne le r\xE9sultat attendu :"),cr.forEach(t),Cs=c(e),h(Ie.$$.fragment,e),Xs=c(e),rt=o(e,"P",{});var dr=u(rt);Xa=n(dr,"Parfait ! Nous allons \xE0 pr\xE9sent int\xE9grer tout cela dans une belle d\xE9mo Gradio afin d\u2019enregistrer notre source vocale \xE0 l\u2019aide d\u2019un microphone ou d\u2019un fichier et de lire la pr\xE9diction du syst\xE8me :"),dr.forEach(t),Rs=c(e),h(We.$$.fragment,e),Ys=c(e),ae=o(e,"P",{});var al=u(ae);Ra=n(al,"Cela lancera une d\xE9mo Gradio similaire \xE0 celle qui fonctionne sur le "),Xt=o(al,"EM",{});var mr=u(Xt);Ya=n(mr,"Space"),mr.forEach(t),za=n(al," suivant :"),al.forEach(t),zs=c(e),q=o(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),u(q).forEach(t),Qs=c(e),N=o(e,"P",{});var ue=u(N);Qa=n(ue,"Vous pouvez "),Be=o(ue,"A",{href:!0,rel:!0});var fr=u(Be);Ha=n(fr,"dupliquer"),fr.forEach(t),Pa=n(ue," cette d\xE9mo et l\u2019adapter pour utiliser un "),Rt=o(ue,"EM",{});var hr=u(Rt);Aa=n(hr,"checkpoint"),hr.forEach(t),Fa=n(ue," Whisper diff\xE9rent, un "),Yt=o(ue,"EM",{});var vr=u(Yt);Da=n(vr,"checkpoint"),vr.forEach(t),Ka=n(ue," TTS diff\xE9rent, ou travailler sur une autre langue que l\u2019anglais et suivre les conseils fournis pour traduire dans la langue de votre choix !"),ue.forEach(t),Hs=c(e),Q=o(e,"H2",{class:!0});var nl=u(Q);ne=o(nl,"A",{id:!0,class:!0,href:!0});var yr=u(ne);zt=o(yr,"SPAN",{});var Tr=u(zt);h(Ve.$$.fragment,Tr),Tr.forEach(t),yr.forEach(t),La=c(nl),Qt=o(nl,"SPAN",{});var Mr=u(Qt);Oa=n(Mr,"Pour aller plus loin"),Mr.forEach(t),nl.forEach(t),Ps=c(e),W=o(e,"P",{});var ct=u(W);en=n(ct,"Bien que le syst\xE8me en deux \xE9tapes soit un moyen efficace de construire un syst\xE8me de STST, il souffre des probl\xE8mes de propagation d\u2019erreurs et de latence additive d\xE9crits ci-dessus. Des travaux r\xE9cents ont explor\xE9 une approche "),Ht=o(ct,"EM",{});var br=u(Ht);tn=n(br,"directe"),br.forEach(t),sn=n(ct," de la STST, qui ne pr\xE9dit pas de texte interm\xE9diaire et qui, au lieu de cela, \xE9tablit une correspondance directe entre la parole source et la parole cible. Ces syst\xE8mes sont \xE9galement capables de conserver les caract\xE9ristiques de la parole du locuteur source dans la parole cible (telles que la prosodie, la hauteur et l\u2019intonation). Si vous souhaitez en savoir plus sur ces syst\xE8mes, consultez les ressources r\xE9pertori\xE9es dans la section "),ot=o(ct,"A",{href:!0});var wr=u(ot);ln=n(wr,"lectures compl\xE9mentaires"),wr.forEach(t),an=n(ct,"."),ct.forEach(t),this.h()},h(){d(m,"name","hf:doc:metadata"),d(m,"content",JSON.stringify(Gr)),d(_,"id","traduction-paroleparole"),d(_,"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(_,"href","#traduction-paroleparole"),d(w,"class","relative group"),nn(Qe.src,rn="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/s2st.png")||d(Qe,"src",rn),d(Qe,"alt","Diagram of speech to speech translation"),d(ce,"class","flex justify-center"),nn(Pe.src,on="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/s2st_cascaded.png")||d(Pe,"src",on),d(Pe,"alt","Diagram of s2st_cascaded speech to speech translation"),d(de,"class","flex justify-center"),d(me,"href","https://ai.googleblog.com/2019/05/introducing-translatotron-end-to-end.html"),d(me,"rel","nofollow"),d(F,"id","traduction-vocale"),d(F,"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(F,"href","#traduction-vocale"),d(X,"class","relative group"),d(he,"href","https://huggingface.co/openai/whisper-base"),d(he,"rel","nofollow"),d(R,"href","https://huggingface.co/openai/whisper-large-v2"),d(R,"rel","nofollow"),d(ye,"href","https://huggingface.co/datasets/facebook/voxpopuli"),d(ye,"rel","nofollow"),d(Me,"href","https://huggingface.co/datasets/facebook/voxpopuli/viewer/it/validation?row=0"),d(Me,"rel","nofollow"),d(et,"href","../chapiter5/asr_models"),d(O,"id","synthse-vocale"),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","#synthse-vocale"),d(Y,"class","relative group"),d($e,"href","https://huggingface.co/microsoft/speecht5_tts"),d($e,"rel","nofollow"),d(le,"id","creating-a-stst-demo"),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","#creating-a-stst-demo"),d(z,"class","relative group"),d(ke,"href","https://gradio.app"),d(ke,"rel","nofollow"),nn(q.src,un="https://course-demos-speech-to-speech-translation.hf.space")||d(q,"src",un),d(q,"frameborder","0"),d(q,"height","450"),d(q,"title","Gradio app"),d(q,"class","container p-0 flex-grow space-iframe"),d(q,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),d(q,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),d(Be,"href","https://huggingface.co/spaces/course-demos/speech-to-speech-translation?duplicate=true"),d(Be,"rel","nofollow"),d(ne,"id","pour-aller-plus-loin"),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","#pour-aller-plus-loin"),d(Q,"class","relative group"),d(ot,"href","supplemental_reading")},m(e,l){s(document.head,m),i(e,S,l),i(e,w,l),s(w,_),s(_,B),v(j,B,null),s(w,pe),s(w,V),s(V,C),i(e,H,l),i(e,J,l),s(J,$),s(J,P),s(P,Ye),s(J,ze),s(J,dt),s(dt,rl),s(J,ol),i(e,Ft,l),i(e,ce,l),s(ce,Qe),i(e,Dt,l),i(e,x,l),s(x,il),s(x,mt),s(mt,ul),s(x,pl),s(x,ft),s(ft,cl),s(x,dl),i(e,Kt,l),i(e,He,l),s(He,ml),i(e,Lt,l),i(e,E,l),s(E,fl),s(E,ht),s(ht,hl),s(E,vl),s(E,vt),s(vt,yl),s(E,Tl),s(E,yt),s(yt,Ml),s(E,bl),i(e,Ot,l),i(e,de,l),s(de,Pe),i(e,es,l),i(e,Ae,l),s(Ae,wl),i(e,ts,l),i(e,A,l),s(A,Jl),s(A,me),s(me,Tt),s(Tt,gl),s(A,Ul),i(e,ss,l),i(e,Fe,l),s(Fe,Sl),i(e,ls,l),i(e,X,l),s(X,F),s(F,Mt),v(fe,Mt,null),s(X,jl),s(X,bt),s(bt,$l),i(e,as,l),i(e,G,l),s(G,ql),s(G,wt),s(wt,_l),s(G,El),s(G,he),s(he,Gl),s(G,Zl),s(G,R),s(R,Nl),s(R,Jt),s(Jt,kl),s(R,xl),s(G,Il),i(e,ns,l),v(ve,e,l),i(e,rs,l),i(e,I,l),s(I,Wl),s(I,gt),s(gt,Bl),s(I,Vl),s(I,ye),s(ye,Cl),s(I,Xl),i(e,os,l),v(Te,e,l),i(e,is,l),i(e,k,l),s(k,Rl),s(k,Ut),s(Ut,Yl),s(k,zl),s(k,St),s(St,Ql),s(k,Hl),s(k,Me),s(Me,Pl),i(e,us,l),i(e,De,l),s(De,Al),i(e,ps,l),v(be,e,l),i(e,cs,l),i(e,D,l),s(D,Fl),s(D,jt),s(jt,Dl),s(D,Kl),i(e,ds,l),v(we,e,l),i(e,ms,l),v(K,e,l),i(e,fs,l),i(e,Ke,l),s(Ke,Ll),i(e,hs,l),v(Je,e,l),i(e,vs,l),v(ge,e,l),i(e,ys,l),i(e,Le,l),s(Le,Ol),i(e,Ts,l),v(Ue,e,l),i(e,Ms,l),v(Se,e,l),i(e,bs,l),i(e,Oe,l),s(Oe,ea),i(e,ws,l),i(e,L,l),s(L,ta),s(L,et),s(et,sa),s(L,la),i(e,Js,l),i(e,Y,l),s(Y,O),s(O,$t),v(je,$t,null),s(Y,aa),s(Y,qt),s(qt,na),i(e,gs,l),i(e,Z,l),s(Z,ra),s(Z,$e),s($e,oa),s(Z,ia),s(Z,_t),s(_t,ua),s(Z,pa),s(Z,Et),s(Et,ca),s(Z,da),i(e,Us,l),i(e,ee,l),s(ee,ma),s(ee,Gt),s(Gt,fa),s(ee,ha),i(e,Ss,l),v(qe,e,l),i(e,js,l),v(te,e,l),i(e,$s,l),i(e,tt,l),s(tt,va),i(e,qs,l),v(_e,e,l),i(e,_s,l),i(e,st,l),s(st,ya),i(e,Es,l),v(Ee,e,l),i(e,Gs,l),i(e,se,l),s(se,Ta),s(se,Zt),s(Zt,Ma),s(se,ba),i(e,Zs,l),v(Ge,e,l),i(e,Ns,l),i(e,lt,l),s(lt,wa),i(e,ks,l),v(Ze,e,l),i(e,xs,l),i(e,at,l),s(at,Ja),i(e,Is,l),i(e,z,l),s(z,le),s(le,Nt),v(Ne,Nt,null),s(z,ga),s(z,kt),s(kt,Ua),i(e,Ws,l),i(e,b,l),s(b,Sa),s(b,ke),s(ke,ja),s(b,$a),s(b,xt),s(xt,qa),s(b,_a),s(b,It),s(It,Ea),s(b,Ga),s(b,Wt),s(Wt,Za),s(b,Na),s(b,Bt),s(Bt,ka),s(b,xa),s(b,Vt),s(Vt,Ia),s(b,Wa),s(b,Ct),s(Ct,Ba),s(b,Va),i(e,Bs,l),v(xe,e,l),i(e,Vs,l),i(e,nt,l),s(nt,Ca),i(e,Cs,l),v(Ie,e,l),i(e,Xs,l),i(e,rt,l),s(rt,Xa),i(e,Rs,l),v(We,e,l),i(e,Ys,l),i(e,ae,l),s(ae,Ra),s(ae,Xt),s(Xt,Ya),s(ae,za),i(e,zs,l),i(e,q,l),i(e,Qs,l),i(e,N,l),s(N,Qa),s(N,Be),s(Be,Ha),s(N,Pa),s(N,Rt),s(Rt,Aa),s(N,Fa),s(N,Yt),s(Yt,Da),s(N,Ka),i(e,Hs,l),i(e,Q,l),s(Q,ne),s(ne,zt),v(Ve,zt,null),s(Q,La),s(Q,Qt),s(Qt,Oa),i(e,Ps,l),i(e,W,l),s(W,en),s(W,Ht),s(Ht,tn),s(W,sn),s(W,ot),s(ot,ln),s(W,an),As=!0},p(e,[l]){const Ce={};l&2&&(Ce.$$scope={dirty:l,ctx:e}),K.$set(Ce);const Pt={};l&2&&(Pt.$$scope={dirty:l,ctx:e}),te.$set(Pt)},i(e){As||(y(j.$$.fragment,e),y(fe.$$.fragment,e),y(ve.$$.fragment,e),y(Te.$$.fragment,e),y(be.$$.fragment,e),y(we.$$.fragment,e),y(K.$$.fragment,e),y(Je.$$.fragment,e),y(ge.$$.fragment,e),y(Ue.$$.fragment,e),y(Se.$$.fragment,e),y(je.$$.fragment,e),y(qe.$$.fragment,e),y(te.$$.fragment,e),y(_e.$$.fragment,e),y(Ee.$$.fragment,e),y(Ge.$$.fragment,e),y(Ze.$$.fragment,e),y(Ne.$$.fragment,e),y(xe.$$.fragment,e),y(Ie.$$.fragment,e),y(We.$$.fragment,e),y(Ve.$$.fragment,e),As=!0)},o(e){T(j.$$.fragment,e),T(fe.$$.fragment,e),T(ve.$$.fragment,e),T(Te.$$.fragment,e),T(be.$$.fragment,e),T(we.$$.fragment,e),T(K.$$.fragment,e),T(Je.$$.fragment,e),T(ge.$$.fragment,e),T(Ue.$$.fragment,e),T(Se.$$.fragment,e),T(je.$$.fragment,e),T(qe.$$.fragment,e),T(te.$$.fragment,e),T(_e.$$.fragment,e),T(Ee.$$.fragment,e),T(Ge.$$.fragment,e),T(Ze.$$.fragment,e),T(Ne.$$.fragment,e),T(xe.$$.fragment,e),T(Ie.$$.fragment,e),T(We.$$.fragment,e),T(Ve.$$.fragment,e),As=!1},d(e){t(m),e&&t(S),e&&t(w),M(j),e&&t(H),e&&t(J),e&&t(Ft),e&&t(ce),e&&t(Dt),e&&t(x),e&&t(Kt),e&&t(He),e&&t(Lt),e&&t(E),e&&t(Ot),e&&t(de),e&&t(es),e&&t(Ae),e&&t(ts),e&&t(A),e&&t(ss),e&&t(Fe),e&&t(ls),e&&t(X),M(fe),e&&t(as),e&&t(G),e&&t(ns),M(ve,e),e&&t(rs),e&&t(I),e&&t(os),M(Te,e),e&&t(is),e&&t(k),e&&t(us),e&&t(De),e&&t(ps),M(be,e),e&&t(cs),e&&t(D),e&&t(ds),M(we,e),e&&t(ms),M(K,e),e&&t(fs),e&&t(Ke),e&&t(hs),M(Je,e),e&&t(vs),M(ge,e),e&&t(ys),e&&t(Le),e&&t(Ts),M(Ue,e),e&&t(Ms),M(Se,e),e&&t(bs),e&&t(Oe),e&&t(ws),e&&t(L),e&&t(Js),e&&t(Y),M(je),e&&t(gs),e&&t(Z),e&&t(Us),e&&t(ee),e&&t(Ss),M(qe,e),e&&t(js),M(te,e),e&&t($s),e&&t(tt),e&&t(qs),M(_e,e),e&&t(_s),e&&t(st),e&&t(Es),M(Ee,e),e&&t(Gs),e&&t(se),e&&t(Zs),M(Ge,e),e&&t(Ns),e&&t(lt),e&&t(ks),M(Ze,e),e&&t(xs),e&&t(at),e&&t(Is),e&&t(z),M(Ne),e&&t(Ws),e&&t(b),e&&t(Bs),M(xe,e),e&&t(Vs),e&&t(nt),e&&t(Cs),M(Ie,e),e&&t(Xs),e&&t(rt),e&&t(Rs),M(We,e),e&&t(Ys),e&&t(ae),e&&t(zs),e&&t(q),e&&t(Qs),e&&t(N),e&&t(Hs),e&&t(Q),M(Ve),e&&t(Ps),e&&t(W)}}}const Gr={local:"traduction-paroleparole",sections:[{local:"traduction-vocale",title:"Traduction vocale"},{local:"synthse-vocale",title:"Synth\xE8se vocale"},{local:"creating-a-stst-demo",title:"Creating a STST demo"},{local:"pour-aller-plus-loin",title:"Pour aller plus loin"}],title:"Traduction parole-\xE0-parole "};function Zr(Re){return $r(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Wr extends gr{constructor(m){super();Ur(this,m,Zr,Er,Sr,{})}}export{Wr as default,Gr as metadata};
