import{S as zo,i as xo,s as Qo,e as o,k as d,w as J,t as l,M as Fo,c as r,d as s,m as u,a as p,x as g,h as t,b as y,G as e,g as c,y as b,q as w,o as v,B as T,v as Ho,L as Do}from"../../chunks/vendor-hf-doc-builder.js";import{T as Ql}from"../../chunks/Tip-hf-doc-builder.js";import{Y as So}from"../../chunks/Youtube-hf-doc-builder.js";import{I as es}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as Z}from"../../chunks/CodeBlock-hf-doc-builder.js";import{F as Yo,M as No}from"../../chunks/Markdown-hf-doc-builder.js";import"../../chunks/IconTensorflow-hf-doc-builder.js";function Po(V){let i,j,m,M,U;return{c(){i=o("p"),j=l("Revisa la "),m=o("a"),M=l("p\xE1gina de la tarea"),U=l(" de reconocimiento autom\xE1tico del habla para acceder a m\xE1s informaci\xF3n sobre los modelos, datasets y m\xE9tricas asociados."),this.h()},l(_){i=r(_,"P",{});var E=p(i);j=t(E,"Revisa la "),m=r(E,"A",{href:!0,rel:!0});var R=p(m);M=t(R,"p\xE1gina de la tarea"),R.forEach(s),U=t(E," de reconocimiento autom\xE1tico del habla para acceder a m\xE1s informaci\xF3n sobre los modelos, datasets y m\xE9tricas asociados."),E.forEach(s),this.h()},h(){y(m,"href","https://huggingface.co/tasks/automatic-speech-recognition"),y(m,"rel","nofollow")},m(_,E){c(_,i,E),e(i,j),e(i,m),e(m,M),e(i,U)},d(_){_&&s(i)}}}function Oo(V){let i,j,m,M,U,_,E,R;return{c(){i=o("p"),j=l("Si no tienes experiencia haci\xE9ndole fine-tuning a un modelo con el "),m=o("code"),M=l("Trainer"),U=l(", \xA1\xE9chale un vistazo al tutorial b\xE1sico "),_=o("a"),E=l("aqu\xED"),R=l("!"),this.h()},l(W){i=r(W,"P",{});var I=p(i);j=t(I,"Si no tienes experiencia haci\xE9ndole fine-tuning a un modelo con el "),m=r(I,"CODE",{});var X=p(m);M=t(X,"Trainer"),X.forEach(s),U=t(I,", \xA1\xE9chale un vistazo al tutorial b\xE1sico "),_=r(I,"A",{href:!0});var k=p(_);E=t(k,"aqu\xED"),k.forEach(s),R=t(I,"!"),I.forEach(s),this.h()},h(){y(_,"href","../training#train-with-pytorch-trainer")},m(W,I){c(W,i,I),e(i,j),e(i,m),e(m,M),e(i,U),e(i,_),e(_,E),e(i,R)},d(W){W&&s(i)}}}function Lo(V){let i,j,m,M,U,_,E,R,W,I,X,k,q,G,L,Y,A,B,h,$,fa,F,K,re,pa,va,pe,ce,ca,ie,ka,aa,H,ha,Ta,Za,ia,ya,Ma,de,Xa,x,Ba,Q,ea,_a,sa,da,ja,la,Aa,D,ue,ua,Va,ma,Ua;return i=new Ql({props:{$$slots:{default:[Oo]},$$scope:{ctx:V}}}),k=new Z({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNUQyUyQyUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ1RDLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjAlMjJmYWNlYm9vayUyRndhdjJ2ZWMyLWJhc2UlMjIlMkMlMEElMjAlMjAlMjAlMjBjdGNfbG9zc19yZWR1Y3Rpb24lM0QlMjJtZWFuJTIyJTJDJTBBJTIwJTIwJTIwJTIwcGFkX3Rva2VuX2lkJTNEcHJvY2Vzc29yLnRva2VuaXplci5wYWRfdG9rZW5faWQlMkMlMEEp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCTC, TrainingArguments, Trainer

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCTC.from_pretrained(
<span class="hljs-meta">... </span>    <span class="hljs-string">&quot;facebook/wav2vec2-base&quot;</span>,
<span class="hljs-meta">... </span>    ctc_loss_reduction=<span class="hljs-string">&quot;mean&quot;</span>,
<span class="hljs-meta">... </span>    pad_token_id=processor.tokenizer.pad_token_id,
<span class="hljs-meta">... </span>)`}}),da=new Z({props:{code:"dHJhaW5pbmdfYXJncyUyMCUzRCUyMFRyYWluaW5nQXJndW1lbnRzKCUwQSUyMCUyMCUyMCUyMG91dHB1dF9kaXIlM0QlMjJteV9hd2Vzb21lX2Fzcl9taW5kX21vZGVsJTIyJTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV90cmFpbl9iYXRjaF9zaXplJTNEOCUyQyUwQSUyMCUyMCUyMCUyMGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwcyUzRDIlMkMlMEElMjAlMjAlMjAlMjBsZWFybmluZ19yYXRlJTNEMWUtNSUyQyUwQSUyMCUyMCUyMCUyMHdhcm11cF9zdGVwcyUzRDUwMCUyQyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRDIwMDAlMkMlMEElMjAlMjAlMjAlMjBncmFkaWVudF9jaGVja3BvaW50aW5nJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGZwMTYlM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwZ3JvdXBfYnlfbGVuZ3RoJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMGV2YWx1YXRpb25fc3RyYXRlZ3klM0QlMjJzdGVwcyUyMiUyQyUwQSUyMCUyMCUyMCUyMHBlcl9kZXZpY2VfZXZhbF9iYXRjaF9zaXplJTNEOCUyQyUwQSUyMCUyMCUyMCUyMHNhdmVfc3RlcHMlM0QxMDAwJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9zdGVwcyUzRDEwMDAlMkMlMEElMjAlMjAlMjAlMjBsb2dnaW5nX3N0ZXBzJTNEMjUlMkMlMEElMjAlMjAlMjAlMjBsb2FkX2Jlc3RfbW9kZWxfYXRfZW5kJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMG1ldHJpY19mb3JfYmVzdF9tb2RlbCUzRCUyMndlciUyMiUyQyUwQSUyMCUyMCUyMCUyMGdyZWF0ZXJfaXNfYmV0dGVyJTNERmFsc2UlMkMlMEElMjAlMjAlMjAlMjBwdXNoX3RvX2h1YiUzRFRydWUlMkMlMEEpJTBBJTBBdHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlM0Rtb2RlbCUyQyUwQSUyMCUyMCUyMCUyMGFyZ3MlM0R0cmFpbmluZ19hcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRGVuY29kZWRfbWluZHMlNUIlMjJ0cmFpbiUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMGV2YWxfZGF0YXNldCUzRGVuY29kZWRfbWluZHMlNUIlMjJ0ZXN0JTIyJTVEJTJDJTBBJTIwJTIwJTIwJTIwdG9rZW5pemVyJTNEcHJvY2Vzc29yLmZlYXR1cmVfZXh0cmFjdG9yJTJDJTBBJTIwJTIwJTIwJTIwZGF0YV9jb2xsYXRvciUzRGRhdGFfY29sbGF0b3IlMkMlMEElMjAlMjAlMjAlMjBjb21wdXRlX21ldHJpY3MlM0Rjb21wdXRlX21ldHJpY3MlMkMlMEEpJTBBJTBBdHJhaW5lci50cmFpbigp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>training_args = TrainingArguments(
<span class="hljs-meta">... </span>    output_dir=<span class="hljs-string">&quot;my_awesome_asr_mind_model&quot;</span>,
<span class="hljs-meta">... </span>    per_device_train_batch_size=<span class="hljs-number">8</span>,
<span class="hljs-meta">... </span>    gradient_accumulation_steps=<span class="hljs-number">2</span>,
<span class="hljs-meta">... </span>    learning_rate=<span class="hljs-number">1e-5</span>,
<span class="hljs-meta">... </span>    warmup_steps=<span class="hljs-number">500</span>,
<span class="hljs-meta">... </span>    max_steps=<span class="hljs-number">2000</span>,
<span class="hljs-meta">... </span>    gradient_checkpointing=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    fp16=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    group_by_length=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    evaluation_strategy=<span class="hljs-string">&quot;steps&quot;</span>,
<span class="hljs-meta">... </span>    per_device_eval_batch_size=<span class="hljs-number">8</span>,
<span class="hljs-meta">... </span>    save_steps=<span class="hljs-number">1000</span>,
<span class="hljs-meta">... </span>    eval_steps=<span class="hljs-number">1000</span>,
<span class="hljs-meta">... </span>    logging_steps=<span class="hljs-number">25</span>,
<span class="hljs-meta">... </span>    load_best_model_at_end=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>    metric_for_best_model=<span class="hljs-string">&quot;wer&quot;</span>,
<span class="hljs-meta">... </span>    greater_is_better=<span class="hljs-literal">False</span>,
<span class="hljs-meta">... </span>    push_to_hub=<span class="hljs-literal">True</span>,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer = Trainer(
<span class="hljs-meta">... </span>    model=model,
<span class="hljs-meta">... </span>    args=training_args,
<span class="hljs-meta">... </span>    train_dataset=encoded_minds[<span class="hljs-string">&quot;train&quot;</span>],
<span class="hljs-meta">... </span>    eval_dataset=encoded_minds[<span class="hljs-string">&quot;test&quot;</span>],
<span class="hljs-meta">... </span>    tokenizer=processor.feature_extractor,
<span class="hljs-meta">... </span>    data_collator=data_collator,
<span class="hljs-meta">... </span>    compute_metrics=compute_metrics,
<span class="hljs-meta">... </span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.train()`}}),ma=new Z({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>trainer.push_to_hub()'}}),{c(){J(i.$$.fragment),j=d(),m=o("p"),M=l("\xA1Ya puedes empezar a entrenar tu modelo! Para ello, carga Wav2Vec2 con "),U=o("code"),_=l("AutoModelForCTC"),E=l(". Especifica la reducci\xF3n que quieres aplicar con el par\xE1metro "),R=o("code"),W=l("ctc_loss_reduction"),I=l(". A menudo, es mejor usar el promedio en lugar de la sumatoria que se hace por defecto."),X=d(),J(k.$$.fragment),q=d(),G=o("p"),L=l("En este punto, solo quedan tres pasos:"),Y=d(),A=o("ol"),B=o("li"),h=l("Define tus hiperpar\xE1metros de entrenamiento en "),$=o("code"),fa=l("TrainingArguments"),F=l(". El \xFAnico par\xE1metro obligatorio es "),K=o("code"),re=l("output_dir"),pa=l(" (carpeta de salida), el cual especifica d\xF3nde guardar tu modelo. Puedes subir este modelo al Hub haciendo "),va=o("code"),pe=l("push_to_hub=True"),ce=l(" (debes haber iniciado sesi\xF3n en Hugging Face para subir tu modelo). Al final de cada \xE9poca, el "),ca=o("code"),ie=l("Trainer"),ka=l(" evaluar\xE1 la WER y guardar\xE1 el punto de control del entrenamiento."),aa=d(),H=o("li"),ha=l("P\xE1sale los argumentos del entrenamiento al "),Ta=o("code"),Za=l("Trainer"),ia=l(" junto con el modelo, el dataset, el tokenizer, el collator de datos y la funci\xF3n "),ya=o("code"),Ma=l("compute_metrics"),de=l("."),Xa=d(),x=o("li"),Ba=l("Llama el m\xE9todo "),Q=o("code"),ea=l("train()"),_a=l(" para hacerle fine-tuning a tu modelo."),sa=d(),J(da.$$.fragment),ja=d(),la=o("p"),Aa=l("Una vez que el entrenamiento haya sido completado, comparte tu modelo en el Hub con el m\xE9todo "),D=o("code"),ue=l("push_to_hub()"),ua=l(" para que todo el mundo pueda usar tu modelo:"),Va=d(),J(ma.$$.fragment)},l(f){g(i.$$.fragment,f),j=u(f),m=r(f,"P",{});var C=p(m);M=t(C,"\xA1Ya puedes empezar a entrenar tu modelo! Para ello, carga Wav2Vec2 con "),U=r(C,"CODE",{});var N=p(U);_=t(N,"AutoModelForCTC"),N.forEach(s),E=t(C,". Especifica la reducci\xF3n que quieres aplicar con el par\xE1metro "),R=r(C,"CODE",{});var qe=p(R);W=t(qe,"ctc_loss_reduction"),qe.forEach(s),I=t(C,". A menudo, es mejor usar el promedio en lugar de la sumatoria que se hace por defecto."),C.forEach(s),X=u(f),g(k.$$.fragment,f),q=u(f),G=r(f,"P",{});var Ga=p(G);L=t(Ga,"En este punto, solo quedan tres pasos:"),Ga.forEach(s),Y=u(f),A=r(f,"OL",{});var Ja=p(A);B=r(Ja,"LI",{});var S=p(B);h=t(S,"Define tus hiperpar\xE1metros de entrenamiento en "),$=r(S,"CODE",{});var qa=p($);fa=t(qa,"TrainingArguments"),qa.forEach(s),F=t(S,". El \xFAnico par\xE1metro obligatorio es "),K=r(S,"CODE",{});var Ye=p(K);re=t(Ye,"output_dir"),Ye.forEach(s),pa=t(S," (carpeta de salida), el cual especifica d\xF3nde guardar tu modelo. Puedes subir este modelo al Hub haciendo "),va=r(S,"CODE",{});var Ne=p(va);pe=t(Ne,"push_to_hub=True"),Ne.forEach(s),ce=t(S," (debes haber iniciado sesi\xF3n en Hugging Face para subir tu modelo). Al final de cada \xE9poca, el "),ca=r(S,"CODE",{});var me=p(ca);ie=t(me,"Trainer"),me.forEach(s),ka=t(S," evaluar\xE1 la WER y guardar\xE1 el punto de control del entrenamiento."),S.forEach(s),aa=u(Ja),H=r(Ja,"LI",{});var P=p(H);ha=t(P,"P\xE1sale los argumentos del entrenamiento al "),Ta=r(P,"CODE",{});var fe=p(Ta);Za=t(fe,"Trainer"),fe.forEach(s),ia=t(P," junto con el modelo, el dataset, el tokenizer, el collator de datos y la funci\xF3n "),ya=r(P,"CODE",{});var $a=p(ya);Ma=t($a,"compute_metrics"),$a.forEach(s),de=t(P,"."),P.forEach(s),Xa=u(Ja),x=r(Ja,"LI",{});var Ya=p(x);Ba=t(Ya,"Llama el m\xE9todo "),Q=r(Ya,"CODE",{});var he=p(Q);ea=t(he,"train()"),he.forEach(s),_a=t(Ya," para hacerle fine-tuning a tu modelo."),Ya.forEach(s),Ja.forEach(s),sa=u(f),g(da.$$.fragment,f),ja=u(f),la=r(f,"P",{});var ta=p(la);Aa=t(ta,"Una vez que el entrenamiento haya sido completado, comparte tu modelo en el Hub con el m\xE9todo "),D=r(ta,"CODE",{});var ye=p(D);ue=t(ye,"push_to_hub()"),ye.forEach(s),ua=t(ta," para que todo el mundo pueda usar tu modelo:"),ta.forEach(s),Va=u(f),g(ma.$$.fragment,f)},m(f,C){b(i,f,C),c(f,j,C),c(f,m,C),e(m,M),e(m,U),e(U,_),e(m,E),e(m,R),e(R,W),e(m,I),c(f,X,C),b(k,f,C),c(f,q,C),c(f,G,C),e(G,L),c(f,Y,C),c(f,A,C),e(A,B),e(B,h),e(B,$),e($,fa),e(B,F),e(B,K),e(K,re),e(B,pa),e(B,va),e(va,pe),e(B,ce),e(B,ca),e(ca,ie),e(B,ka),e(A,aa),e(A,H),e(H,ha),e(H,Ta),e(Ta,Za),e(H,ia),e(H,ya),e(ya,Ma),e(H,de),e(A,Xa),e(A,x),e(x,Ba),e(x,Q),e(Q,ea),e(x,_a),c(f,sa,C),b(da,f,C),c(f,ja,C),c(f,la,C),e(la,Aa),e(la,D),e(D,ue),e(la,ua),c(f,Va,C),b(ma,f,C),Ua=!0},p(f,C){const N={};C&2&&(N.$$scope={dirty:C,ctx:f}),i.$set(N)},i(f){Ua||(w(i.$$.fragment,f),w(k.$$.fragment,f),w(da.$$.fragment,f),w(ma.$$.fragment,f),Ua=!0)},o(f){v(i.$$.fragment,f),v(k.$$.fragment,f),v(da.$$.fragment,f),v(ma.$$.fragment,f),Ua=!1},d(f){T(i,f),f&&s(j),f&&s(m),f&&s(X),T(k,f),f&&s(q),f&&s(G),f&&s(Y),f&&s(A),f&&s(sa),T(da,f),f&&s(ja),f&&s(la),f&&s(Va),T(ma,f)}}}function Ko(V){let i,j;return i=new No({props:{$$slots:{default:[Lo]},$$scope:{ctx:V}}}),{c(){J(i.$$.fragment)},l(m){g(i.$$.fragment,m)},m(m,M){b(i,m,M),j=!0},p(m,M){const U={};M&2&&(U.$$scope={dirty:M,ctx:m}),i.$set(U)},i(m){j||(w(i.$$.fragment,m),j=!0)},o(m){v(i.$$.fragment,m),j=!1},d(m){T(i,m)}}}function ar(V){let i,j,m,M,U,_,E,R;return{c(){i=o("p"),j=l("Para ver un ejemplo m\xE1s detallado de c\xF3mo hacerle fine-tuning a un modelo para reconocimiento autom\xE1tico del habla, \xE9chale un vistazo a esta "),m=o("a"),M=l("entrada de blog"),U=l(" para ASR en ingl\xE9s y a esta "),_=o("a"),E=l("entrada"),R=l(" para ASR multiling\xFCe."),this.h()},l(W){i=r(W,"P",{});var I=p(i);j=t(I,"Para ver un ejemplo m\xE1s detallado de c\xF3mo hacerle fine-tuning a un modelo para reconocimiento autom\xE1tico del habla, \xE9chale un vistazo a esta "),m=r(I,"A",{href:!0,rel:!0});var X=p(m);M=t(X,"entrada de blog"),X.forEach(s),U=t(I," para ASR en ingl\xE9s y a esta "),_=r(I,"A",{href:!0,rel:!0});var k=p(_);E=t(k,"entrada"),k.forEach(s),R=t(I," para ASR multiling\xFCe."),I.forEach(s),this.h()},h(){y(m,"href","https://huggingface.co/blog/fine-tune-wav2vec2-english"),y(m,"rel","nofollow"),y(_,"href","https://huggingface.co/blog/fine-tune-xlsr-wav2vec2"),y(_,"rel","nofollow")},m(W,I){c(W,i,I),e(i,j),e(i,m),e(m,M),e(i,U),e(i,_),e(_,E),e(i,R)},d(W){W&&s(i)}}}function er(V){let i,j;return{c(){i=o("p"),j=l("La transcripci\xF3n es decente, pero podr\xEDa ser mejor. \xA1Intenta hacerle fine-tuning a tu modelo con m\xE1s ejemplos para obtener resultados a\xFAn mejores!")},l(m){i=r(m,"P",{});var M=p(i);j=t(M,"La transcripci\xF3n es decente, pero podr\xEDa ser mejor. \xA1Intenta hacerle fine-tuning a tu modelo con m\xE1s ejemplos para obtener resultados a\xFAn mejores!"),M.forEach(s)},m(m,M){c(m,i,M),e(i,j)},d(m){m&&s(i)}}}function sr(V){let i,j,m,M,U,_,E,R,W,I,X,k,q,G,L,Y,A,B;return E=new Z({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZCglMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRfbW9kZWwlMjIpJTBBaW5wdXRzJTIwJTNEJTIwcHJvY2Vzc29yKGRhdGFzZXQlNUIwJTVEJTVCJTIyYXVkaW8lMjIlNUQlNUIlMjJhcnJheSUyMiU1RCUyQyUyMHNhbXBsaW5nX3JhdGUlM0RzYW1wbGluZ19yYXRlJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

<span class="hljs-meta">&gt;&gt;&gt; </span>processor = AutoProcessor.from_pretrained(<span class="hljs-string">&quot;stevhliu/my_awesome_asr_mind_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>inputs = processor(dataset[<span class="hljs-number">0</span>][<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=sampling_rate, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)`}}),k=new Z({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Nb2RlbEZvckNUQyUwQSUwQW1vZGVsJTIwJTNEJTIwQXV0b01vZGVsRm9yQ1RDLmZyb21fcHJldHJhaW5lZCglMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRfbW9kZWwlMjIpJTBBd2l0aCUyMHRvcmNoLm5vX2dyYWQoKSUzQSUwQSUyMCUyMCUyMCUyMGxvZ2l0cyUyMCUzRCUyMG1vZGVsKCoqaW5wdXRzKS5sb2dpdHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoModelForCTC

<span class="hljs-meta">&gt;&gt;&gt; </span>model = AutoModelForCTC.from_pretrained(<span class="hljs-string">&quot;stevhliu/my_awesome_asr_mind_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">with</span> torch.no_grad():
<span class="hljs-meta">... </span>    logits = model(**inputs).logits`}}),A=new Z({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFwcmVkaWN0ZWRfaWRzJTIwJTNEJTIwdG9yY2guYXJnbWF4KGxvZ2l0cyUyQyUyMGRpbSUzRC0xKSUwQXRyYW5zY3JpcHRpb24lMjAlM0QlMjBwcm9jZXNzb3IuYmF0Y2hfZGVjb2RlKHByZWRpY3RlZF9pZHMpJTBBdHJhbnNjcmlwdGlvbg==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span>predicted_ids = torch.argmax(logits, dim=-<span class="hljs-number">1</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcription = processor.batch_decode(predicted_ids)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcription
[<span class="hljs-string">&#x27;I WOUL LIKE O SET UP JOINT ACOUNT WTH Y PARTNER&#x27;</span>]`}}),{c(){i=o("p"),j=l("Carga un procesador para preprocesar el archivo de audio y la transcripci\xF3n y devuelve el "),m=o("code"),M=l("input"),U=l(" como un tensor de PyTorch:"),_=d(),J(E.$$.fragment),R=d(),W=o("p"),I=l("P\xE1sale tus entradas al modelo y devuelve los logits:"),X=d(),J(k.$$.fragment),q=d(),G=o("p"),L=l("Obt\xE9n los identificadores de los tokens con mayor probabilidad en las predicciones y usa el procesador para decodificarlos y transformarlos en texto:"),Y=d(),J(A.$$.fragment)},l(h){i=r(h,"P",{});var $=p(i);j=t($,"Carga un procesador para preprocesar el archivo de audio y la transcripci\xF3n y devuelve el "),m=r($,"CODE",{});var fa=p(m);M=t(fa,"input"),fa.forEach(s),U=t($," como un tensor de PyTorch:"),$.forEach(s),_=u(h),g(E.$$.fragment,h),R=u(h),W=r(h,"P",{});var F=p(W);I=t(F,"P\xE1sale tus entradas al modelo y devuelve los logits:"),F.forEach(s),X=u(h),g(k.$$.fragment,h),q=u(h),G=r(h,"P",{});var K=p(G);L=t(K,"Obt\xE9n los identificadores de los tokens con mayor probabilidad en las predicciones y usa el procesador para decodificarlos y transformarlos en texto:"),K.forEach(s),Y=u(h),g(A.$$.fragment,h)},m(h,$){c(h,i,$),e(i,j),e(i,m),e(m,M),e(i,U),c(h,_,$),b(E,h,$),c(h,R,$),c(h,W,$),e(W,I),c(h,X,$),b(k,h,$),c(h,q,$),c(h,G,$),e(G,L),c(h,Y,$),b(A,h,$),B=!0},p:Do,i(h){B||(w(E.$$.fragment,h),w(k.$$.fragment,h),w(A.$$.fragment,h),B=!0)},o(h){v(E.$$.fragment,h),v(k.$$.fragment,h),v(A.$$.fragment,h),B=!1},d(h){h&&s(i),h&&s(_),T(E,h),h&&s(R),h&&s(W),h&&s(X),T(k,h),h&&s(q),h&&s(G),h&&s(Y),T(A,h)}}}function lr(V){let i,j;return i=new No({props:{$$slots:{default:[sr]},$$scope:{ctx:V}}}),{c(){J(i.$$.fragment)},l(m){g(i.$$.fragment,m)},m(m,M){b(i,m,M),j=!0},p(m,M){const U={};M&2&&(U.$$scope={dirty:M,ctx:m}),i.$set(U)},i(m){j||(w(i.$$.fragment,m),j=!0)},o(m){v(i.$$.fragment,m),j=!1},d(m){T(i,m)}}}function tr(V){let i,j,m,M,U,_,E,R,W,I,X,k,q,G,L,Y,A,B,h,$,fa,F,K,re,pa,va,pe,ce,ca,ie,ka,aa,H,ha,Ta,Za,ia,ya,Ma,de,Xa,x,Ba,Q,ea,_a,sa,da,ja,la,Aa,D,ue,ua,Va,ma,Ua,f,C,N,qe,Ga,Ja,S,qa,Ye,Ne,me,P,fe,$a,Ya,he,ta,ye,z,Fl,ss,Hl,Dl,ls,Sl,Pl,ts,Ol,Ll,ns,Kl,at,os,et,st,Ns,Me,zs,ze,lt,xs,je,Qs,xe,tt,Fs,Na,za,rs,nt,ot,ps,rt,pt,ct,Qe,cs,it,dt,Hs,Ea,xa,is,Je,ut,ds,mt,Ds,Fe,ft,Ss,ge,Ps,Qa,ht,be,yt,Mt,Os,we,Ls,Fa,jt,us,Jt,gt,Ks,ve,al,He,bt,el,Ha,Te,wt,ms,vt,Tt,_t,Ia,Ut,fs,$t,Et,hs,It,Ct,sl,_e,ll,O,Rt,ys,Wt,kt,Ms,Zt,Xt,js,Bt,At,Js,Vt,Gt,tl,Ue,nl,na,qt,gs,Yt,Nt,bs,zt,xt,ws,Qt,Ft,ol,ga,Ht,vs,Dt,St,Ts,Pt,Ot,rl,$e,pl,Da,Lt,_s,Kt,an,cl,Ee,il,Ca,Sa,Us,Ie,en,$s,sn,dl,oa,ln,Ce,tn,nn,Re,on,rn,We,pn,cn,ul,ke,ml,Pa,dn,Es,un,mn,fl,Ze,hl,Oa,fn,Is,hn,yn,yl,Ra,La,Cs,Xe,Mn,Rs,jn,Ml,Ka,jl,ae,Jl,Wa,ee,Ws,Be,Jn,ks,gn,gl,De,bn,bl,Se,wn,wl,Ae,vl,ba,vn,Zs,Tn,_n,Xs,Un,$n,Tl,Ve,_l,se,Ul,le,En,Bs,In,Cn,$l,te,El;return _=new es({}),X=new So({props:{id:"TksaY_FDgnk"}}),aa=new Ql({props:{$$slots:{default:[Po]},$$scope:{ctx:V}}}),ia=new Z({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyUyMGRhdGFzZXRzJTIwZXZhbHVhdGUlMjBqaXdlcg==",highlighted:"pip install transformers datasets evaluate jiwer"}}),x=new Z({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login

<span class="hljs-meta">&gt;&gt;&gt; </span>notebook_login()`}}),sa=new es({}),f=new Z({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFtaW5kcyUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJQb2x5QUklMkZtaW5kczE0JTIyJTJDJTIwbmFtZSUzRCUyMmVuLVVTJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiU1QiUzQTEwMCU1RCUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

<span class="hljs-meta">&gt;&gt;&gt; </span>minds = load_dataset(<span class="hljs-string">&quot;PolyAI/minds14&quot;</span>, name=<span class="hljs-string">&quot;en-US&quot;</span>, split=<span class="hljs-string">&quot;train[:100]&quot;</span>)`}}),P=new Z({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy50cmFpbl90ZXN0X3NwbGl0KHRlc3Rfc2l6ZSUzRDAuMik=",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.train_test_split(test_size=<span class="hljs-number">0.2</span>)'}}),ta=new Z({props:{code:"bWluZHM=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds
DatasetDict({
    train: Dataset({
        features: [<span class="hljs-string">&#x27;path&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;transcription&#x27;</span>, <span class="hljs-string">&#x27;english_transcription&#x27;</span>, <span class="hljs-string">&#x27;intent_class&#x27;</span>, <span class="hljs-string">&#x27;lang_id&#x27;</span>],
        num_rows: <span class="hljs-number">16</span>
    })
    test: Dataset({
        features: [<span class="hljs-string">&#x27;path&#x27;</span>, <span class="hljs-string">&#x27;audio&#x27;</span>, <span class="hljs-string">&#x27;transcription&#x27;</span>, <span class="hljs-string">&#x27;english_transcription&#x27;</span>, <span class="hljs-string">&#x27;intent_class&#x27;</span>, <span class="hljs-string">&#x27;lang_id&#x27;</span>],
        num_rows: <span class="hljs-number">4</span>
    })
})`}}),Me=new Z({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy5yZW1vdmVfY29sdW1ucyglNUIlMjJlbmdsaXNoX3RyYW5zY3JpcHRpb24lMjIlMkMlMjAlMjJpbnRlbnRfY2xhc3MlMjIlMkMlMjAlMjJsYW5nX2lkJTIyJTVEKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.remove_columns([<span class="hljs-string">&quot;english_transcription&quot;</span>, <span class="hljs-string">&quot;intent_class&quot;</span>, <span class="hljs-string">&quot;lang_id&quot;</span>])'}}),je=new Z({props:{code:"bWluZHMlNUIlMjJ0cmFpbiUyMiU1RCU1QjAlNUQ=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]
{<span class="hljs-string">&#x27;audio&#x27;</span>: {<span class="hljs-string">&#x27;array&#x27;</span>: array([-<span class="hljs-number">0.00024414</span>,  <span class="hljs-number">0.</span>        ,  <span class="hljs-number">0.</span>        , ...,  <span class="hljs-number">0.00024414</span>,
          <span class="hljs-number">0.00024414</span>,  <span class="hljs-number">0.00024414</span>], dtype=float32),
  <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
  <span class="hljs-string">&#x27;sampling_rate&#x27;</span>: <span class="hljs-number">8000</span>},
 <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
 <span class="hljs-string">&#x27;transcription&#x27;</span>: <span class="hljs-string">&quot;hi I&#x27;m trying to use the banking app on my phone and currently my checking and savings account balance is not refreshing&quot;</span>}`}}),Je=new es({}),ge=new Z({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZCglMjJmYWNlYm9vayUyRndhdjJ2ZWMyLWJhc2UlMjIp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

<span class="hljs-meta">&gt;&gt;&gt; </span>processor = AutoProcessor.from_pretrained(<span class="hljs-string">&quot;facebook/wav2vec2-base&quot;</span>)`}}),we=new Z({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy5jYXN0X2NvbHVtbiglMjJhdWRpbyUyMiUyQyUyMEF1ZGlvKHNhbXBsaW5nX3JhdGUlM0QxNl8wMDApKSUwQW1pbmRzJTVCJTIydHJhaW4lMjIlNUQlNUIwJTVE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16_000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>minds[<span class="hljs-string">&quot;train&quot;</span>][<span class="hljs-number">0</span>]
{<span class="hljs-string">&#x27;audio&#x27;</span>: {<span class="hljs-string">&#x27;array&#x27;</span>: array([-<span class="hljs-number">2.38064706e-04</span>, -<span class="hljs-number">1.58618059e-04</span>, -<span class="hljs-number">5.43987835e-06</span>, ...,
          <span class="hljs-number">2.78103951e-04</span>,  <span class="hljs-number">2.38446111e-04</span>,  <span class="hljs-number">1.18740834e-04</span>], dtype=float32),
  <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
  <span class="hljs-string">&#x27;sampling_rate&#x27;</span>: <span class="hljs-number">16000</span>},
 <span class="hljs-string">&#x27;path&#x27;</span>: <span class="hljs-string">&#x27;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-US~APP_ERROR/602ba9e2963e11ccd901cd4f.wav&#x27;</span>,
 <span class="hljs-string">&#x27;transcription&#x27;</span>: <span class="hljs-string">&quot;hi I&#x27;m trying to use the banking app on my phone and currently my checking and savings account balance is not refreshing&quot;</span>}`}}),ve=new Z({props:{code:"ZGVmJTIwdXBwZXJjYXNlKGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIydHJhbnNjcmlwdGlvbiUyMiUzQSUyMGV4YW1wbGUlNUIlMjJ0cmFuc2NyaXB0aW9uJTIyJTVELnVwcGVyKCklN0QlMEElMEElMEFtaW5kcyUyMCUzRCUyMG1pbmRzLm1hcCh1cHBlcmNhc2Up",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">uppercase</span>(<span class="hljs-params">example</span>):
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;transcription&quot;</span>: example[<span class="hljs-string">&quot;transcription&quot;</span>].upper()}


<span class="hljs-meta">&gt;&gt;&gt; </span>minds = minds.<span class="hljs-built_in">map</span>(uppercase)`}}),_e=new Z({props:{code:"ZGVmJTIwcHJlcGFyZV9kYXRhc2V0KGJhdGNoKSUzQSUwQSUyMCUyMCUyMCUyMGF1ZGlvJTIwJTNEJTIwYmF0Y2glNUIlMjJhdWRpbyUyMiU1RCUwQSUyMCUyMCUyMCUyMGJhdGNoJTIwJTNEJTIwcHJvY2Vzc29yKGF1ZGlvJTVCJTIyYXJyYXklMjIlNUQlMkMlMjBzYW1wbGluZ19yYXRlJTNEYXVkaW8lNUIlMjJzYW1wbGluZ19yYXRlJTIyJTVEJTJDJTIwdGV4dCUzRGJhdGNoJTVCJTIydHJhbnNjcmlwdGlvbiUyMiU1RCklMEElMjAlMjAlMjAlMjBiYXRjaCU1QiUyMmlucHV0X2xlbmd0aCUyMiU1RCUyMCUzRCUyMGxlbihiYXRjaCU1QiUyMmlucHV0X3ZhbHVlcyUyMiU1RCU1QjAlNUQpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYmF0Y2g=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">prepare_dataset</span>(<span class="hljs-params">batch</span>):
<span class="hljs-meta">... </span>    audio = batch[<span class="hljs-string">&quot;audio&quot;</span>]
<span class="hljs-meta">... </span>    batch = processor(audio[<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>], text=batch[<span class="hljs-string">&quot;transcription&quot;</span>])
<span class="hljs-meta">... </span>    batch[<span class="hljs-string">&quot;input_length&quot;</span>] = <span class="hljs-built_in">len</span>(batch[<span class="hljs-string">&quot;input_values&quot;</span>][<span class="hljs-number">0</span>])
<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> batch`}}),Ue=new Z({props:{code:"ZW5jb2RlZF9taW5kcyUyMCUzRCUyMG1pbmRzLm1hcChwcmVwYXJlX2RhdGFzZXQlMkMlMjByZW1vdmVfY29sdW1ucyUzRG1pbmRzLmNvbHVtbl9uYW1lcyU1QiUyMnRyYWluJTIyJTVEJTJDJTIwbnVtX3Byb2MlM0Q0KQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>encoded_minds = minds.<span class="hljs-built_in">map</span>(prepare_dataset, remove_columns=minds.column_names[<span class="hljs-string">&quot;train&quot;</span>], num_proc=<span class="hljs-number">4</span>)'}}),$e=new Z({props:{code:"aW1wb3J0JTIwdG9yY2glMEElMEFmcm9tJTIwZGF0YWNsYXNzZXMlMjBpbXBvcnQlMjBkYXRhY2xhc3MlMkMlMjBmaWVsZCUwQWZyb20lMjB0eXBpbmclMjBpbXBvcnQlMjBBbnklMkMlMjBEaWN0JTJDJTIwTGlzdCUyQyUyME9wdGlvbmFsJTJDJTIwVW5pb24lMEElMEElMEElNDBkYXRhY2xhc3MlMEFjbGFzcyUyMERhdGFDb2xsYXRvckNUQ1dpdGhQYWRkaW5nJTNBJTBBJTIwJTIwJTIwJTIwcHJvY2Vzc29yJTNBJTIwQXV0b1Byb2Nlc3NvciUwQSUyMCUyMCUyMCUyMHBhZGRpbmclM0ElMjBVbmlvbiU1QmJvb2wlMkMlMjBzdHIlNUQlMjAlM0QlMjAlMjJsb25nZXN0JTIyJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19jYWxsX18oc2VsZiUyQyUyMGZlYXR1cmVzJTNBJTIwTGlzdCU1QkRpY3QlNUJzdHIlMkMlMjBVbmlvbiU1Qkxpc3QlNUJpbnQlNUQlMkMlMjB0b3JjaC5UZW5zb3IlNUQlNUQlNUQpJTIwLSUzRSUyMERpY3QlNUJzdHIlMkMlMjB0b3JjaC5UZW5zb3IlNUQlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBwYXJ0aWNpb25hJTIwbGFzJTIwZW50cmFkYXMlMjB5JTIwbGFzJTIwZXRpcXVldGFzJTIweWElMjBxdWUlMjB0aWVuZW4lMjBxdWUlMjB0ZW5lciUyMGxvbmdpdHVkZXMlMjBkaXN0aW50YXMlMjB5JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIzJTIwcmVxdWllcmVuJTIwbSVDMyVBOXRvZG9zJTIwZGUlMjBwYWRkaW5nJTIwZGlmZXJlbnRlcyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlucHV0X2ZlYXR1cmVzJTIwJTNEJTIwJTVCJTdCJTIyaW5wdXRfdmFsdWVzJTIyJTNBJTIwZmVhdHVyZSU1QiUyMmlucHV0X3ZhbHVlcyUyMiU1RCU1QjAlNUQlN0QlMjBmb3IlMjBmZWF0dXJlJTIwaW4lMjBmZWF0dXJlcyU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGxhYmVsX2ZlYXR1cmVzJTIwJTNEJTIwJTVCJTdCJTIyaW5wdXRfaWRzJTIyJTNBJTIwZmVhdHVyZSU1QiUyMmxhYmVscyUyMiU1RCU3RCUyMGZvciUyMGZlYXR1cmUlMjBpbiUyMGZlYXR1cmVzJTVEJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glMjAlM0QlMjBzZWxmLnByb2Nlc3Nvci5wYWQoaW5wdXRfZmVhdHVyZXMlMkMlMjBwYWRkaW5nJTNEc2VsZi5wYWRkaW5nJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBsYWJlbHNfYmF0Y2glMjAlM0QlMjBzZWxmLnByb2Nlc3Nvci5wYWQobGFiZWxzJTNEbGFiZWxfZmVhdHVyZXMlMkMlMjBwYWRkaW5nJTNEc2VsZi5wYWRkaW5nJTJDJTIwcmV0dXJuX3RlbnNvcnMlM0QlMjJwdCUyMiklMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjByZW1wbGF6YSUyMGVsJTIwcGFkZGluZyUyMGNvbiUyMC0xMDAlMjBwYXJhJTIwaWdub3JhciUyMGxhJTIwcCVDMyVBOXJkaWRhJTIwZGUlMjBmb3JtYSUyMGNvcnJlY3RhJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwbGFiZWxzX2JhdGNoJTVCJTIyaW5wdXRfaWRzJTIyJTVELm1hc2tlZF9maWxsKGxhYmVsc19iYXRjaC5hdHRlbnRpb25fbWFzay5uZSgxKSUyQyUyMC0xMDApJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwYmF0Y2glNUIlMjJsYWJlbHMlMjIlNUQlMjAlM0QlMjBsYWJlbHMlMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBiYXRjaA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> torch

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> dataclasses <span class="hljs-keyword">import</span> dataclass, field
<span class="hljs-meta">&gt;&gt;&gt; </span><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">Optional</span>, <span class="hljs-type">Union</span>


<span class="hljs-meta">&gt;&gt;&gt; </span>@dataclass
<span class="hljs-meta">... </span><span class="hljs-keyword">class</span> <span class="hljs-title class_">DataCollatorCTCWithPadding</span>:
<span class="hljs-meta">... </span>    processor: AutoProcessor
<span class="hljs-meta">... </span>    padding: <span class="hljs-type">Union</span>[<span class="hljs-built_in">bool</span>, <span class="hljs-built_in">str</span>] = <span class="hljs-string">&quot;longest&quot;</span>

<span class="hljs-meta">... </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]:
<span class="hljs-meta">... </span>        <span class="hljs-comment"># particiona las entradas y las etiquetas ya que tienen que tener longitudes distintas y</span>
<span class="hljs-meta">... </span>        <span class="hljs-comment"># requieren m\xE9todos de padding diferentes</span>
<span class="hljs-meta">... </span>        input_features = [{<span class="hljs-string">&quot;input_values&quot;</span>: feature[<span class="hljs-string">&quot;input_values&quot;</span>][<span class="hljs-number">0</span>]} <span class="hljs-keyword">for</span> feature <span class="hljs-keyword">in</span> features]
<span class="hljs-meta">... </span>        label_features = [{<span class="hljs-string">&quot;input_ids&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]

<span class="hljs-meta">... </span>        batch = self.processor.pad(input_features, padding=self.padding, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-meta">... </span>        labels_batch = self.processor.pad(labels=label_features, padding=self.padding, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-meta">... </span>        <span class="hljs-comment"># remplaza el padding con -100 para ignorar la p\xE9rdida de forma correcta</span>
<span class="hljs-meta">... </span>        labels = labels_batch[<span class="hljs-string">&quot;input_ids&quot;</span>].masked_fill(labels_batch.attention_mask.ne(<span class="hljs-number">1</span>), -<span class="hljs-number">100</span>)

<span class="hljs-meta">... </span>        batch[<span class="hljs-string">&quot;labels&quot;</span>] = labels

<span class="hljs-meta">... </span>        <span class="hljs-keyword">return</span> batch`}}),Ee=new Z({props:{code:"ZGF0YV9jb2xsYXRvciUyMCUzRCUyMERhdGFDb2xsYXRvckNUQ1dpdGhQYWRkaW5nKHByb2Nlc3NvciUzRHByb2Nlc3NvciUyQyUyMHBhZGRpbmclM0QlMjJsb25nZXN0JTIyKQ==",highlighted:'<span class="hljs-meta">&gt;&gt;&gt; </span>data_collator = DataCollatorCTCWithPadding(processor=processor, padding=<span class="hljs-string">&quot;longest&quot;</span>)'}}),Ie=new es({}),ke=new Z({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEF3ZXIlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMndlciUyMik=",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> evaluate

<span class="hljs-meta">&gt;&gt;&gt; </span>wer = evaluate.load(<span class="hljs-string">&quot;wer&quot;</span>)`}}),Ze=new Z({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBJTBBZGVmJTIwY29tcHV0ZV9tZXRyaWNzKHByZWQpJTNBJTBBJTIwJTIwJTIwJTIwcHJlZF9sb2dpdHMlMjAlM0QlMjBwcmVkLnByZWRpY3Rpb25zJTBBJTIwJTIwJTIwJTIwcHJlZF9pZHMlMjAlM0QlMjBucC5hcmdtYXgocHJlZF9sb2dpdHMlMkMlMjBheGlzJTNELTEpJTBBJTBBJTIwJTIwJTIwJTIwcHJlZC5sYWJlbF9pZHMlNUJwcmVkLmxhYmVsX2lkcyUyMCUzRCUzRCUyMC0xMDAlNUQlMjAlM0QlMjBwcm9jZXNzb3IudG9rZW5pemVyLnBhZF90b2tlbl9pZCUwQSUwQSUyMCUyMCUyMCUyMHByZWRfc3RyJTIwJTNEJTIwcHJvY2Vzc29yLmJhdGNoX2RlY29kZShwcmVkX2lkcyklMEElMjAlMjAlMjAlMjBsYWJlbF9zdHIlMjAlM0QlMjBwcm9jZXNzb3IuYmF0Y2hfZGVjb2RlKHByZWQubGFiZWxfaWRzJTJDJTIwZ3JvdXBfdG9rZW5zJTNERmFsc2UpJTBBJTBBJTIwJTIwJTIwJTIwd2VyJTIwJTNEJTIwd2VyLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkX3N0ciUyQyUyMHJlZmVyZW5jZXMlM0RsYWJlbF9zdHIpJTBBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTIyd2VyJTIyJTNBJTIwd2VyJTdE",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np


<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">pred</span>):
<span class="hljs-meta">... </span>    pred_logits = pred.predictions
<span class="hljs-meta">... </span>    pred_ids = np.argmax(pred_logits, axis=-<span class="hljs-number">1</span>)

<span class="hljs-meta">... </span>    pred.label_ids[pred.label_ids == -<span class="hljs-number">100</span>] = processor.tokenizer.pad_token_id

<span class="hljs-meta">... </span>    pred_str = processor.batch_decode(pred_ids)
<span class="hljs-meta">... </span>    label_str = processor.batch_decode(pred.label_ids, group_tokens=<span class="hljs-literal">False</span>)

<span class="hljs-meta">... </span>    wer = wer.compute(predictions=pred_str, references=label_str)

<span class="hljs-meta">... </span>    <span class="hljs-keyword">return</span> {<span class="hljs-string">&quot;wer&quot;</span>: wer}`}}),Xe=new es({}),Ka=new Yo({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[Ko]},$$scope:{ctx:V}}}),ae=new Ql({props:{$$slots:{default:[ar]},$$scope:{ctx:V}}}),Be=new es({}),Ae=new Z({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTJDJTIwQXVkaW8lMEElMEFkYXRhc2V0JTIwJTNEJTIwbG9hZF9kYXRhc2V0KCUyMlBvbHlBSSUyRm1pbmRzMTQlMjIlMkMlMjAlMjJlbi1VUyUyMiUyQyUyMHNwbGl0JTNEJTIydHJhaW4lMjIpJTBBZGF0YXNldCUyMCUzRCUyMGRhdGFzZXQuY2FzdF9jb2x1bW4oJTIyYXVkaW8lMjIlMkMlMjBBdWRpbyhzYW1wbGluZ19yYXRlJTNEMTYwMDApKSUwQXNhbXBsaW5nX3JhdGUlMjAlM0QlMjBkYXRhc2V0LmZlYXR1cmVzJTVCJTIyYXVkaW8lMjIlNUQuc2FtcGxpbmdfcmF0ZSUwQWF1ZGlvX2ZpbGUlMjAlM0QlMjBkYXRhc2V0JTVCMCU1RCU1QiUyMmF1ZGlvJTIyJTVEJTVCJTIycGF0aCUyMiU1RA==",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset, Audio

<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = load_dataset(<span class="hljs-string">&quot;PolyAI/minds14&quot;</span>, <span class="hljs-string">&quot;en-US&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>dataset = dataset.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16000</span>))
<span class="hljs-meta">&gt;&gt;&gt; </span>sampling_rate = dataset.features[<span class="hljs-string">&quot;audio&quot;</span>].sampling_rate
<span class="hljs-meta">&gt;&gt;&gt; </span>audio_file = dataset[<span class="hljs-number">0</span>][<span class="hljs-string">&quot;audio&quot;</span>][<span class="hljs-string">&quot;path&quot;</span>]`}}),Ve=new Z({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdHJhbnNjcmliZXIlMjAlM0QlMjBwaXBlbGluZSglMjJhdXRvbWF0aWMtc3BlZWNoLXJlY29nbml0aW9uJTIyJTJDJTIwbW9kZWwlM0QlMjJzdGV2aGxpdSUyRm15X2F3ZXNvbWVfYXNyX21pbmRzX21vZGVsJTIyKSUwQXRyYW5zY3JpYmVyKGF1ZGlvX2ZpbGUp",highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline

<span class="hljs-meta">&gt;&gt;&gt; </span>transcriber = pipeline(<span class="hljs-string">&quot;automatic-speech-recognition&quot;</span>, model=<span class="hljs-string">&quot;stevhliu/my_awesome_asr_minds_model&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>transcriber(audio_file)
{<span class="hljs-string">&#x27;text&#x27;</span>: <span class="hljs-string">&#x27;I WOUD LIKE O SET UP JOINT ACOUNT WTH Y PARTNER&#x27;</span>}`}}),se=new Ql({props:{$$slots:{default:[er]},$$scope:{ctx:V}}}),te=new Yo({props:{pytorch:!0,tensorflow:!1,jax:!1,$$slots:{pytorch:[lr]},$$scope:{ctx:V}}}),{c(){i=o("meta"),j=d(),m=o("h1"),M=o("a"),U=o("span"),J(_.$$.fragment),E=d(),R=o("span"),W=l("Reconocimiento autom\xE1tico del habla"),I=d(),J(X.$$.fragment),k=d(),q=o("p"),G=l("El reconocimiento autom\xE1tico del habla (ASR, por sus siglas en ingl\xE9s) convierte una se\xF1al de habla en texto y mapea una secuencia de entradas de audio en salidas en forma de texto. Los asistentes virtuales como Siri y Alexa usan modelos de ASR para ayudar a sus usuarios todos los d\xEDas. De igual forma, hay muchas otras aplicaciones, como la transcripci\xF3n de contenidos en vivo y la toma autom\xE1tica de notas durante reuniones."),L=d(),Y=o("p"),A=l("En esta gu\xEDa te mostraremos como:"),B=d(),h=o("ol"),$=o("li"),fa=l("Hacer fine-tuning al modelo "),F=o("a"),K=l("Wav2Vec2"),re=l(" con el dataset "),pa=o("a"),va=l("MInDS-14"),pe=l(" para transcribir audio a texto."),ce=d(),ca=o("li"),ie=l("Usar tu modelo ajustado para tareas de inferencia."),ka=d(),J(aa.$$.fragment),H=d(),ha=o("p"),Ta=l("Antes de comenzar, aseg\xFArate de haber instalado todas las librer\xEDas necesarias:"),Za=d(),J(ia.$$.fragment),ya=d(),Ma=o("p"),de=l("Te aconsejamos iniciar sesi\xF3n con tu cuenta de Hugging Face para que puedas subir tu modelo y comartirlo con la comunidad. Cuando te sea solicitado, ingresa tu token para iniciar sesi\xF3n:"),Xa=d(),J(x.$$.fragment),Ba=d(),Q=o("h2"),ea=o("a"),_a=o("span"),J(sa.$$.fragment),da=d(),ja=o("span"),la=l("Cargar el dataset MInDS-14"),Aa=d(),D=o("p"),ue=l("Comencemos cargando un subconjunto m\xE1s peque\xF1o del dataset "),ua=o("a"),Va=l("MInDS-14"),ma=l(" desde la biblioteca \u{1F917} Datasets. De esta forma, tendr\xE1s la oportunidad de experimentar y asegurarte de que todo funcione antes de invertir m\xE1s tiempo entrenando con el dataset entero."),Ua=d(),J(f.$$.fragment),C=d(),N=o("p"),qe=l("Divide la partici\xF3n "),Ga=o("code"),Ja=l("train"),S=l(" (entrenamiento) en una partici\xF3n de entrenamiento y una de prueba usando el m\xE9todo "),qa=o("code"),Ye=l("~Dataset.train_test_split"),Ne=l(":"),me=d(),J(P.$$.fragment),fe=d(),$a=o("p"),Ya=l("Ahora \xE9chale un vistazo al dataset:"),he=d(),J(ta.$$.fragment),ye=d(),z=o("p"),Fl=l("Aunque el dataset contiene mucha informaci\xF3n \xFAtil, como los campos "),ss=o("code"),Hl=l("lang_id"),Dl=l(" (identificador del lenguaje) y "),ls=o("code"),Sl=l("english_transcription"),Pl=l(" (transcripci\xF3n al ingl\xE9s), en esta gu\xEDa nos enfocaremos en los campos "),ts=o("code"),Ol=l("audio"),Ll=l(" y "),ns=o("code"),Kl=l("transcription"),at=l(". Puedes quitar las otras columnas con el m\xE9todo "),os=o("code"),et=l("remove_columns"),st=l(":"),Ns=d(),J(Me.$$.fragment),zs=d(),ze=o("p"),lt=l("Vuelve a echarle un vistazo al ejemplo:"),xs=d(),J(je.$$.fragment),Qs=d(),xe=o("p"),tt=l("Hay dos campos:"),Fs=d(),Na=o("ul"),za=o("li"),rs=o("code"),nt=l("audio"),ot=l(": un "),ps=o("code"),rt=l("array"),pt=l(" (arreglo) unidimensional de la se\xF1al de habla que debe ser invocado para cargar y re-muestrear el archivo de audio."),ct=d(),Qe=o("li"),cs=o("code"),it=l("transcription"),dt=l(": el texto objetivo."),Hs=d(),Ea=o("h2"),xa=o("a"),is=o("span"),J(Je.$$.fragment),ut=d(),ds=o("span"),mt=l("Preprocesamiento"),Ds=d(),Fe=o("p"),ft=l("El siguiente paso es cargar un procesador Wav2Vec2 para procesar la se\xF1al de audio:"),Ss=d(),J(ge.$$.fragment),Ps=d(),Qa=o("p"),ht=l("El dataset MInDS-14 tiene una tasa de muestreo de 8000kHz (puedes encontrar esta informaci\xF3n en su "),be=o("a"),yt=l("tarjeta de dataset"),Mt=l("), lo que significa que tendr\xE1s que re-muestrear el dataset a 16000kHz para poder usar el modelo Wav2Vec2 pre-entrenado:"),Os=d(),J(we.$$.fragment),Ls=d(),Fa=o("p"),jt=l("Como puedes ver en el campo "),us=o("code"),Jt=l("transcription"),gt=l(", el texto contiene una mezcla de car\xE1cteres en may\xFAsculas y en min\xFAsculas. El tokenizer Wav2Vec2 fue entrenado \xFAnicamente con car\xE1cteres en may\xFAsculas, as\xED que tendr\xE1s que asegurarte de que el texto se ajuste al vocabulario del tokenizer:"),Ks=d(),J(ve.$$.fragment),al=d(),He=o("p"),bt=l("Ahora vamos a crear una funci\xF3n de preprocesamiento que:"),el=d(),Ha=o("ol"),Te=o("li"),wt=l("Invoque la columna "),ms=o("code"),vt=l("audio"),Tt=l(" para cargar y re-muestrear el archivo de audio."),_t=d(),Ia=o("li"),Ut=l("Extraiga el campo "),fs=o("code"),$t=l("input_values"),Et=l(" (valores de entrada) del archivo de audio y haga la tokenizaci\xF3n de la columna "),hs=o("code"),It=l("transcription"),Ct=l(" con el procesador."),sl=d(),J(_e.$$.fragment),ll=d(),O=o("p"),Rt=l("Para aplicar la funci\xF3n de preprocesamiento a todo el dataset, puedes usar la funci\xF3n "),ys=o("code"),Wt=l("map"),kt=l(" de \u{1F917} Datasets. Para acelerar la funci\xF3n "),Ms=o("code"),Zt=l("map"),Xt=l(" puedes incrementar el n\xFAmero de procesos con el par\xE1metro "),js=o("code"),Bt=l("num_proc"),At=l(". Quita las columnas que no necesites con el m\xE9todo "),Js=o("code"),Vt=l("remove_columns"),Gt=l(":"),tl=d(),J(Ue.$$.fragment),nl=d(),na=o("p"),qt=l("\u{1F917} Transformers no tiene un collator de datos para la tarea de ASR, as\xED que tendr\xE1s que adaptar el "),gs=o("code"),Yt=l("DataCollatorWithPadding"),Nt=l(" para crear un lote de ejemplos. El collator tambi\xE9n le aplicar\xE1 padding din\xE1mico a tu texto y etiquetas para que tengan la longitud del elemento m\xE1s largo en su lote (en vez de la mayor longitud en el dataset entero), de forma que todas las muestras tengan una longitud uniforme. Aunque es posible hacerle padding a tu texto con el "),bs=o("code"),zt=l("tokenizer"),xt=l(" haciendo "),ws=o("code"),Qt=l("padding=True"),Ft=l(", el padding din\xE1mico es m\xE1s eficiente."),ol=d(),ga=o("p"),Ht=l("A diferencia de otros collators de datos, este tiene que aplicarle un m\xE9todo de padding distinto a los campos "),vs=o("code"),Dt=l("input_values"),St=l(" (valores de entrada) y "),Ts=o("code"),Pt=l("labels"),Ot=l(" (etiquetas):"),rl=d(),J($e.$$.fragment),pl=d(),Da=o("p"),Lt=l("Ahora puedes instanciar tu "),_s=o("code"),Kt=l("DataCollatorForCTCWithPadding"),an=l(":"),cl=d(),J(Ee.$$.fragment),il=d(),Ca=o("h2"),Sa=o("a"),Us=o("span"),J(Ie.$$.fragment),en=d(),$s=o("span"),sn=l("Evaluaci\xF3n"),dl=d(),oa=o("p"),ln=l("A menudo es \xFAtil incluir una m\xE9trica durante el entrenamiento para evaluar el rendimiento de tu modelo. Puedes cargar un m\xE9todo de evaluaci\xF3n r\xE1pidamente con la biblioteca \u{1F917} "),Ce=o("a"),tn=l("Evaluate"),nn=l(". Para esta tarea, puedes usar la m\xE9trica de "),Re=o("a"),on=l("tasa de error por palabra"),rn=l(" (WER, por sus siglas en ingl\xE9s). Puedes ver la "),We=o("a"),pn=l("gu\xEDa r\xE1pida"),cn=l(" de \u{1F917} Evaluate para aprender m\xE1s acerca de c\xF3mo cargar y computar una m\xE9trica."),ul=d(),J(ke.$$.fragment),ml=d(),Pa=o("p"),dn=l("Ahora crea una funci\xF3n que le pase tus predicciones y etiquetas a "),Es=o("code"),un=l("compute"),mn=l(" para calcular la WER:"),fl=d(),J(Ze.$$.fragment),hl=d(),Oa=o("p"),fn=l("Ahora tu funci\xF3n "),Is=o("code"),hn=l("compute_metrics"),yn=l(" (computar m\xE9tricas) est\xE1 lista y podr\xE1s usarla cuando est\xE9s preparando tu entrenamiento."),yl=d(),Ra=o("h2"),La=o("a"),Cs=o("span"),J(Xe.$$.fragment),Mn=d(),Rs=o("span"),jn=l("Entrenamiento"),Ml=d(),J(Ka.$$.fragment),jl=d(),J(ae.$$.fragment),Jl=d(),Wa=o("h2"),ee=o("a"),Ws=o("span"),J(Be.$$.fragment),Jn=d(),ks=o("span"),gn=l("Inferencia"),gl=d(),De=o("p"),bn=l("\xA1Genial, ahora que le has hecho fine-tuning a un modelo, puedes usarlo para inferencia!"),bl=d(),Se=o("p"),wn=l("Carga el archivo de audio sobre el cual quieras correr la inferencia. \xA1Recuerda re-muestrar la tasa de muestreo del archivo de audio para que sea la misma del modelo si es necesario!"),wl=d(),J(Ae.$$.fragment),vl=d(),ba=o("p"),vn=l("La manera m\xE1s simple de probar tu modelo para hacer inferencia es usarlo en un "),Zs=o("code"),Tn=l("pipeline()"),_n=l(". Puedes instanciar un "),Xs=o("code"),Un=l("pipeline"),$n=l(" para reconocimiento autom\xE1tico del habla con tu modelo y pasarle tu archivo de audio:"),Tl=d(),J(Ve.$$.fragment),_l=d(),J(se.$$.fragment),Ul=d(),le=o("p"),En=l("Tambi\xE9n puedes replicar de forma manual los resultados del "),Bs=o("code"),In=l("pipeline"),Cn=l(" si lo deseas:"),$l=d(),J(te.$$.fragment),this.h()},l(a){const n=Fo('[data-svelte="svelte-1phssyn"]',document.head);i=r(n,"META",{name:!0,content:!0}),n.forEach(s),j=u(a),m=r(a,"H1",{class:!0});var Ge=p(m);M=r(Ge,"A",{id:!0,class:!0,href:!0});var As=p(M);U=r(As,"SPAN",{});var Vs=p(U);g(_.$$.fragment,Vs),Vs.forEach(s),As.forEach(s),E=u(Ge),R=r(Ge,"SPAN",{});var Gs=p(R);W=t(Gs,"Reconocimiento autom\xE1tico del habla"),Gs.forEach(s),Ge.forEach(s),I=u(a),g(X.$$.fragment,a),k=u(a),q=r(a,"P",{});var qs=p(q);G=t(qs,"El reconocimiento autom\xE1tico del habla (ASR, por sus siglas en ingl\xE9s) convierte una se\xF1al de habla en texto y mapea una secuencia de entradas de audio en salidas en forma de texto. Los asistentes virtuales como Siri y Alexa usan modelos de ASR para ayudar a sus usuarios todos los d\xEDas. De igual forma, hay muchas otras aplicaciones, como la transcripci\xF3n de contenidos en vivo y la toma autom\xE1tica de notas durante reuniones."),qs.forEach(s),L=u(a),Y=r(a,"P",{});var Wn=p(Y);A=t(Wn,"En esta gu\xEDa te mostraremos como:"),Wn.forEach(s),B=u(a),h=r(a,"OL",{});var Il=p(h);$=r(Il,"LI",{});var Pe=p($);fa=t(Pe,"Hacer fine-tuning al modelo "),F=r(Pe,"A",{href:!0,rel:!0});var kn=p(F);K=t(kn,"Wav2Vec2"),kn.forEach(s),re=t(Pe," con el dataset "),pa=r(Pe,"A",{href:!0,rel:!0});var Zn=p(pa);va=t(Zn,"MInDS-14"),Zn.forEach(s),pe=t(Pe," para transcribir audio a texto."),Pe.forEach(s),ce=u(Il),ca=r(Il,"LI",{});var Xn=p(ca);ie=t(Xn,"Usar tu modelo ajustado para tareas de inferencia."),Xn.forEach(s),Il.forEach(s),ka=u(a),g(aa.$$.fragment,a),H=u(a),ha=r(a,"P",{});var Bn=p(ha);Ta=t(Bn,"Antes de comenzar, aseg\xFArate de haber instalado todas las librer\xEDas necesarias:"),Bn.forEach(s),Za=u(a),g(ia.$$.fragment,a),ya=u(a),Ma=r(a,"P",{});var An=p(Ma);de=t(An,"Te aconsejamos iniciar sesi\xF3n con tu cuenta de Hugging Face para que puedas subir tu modelo y comartirlo con la comunidad. Cuando te sea solicitado, ingresa tu token para iniciar sesi\xF3n:"),An.forEach(s),Xa=u(a),g(x.$$.fragment,a),Ba=u(a),Q=r(a,"H2",{class:!0});var Cl=p(Q);ea=r(Cl,"A",{id:!0,class:!0,href:!0});var Vn=p(ea);_a=r(Vn,"SPAN",{});var Gn=p(_a);g(sa.$$.fragment,Gn),Gn.forEach(s),Vn.forEach(s),da=u(Cl),ja=r(Cl,"SPAN",{});var qn=p(ja);la=t(qn,"Cargar el dataset MInDS-14"),qn.forEach(s),Cl.forEach(s),Aa=u(a),D=r(a,"P",{});var Rl=p(D);ue=t(Rl,"Comencemos cargando un subconjunto m\xE1s peque\xF1o del dataset "),ua=r(Rl,"A",{href:!0,rel:!0});var Yn=p(ua);Va=t(Yn,"MInDS-14"),Yn.forEach(s),ma=t(Rl," desde la biblioteca \u{1F917} Datasets. De esta forma, tendr\xE1s la oportunidad de experimentar y asegurarte de que todo funcione antes de invertir m\xE1s tiempo entrenando con el dataset entero."),Rl.forEach(s),Ua=u(a),g(f.$$.fragment,a),C=u(a),N=r(a,"P",{});var Oe=p(N);qe=t(Oe,"Divide la partici\xF3n "),Ga=r(Oe,"CODE",{});var Nn=p(Ga);Ja=t(Nn,"train"),Nn.forEach(s),S=t(Oe," (entrenamiento) en una partici\xF3n de entrenamiento y una de prueba usando el m\xE9todo "),qa=r(Oe,"CODE",{});var zn=p(qa);Ye=t(zn,"~Dataset.train_test_split"),zn.forEach(s),Ne=t(Oe,":"),Oe.forEach(s),me=u(a),g(P.$$.fragment,a),fe=u(a),$a=r(a,"P",{});var xn=p($a);Ya=t(xn,"Ahora \xE9chale un vistazo al dataset:"),xn.forEach(s),he=u(a),g(ta.$$.fragment,a),ye=u(a),z=r(a,"P",{});var ra=p(z);Fl=t(ra,"Aunque el dataset contiene mucha informaci\xF3n \xFAtil, como los campos "),ss=r(ra,"CODE",{});var Qn=p(ss);Hl=t(Qn,"lang_id"),Qn.forEach(s),Dl=t(ra," (identificador del lenguaje) y "),ls=r(ra,"CODE",{});var Fn=p(ls);Sl=t(Fn,"english_transcription"),Fn.forEach(s),Pl=t(ra," (transcripci\xF3n al ingl\xE9s), en esta gu\xEDa nos enfocaremos en los campos "),ts=r(ra,"CODE",{});var Hn=p(ts);Ol=t(Hn,"audio"),Hn.forEach(s),Ll=t(ra," y "),ns=r(ra,"CODE",{});var Dn=p(ns);Kl=t(Dn,"transcription"),Dn.forEach(s),at=t(ra,". Puedes quitar las otras columnas con el m\xE9todo "),os=r(ra,"CODE",{});var Sn=p(os);et=t(Sn,"remove_columns"),Sn.forEach(s),st=t(ra,":"),ra.forEach(s),Ns=u(a),g(Me.$$.fragment,a),zs=u(a),ze=r(a,"P",{});var Pn=p(ze);lt=t(Pn,"Vuelve a echarle un vistazo al ejemplo:"),Pn.forEach(s),xs=u(a),g(je.$$.fragment,a),Qs=u(a),xe=r(a,"P",{});var On=p(xe);tt=t(On,"Hay dos campos:"),On.forEach(s),Fs=u(a),Na=r(a,"UL",{});var Wl=p(Na);za=r(Wl,"LI",{});var Ys=p(za);rs=r(Ys,"CODE",{});var Ln=p(rs);nt=t(Ln,"audio"),Ln.forEach(s),ot=t(Ys,": un "),ps=r(Ys,"CODE",{});var Kn=p(ps);rt=t(Kn,"array"),Kn.forEach(s),pt=t(Ys," (arreglo) unidimensional de la se\xF1al de habla que debe ser invocado para cargar y re-muestrear el archivo de audio."),Ys.forEach(s),ct=u(Wl),Qe=r(Wl,"LI",{});var Rn=p(Qe);cs=r(Rn,"CODE",{});var ao=p(cs);it=t(ao,"transcription"),ao.forEach(s),dt=t(Rn,": el texto objetivo."),Rn.forEach(s),Wl.forEach(s),Hs=u(a),Ea=r(a,"H2",{class:!0});var kl=p(Ea);xa=r(kl,"A",{id:!0,class:!0,href:!0});var eo=p(xa);is=r(eo,"SPAN",{});var so=p(is);g(Je.$$.fragment,so),so.forEach(s),eo.forEach(s),ut=u(kl),ds=r(kl,"SPAN",{});var lo=p(ds);mt=t(lo,"Preprocesamiento"),lo.forEach(s),kl.forEach(s),Ds=u(a),Fe=r(a,"P",{});var to=p(Fe);ft=t(to,"El siguiente paso es cargar un procesador Wav2Vec2 para procesar la se\xF1al de audio:"),to.forEach(s),Ss=u(a),g(ge.$$.fragment,a),Ps=u(a),Qa=r(a,"P",{});var Zl=p(Qa);ht=t(Zl,"El dataset MInDS-14 tiene una tasa de muestreo de 8000kHz (puedes encontrar esta informaci\xF3n en su "),be=r(Zl,"A",{href:!0,rel:!0});var no=p(be);yt=t(no,"tarjeta de dataset"),no.forEach(s),Mt=t(Zl,"), lo que significa que tendr\xE1s que re-muestrear el dataset a 16000kHz para poder usar el modelo Wav2Vec2 pre-entrenado:"),Zl.forEach(s),Os=u(a),g(we.$$.fragment,a),Ls=u(a),Fa=r(a,"P",{});var Xl=p(Fa);jt=t(Xl,"Como puedes ver en el campo "),us=r(Xl,"CODE",{});var oo=p(us);Jt=t(oo,"transcription"),oo.forEach(s),gt=t(Xl,", el texto contiene una mezcla de car\xE1cteres en may\xFAsculas y en min\xFAsculas. El tokenizer Wav2Vec2 fue entrenado \xFAnicamente con car\xE1cteres en may\xFAsculas, as\xED que tendr\xE1s que asegurarte de que el texto se ajuste al vocabulario del tokenizer:"),Xl.forEach(s),Ks=u(a),g(ve.$$.fragment,a),al=u(a),He=r(a,"P",{});var ro=p(He);bt=t(ro,"Ahora vamos a crear una funci\xF3n de preprocesamiento que:"),ro.forEach(s),el=u(a),Ha=r(a,"OL",{});var Bl=p(Ha);Te=r(Bl,"LI",{});var Al=p(Te);wt=t(Al,"Invoque la columna "),ms=r(Al,"CODE",{});var po=p(ms);vt=t(po,"audio"),po.forEach(s),Tt=t(Al," para cargar y re-muestrear el archivo de audio."),Al.forEach(s),_t=u(Bl),Ia=r(Bl,"LI",{});var Le=p(Ia);Ut=t(Le,"Extraiga el campo "),fs=r(Le,"CODE",{});var co=p(fs);$t=t(co,"input_values"),co.forEach(s),Et=t(Le," (valores de entrada) del archivo de audio y haga la tokenizaci\xF3n de la columna "),hs=r(Le,"CODE",{});var io=p(hs);It=t(io,"transcription"),io.forEach(s),Ct=t(Le," con el procesador."),Le.forEach(s),Bl.forEach(s),sl=u(a),g(_e.$$.fragment,a),ll=u(a),O=r(a,"P",{});var wa=p(O);Rt=t(wa,"Para aplicar la funci\xF3n de preprocesamiento a todo el dataset, puedes usar la funci\xF3n "),ys=r(wa,"CODE",{});var uo=p(ys);Wt=t(uo,"map"),uo.forEach(s),kt=t(wa," de \u{1F917} Datasets. Para acelerar la funci\xF3n "),Ms=r(wa,"CODE",{});var mo=p(Ms);Zt=t(mo,"map"),mo.forEach(s),Xt=t(wa," puedes incrementar el n\xFAmero de procesos con el par\xE1metro "),js=r(wa,"CODE",{});var fo=p(js);Bt=t(fo,"num_proc"),fo.forEach(s),At=t(wa,". Quita las columnas que no necesites con el m\xE9todo "),Js=r(wa,"CODE",{});var ho=p(Js);Vt=t(ho,"remove_columns"),ho.forEach(s),Gt=t(wa,":"),wa.forEach(s),tl=u(a),g(Ue.$$.fragment,a),nl=u(a),na=r(a,"P",{});var ne=p(na);qt=t(ne,"\u{1F917} Transformers no tiene un collator de datos para la tarea de ASR, as\xED que tendr\xE1s que adaptar el "),gs=r(ne,"CODE",{});var yo=p(gs);Yt=t(yo,"DataCollatorWithPadding"),yo.forEach(s),Nt=t(ne," para crear un lote de ejemplos. El collator tambi\xE9n le aplicar\xE1 padding din\xE1mico a tu texto y etiquetas para que tengan la longitud del elemento m\xE1s largo en su lote (en vez de la mayor longitud en el dataset entero), de forma que todas las muestras tengan una longitud uniforme. Aunque es posible hacerle padding a tu texto con el "),bs=r(ne,"CODE",{});var Mo=p(bs);zt=t(Mo,"tokenizer"),Mo.forEach(s),xt=t(ne," haciendo "),ws=r(ne,"CODE",{});var jo=p(ws);Qt=t(jo,"padding=True"),jo.forEach(s),Ft=t(ne,", el padding din\xE1mico es m\xE1s eficiente."),ne.forEach(s),ol=u(a),ga=r(a,"P",{});var Ke=p(ga);Ht=t(Ke,"A diferencia de otros collators de datos, este tiene que aplicarle un m\xE9todo de padding distinto a los campos "),vs=r(Ke,"CODE",{});var Jo=p(vs);Dt=t(Jo,"input_values"),Jo.forEach(s),St=t(Ke," (valores de entrada) y "),Ts=r(Ke,"CODE",{});var go=p(Ts);Pt=t(go,"labels"),go.forEach(s),Ot=t(Ke," (etiquetas):"),Ke.forEach(s),rl=u(a),g($e.$$.fragment,a),pl=u(a),Da=r(a,"P",{});var Vl=p(Da);Lt=t(Vl,"Ahora puedes instanciar tu "),_s=r(Vl,"CODE",{});var bo=p(_s);Kt=t(bo,"DataCollatorForCTCWithPadding"),bo.forEach(s),an=t(Vl,":"),Vl.forEach(s),cl=u(a),g(Ee.$$.fragment,a),il=u(a),Ca=r(a,"H2",{class:!0});var Gl=p(Ca);Sa=r(Gl,"A",{id:!0,class:!0,href:!0});var wo=p(Sa);Us=r(wo,"SPAN",{});var vo=p(Us);g(Ie.$$.fragment,vo),vo.forEach(s),wo.forEach(s),en=u(Gl),$s=r(Gl,"SPAN",{});var To=p($s);sn=t(To,"Evaluaci\xF3n"),To.forEach(s),Gl.forEach(s),dl=u(a),oa=r(a,"P",{});var oe=p(oa);ln=t(oe,"A menudo es \xFAtil incluir una m\xE9trica durante el entrenamiento para evaluar el rendimiento de tu modelo. Puedes cargar un m\xE9todo de evaluaci\xF3n r\xE1pidamente con la biblioteca \u{1F917} "),Ce=r(oe,"A",{href:!0,rel:!0});var _o=p(Ce);tn=t(_o,"Evaluate"),_o.forEach(s),nn=t(oe,". Para esta tarea, puedes usar la m\xE9trica de "),Re=r(oe,"A",{href:!0,rel:!0});var Uo=p(Re);on=t(Uo,"tasa de error por palabra"),Uo.forEach(s),rn=t(oe," (WER, por sus siglas en ingl\xE9s). Puedes ver la "),We=r(oe,"A",{href:!0,rel:!0});var $o=p(We);pn=t($o,"gu\xEDa r\xE1pida"),$o.forEach(s),cn=t(oe," de \u{1F917} Evaluate para aprender m\xE1s acerca de c\xF3mo cargar y computar una m\xE9trica."),oe.forEach(s),ul=u(a),g(ke.$$.fragment,a),ml=u(a),Pa=r(a,"P",{});var ql=p(Pa);dn=t(ql,"Ahora crea una funci\xF3n que le pase tus predicciones y etiquetas a "),Es=r(ql,"CODE",{});var Eo=p(Es);un=t(Eo,"compute"),Eo.forEach(s),mn=t(ql," para calcular la WER:"),ql.forEach(s),fl=u(a),g(Ze.$$.fragment,a),hl=u(a),Oa=r(a,"P",{});var Yl=p(Oa);fn=t(Yl,"Ahora tu funci\xF3n "),Is=r(Yl,"CODE",{});var Io=p(Is);hn=t(Io,"compute_metrics"),Io.forEach(s),yn=t(Yl," (computar m\xE9tricas) est\xE1 lista y podr\xE1s usarla cuando est\xE9s preparando tu entrenamiento."),Yl.forEach(s),yl=u(a),Ra=r(a,"H2",{class:!0});var Nl=p(Ra);La=r(Nl,"A",{id:!0,class:!0,href:!0});var Co=p(La);Cs=r(Co,"SPAN",{});var Ro=p(Cs);g(Xe.$$.fragment,Ro),Ro.forEach(s),Co.forEach(s),Mn=u(Nl),Rs=r(Nl,"SPAN",{});var Wo=p(Rs);jn=t(Wo,"Entrenamiento"),Wo.forEach(s),Nl.forEach(s),Ml=u(a),g(Ka.$$.fragment,a),jl=u(a),g(ae.$$.fragment,a),Jl=u(a),Wa=r(a,"H2",{class:!0});var zl=p(Wa);ee=r(zl,"A",{id:!0,class:!0,href:!0});var ko=p(ee);Ws=r(ko,"SPAN",{});var Zo=p(Ws);g(Be.$$.fragment,Zo),Zo.forEach(s),ko.forEach(s),Jn=u(zl),ks=r(zl,"SPAN",{});var Xo=p(ks);gn=t(Xo,"Inferencia"),Xo.forEach(s),zl.forEach(s),gl=u(a),De=r(a,"P",{});var Bo=p(De);bn=t(Bo,"\xA1Genial, ahora que le has hecho fine-tuning a un modelo, puedes usarlo para inferencia!"),Bo.forEach(s),bl=u(a),Se=r(a,"P",{});var Ao=p(Se);wn=t(Ao,"Carga el archivo de audio sobre el cual quieras correr la inferencia. \xA1Recuerda re-muestrar la tasa de muestreo del archivo de audio para que sea la misma del modelo si es necesario!"),Ao.forEach(s),wl=u(a),g(Ae.$$.fragment,a),vl=u(a),ba=r(a,"P",{});var as=p(ba);vn=t(as,"La manera m\xE1s simple de probar tu modelo para hacer inferencia es usarlo en un "),Zs=r(as,"CODE",{});var Vo=p(Zs);Tn=t(Vo,"pipeline()"),Vo.forEach(s),_n=t(as,". Puedes instanciar un "),Xs=r(as,"CODE",{});var Go=p(Xs);Un=t(Go,"pipeline"),Go.forEach(s),$n=t(as," para reconocimiento autom\xE1tico del habla con tu modelo y pasarle tu archivo de audio:"),as.forEach(s),Tl=u(a),g(Ve.$$.fragment,a),_l=u(a),g(se.$$.fragment,a),Ul=u(a),le=r(a,"P",{});var xl=p(le);En=t(xl,"Tambi\xE9n puedes replicar de forma manual los resultados del "),Bs=r(xl,"CODE",{});var qo=p(Bs);In=t(qo,"pipeline"),qo.forEach(s),Cn=t(xl," si lo deseas:"),xl.forEach(s),$l=u(a),g(te.$$.fragment,a),this.h()},h(){y(i,"name","hf:doc:metadata"),y(i,"content",JSON.stringify(nr)),y(M,"id","reconocimiento-automtico-del-habla"),y(M,"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"),y(M,"href","#reconocimiento-automtico-del-habla"),y(m,"class","relative group"),y(F,"href","https://huggingface.co/facebook/wav2vec2-base"),y(F,"rel","nofollow"),y(pa,"href","https://huggingface.co/datasets/PolyAI/minds14"),y(pa,"rel","nofollow"),y(ea,"id","cargar-el-dataset-minds14"),y(ea,"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"),y(ea,"href","#cargar-el-dataset-minds14"),y(Q,"class","relative group"),y(ua,"href","https://huggingface.co/datasets/PolyAI/minds14"),y(ua,"rel","nofollow"),y(xa,"id","preprocesamiento"),y(xa,"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"),y(xa,"href","#preprocesamiento"),y(Ea,"class","relative group"),y(be,"href","https://huggingface.co/datasets/PolyAI/minds14"),y(be,"rel","nofollow"),y(Sa,"id","evaluacin"),y(Sa,"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"),y(Sa,"href","#evaluacin"),y(Ca,"class","relative group"),y(Ce,"href","https://huggingface.co/docs/evaluate/index"),y(Ce,"rel","nofollow"),y(Re,"href","https://huggingface.co/spaces/evaluate-metric/wer"),y(Re,"rel","nofollow"),y(We,"href","https://huggingface.co/docs/evaluate/a_quick_tour"),y(We,"rel","nofollow"),y(La,"id","entrenamiento"),y(La,"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"),y(La,"href","#entrenamiento"),y(Ra,"class","relative group"),y(ee,"id","inferencia"),y(ee,"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"),y(ee,"href","#inferencia"),y(Wa,"class","relative group")},m(a,n){e(document.head,i),c(a,j,n),c(a,m,n),e(m,M),e(M,U),b(_,U,null),e(m,E),e(m,R),e(R,W),c(a,I,n),b(X,a,n),c(a,k,n),c(a,q,n),e(q,G),c(a,L,n),c(a,Y,n),e(Y,A),c(a,B,n),c(a,h,n),e(h,$),e($,fa),e($,F),e(F,K),e($,re),e($,pa),e(pa,va),e($,pe),e(h,ce),e(h,ca),e(ca,ie),c(a,ka,n),b(aa,a,n),c(a,H,n),c(a,ha,n),e(ha,Ta),c(a,Za,n),b(ia,a,n),c(a,ya,n),c(a,Ma,n),e(Ma,de),c(a,Xa,n),b(x,a,n),c(a,Ba,n),c(a,Q,n),e(Q,ea),e(ea,_a),b(sa,_a,null),e(Q,da),e(Q,ja),e(ja,la),c(a,Aa,n),c(a,D,n),e(D,ue),e(D,ua),e(ua,Va),e(D,ma),c(a,Ua,n),b(f,a,n),c(a,C,n),c(a,N,n),e(N,qe),e(N,Ga),e(Ga,Ja),e(N,S),e(N,qa),e(qa,Ye),e(N,Ne),c(a,me,n),b(P,a,n),c(a,fe,n),c(a,$a,n),e($a,Ya),c(a,he,n),b(ta,a,n),c(a,ye,n),c(a,z,n),e(z,Fl),e(z,ss),e(ss,Hl),e(z,Dl),e(z,ls),e(ls,Sl),e(z,Pl),e(z,ts),e(ts,Ol),e(z,Ll),e(z,ns),e(ns,Kl),e(z,at),e(z,os),e(os,et),e(z,st),c(a,Ns,n),b(Me,a,n),c(a,zs,n),c(a,ze,n),e(ze,lt),c(a,xs,n),b(je,a,n),c(a,Qs,n),c(a,xe,n),e(xe,tt),c(a,Fs,n),c(a,Na,n),e(Na,za),e(za,rs),e(rs,nt),e(za,ot),e(za,ps),e(ps,rt),e(za,pt),e(Na,ct),e(Na,Qe),e(Qe,cs),e(cs,it),e(Qe,dt),c(a,Hs,n),c(a,Ea,n),e(Ea,xa),e(xa,is),b(Je,is,null),e(Ea,ut),e(Ea,ds),e(ds,mt),c(a,Ds,n),c(a,Fe,n),e(Fe,ft),c(a,Ss,n),b(ge,a,n),c(a,Ps,n),c(a,Qa,n),e(Qa,ht),e(Qa,be),e(be,yt),e(Qa,Mt),c(a,Os,n),b(we,a,n),c(a,Ls,n),c(a,Fa,n),e(Fa,jt),e(Fa,us),e(us,Jt),e(Fa,gt),c(a,Ks,n),b(ve,a,n),c(a,al,n),c(a,He,n),e(He,bt),c(a,el,n),c(a,Ha,n),e(Ha,Te),e(Te,wt),e(Te,ms),e(ms,vt),e(Te,Tt),e(Ha,_t),e(Ha,Ia),e(Ia,Ut),e(Ia,fs),e(fs,$t),e(Ia,Et),e(Ia,hs),e(hs,It),e(Ia,Ct),c(a,sl,n),b(_e,a,n),c(a,ll,n),c(a,O,n),e(O,Rt),e(O,ys),e(ys,Wt),e(O,kt),e(O,Ms),e(Ms,Zt),e(O,Xt),e(O,js),e(js,Bt),e(O,At),e(O,Js),e(Js,Vt),e(O,Gt),c(a,tl,n),b(Ue,a,n),c(a,nl,n),c(a,na,n),e(na,qt),e(na,gs),e(gs,Yt),e(na,Nt),e(na,bs),e(bs,zt),e(na,xt),e(na,ws),e(ws,Qt),e(na,Ft),c(a,ol,n),c(a,ga,n),e(ga,Ht),e(ga,vs),e(vs,Dt),e(ga,St),e(ga,Ts),e(Ts,Pt),e(ga,Ot),c(a,rl,n),b($e,a,n),c(a,pl,n),c(a,Da,n),e(Da,Lt),e(Da,_s),e(_s,Kt),e(Da,an),c(a,cl,n),b(Ee,a,n),c(a,il,n),c(a,Ca,n),e(Ca,Sa),e(Sa,Us),b(Ie,Us,null),e(Ca,en),e(Ca,$s),e($s,sn),c(a,dl,n),c(a,oa,n),e(oa,ln),e(oa,Ce),e(Ce,tn),e(oa,nn),e(oa,Re),e(Re,on),e(oa,rn),e(oa,We),e(We,pn),e(oa,cn),c(a,ul,n),b(ke,a,n),c(a,ml,n),c(a,Pa,n),e(Pa,dn),e(Pa,Es),e(Es,un),e(Pa,mn),c(a,fl,n),b(Ze,a,n),c(a,hl,n),c(a,Oa,n),e(Oa,fn),e(Oa,Is),e(Is,hn),e(Oa,yn),c(a,yl,n),c(a,Ra,n),e(Ra,La),e(La,Cs),b(Xe,Cs,null),e(Ra,Mn),e(Ra,Rs),e(Rs,jn),c(a,Ml,n),b(Ka,a,n),c(a,jl,n),b(ae,a,n),c(a,Jl,n),c(a,Wa,n),e(Wa,ee),e(ee,Ws),b(Be,Ws,null),e(Wa,Jn),e(Wa,ks),e(ks,gn),c(a,gl,n),c(a,De,n),e(De,bn),c(a,bl,n),c(a,Se,n),e(Se,wn),c(a,wl,n),b(Ae,a,n),c(a,vl,n),c(a,ba,n),e(ba,vn),e(ba,Zs),e(Zs,Tn),e(ba,_n),e(ba,Xs),e(Xs,Un),e(ba,$n),c(a,Tl,n),b(Ve,a,n),c(a,_l,n),b(se,a,n),c(a,Ul,n),c(a,le,n),e(le,En),e(le,Bs),e(Bs,In),e(le,Cn),c(a,$l,n),b(te,a,n),El=!0},p(a,[n]){const Ge={};n&2&&(Ge.$$scope={dirty:n,ctx:a}),aa.$set(Ge);const As={};n&2&&(As.$$scope={dirty:n,ctx:a}),Ka.$set(As);const Vs={};n&2&&(Vs.$$scope={dirty:n,ctx:a}),ae.$set(Vs);const Gs={};n&2&&(Gs.$$scope={dirty:n,ctx:a}),se.$set(Gs);const qs={};n&2&&(qs.$$scope={dirty:n,ctx:a}),te.$set(qs)},i(a){El||(w(_.$$.fragment,a),w(X.$$.fragment,a),w(aa.$$.fragment,a),w(ia.$$.fragment,a),w(x.$$.fragment,a),w(sa.$$.fragment,a),w(f.$$.fragment,a),w(P.$$.fragment,a),w(ta.$$.fragment,a),w(Me.$$.fragment,a),w(je.$$.fragment,a),w(Je.$$.fragment,a),w(ge.$$.fragment,a),w(we.$$.fragment,a),w(ve.$$.fragment,a),w(_e.$$.fragment,a),w(Ue.$$.fragment,a),w($e.$$.fragment,a),w(Ee.$$.fragment,a),w(Ie.$$.fragment,a),w(ke.$$.fragment,a),w(Ze.$$.fragment,a),w(Xe.$$.fragment,a),w(Ka.$$.fragment,a),w(ae.$$.fragment,a),w(Be.$$.fragment,a),w(Ae.$$.fragment,a),w(Ve.$$.fragment,a),w(se.$$.fragment,a),w(te.$$.fragment,a),El=!0)},o(a){v(_.$$.fragment,a),v(X.$$.fragment,a),v(aa.$$.fragment,a),v(ia.$$.fragment,a),v(x.$$.fragment,a),v(sa.$$.fragment,a),v(f.$$.fragment,a),v(P.$$.fragment,a),v(ta.$$.fragment,a),v(Me.$$.fragment,a),v(je.$$.fragment,a),v(Je.$$.fragment,a),v(ge.$$.fragment,a),v(we.$$.fragment,a),v(ve.$$.fragment,a),v(_e.$$.fragment,a),v(Ue.$$.fragment,a),v($e.$$.fragment,a),v(Ee.$$.fragment,a),v(Ie.$$.fragment,a),v(ke.$$.fragment,a),v(Ze.$$.fragment,a),v(Xe.$$.fragment,a),v(Ka.$$.fragment,a),v(ae.$$.fragment,a),v(Be.$$.fragment,a),v(Ae.$$.fragment,a),v(Ve.$$.fragment,a),v(se.$$.fragment,a),v(te.$$.fragment,a),El=!1},d(a){s(i),a&&s(j),a&&s(m),T(_),a&&s(I),T(X,a),a&&s(k),a&&s(q),a&&s(L),a&&s(Y),a&&s(B),a&&s(h),a&&s(ka),T(aa,a),a&&s(H),a&&s(ha),a&&s(Za),T(ia,a),a&&s(ya),a&&s(Ma),a&&s(Xa),T(x,a),a&&s(Ba),a&&s(Q),T(sa),a&&s(Aa),a&&s(D),a&&s(Ua),T(f,a),a&&s(C),a&&s(N),a&&s(me),T(P,a),a&&s(fe),a&&s($a),a&&s(he),T(ta,a),a&&s(ye),a&&s(z),a&&s(Ns),T(Me,a),a&&s(zs),a&&s(ze),a&&s(xs),T(je,a),a&&s(Qs),a&&s(xe),a&&s(Fs),a&&s(Na),a&&s(Hs),a&&s(Ea),T(Je),a&&s(Ds),a&&s(Fe),a&&s(Ss),T(ge,a),a&&s(Ps),a&&s(Qa),a&&s(Os),T(we,a),a&&s(Ls),a&&s(Fa),a&&s(Ks),T(ve,a),a&&s(al),a&&s(He),a&&s(el),a&&s(Ha),a&&s(sl),T(_e,a),a&&s(ll),a&&s(O),a&&s(tl),T(Ue,a),a&&s(nl),a&&s(na),a&&s(ol),a&&s(ga),a&&s(rl),T($e,a),a&&s(pl),a&&s(Da),a&&s(cl),T(Ee,a),a&&s(il),a&&s(Ca),T(Ie),a&&s(dl),a&&s(oa),a&&s(ul),T(ke,a),a&&s(ml),a&&s(Pa),a&&s(fl),T(Ze,a),a&&s(hl),a&&s(Oa),a&&s(yl),a&&s(Ra),T(Xe),a&&s(Ml),T(Ka,a),a&&s(jl),T(ae,a),a&&s(Jl),a&&s(Wa),T(Be),a&&s(gl),a&&s(De),a&&s(bl),a&&s(Se),a&&s(wl),T(Ae,a),a&&s(vl),a&&s(ba),a&&s(Tl),T(Ve,a),a&&s(_l),T(se,a),a&&s(Ul),a&&s(le),a&&s($l),T(te,a)}}}const nr={local:"reconocimiento-automtico-del-habla",sections:[{local:"cargar-el-dataset-minds14",title:"Cargar el dataset MInDS-14"},{local:"preprocesamiento",title:"Preprocesamiento"},{local:"evaluacin",title:"Evaluaci\xF3n"},{local:"entrenamiento",title:"Entrenamiento"},{local:"inferencia",title:"Inferencia"}],title:"Reconocimiento autom\xE1tico del habla"};function or(V){return Ho(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fr extends zo{constructor(i){super();xo(this,i,or,tr,Qo,{})}}export{fr as default,nr as metadata};
