import{S as ws,i as Is,s as $s,e as o,k as p,w as b,t as l,M as gs,c as i,d as s,m as c,a as r,x as j,h as a,b as T,G as t,g as u,y as U,L as Es,q as w,o as I,B as $,v as _s}from"../../chunks/vendor-hf-doc-builder.js";import{I as Cs}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as S}from"../../chunks/CodeBlock-hf-doc-builder.js";function zs(ns){let v,le,h,q,R,g,Ue,B,we,ae,d,Ie,P,$e,ge,V,Ee,_e,E,Ce,ze,X,ke,xe,oe,J,Ne,Y,Ae,Se,ie,_,ue,m,De,L,Ge,We,O,Ze,Qe,H,Fe,Re,K,Be,Pe,re,C,pe,D,Ve,ce,z,de,f,Xe,ee,Ye,Le,se,Oe,He,me,k,fe,G,te,Ke,Me,x,ye,W,es,ve,N,he,Z,ne,ss,qe,A,Je,Q,ts,be;return g=new Cs({}),_=new S({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwQXVkaW8lMEElMEFtaW5kcyUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJQb2x5QUklMkZtaW5kczE0JTIyJTJDJTIwbmFtZSUzRCUyMmVuLUFVJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEFtaW5kcyUyMCUzRCUyMG1pbmRzLmNhc3RfY29sdW1uKCUyMmF1ZGlvJTIyJTJDJTIwQXVkaW8oc2FtcGxpbmdfcmF0ZSUzRDE2XzAwMCkp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset
<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Audio

minds = load_dataset(<span class="hljs-string">&quot;PolyAI/minds14&quot;</span>, name=<span class="hljs-string">&quot;en-AU&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
minds = minds.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16_000</span>))`}}),C=new S({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBY2xhc3NpZmllciUyMCUzRCUyMHBpcGVsaW5lKCUwQSUyMCUyMCUyMCUyMCUyMmF1ZGlvLWNsYXNzaWZpY2F0aW9uJTIyJTJDJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0QlMjJhbnRvbi1sJTJGeHRyZW1lX3NfeGxzcl8zMDBtX21pbmRzMTQlMjIlMkMlMEEp",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

classifier = pipeline(
    <span class="hljs-string">&quot;audio-classification&quot;</span>,
    model=<span class="hljs-string">&quot;anton-l/xtreme_s_xlsr_300m_minds14&quot;</span>,
)`}}),z=new S({props:{code:"ZXhhbXBsZSUyMCUzRCUyMG1pbmRzJTVCMCU1RA==",highlighted:'example = minds[<span class="hljs-number">0</span>]'}}),k=new S({props:{code:"Y2xhc3NpZmllcihleGFtcGxlJTVCJTIyYXVkaW8lMjIlNUQlNUIlMjJhcnJheSUyMiU1RCk=",highlighted:'classifier(example[<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>])'}}),x=new S({props:{code:"JTVCJTBBJTIwJTIwJTIwJTIwJTdCJTIyc2NvcmUlMjIlM0ElMjAwLjk2MzE1MjUyNzgwOTE0MzElMkMlMjAlMjJsYWJlbCUyMiUzQSUyMCUyMnBheV9iaWxsJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIyc2NvcmUlMjIlM0ElMjAwLjAyODE5Njk4MzAzOTM3OTEyJTJDJTIwJTIybGFiZWwlMjIlM0ElMjAlMjJmcmVlemUlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJzY29yZSUyMiUzQSUyMDAuMDAzMjc4NzQ5Mjk2NDQxNjc0MiUyQyUyMCUyMmxhYmVsJTIyJTNBJTIwJTIyY2FyZF9pc3N1ZXMlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJzY29yZSUyMiUzQSUyMDAuMDAxOTQxNDQ0NTg1MDk5ODE2MyUyQyUyMCUyMmxhYmVsJTIyJTNBJTIwJTIyYWJyb2FkJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIyc2NvcmUlMjIlM0ElMjAwLjAwMDgzNzg2OTM2MDExMTY1MzglMkMlMjAlMjJsYWJlbCUyMiUzQSUyMCUyMmhpZ2hfdmFsdWVfcGF5bWVudCUyMiU3RCUyQyUwQSU1RA==",highlighted:`[
    {<span class="hljs-string">&quot;score&quot;</span>: <span class="hljs-number">0.9631525278091431</span>, <span class="hljs-string">&quot;label&quot;</span>: <span class="hljs-string">&quot;pay_bill&quot;</span>},
    {<span class="hljs-string">&quot;score&quot;</span>: <span class="hljs-number">0.02819698303937912</span>, <span class="hljs-string">&quot;label&quot;</span>: <span class="hljs-string">&quot;freeze&quot;</span>},
    {<span class="hljs-string">&quot;score&quot;</span>: <span class="hljs-number">0.0032787492964416742</span>, <span class="hljs-string">&quot;label&quot;</span>: <span class="hljs-string">&quot;card_issues&quot;</span>},
    {<span class="hljs-string">&quot;score&quot;</span>: <span class="hljs-number">0.0019414445850998163</span>, <span class="hljs-string">&quot;label&quot;</span>: <span class="hljs-string">&quot;abroad&quot;</span>},
    {<span class="hljs-string">&quot;score&quot;</span>: <span class="hljs-number">0.0008378693601116538</span>, <span class="hljs-string">&quot;label&quot;</span>: <span class="hljs-string">&quot;high_value_payment&quot;</span>},
]`}}),N=new S({props:{code:"aWQybGFiZWwlMjAlM0QlMjBtaW5kcy5mZWF0dXJlcyU1QiUyMmludGVudF9jbGFzcyUyMiU1RC5pbnQyc3RyJTBBaWQybGFiZWwoZXhhbXBsZSU1QiUyMmludGVudF9jbGFzcyUyMiU1RCk=",highlighted:`id2label = minds.features[<span class="hljs-string">&quot;intent_class&quot;</span>].int2str
id2label(example[<span class="hljs-string">&quot;intent_class&quot;</span>])`}}),A=new S({props:{code:"JTIycGF5X2JpbGwlMjI=",highlighted:'<span class="hljs-string">&quot;pay_bill&quot;</span>'}}),{c(){v=o("meta"),le=p(),h=o("h1"),q=o("a"),R=o("span"),b(g.$$.fragment),Ue=p(),B=o("span"),we=l("Classification audio avec un pipeline"),ae=p(),d=o("p"),Ie=l(`La classification audio consiste \xE0 attribuer une ou plusieurs \xE9tiquettes \xE0 un enregistrement audio en fonction de son contenu.
Les \xE9tiquettes peuvent correspondre \xE0 diff\xE9rentes cat\xE9gories sonores, telles que la musique, la parole ou le bruit, ou \xE0 des cat\xE9gories plus sp\xE9cifiques telles que le chant d\u2019oiseaux ou les sons de moteur de voiture.
Avant de plonger dans les d\xE9tails du fonctionnement des `),P=o("em"),$e=l("transformers"),ge=l(" audio les plus populaires, et avant de finetuner un mod\xE8le personnalis\xE9, voyons comment vous pouvez utiliser un mod\xE8le pr\xE9-entra\xEEn\xE9 standard pour la classification audio avec seulement quelques lignes de code avec \u{1F917} "),V=o("em"),Ee=l("Transformers"),_e=l(`.
Utilisons le m\xEAme jeu de donn\xE9es `),E=o("a"),Ce=l("MINDS-14"),ze=l(` que vous avez explor\xE9 dans l\u2019unit\xE9 pr\xE9c\xE9dente.
Si vous vous souvenez, MINDS-14 contient des enregistrements de personnes posant des questions \xE0 un syst\xE8me bancaire \xE9lectronique dans plusieurs langues et dialectes, et a le `),X=o("code"),ke=l("intent_class"),xe=l(" pour chaque enregistrement. Nous pouvons classer les enregistrements par intention de l\u2019appel."),oe=p(),J=o("p"),Ne=l("Comme pr\xE9c\xE9demment, commen\xE7ons par charger le sous-ensemble "),Y=o("code"),Ae=l("en-AU"),Se=l(" pour essayer le pipeline, et sur\xE9chantillonnons-le \xE0 un taux d\u2019\xE9chantillonnage de 16 kHz, ce qui est ce que la plupart des mod\xE8les vocaux exigent."),ie=p(),b(_.$$.fragment),ue=p(),m=o("p"),De=l("Pour classer un enregistrement audio dans un ensemble de classes, nous pouvons utiliser le pipeline "),L=o("code"),Ge=l("audio-classification"),We=l(" de \u{1F917} "),O=o("em"),Ze=l("Transformers"),Qe=l(`.
Dans notre cas, nous avons besoin d\u2019un mod\xE8le qui a \xE9t\xE9 finetun\xE9 pour la classification des intentions, et en particulier sur le jeu de donn\xE9es MINDS-14. Heureusement pour nous, le `),H=o("em"),Fe=l("Hub"),Re=l(" a un mod\xE8le qui fait exactement cela ! Chargeons-le en utilisant la fonction "),K=o("code"),Be=l("pipeline()"),Pe=l(" :"),re=p(),b(C.$$.fragment),pe=p(),D=o("p"),Ve=l("Ce pipeline attend les donn\xE9es audio sous forme de tableau NumPy. Tout le pr\xE9traitement des donn\xE9es audio brutes sera commod\xE9ment g\xE9r\xE9 pour nous par le pipeline. Choisissons un exemple pour l\u2019essayer :"),ce=p(),b(z.$$.fragment),de=p(),f=o("p"),Xe=l("Si vous vous souvenez de la structure du jeu de donn\xE9es, les donn\xE9es audio brutes sont stock\xE9es dans un tableau NumPy sous "),ee=o("code"),Ye=l('["audio"]["array"]'),Le=l(", passons-les directement au "),se=o("code"),Oe=l("classifier"),He=l(" :"),me=p(),b(k.$$.fragment),fe=p(),G=o("p"),te=o("strong"),Ke=l("Sortie :"),Me=p(),b(x.$$.fragment),ye=p(),W=o("p"),es=l("Le mod\xE8le est tr\xE8s confiant que l\u2019appelant avait l\u2019intention d\u2019apprendre \xE0 payer sa facture. Voyons quelle est l\u2019\xE9tiquette r\xE9elle pour cet exemple:"),ve=p(),b(N.$$.fragment),he=p(),Z=o("p"),ne=o("strong"),ss=l("Sortie :"),qe=p(),b(A.$$.fragment),Je=p(),Q=o("p"),ts=l(`L\u2019\xE9tiquette pr\xE9dite est correcte ! Ici, nous avons eu la chance de trouver un mod\xE8le capable de classer les \xE9tiquettes exactes dont nous avons besoin.
Souvent, lorsqu\u2019il s\u2019agit d\u2019une t\xE2che de classification, l\u2019ensemble de classes d\u2019un mod\xE8le pr\xE9-entra\xEEn\xE9 n\u2019est pas exactement le m\xEAme que les classes que vous devez distinguer par le mod\xE8le.
Dans ce cas, vous pouvez finetuner un mod\xE8le pr\xE9-entra\xEEn\xE9 pour le \xAB calibrer \xBB en fonction de votre ensemble exact d\u2019\xE9tiquettes de classe. Nous apprendrons comment le faire dans les prochaines unit\xE9s.`),this.h()},l(e){const n=gs('[data-svelte="svelte-1phssyn"]',document.head);v=i(n,"META",{name:!0,content:!0}),n.forEach(s),le=c(e),h=i(e,"H1",{class:!0});var je=r(h);q=i(je,"A",{id:!0,class:!0,href:!0});var ls=r(q);R=i(ls,"SPAN",{});var as=r(R);j(g.$$.fragment,as),as.forEach(s),ls.forEach(s),Ue=c(je),B=i(je,"SPAN",{});var os=r(B);we=a(os,"Classification audio avec un pipeline"),os.forEach(s),je.forEach(s),ae=c(e),d=i(e,"P",{});var M=r(d);Ie=a(M,`La classification audio consiste \xE0 attribuer une ou plusieurs \xE9tiquettes \xE0 un enregistrement audio en fonction de son contenu.
Les \xE9tiquettes peuvent correspondre \xE0 diff\xE9rentes cat\xE9gories sonores, telles que la musique, la parole ou le bruit, ou \xE0 des cat\xE9gories plus sp\xE9cifiques telles que le chant d\u2019oiseaux ou les sons de moteur de voiture.
Avant de plonger dans les d\xE9tails du fonctionnement des `),P=i(M,"EM",{});var is=r(P);$e=a(is,"transformers"),is.forEach(s),ge=a(M," audio les plus populaires, et avant de finetuner un mod\xE8le personnalis\xE9, voyons comment vous pouvez utiliser un mod\xE8le pr\xE9-entra\xEEn\xE9 standard pour la classification audio avec seulement quelques lignes de code avec \u{1F917} "),V=i(M,"EM",{});var us=r(V);Ee=a(us,"Transformers"),us.forEach(s),_e=a(M,`.
Utilisons le m\xEAme jeu de donn\xE9es `),E=i(M,"A",{href:!0,rel:!0});var rs=r(E);Ce=a(rs,"MINDS-14"),rs.forEach(s),ze=a(M,` que vous avez explor\xE9 dans l\u2019unit\xE9 pr\xE9c\xE9dente.
Si vous vous souvenez, MINDS-14 contient des enregistrements de personnes posant des questions \xE0 un syst\xE8me bancaire \xE9lectronique dans plusieurs langues et dialectes, et a le `),X=i(M,"CODE",{});var ps=r(X);ke=a(ps,"intent_class"),ps.forEach(s),xe=a(M," pour chaque enregistrement. Nous pouvons classer les enregistrements par intention de l\u2019appel."),M.forEach(s),oe=c(e),J=i(e,"P",{});var Te=r(J);Ne=a(Te,"Comme pr\xE9c\xE9demment, commen\xE7ons par charger le sous-ensemble "),Y=i(Te,"CODE",{});var cs=r(Y);Ae=a(cs,"en-AU"),cs.forEach(s),Se=a(Te," pour essayer le pipeline, et sur\xE9chantillonnons-le \xE0 un taux d\u2019\xE9chantillonnage de 16 kHz, ce qui est ce que la plupart des mod\xE8les vocaux exigent."),Te.forEach(s),ie=c(e),j(_.$$.fragment,e),ue=c(e),m=i(e,"P",{});var y=r(m);De=a(y,"Pour classer un enregistrement audio dans un ensemble de classes, nous pouvons utiliser le pipeline "),L=i(y,"CODE",{});var ds=r(L);Ge=a(ds,"audio-classification"),ds.forEach(s),We=a(y," de \u{1F917} "),O=i(y,"EM",{});var ms=r(O);Ze=a(ms,"Transformers"),ms.forEach(s),Qe=a(y,`.
Dans notre cas, nous avons besoin d\u2019un mod\xE8le qui a \xE9t\xE9 finetun\xE9 pour la classification des intentions, et en particulier sur le jeu de donn\xE9es MINDS-14. Heureusement pour nous, le `),H=i(y,"EM",{});var fs=r(H);Fe=a(fs,"Hub"),fs.forEach(s),Re=a(y," a un mod\xE8le qui fait exactement cela ! Chargeons-le en utilisant la fonction "),K=i(y,"CODE",{});var Ms=r(K);Be=a(Ms,"pipeline()"),Ms.forEach(s),Pe=a(y," :"),y.forEach(s),re=c(e),j(C.$$.fragment,e),pe=c(e),D=i(e,"P",{});var ys=r(D);Ve=a(ys,"Ce pipeline attend les donn\xE9es audio sous forme de tableau NumPy. Tout le pr\xE9traitement des donn\xE9es audio brutes sera commod\xE9ment g\xE9r\xE9 pour nous par le pipeline. Choisissons un exemple pour l\u2019essayer :"),ys.forEach(s),ce=c(e),j(z.$$.fragment,e),de=c(e),f=i(e,"P",{});var F=r(f);Xe=a(F,"Si vous vous souvenez de la structure du jeu de donn\xE9es, les donn\xE9es audio brutes sont stock\xE9es dans un tableau NumPy sous "),ee=i(F,"CODE",{});var vs=r(ee);Ye=a(vs,'["audio"]["array"]'),vs.forEach(s),Le=a(F,", passons-les directement au "),se=i(F,"CODE",{});var hs=r(se);Oe=a(hs,"classifier"),hs.forEach(s),He=a(F," :"),F.forEach(s),me=c(e),j(k.$$.fragment,e),fe=c(e),G=i(e,"P",{});var qs=r(G);te=i(qs,"STRONG",{});var Js=r(te);Ke=a(Js,"Sortie :"),Js.forEach(s),qs.forEach(s),Me=c(e),j(x.$$.fragment,e),ye=c(e),W=i(e,"P",{});var bs=r(W);es=a(bs,"Le mod\xE8le est tr\xE8s confiant que l\u2019appelant avait l\u2019intention d\u2019apprendre \xE0 payer sa facture. Voyons quelle est l\u2019\xE9tiquette r\xE9elle pour cet exemple:"),bs.forEach(s),ve=c(e),j(N.$$.fragment,e),he=c(e),Z=i(e,"P",{});var js=r(Z);ne=i(js,"STRONG",{});var Ts=r(ne);ss=a(Ts,"Sortie :"),Ts.forEach(s),js.forEach(s),qe=c(e),j(A.$$.fragment,e),Je=c(e),Q=i(e,"P",{});var Us=r(Q);ts=a(Us,`L\u2019\xE9tiquette pr\xE9dite est correcte ! Ici, nous avons eu la chance de trouver un mod\xE8le capable de classer les \xE9tiquettes exactes dont nous avons besoin.
Souvent, lorsqu\u2019il s\u2019agit d\u2019une t\xE2che de classification, l\u2019ensemble de classes d\u2019un mod\xE8le pr\xE9-entra\xEEn\xE9 n\u2019est pas exactement le m\xEAme que les classes que vous devez distinguer par le mod\xE8le.
Dans ce cas, vous pouvez finetuner un mod\xE8le pr\xE9-entra\xEEn\xE9 pour le \xAB calibrer \xBB en fonction de votre ensemble exact d\u2019\xE9tiquettes de classe. Nous apprendrons comment le faire dans les prochaines unit\xE9s.`),Us.forEach(s),this.h()},h(){T(v,"name","hf:doc:metadata"),T(v,"content",JSON.stringify(ks)),T(q,"id","classification-audio-avec-un-pipeline"),T(q,"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"),T(q,"href","#classification-audio-avec-un-pipeline"),T(h,"class","relative group"),T(E,"href","https://huggingface.co/datasets/PolyAI/minds14"),T(E,"rel","nofollow")},m(e,n){t(document.head,v),u(e,le,n),u(e,h,n),t(h,q),t(q,R),U(g,R,null),t(h,Ue),t(h,B),t(B,we),u(e,ae,n),u(e,d,n),t(d,Ie),t(d,P),t(P,$e),t(d,ge),t(d,V),t(V,Ee),t(d,_e),t(d,E),t(E,Ce),t(d,ze),t(d,X),t(X,ke),t(d,xe),u(e,oe,n),u(e,J,n),t(J,Ne),t(J,Y),t(Y,Ae),t(J,Se),u(e,ie,n),U(_,e,n),u(e,ue,n),u(e,m,n),t(m,De),t(m,L),t(L,Ge),t(m,We),t(m,O),t(O,Ze),t(m,Qe),t(m,H),t(H,Fe),t(m,Re),t(m,K),t(K,Be),t(m,Pe),u(e,re,n),U(C,e,n),u(e,pe,n),u(e,D,n),t(D,Ve),u(e,ce,n),U(z,e,n),u(e,de,n),u(e,f,n),t(f,Xe),t(f,ee),t(ee,Ye),t(f,Le),t(f,se),t(se,Oe),t(f,He),u(e,me,n),U(k,e,n),u(e,fe,n),u(e,G,n),t(G,te),t(te,Ke),u(e,Me,n),U(x,e,n),u(e,ye,n),u(e,W,n),t(W,es),u(e,ve,n),U(N,e,n),u(e,he,n),u(e,Z,n),t(Z,ne),t(ne,ss),u(e,qe,n),U(A,e,n),u(e,Je,n),u(e,Q,n),t(Q,ts),be=!0},p:Es,i(e){be||(w(g.$$.fragment,e),w(_.$$.fragment,e),w(C.$$.fragment,e),w(z.$$.fragment,e),w(k.$$.fragment,e),w(x.$$.fragment,e),w(N.$$.fragment,e),w(A.$$.fragment,e),be=!0)},o(e){I(g.$$.fragment,e),I(_.$$.fragment,e),I(C.$$.fragment,e),I(z.$$.fragment,e),I(k.$$.fragment,e),I(x.$$.fragment,e),I(N.$$.fragment,e),I(A.$$.fragment,e),be=!1},d(e){s(v),e&&s(le),e&&s(h),$(g),e&&s(ae),e&&s(d),e&&s(oe),e&&s(J),e&&s(ie),$(_,e),e&&s(ue),e&&s(m),e&&s(re),$(C,e),e&&s(pe),e&&s(D),e&&s(ce),$(z,e),e&&s(de),e&&s(f),e&&s(me),$(k,e),e&&s(fe),e&&s(G),e&&s(Me),$(x,e),e&&s(ye),e&&s(W),e&&s(ve),$(N,e),e&&s(he),e&&s(Z),e&&s(qe),$(A,e),e&&s(Je),e&&s(Q)}}}const ks={local:"classification-audio-avec-un-pipeline",title:"Classification audio avec un pipeline"};function xs(ns){return _s(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ds extends ws{constructor(v){super();Is(this,v,xs,zs,$s,{})}}export{Ds as default,ks as metadata};
