import{S as sl,i as ol,s as ll,e as r,k as c,w as m,t as d,M as rl,c as n,d as a,m as u,a as t,x as M,h as i,b as p,N as nl,G as s,g as l,y as f,q as j,o as y,B as h,v as tl}from"../../chunks/vendor-hf-doc-builder.js";import{T as dl}from"../../chunks/Tip-hf-doc-builder.js";import{I as Oa}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as b}from"../../chunks/CodeBlock-hf-doc-builder.js";function il(He){let J;return{c(){J=d(`\u{1F4A1} Si una se\xF1al de audio ha sido grabada a una frecuencia de muestreo de 8kHz, de manera que cada segundo de la 
se\xF1al esta representado por 8000 muestras, sabemos tambien que el audio no contiene ninguna frecuencia por encima
de 4kHz. Esto esta garantizado por el teorema de Nyquist. Resamplear a una frecuencia de muestro mayor(Upsampling) 
consiste en estimar los puntos adicionales que irian entre las muestras existentes. El proceso de Downsampling, requiere en cambio,
que primero filtremos cualquier frecuencia que sea mayor al nuevo Limite de Nyquist antes de estimar las nuevas muestras.
En otras palabras, no puedes hacer downsampling por un facto de 2x solo descartando la mitad de muestras de la se\xF1al - Esto 
crear\xEDa distorsiones en la se\xF1al llamadas alias. Hacer resampliing de la manera correcta es complejo por lo que es mejor
usar librerias que han sido probadas a lo largo de los a\xF1os como lo son librosa o \u{1F917} Datasets.`)},l(w){J=i(w,`\u{1F4A1} Si una se\xF1al de audio ha sido grabada a una frecuencia de muestreo de 8kHz, de manera que cada segundo de la 
se\xF1al esta representado por 8000 muestras, sabemos tambien que el audio no contiene ninguna frecuencia por encima
de 4kHz. Esto esta garantizado por el teorema de Nyquist. Resamplear a una frecuencia de muestro mayor(Upsampling) 
consiste en estimar los puntos adicionales que irian entre las muestras existentes. El proceso de Downsampling, requiere en cambio,
que primero filtremos cualquier frecuencia que sea mayor al nuevo Limite de Nyquist antes de estimar las nuevas muestras.
En otras palabras, no puedes hacer downsampling por un facto de 2x solo descartando la mitad de muestras de la se\xF1al - Esto 
crear\xEDa distorsiones en la se\xF1al llamadas alias. Hacer resampliing de la manera correcta es complejo por lo que es mejor
usar librerias que han sido probadas a lo largo de los a\xF1os como lo son librosa o \u{1F917} Datasets.`)},m(w,T){l(w,J,T)},d(w){w&&a(J)}}}function cl(He){let J,w,T,_,ve,V,Ka,Ie,es,Le,A,Ee,as,ss,qe,os,ls,_e,rs,Oe,I,g,ge,S,ns,Ce,ts,Ke,C,ds,$e,is,cs,ea,ie,us,aa,$,ps,ke,ms,Ms,sa,X,oa,k,fs,Be,js,ys,la,F,ra,ce,Re,hs,na,P,ta,ue,Js,da,B,ia,E,R,ze,Q,Us,Ze,bs,ca,pe,Ts,ua,U,ws,Ge,As,vs,Ne,Is,Es,We,qs,_s,xe,gs,Cs,pa,D,ma,me,$s,Ma,H,fa,Me,Ye,ks,ja,L,ya,fe,Bs,ha,q,z,Ve,O,Rs,Se,zs,Ja,je,Zs,Ua,Z,Gs,K,Ns,Ws,ba,ye,xs,Ta,he,Ys,wa,Je,Vs,Aa,ee,va,G,Ss,Xe,Xs,Fs,Ia,ae,Ea,Ue,Ps,qa,se,_a,be,Fe,Qs,ga,oe,Ca,N,Ds,Pe,Hs,Ls,$a,W,Os,Qe,Ks,eo,ka,le,Ba,re,Te,io,Ra,x,ao,ne,so,oo,za,Y,lo,De,ro,no,Za,te,Ga,we,to,Na;return V=new Oa({}),S=new Oa({}),X=new b({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwQXVkaW8lMEElMEFtaW5kcyUyMCUzRCUyMG1pbmRzLmNhc3RfY29sdW1uKCUyMmF1ZGlvJTIyJTJDJTIwQXVkaW8oc2FtcGxpbmdfcmF0ZSUzRDE2XzAwMCkp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> Audio

minds = minds.cast_column(<span class="hljs-string">&quot;audio&quot;</span>, Audio(sampling_rate=<span class="hljs-number">16_000</span>))`}}),F=new b({props:{code:"bWluZHMlNUIwJTVE",highlighted:'minds[<span class="hljs-number">0</span>]'}}),P=new b({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIycGF0aCUyMiUzQSUyMCUyMiUyRnJvb3QlMkYuY2FjaGUlMkZodWdnaW5nZmFjZSUyRmRhdGFzZXRzJTJGZG93bmxvYWRzJTJGZXh0cmFjdGVkJTJGZjE0OTQ4ZTBlODRiZTYzOGRkNzk0M2FjMzY1MThhNGNmMzMyNGU4YjdhYTMzMWM1YWIxMTU0MTUxOGU5MzY4YyUyRmVuLUFVflBBWV9CSUxMJTJGcmVzcG9uc2VfNC53YXYlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJhdWRpbyUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBhdGglMjIlM0ElMjAlMjIlMkZyb290JTJGLmNhY2hlJTJGaHVnZ2luZ2ZhY2UlMkZkYXRhc2V0cyUyRmRvd25sb2FkcyUyRmV4dHJhY3RlZCUyRmYxNDk0OGUwZTg0YmU2MzhkZDc5NDNhYzM2NTE4YTRjZjMzMjRlOGI3YWEzMzFjNWFiMTE1NDE1MThlOTM2OGMlMkZlbi1BVX5QQVlfQklMTCUyRnJlc3BvbnNlXzQud2F2JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyYXJyYXklMjIlM0ElMjBhcnJheSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAyLjA2MzQyNDNlLTA1JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMS45NDM3ODM3ZS0wNCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDIuMjQxOTM0MGUtMDQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuLi4lMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjA5LjM4NTI4NjJlLTA0JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwMS4xMzAyNDUyZS0wMyUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMDcuMTUzMTQyOWUtMDQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUQlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkdHlwZSUzRGZsb2F0MzIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyc2FtcGxpbmdfcmF0ZSUyMiUzQSUyMDE2MDAwJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIydHJhbnNjcmlwdGlvbiUyMiUzQSUyMCUyMkklMjB3b3VsZCUyMGxpa2UlMjB0byUyMHBheSUyMG15JTIwZWxlY3RyaWNpdHklMjBiaWxsJTIwdXNpbmclMjBteSUyMGNhcmQlMjBjYW4lMjB5b3UlMjBwbGVhc2UlMjBhc3Npc3QlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjJpbnRlbnRfY2xhc3MlMjIlM0ElMjAxMyUyQyUwQSU3RA==",highlighted:`{
    <span class="hljs-comment">&quot;path&quot;</span>: <span class="hljs-comment">&quot;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav&quot;</span>,
    <span class="hljs-comment">&quot;audio&quot;</span>: {
        <span class="hljs-comment">&quot;path&quot;</span>: <span class="hljs-comment">&quot;/root/.cache/huggingface/datasets/downloads/extracted/f14948e0e84be638dd7943ac36518a4cf3324e8b7aa331c5ab11541518e9368c/en-AU~PAY_BILL/response_4.wav&quot;</span>,
        <span class="hljs-comment">&quot;array&quot;</span>: array(
            [
                <span class="hljs-number">2.0634243e-05</span>,
                <span class="hljs-number">1.9437837e-04</span>,
                <span class="hljs-number">2.2419340e-04</span>,
                ...,
                <span class="hljs-number">9.3852862e-04</span>,
                <span class="hljs-number">1.1302452e-03</span>,
                <span class="hljs-number">7.1531429e-04</span>,
            ],
            dtype=float32,
        ),
        <span class="hljs-comment">&quot;sampling_rate&quot;</span>: <span class="hljs-number">16000</span>,
    },
    <span class="hljs-comment">&quot;transcription&quot;</span>: <span class="hljs-comment">&quot;I would like to pay my electricity bill using my card can you please assist&quot;</span>,
    <span class="hljs-comment">&quot;intent_class&quot;</span>: <span class="hljs-number">13</span>,
}`}}),B=new dl({props:{$$slots:{default:[il]},$$scope:{ctx:He}}}),Q=new Oa({}),D=new b({props:{code:"TUFYX0RVUkFUSU9OX0lOX1NFQ09ORFMlMjAlM0QlMjAyMC4wJTBBJTBBJTBBZGVmJTIwaXNfYXVkaW9fbGVuZ3RoX2luX3JhbmdlKGlucHV0X2xlbmd0aCklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjBpbnB1dF9sZW5ndGglMjAlM0MlMjBNQVhfRFVSQVRJT05fSU5fU0VDT05EUw==",highlighted:`MAX_DURATION_IN_SECONDS = <span class="hljs-number">20.0</span>


<span class="hljs-keyword">def</span> <span class="hljs-title function_">is_audio_length_in_range</span>(<span class="hljs-params">input_length</span>):
    <span class="hljs-keyword">return</span> input_length &lt; MAX_DURATION_IN_SECONDS`}}),H=new b({props:{code:"JTIzJTIwdXNhciUyMGxpYnJvc2ElMjBwYXJhJTIwY2FsY3VsYXIlMjBsYSUyMGR1cmFjaSVDMyVCM24lMjBkZWwlMjBhdWRpbyUwQW5ld19jb2x1bW4lMjAlM0QlMjAlNUJsaWJyb3NhLmdldF9kdXJhdGlvbihmaWxlbmFtZSUzRHgpJTIwZm9yJTIweCUyMGluJTIwbWluZHMlNUIlMjJwYXRoJTIyJTVEJTVEJTBBbWluZHMlMjAlM0QlMjBtaW5kcy5hZGRfY29sdW1uKCUyMmR1cmF0aW9uJTIyJTJDJTIwbmV3X2NvbHVtbiklMEElMEElMjMlMjB1c2FyJTIwZWwlMjBtJUMzJUE5dG9kbyUyMCU2MGZpbHRlciU2MCUyMGRlJTIwJUYwJTlGJUE0JTk3JTIwRGF0YXNldHMnJTIwcGFyYSUyMGFwbGljYXIlMjBsYSUyMGZ1bmNpJUMzJUIzbiUyMGRlJTIwZmlsdHJhZG8lMEFtaW5kcyUyMCUzRCUyMG1pbmRzLmZpbHRlcihpc19hdWRpb19sZW5ndGhfaW5fcmFuZ2UlMkMlMjBpbnB1dF9jb2x1bW5zJTNEJTVCJTIyZHVyYXRpb24lMjIlNUQpJTBBJTBBJTIzJTIwZWxpbWluYXIlMjBsYSUyMGNvbHVtbmElMjB0ZW1wb3JhbCUyMGRlJTIwZHVyYWNpJUMzJUIzbiUwQW1pbmRzJTIwJTNEJTIwbWluZHMucmVtb3ZlX2NvbHVtbnMoJTVCJTIyZHVyYXRpb24lMjIlNUQpJTBBbWluZHM=",highlighted:`<span class="hljs-comment"># usar librosa para calcular la duraci\xF3n del audio</span>
new_column = [librosa.get_duration(filename=x) <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> minds[<span class="hljs-string">&quot;path&quot;</span>]]
minds = minds.add_column(<span class="hljs-string">&quot;duration&quot;</span>, new_column)

<span class="hljs-comment"># usar el m\xE9todo \`filter\` de \u{1F917} Datasets&#x27; para aplicar la funci\xF3n de filtrado</span>
minds = minds.<span class="hljs-built_in">filter</span>(is_audio_length_in_range, input_columns=[<span class="hljs-string">&quot;duration&quot;</span>])

<span class="hljs-comment"># eliminar la columna temporal de duraci\xF3n</span>
minds = minds.remove_columns([<span class="hljs-string">&quot;duration&quot;</span>])
minds`}}),L=new b({props:{code:"RGF0YXNldCglN0JmZWF0dXJlcyUzQSUyMCU1QiUyMnBhdGglMjIlMkMlMjAlMjJhdWRpbyUyMiUyQyUyMCUyMnRyYW5zY3JpcHRpb24lMjIlMkMlMjAlMjJpbnRlbnRfY2xhc3MlMjIlNUQlMkMlMjBudW1fcm93cyUzQSUyMDYyNCU3RCk=",highlighted:'<span class="hljs-constructor">Dataset({<span class="hljs-params">features</span>: [<span class="hljs-string">&quot;path&quot;</span>, <span class="hljs-string">&quot;audio&quot;</span>, <span class="hljs-string">&quot;transcription&quot;</span>, <span class="hljs-string">&quot;intent_class&quot;</span>], <span class="hljs-params">num_rows</span>: 624})</span>'}}),O=new Oa({}),ee=new b({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFdoaXNwZXJGZWF0dXJlRXh0cmFjdG9yJTBBJTBBZmVhdHVyZV9leHRyYWN0b3IlMjAlM0QlMjBXaGlzcGVyRmVhdHVyZUV4dHJhY3Rvci5mcm9tX3ByZXRyYWluZWQoJTIyb3BlbmFpJTJGd2hpc3Blci1zbWFsbCUyMik=",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> WhisperFeatureExtractor

feature_extractor = WhisperFeatureExtractor.from_pretrained(<span class="hljs-string">&quot;openai/whisper-small&quot;</span>)`}}),ae=new b({props:{code:"ZGVmJTIwcHJlcGFyZV9kYXRhc2V0KGV4YW1wbGUpJTNBJTBBJTIwJTIwJTIwJTIwYXVkaW8lMjAlM0QlMjBleGFtcGxlJTVCJTIyYXVkaW8lMjIlNUQlMEElMjAlMjAlMjAlMjBmZWF0dXJlcyUyMCUzRCUyMGZlYXR1cmVfZXh0cmFjdG9yKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGF1ZGlvJTVCJTIyYXJyYXklMjIlNUQlMkMlMjBzYW1wbGluZ19yYXRlJTNEYXVkaW8lNUIlMjJzYW1wbGluZ19yYXRlJTIyJTVEJTJDJTIwcGFkZGluZyUzRFRydWUlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZmVhdHVyZXM=",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">prepare_dataset</span>(<span class="hljs-params">example</span>):
    audio = example[<span class="hljs-string">&quot;audio&quot;</span>]
    features = feature_extractor(
        audio[<span class="hljs-string">&quot;array&quot;</span>], sampling_rate=audio[<span class="hljs-string">&quot;sampling_rate&quot;</span>], padding=<span class="hljs-literal">True</span>
    )
    <span class="hljs-keyword">return</span> features`}}),se=new b({props:{code:"bWluZHMlMjAlM0QlMjBtaW5kcy5tYXAocHJlcGFyZV9kYXRhc2V0KSUwQW1pbmRz",highlighted:`minds = minds.<span class="hljs-built_in">map</span>(prepare_dataset)
minds`}}),oe=new b({props:{code:"RGF0YXNldCglMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmZWF0dXJlcyUzQSUyMCU1QiUyMnBhdGglMjIlMkMlMjAlMjJhdWRpbyUyMiUyQyUyMCUyMnRyYW5zY3JpcHRpb24lMjIlMkMlMjAlMjJpbnRlbnRfY2xhc3MlMjIlMkMlMjAlMjJpbnB1dF9mZWF0dXJlcyUyMiU1RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG51bV9yb3dzJTNBJTIwNjI0JTJDJTBBJTIwJTIwJTIwJTIwJTdEJTBBKQ==",highlighted:`Dataset(
    <span class="hljs-punctuation">{</span>
<span class="hljs-symbol">        features:</span> [<span class="hljs-string">&quot;path&quot;</span>, <span class="hljs-string">&quot;audio&quot;</span>, <span class="hljs-string">&quot;transcription&quot;</span>, <span class="hljs-string">&quot;intent_class&quot;</span>, <span class="hljs-string">&quot;input_features&quot;</span>],
<span class="hljs-symbol">        num_rows:</span> <span class="hljs-number">624</span>,
    <span class="hljs-punctuation">}</span>
)`}}),le=new b({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBZXhhbXBsZSUyMCUzRCUyMG1pbmRzJTVCMCU1RCUwQWlucHV0X2ZlYXR1cmVzJTIwJTNEJTIwZXhhbXBsZSU1QiUyMmlucHV0X2ZlYXR1cmVzJTIyJTVEJTBBJTBBcGx0LmZpZ3VyZSgpLnNldF9maWd3aWR0aCgxMiklMEFsaWJyb3NhLmRpc3BsYXkuc3BlY3Nob3coJTBBJTIwJTIwJTIwJTIwbnAuYXNhcnJheShpbnB1dF9mZWF0dXJlcyU1QjAlNUQpJTJDJTBBJTIwJTIwJTIwJTIweF9heGlzJTNEJTIydGltZSUyMiUyQyUwQSUyMCUyMCUyMCUyMHlfYXhpcyUzRCUyMm1lbCUyMiUyQyUwQSUyMCUyMCUyMCUyMHNyJTNEZmVhdHVyZV9leHRyYWN0b3Iuc2FtcGxpbmdfcmF0ZSUyQyUwQSUyMCUyMCUyMCUyMGhvcF9sZW5ndGglM0RmZWF0dXJlX2V4dHJhY3Rvci5ob3BfbGVuZ3RoJTJDJTBBKSUwQXBsdC5jb2xvcmJhcigp",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np

example = minds[<span class="hljs-number">0</span>]
input_features = example[<span class="hljs-string">&quot;input_features&quot;</span>]

plt.figure().set_figwidth(<span class="hljs-number">12</span>)
librosa.display.specshow(
    np.asarray(input_features[<span class="hljs-number">0</span>]),
    x_axis=<span class="hljs-string">&quot;time&quot;</span>,
    y_axis=<span class="hljs-string">&quot;mel&quot;</span>,
    sr=feature_extractor.sampling_rate,
    hop_length=feature_extractor.hop_length,
)
plt.colorbar()`}}),te=new b({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Qcm9jZXNzb3IlMEElMEFwcm9jZXNzb3IlMjAlM0QlMjBBdXRvUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZCglMjJvcGVuYWklMkZ3aGlzcGVyLXNtYWxsJTIyKQ==",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoProcessor

processor = AutoProcessor.from_pretrained(<span class="hljs-string">&quot;openai/whisper-small&quot;</span>)`}}),{c(){J=r("meta"),w=c(),T=r("h1"),_=r("a"),ve=r("span"),m(V.$$.fragment),Ka=c(),Ie=r("span"),es=d("Preprocesamiento de un conjunto de datos de audio"),Le=d(`

Cargar una base de datos con \u{1F917} Datasets es solo la mitad de la diversi\xF3n. Si planeas usar los datos para entrenar un modelo, o 
para hacer inferencia necesitar\xE1s preprocesar los datos primero. En general, esto involucra los siguientes pasos:
`),A=r("ul"),Ee=r("li"),as=d("Resamplear los datos de audio."),ss=c(),qe=r("li"),os=d("Filtrar la base de datos."),ls=c(),_e=r("li"),rs=d("Convertir el audio a la entrada esperada por el modelo."),Oe=c(),I=r("h2"),g=r("a"),ge=r("span"),m(S.$$.fragment),ns=c(),Ce=r("span"),ts=d("Resamplear los datos de audio"),Ke=c(),C=r("p"),ds=d("La funci\xF3n "),$e=r("code"),is=d("load_dataset"),cs=d(` descarga los archivos de audio con la frecuencia de muestreo con la que fueron publicados. Esta frecuencia
no siempre coincide con la esperada por el modelo que planees usar para entrenar o realizar inferencia. Si existe una discrepancia
entre las frecuencias, puedes resamplear el audio a la frecuencia de muestreo que espera el modelo.`),ea=c(),ie=r("p"),us=d(`La mayoria de los modelos pre-entrenados disponibles han sido entrenados con audios a una frecuencia de muestreo de 16kHz.
Cuando exploramos los datos de MINDS-14, puedes haber notado que la frecuencia de muestreo era de 8kHz, por lo que seguramente
se tendr\xE1 que realizar un proceso de upsampling(Convertir de una frecuencia menor a una mayor).`),aa=c(),$=r("p"),ps=d("Para hacer esto, usa el m\xE9todo "),ke=r("code"),ms=d("cast_column"),Ms=d(` de \u{1F917} Datasets. Esta operaci\xF3n no altera el audio cuando se ejecuta, crea una
se\xF1al para que datasets haga el resampleo en el momento en que se carguen los audios. El siguiente c\xF3digo configura el proceso
de resampling a 16 kHz.`),sa=c(),m(X.$$.fragment),oa=c(),k=r("p"),fs=d("Vuelve a cargar el primer ejemplo de audio en el conjunto de datos MINDS-14 y verifica que se haya re-muestreado al valor deseado de "),Be=r("code"),js=d("sampling rate"),ys=d(":"),la=c(),m(F.$$.fragment),ra=c(),ce=r("p"),Re=r("strong"),hs=d("Output:"),na=c(),m(P.$$.fragment),ta=c(),ue=r("p"),Js=d(`Puedes ver que los valores del array ahora son diferentes. Esto es porque ahora tenemos el doble de valores de amplitud de la longitud
original.`),da=c(),m(B.$$.fragment),ia=c(),E=r("h2"),R=r("a"),ze=r("span"),m(Q.$$.fragment),Us=c(),Ze=r("span"),bs=d("Filtrando el conjunto de datos"),ca=c(),pe=r("p"),Ts=d(`Algunas veces necesitar\xE1s filtrar los datos en funci\xF3n de algunos criterios. Uno de los casos comunes implica limitar los ejemplos
de audio a una duraci\xF3n determinada. Por ejemplo, es posible que deseemos filtrar cualquier ejemplo que supere los 20 segundos para
evitar errores de falta de memoria al entrenar un modelo.`),ua=c(),U=r("p"),ws=d("Podemos hacer esto al usar el m\xE9todo "),Ge=r("code"),As=d("filter"),vs=d(` que espera una funci\xF3n que contenga una l\xF3gica de filtrado. Empezemos por escribir
una funci\xF3n que indique cuales ejemplos conservar y cuales descartar. la funci\xF3n `),Ne=r("code"),Is=d("is_audio_length_in_range"),Es=d(", retorna "),We=r("code"),qs=d("True"),_s=d(` si
un ejemplo tiene una duraci\xF3ne menor a 20s y `),xe=r("code"),gs=d("False"),Cs=d(" si es mayor a 20s."),pa=c(),m(D.$$.fragment),ma=c(),me=r("p"),$s=d(`La funci\xF3n de filtrado se puede aplicar a una columna de un conjunto de datos, pero en este conjunto de datos no tenemos una columna
con la duraci\xF3n de la pista de audio. Sin embargo, podemos crear una columna, filtrar bas\xE1ndonos en los valores de esa columna y luego
eliminarla.`),Ma=c(),m(H.$$.fragment),fa=c(),Me=r("p"),Ye=r("strong"),ks=d("Output:"),ja=c(),m(L.$$.fragment),ya=c(),fe=r("p"),Bs=d("Podemos verificar que el dataset filtrado ahora tiene 624 ejemplos y no 654"),ha=c(),q=r("h2"),z=r("a"),Ve=r("span"),m(O.$$.fragment),Rs=c(),Se=r("span"),zs=d("Preprocesando los datos de audio"),Ja=c(),je=r("p"),Zs=d(`Uno de los aspectos m\xE1s retadores de trabajar con datos de audio es preparar los datos en el formato correcto para el entrenamiento
de un modelo. Como has visto, los datos de audio se almacenan en un arreglo de muestras. Sin embargo, la mayoria de modelos pre-entrenados,
ya sea que los uses para inferencia o para fine-tuning, esperan que los datos en bruto sean convertidos en caracter\xEDsticas de entrada.
Los requisitos para las caracter\xEDsticas de entrada pueden variar de un modelo a otro, ya que dependen de la arquitectura del modelo y
los datos con los que fue preentrenado. La buena noticia es que, para cada modelo de audio compatible, \u{1F917} Transformers ofrece una clase
de extractor de caracter\xEDsticas que puede convertir los datos de audio en bruto en las caracter\xEDsticas de entrada que el modelo espera.`),Ua=c(),Z=r("p"),Gs=d(`Entonces, \xBFqu\xE9 hace un extractor de caracter\xEDsticas con los datos de audio en bruto? Echemos un vistazo al extractor de caracter\xEDsticas
de `),K=r("a"),Ns=d("Whisper"),Ws=d(` para comprender algunas transformaciones comunes de extracci\xF3n de caracter\xEDsticas.
Whisper es un modelo preentrenado para el reconocimiento autom\xE1tico del habla (ASR) publicado en septiembre de 2022 por Alec Radford et al. de OpenAI.`),ba=c(),ye=r("p"),xs=d(`Primero, el extractor de caracter\xEDsticasde whisper completa/recorta un conjunto de ejemplos de audios para que todos los ejemplos tengan
una longitud de 30s. Ejemplos con una duraci\xF3n menor son completados a\xF1adiendo ceros al final de la secuencia(Ceros en una secuencia de
audio corresponden a la ausencia de se\xF1al o silencio). Ejemplos mayores a 30 segundos son truncados hasta 30 segundos. Ya que todos los
elementos en el conjunto son completados/recortados a una longitud com\xFAn, no hay necesidad de usar una mascara de atenci\xF3n. Whisper es \xFAnico
en este aspecto, la mayoria de los otros modelos requieren una mascara de atenci\xF3n que indica donde las secuencias fueron completadas, y por
lo tanto sean ignoradas por el mecanismo de auto-atenci\xF3n. Whisper esta entrenado para trabajar sin un mecanismo de atenci\xF3n e inferir directamente
de la se\xF1al donde ignorar estos segmentos.`),Ta=c(),he=r("p"),Ys=d(`La segunda operaci\xF3n que realiza el extractor de whisper es convertir las se\xF1alas en espectrogramas logar\xEDtmicos de mel.
Como recordar\xE1s, estos espectrogramas describen c\xF3mo cambian las frecuencias de una se\xF1al con el tiempo, expresadas en la escala mel
y medidas en decibelios (la parte logar\xEDtmica) para hacer que las frecuencias y amplitudes sean m\xE1s representativas de la audici\xF3n humana.`),wa=c(),Je=r("p"),Vs=d(`Todas estas transformaciones pueden ser aplicadas a tus datos de audio en bruto con unas pocas lineas de c\xF3digo. Carguemos ahora
el extractor de caracter\xEDsticas de el modelo preentrenado de Whisper.`),Aa=c(),m(ee.$$.fragment),va=c(),G=r("p"),Ss=d("A continuaci\xF3on, podemos escribir una funci\xF3n para preprocesar un ejemplo de audio al pasarlo a traves del "),Xe=r("code"),Xs=d("feature_extractor"),Fs=d("."),Ia=c(),m(ae.$$.fragment),Ea=c(),Ue=r("p"),Ps=d("Podemos aplicar la funci\xF3n de preparaci\xF3n de datos a todos nuestros ejemplos de entrenamiento utilizando el m\xE9todo \u201Cmap\u201D de \u{1F917} Datasets:"),qa=c(),m(se.$$.fragment),_a=c(),be=r("p"),Fe=r("strong"),Qs=d("Output:"),ga=c(),m(oe.$$.fragment),Ca=c(),N=r("p"),Ds=d("Con tan solo hacer esto, tenemos los espectrogramas logar\xEDtmicos de mel como una columna de "),Pe=r("code"),Hs=d("input_features"),Ls=d(" en nuestro dataset."),$a=c(),W=r("p"),Os=d("Visualizemos ahora uno de los ejemplos del dataset "),Qe=r("code"),Ks=d("minds"),eo=d(":"),ka=c(),m(le.$$.fragment),Ba=c(),re=r("div"),Te=r("img"),Ra=d(`
Ahora puedes ver como se ve la entrada de audio al modelo de Whisper tras haber realizado el preprocesamiento.
`),x=r("p"),ao=d(`La clase de extractor de caracter\xEDsticas del modelo se encarga de transformar los datos de audio en bruto al formato que el modelo espera.
Sin embargo, muchas tareas que involucran audio son multimodales, como el reconocimiento de voz. En tales casos, \u{1F917} Transformers tambi\xE9n
ofrece tokenizadores espec\xEDficos del modelo para procesar las entradas de texto. Para obtener m\xE1s informaci\xF3n sobre los tokenizadores,
consulta nuestro curso de `),ne=r("a"),so=d("NLP"),oo=d("."),za=c(),Y=r("p"),lo=d(`Puedes cargar el extractor de caracter\xEDsticas y el tokenizador para Whisper y otros modelos multimodales de forma separada, o puedes cargar
ambos usando el \u201Cprocesador\u201D. Para hacer las cosas aun m\xE1s simples, usa el `),De=r("code"),ro=d("AutoProcessor"),no=d(` para cargar el extractor de caracter\xEDsticas
y el procesador de un modelo de la siguiente forma:`),Za=c(),m(te.$$.fragment),Ga=c(),we=r("p"),to=d(`Aqu\xED hemos ilustrado los pasos fundamentales de preparaci\xF3n de datos. Por supuesto, los datos personalizados pueden requerir una
preprocesamiento m\xE1s complejo. En este caso, puedes ampliar la funci\xF3n prepare_dataset para realizar cualquier tipo de transformaci\xF3n
personalizada en los datos. Con \u{1F917} Datasets, si puedes escribirlo como una funci\xF3n de Python, \xA1puedes aplicarlo a tu conjunto de datos!`),this.h()},l(e){const o=rl('[data-svelte="svelte-1phssyn"]',document.head);J=n(o,"META",{name:!0,content:!0}),o.forEach(a),w=u(e),T=n(e,"H1",{class:!0});var de=t(T);_=n(de,"A",{id:!0,class:!0,href:!0});var co=t(_);ve=n(co,"SPAN",{});var uo=t(ve);M(V.$$.fragment,uo),uo.forEach(a),co.forEach(a),Ka=u(de),Ie=n(de,"SPAN",{});var po=t(Ie);es=i(po,"Preprocesamiento de un conjunto de datos de audio"),po.forEach(a),de.forEach(a),Le=i(e,`

Cargar una base de datos con \u{1F917} Datasets es solo la mitad de la diversi\xF3n. Si planeas usar los datos para entrenar un modelo, o 
para hacer inferencia necesitar\xE1s preprocesar los datos primero. En general, esto involucra los siguientes pasos:
`),A=n(e,"UL",{});var Ae=t(A);Ee=n(Ae,"LI",{});var mo=t(Ee);as=i(mo,"Resamplear los datos de audio."),mo.forEach(a),ss=u(Ae),qe=n(Ae,"LI",{});var Mo=t(qe);os=i(Mo,"Filtrar la base de datos."),Mo.forEach(a),ls=u(Ae),_e=n(Ae,"LI",{});var fo=t(_e);rs=i(fo,"Convertir el audio a la entrada esperada por el modelo."),fo.forEach(a),Ae.forEach(a),Oe=u(e),I=n(e,"H2",{class:!0});var Wa=t(I);g=n(Wa,"A",{id:!0,class:!0,href:!0});var jo=t(g);ge=n(jo,"SPAN",{});var yo=t(ge);M(S.$$.fragment,yo),yo.forEach(a),jo.forEach(a),ns=u(Wa),Ce=n(Wa,"SPAN",{});var ho=t(Ce);ts=i(ho,"Resamplear los datos de audio"),ho.forEach(a),Wa.forEach(a),Ke=u(e),C=n(e,"P",{});var xa=t(C);ds=i(xa,"La funci\xF3n "),$e=n(xa,"CODE",{});var Jo=t($e);is=i(Jo,"load_dataset"),Jo.forEach(a),cs=i(xa,` descarga los archivos de audio con la frecuencia de muestreo con la que fueron publicados. Esta frecuencia
no siempre coincide con la esperada por el modelo que planees usar para entrenar o realizar inferencia. Si existe una discrepancia
entre las frecuencias, puedes resamplear el audio a la frecuencia de muestreo que espera el modelo.`),xa.forEach(a),ea=u(e),ie=n(e,"P",{});var Uo=t(ie);us=i(Uo,`La mayoria de los modelos pre-entrenados disponibles han sido entrenados con audios a una frecuencia de muestreo de 16kHz.
Cuando exploramos los datos de MINDS-14, puedes haber notado que la frecuencia de muestreo era de 8kHz, por lo que seguramente
se tendr\xE1 que realizar un proceso de upsampling(Convertir de una frecuencia menor a una mayor).`),Uo.forEach(a),aa=u(e),$=n(e,"P",{});var Ya=t($);ps=i(Ya,"Para hacer esto, usa el m\xE9todo "),ke=n(Ya,"CODE",{});var bo=t(ke);ms=i(bo,"cast_column"),bo.forEach(a),Ms=i(Ya,` de \u{1F917} Datasets. Esta operaci\xF3n no altera el audio cuando se ejecuta, crea una
se\xF1al para que datasets haga el resampleo en el momento en que se carguen los audios. El siguiente c\xF3digo configura el proceso
de resampling a 16 kHz.`),Ya.forEach(a),sa=u(e),M(X.$$.fragment,e),oa=u(e),k=n(e,"P",{});var Va=t(k);fs=i(Va,"Vuelve a cargar el primer ejemplo de audio en el conjunto de datos MINDS-14 y verifica que se haya re-muestreado al valor deseado de "),Be=n(Va,"CODE",{});var To=t(Be);js=i(To,"sampling rate"),To.forEach(a),ys=i(Va,":"),Va.forEach(a),la=u(e),M(F.$$.fragment,e),ra=u(e),ce=n(e,"P",{});var wo=t(ce);Re=n(wo,"STRONG",{});var Ao=t(Re);hs=i(Ao,"Output:"),Ao.forEach(a),wo.forEach(a),na=u(e),M(P.$$.fragment,e),ta=u(e),ue=n(e,"P",{});var vo=t(ue);Js=i(vo,`Puedes ver que los valores del array ahora son diferentes. Esto es porque ahora tenemos el doble de valores de amplitud de la longitud
original.`),vo.forEach(a),da=u(e),M(B.$$.fragment,e),ia=u(e),E=n(e,"H2",{class:!0});var Sa=t(E);R=n(Sa,"A",{id:!0,class:!0,href:!0});var Io=t(R);ze=n(Io,"SPAN",{});var Eo=t(ze);M(Q.$$.fragment,Eo),Eo.forEach(a),Io.forEach(a),Us=u(Sa),Ze=n(Sa,"SPAN",{});var qo=t(Ze);bs=i(qo,"Filtrando el conjunto de datos"),qo.forEach(a),Sa.forEach(a),ca=u(e),pe=n(e,"P",{});var _o=t(pe);Ts=i(_o,`Algunas veces necesitar\xE1s filtrar los datos en funci\xF3n de algunos criterios. Uno de los casos comunes implica limitar los ejemplos
de audio a una duraci\xF3n determinada. Por ejemplo, es posible que deseemos filtrar cualquier ejemplo que supere los 20 segundos para
evitar errores de falta de memoria al entrenar un modelo.`),_o.forEach(a),ua=u(e),U=n(e,"P",{});var v=t(U);ws=i(v,"Podemos hacer esto al usar el m\xE9todo "),Ge=n(v,"CODE",{});var go=t(Ge);As=i(go,"filter"),go.forEach(a),vs=i(v,` que espera una funci\xF3n que contenga una l\xF3gica de filtrado. Empezemos por escribir
una funci\xF3n que indique cuales ejemplos conservar y cuales descartar. la funci\xF3n `),Ne=n(v,"CODE",{});var Co=t(Ne);Is=i(Co,"is_audio_length_in_range"),Co.forEach(a),Es=i(v,", retorna "),We=n(v,"CODE",{});var $o=t(We);qs=i($o,"True"),$o.forEach(a),_s=i(v,` si
un ejemplo tiene una duraci\xF3ne menor a 20s y `),xe=n(v,"CODE",{});var ko=t(xe);gs=i(ko,"False"),ko.forEach(a),Cs=i(v," si es mayor a 20s."),v.forEach(a),pa=u(e),M(D.$$.fragment,e),ma=u(e),me=n(e,"P",{});var Bo=t(me);$s=i(Bo,`La funci\xF3n de filtrado se puede aplicar a una columna de un conjunto de datos, pero en este conjunto de datos no tenemos una columna
con la duraci\xF3n de la pista de audio. Sin embargo, podemos crear una columna, filtrar bas\xE1ndonos en los valores de esa columna y luego
eliminarla.`),Bo.forEach(a),Ma=u(e),M(H.$$.fragment,e),fa=u(e),Me=n(e,"P",{});var Ro=t(Me);Ye=n(Ro,"STRONG",{});var zo=t(Ye);ks=i(zo,"Output:"),zo.forEach(a),Ro.forEach(a),ja=u(e),M(L.$$.fragment,e),ya=u(e),fe=n(e,"P",{});var Zo=t(fe);Bs=i(Zo,"Podemos verificar que el dataset filtrado ahora tiene 624 ejemplos y no 654"),Zo.forEach(a),ha=u(e),q=n(e,"H2",{class:!0});var Xa=t(q);z=n(Xa,"A",{id:!0,class:!0,href:!0});var Go=t(z);Ve=n(Go,"SPAN",{});var No=t(Ve);M(O.$$.fragment,No),No.forEach(a),Go.forEach(a),Rs=u(Xa),Se=n(Xa,"SPAN",{});var Wo=t(Se);zs=i(Wo,"Preprocesando los datos de audio"),Wo.forEach(a),Xa.forEach(a),Ja=u(e),je=n(e,"P",{});var xo=t(je);Zs=i(xo,`Uno de los aspectos m\xE1s retadores de trabajar con datos de audio es preparar los datos en el formato correcto para el entrenamiento
de un modelo. Como has visto, los datos de audio se almacenan en un arreglo de muestras. Sin embargo, la mayoria de modelos pre-entrenados,
ya sea que los uses para inferencia o para fine-tuning, esperan que los datos en bruto sean convertidos en caracter\xEDsticas de entrada.
Los requisitos para las caracter\xEDsticas de entrada pueden variar de un modelo a otro, ya que dependen de la arquitectura del modelo y
los datos con los que fue preentrenado. La buena noticia es que, para cada modelo de audio compatible, \u{1F917} Transformers ofrece una clase
de extractor de caracter\xEDsticas que puede convertir los datos de audio en bruto en las caracter\xEDsticas de entrada que el modelo espera.`),xo.forEach(a),Ua=u(e),Z=n(e,"P",{});var Fa=t(Z);Gs=i(Fa,`Entonces, \xBFqu\xE9 hace un extractor de caracter\xEDsticas con los datos de audio en bruto? Echemos un vistazo al extractor de caracter\xEDsticas
de `),K=n(Fa,"A",{href:!0,rel:!0});var Yo=t(K);Ns=i(Yo,"Whisper"),Yo.forEach(a),Ws=i(Fa,` para comprender algunas transformaciones comunes de extracci\xF3n de caracter\xEDsticas.
Whisper es un modelo preentrenado para el reconocimiento autom\xE1tico del habla (ASR) publicado en septiembre de 2022 por Alec Radford et al. de OpenAI.`),Fa.forEach(a),ba=u(e),ye=n(e,"P",{});var Vo=t(ye);xs=i(Vo,`Primero, el extractor de caracter\xEDsticasde whisper completa/recorta un conjunto de ejemplos de audios para que todos los ejemplos tengan
una longitud de 30s. Ejemplos con una duraci\xF3n menor son completados a\xF1adiendo ceros al final de la secuencia(Ceros en una secuencia de
audio corresponden a la ausencia de se\xF1al o silencio). Ejemplos mayores a 30 segundos son truncados hasta 30 segundos. Ya que todos los
elementos en el conjunto son completados/recortados a una longitud com\xFAn, no hay necesidad de usar una mascara de atenci\xF3n. Whisper es \xFAnico
en este aspecto, la mayoria de los otros modelos requieren una mascara de atenci\xF3n que indica donde las secuencias fueron completadas, y por
lo tanto sean ignoradas por el mecanismo de auto-atenci\xF3n. Whisper esta entrenado para trabajar sin un mecanismo de atenci\xF3n e inferir directamente
de la se\xF1al donde ignorar estos segmentos.`),Vo.forEach(a),Ta=u(e),he=n(e,"P",{});var So=t(he);Ys=i(So,`La segunda operaci\xF3n que realiza el extractor de whisper es convertir las se\xF1alas en espectrogramas logar\xEDtmicos de mel.
Como recordar\xE1s, estos espectrogramas describen c\xF3mo cambian las frecuencias de una se\xF1al con el tiempo, expresadas en la escala mel
y medidas en decibelios (la parte logar\xEDtmica) para hacer que las frecuencias y amplitudes sean m\xE1s representativas de la audici\xF3n humana.`),So.forEach(a),wa=u(e),Je=n(e,"P",{});var Xo=t(Je);Vs=i(Xo,`Todas estas transformaciones pueden ser aplicadas a tus datos de audio en bruto con unas pocas lineas de c\xF3digo. Carguemos ahora
el extractor de caracter\xEDsticas de el modelo preentrenado de Whisper.`),Xo.forEach(a),Aa=u(e),M(ee.$$.fragment,e),va=u(e),G=n(e,"P",{});var Pa=t(G);Ss=i(Pa,"A continuaci\xF3on, podemos escribir una funci\xF3n para preprocesar un ejemplo de audio al pasarlo a traves del "),Xe=n(Pa,"CODE",{});var Fo=t(Xe);Xs=i(Fo,"feature_extractor"),Fo.forEach(a),Fs=i(Pa,"."),Pa.forEach(a),Ia=u(e),M(ae.$$.fragment,e),Ea=u(e),Ue=n(e,"P",{});var Po=t(Ue);Ps=i(Po,"Podemos aplicar la funci\xF3n de preparaci\xF3n de datos a todos nuestros ejemplos de entrenamiento utilizando el m\xE9todo \u201Cmap\u201D de \u{1F917} Datasets:"),Po.forEach(a),qa=u(e),M(se.$$.fragment,e),_a=u(e),be=n(e,"P",{});var Qo=t(be);Fe=n(Qo,"STRONG",{});var Do=t(Fe);Qs=i(Do,"Output:"),Do.forEach(a),Qo.forEach(a),ga=u(e),M(oe.$$.fragment,e),Ca=u(e),N=n(e,"P",{});var Qa=t(N);Ds=i(Qa,"Con tan solo hacer esto, tenemos los espectrogramas logar\xEDtmicos de mel como una columna de "),Pe=n(Qa,"CODE",{});var Ho=t(Pe);Hs=i(Ho,"input_features"),Ho.forEach(a),Ls=i(Qa," en nuestro dataset."),Qa.forEach(a),$a=u(e),W=n(e,"P",{});var Da=t(W);Os=i(Da,"Visualizemos ahora uno de los ejemplos del dataset "),Qe=n(Da,"CODE",{});var Lo=t(Qe);Ks=i(Lo,"minds"),Lo.forEach(a),eo=i(Da,":"),Da.forEach(a),ka=u(e),M(le.$$.fragment,e),Ba=u(e),re=n(e,"DIV",{class:!0});var Oo=t(re);Te=n(Oo,"IMG",{src:!0,alt:!0}),Oo.forEach(a),Ra=i(e,`
Ahora puedes ver como se ve la entrada de audio al modelo de Whisper tras haber realizado el preprocesamiento.
`),x=n(e,"P",{});var Ha=t(x);ao=i(Ha,`La clase de extractor de caracter\xEDsticas del modelo se encarga de transformar los datos de audio en bruto al formato que el modelo espera.
Sin embargo, muchas tareas que involucran audio son multimodales, como el reconocimiento de voz. En tales casos, \u{1F917} Transformers tambi\xE9n
ofrece tokenizadores espec\xEDficos del modelo para procesar las entradas de texto. Para obtener m\xE1s informaci\xF3n sobre los tokenizadores,
consulta nuestro curso de `),ne=n(Ha,"A",{href:!0,rel:!0});var Ko=t(ne);so=i(Ko,"NLP"),Ko.forEach(a),oo=i(Ha,"."),Ha.forEach(a),za=u(e),Y=n(e,"P",{});var La=t(Y);lo=i(La,`Puedes cargar el extractor de caracter\xEDsticas y el tokenizador para Whisper y otros modelos multimodales de forma separada, o puedes cargar
ambos usando el \u201Cprocesador\u201D. Para hacer las cosas aun m\xE1s simples, usa el `),De=n(La,"CODE",{});var el=t(De);ro=i(el,"AutoProcessor"),el.forEach(a),no=i(La,` para cargar el extractor de caracter\xEDsticas
y el procesador de un modelo de la siguiente forma:`),La.forEach(a),Za=u(e),M(te.$$.fragment,e),Ga=u(e),we=n(e,"P",{});var al=t(we);to=i(al,`Aqu\xED hemos ilustrado los pasos fundamentales de preparaci\xF3n de datos. Por supuesto, los datos personalizados pueden requerir una
preprocesamiento m\xE1s complejo. En este caso, puedes ampliar la funci\xF3n prepare_dataset para realizar cualquier tipo de transformaci\xF3n
personalizada en los datos. Con \u{1F917} Datasets, si puedes escribirlo como una funci\xF3n de Python, \xA1puedes aplicarlo a tu conjunto de datos!`),al.forEach(a),this.h()},h(){p(J,"name","hf:doc:metadata"),p(J,"content",JSON.stringify(ul)),p(_,"id","preprocesamiento-de-un-conjunto-de-datos-de-audio"),p(_,"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"),p(_,"href","#preprocesamiento-de-un-conjunto-de-datos-de-audio"),p(T,"class","relative group"),p(g,"id","resamplear-los-datos-de-audio"),p(g,"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"),p(g,"href","#resamplear-los-datos-de-audio"),p(I,"class","relative group"),p(R,"id","filtrando-el-conjunto-de-datos"),p(R,"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"),p(R,"href","#filtrando-el-conjunto-de-datos"),p(E,"class","relative group"),p(z,"id","preprocesando-los-datos-de-audio"),p(z,"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"),p(z,"href","#preprocesando-los-datos-de-audio"),p(q,"class","relative group"),p(K,"href","https://cdn.openai.com/papers/whisper.pdf"),p(K,"rel","nofollow"),nl(Te.src,io="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/log_mel_whisper.png")||p(Te,"src",io),p(Te,"alt","Log mel spectrogram plot"),p(re,"class","flex justify-center"),p(ne,"href","https://huggingface.co/course/chapter2/4"),p(ne,"rel","nofollow")},m(e,o){s(document.head,J),l(e,w,o),l(e,T,o),s(T,_),s(_,ve),f(V,ve,null),s(T,Ka),s(T,Ie),s(Ie,es),l(e,Le,o),l(e,A,o),s(A,Ee),s(Ee,as),s(A,ss),s(A,qe),s(qe,os),s(A,ls),s(A,_e),s(_e,rs),l(e,Oe,o),l(e,I,o),s(I,g),s(g,ge),f(S,ge,null),s(I,ns),s(I,Ce),s(Ce,ts),l(e,Ke,o),l(e,C,o),s(C,ds),s(C,$e),s($e,is),s(C,cs),l(e,ea,o),l(e,ie,o),s(ie,us),l(e,aa,o),l(e,$,o),s($,ps),s($,ke),s(ke,ms),s($,Ms),l(e,sa,o),f(X,e,o),l(e,oa,o),l(e,k,o),s(k,fs),s(k,Be),s(Be,js),s(k,ys),l(e,la,o),f(F,e,o),l(e,ra,o),l(e,ce,o),s(ce,Re),s(Re,hs),l(e,na,o),f(P,e,o),l(e,ta,o),l(e,ue,o),s(ue,Js),l(e,da,o),f(B,e,o),l(e,ia,o),l(e,E,o),s(E,R),s(R,ze),f(Q,ze,null),s(E,Us),s(E,Ze),s(Ze,bs),l(e,ca,o),l(e,pe,o),s(pe,Ts),l(e,ua,o),l(e,U,o),s(U,ws),s(U,Ge),s(Ge,As),s(U,vs),s(U,Ne),s(Ne,Is),s(U,Es),s(U,We),s(We,qs),s(U,_s),s(U,xe),s(xe,gs),s(U,Cs),l(e,pa,o),f(D,e,o),l(e,ma,o),l(e,me,o),s(me,$s),l(e,Ma,o),f(H,e,o),l(e,fa,o),l(e,Me,o),s(Me,Ye),s(Ye,ks),l(e,ja,o),f(L,e,o),l(e,ya,o),l(e,fe,o),s(fe,Bs),l(e,ha,o),l(e,q,o),s(q,z),s(z,Ve),f(O,Ve,null),s(q,Rs),s(q,Se),s(Se,zs),l(e,Ja,o),l(e,je,o),s(je,Zs),l(e,Ua,o),l(e,Z,o),s(Z,Gs),s(Z,K),s(K,Ns),s(Z,Ws),l(e,ba,o),l(e,ye,o),s(ye,xs),l(e,Ta,o),l(e,he,o),s(he,Ys),l(e,wa,o),l(e,Je,o),s(Je,Vs),l(e,Aa,o),f(ee,e,o),l(e,va,o),l(e,G,o),s(G,Ss),s(G,Xe),s(Xe,Xs),s(G,Fs),l(e,Ia,o),f(ae,e,o),l(e,Ea,o),l(e,Ue,o),s(Ue,Ps),l(e,qa,o),f(se,e,o),l(e,_a,o),l(e,be,o),s(be,Fe),s(Fe,Qs),l(e,ga,o),f(oe,e,o),l(e,Ca,o),l(e,N,o),s(N,Ds),s(N,Pe),s(Pe,Hs),s(N,Ls),l(e,$a,o),l(e,W,o),s(W,Os),s(W,Qe),s(Qe,Ks),s(W,eo),l(e,ka,o),f(le,e,o),l(e,Ba,o),l(e,re,o),s(re,Te),l(e,Ra,o),l(e,x,o),s(x,ao),s(x,ne),s(ne,so),s(x,oo),l(e,za,o),l(e,Y,o),s(Y,lo),s(Y,De),s(De,ro),s(Y,no),l(e,Za,o),f(te,e,o),l(e,Ga,o),l(e,we,o),s(we,to),Na=!0},p(e,[o]){const de={};o&2&&(de.$$scope={dirty:o,ctx:e}),B.$set(de)},i(e){Na||(j(V.$$.fragment,e),j(S.$$.fragment,e),j(X.$$.fragment,e),j(F.$$.fragment,e),j(P.$$.fragment,e),j(B.$$.fragment,e),j(Q.$$.fragment,e),j(D.$$.fragment,e),j(H.$$.fragment,e),j(L.$$.fragment,e),j(O.$$.fragment,e),j(ee.$$.fragment,e),j(ae.$$.fragment,e),j(se.$$.fragment,e),j(oe.$$.fragment,e),j(le.$$.fragment,e),j(te.$$.fragment,e),Na=!0)},o(e){y(V.$$.fragment,e),y(S.$$.fragment,e),y(X.$$.fragment,e),y(F.$$.fragment,e),y(P.$$.fragment,e),y(B.$$.fragment,e),y(Q.$$.fragment,e),y(D.$$.fragment,e),y(H.$$.fragment,e),y(L.$$.fragment,e),y(O.$$.fragment,e),y(ee.$$.fragment,e),y(ae.$$.fragment,e),y(se.$$.fragment,e),y(oe.$$.fragment,e),y(le.$$.fragment,e),y(te.$$.fragment,e),Na=!1},d(e){a(J),e&&a(w),e&&a(T),h(V),e&&a(Le),e&&a(A),e&&a(Oe),e&&a(I),h(S),e&&a(Ke),e&&a(C),e&&a(ea),e&&a(ie),e&&a(aa),e&&a($),e&&a(sa),h(X,e),e&&a(oa),e&&a(k),e&&a(la),h(F,e),e&&a(ra),e&&a(ce),e&&a(na),h(P,e),e&&a(ta),e&&a(ue),e&&a(da),h(B,e),e&&a(ia),e&&a(E),h(Q),e&&a(ca),e&&a(pe),e&&a(ua),e&&a(U),e&&a(pa),h(D,e),e&&a(ma),e&&a(me),e&&a(Ma),h(H,e),e&&a(fa),e&&a(Me),e&&a(ja),h(L,e),e&&a(ya),e&&a(fe),e&&a(ha),e&&a(q),h(O),e&&a(Ja),e&&a(je),e&&a(Ua),e&&a(Z),e&&a(ba),e&&a(ye),e&&a(Ta),e&&a(he),e&&a(wa),e&&a(Je),e&&a(Aa),h(ee,e),e&&a(va),e&&a(G),e&&a(Ia),h(ae,e),e&&a(Ea),e&&a(Ue),e&&a(qa),h(se,e),e&&a(_a),e&&a(be),e&&a(ga),h(oe,e),e&&a(Ca),e&&a(N),e&&a($a),e&&a(W),e&&a(ka),h(le,e),e&&a(Ba),e&&a(re),e&&a(Ra),e&&a(x),e&&a(za),e&&a(Y),e&&a(Za),h(te,e),e&&a(Ga),e&&a(we)}}}const ul={local:"preprocesamiento-de-un-conjunto-de-datos-de-audio",sections:[{local:"resamplear-los-datos-de-audio",title:"Resamplear los datos de audio"},{local:"filtrando-el-conjunto-de-datos",title:"Filtrando el conjunto de datos"},{local:"preprocesando-los-datos-de-audio",title:"Preprocesando los datos de audio"}],title:"Preprocesamiento de un conjunto de datos de audio"};function pl(He){return tl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class yl extends sl{constructor(J){super();ol(this,J,pl,cl,ll,{})}}export{yl as default,ul as metadata};
