Buckets:
| import{s as as,o as ts,n as ss}from"../chunks/scheduler.f6b352c8.js";import{S as ns,i as ls,g as o,s as n,r as u,A as os,h as i,f as t,c as l,j as Ot,u as m,x as r,k as Ee,y as is,a as s,v as c,d as p,t as f,w as v,m as rs,n as ds}from"../chunks/index.7f38e934.js";import{T as es}from"../chunks/Tip.ae532637.js";import{C as ke}from"../chunks/CodeBlock.3ee8293b.js";import{H as Ge,E as us}from"../chunks/getInferenceSnippets.3c61f4ba.js";function ms(Le){let d;return{c(){d=rs(`💡 En la práctica, las personas utilizan indistintamente los términos FFT (Transformada Rápida de Fourier) y DFT (Transformada Discreta de Fourier), | |
| ya que la FFT es la única forma eficiente de calcular la DFT en una computadora.`)},l(b){d=ds(b,`💡 En la práctica, las personas utilizan indistintamente los términos FFT (Transformada Rápida de Fourier) y DFT (Transformada Discreta de Fourier), | |
| ya que la FFT es la única forma eficiente de calcular la DFT en una computadora.`)},m(b,g){s(b,d,g)},d(b){b&&t(d)}}}function cs(Le){let d,b=`💡 ¡No todos los espectrogramas mel son iguales! Existen dos variantes comumente usadas de las escalas de mel(“htk” y “slaney”), | |
| , y en lugar del espectrograma de potencia, se puede estar usando el espectrograma de amplitud. El cálculo de un espectrograma | |
| logarítmico de mel no siempre usa decibelios reales, puede que se haya aplicado solamente la función <code>log</code>. Por lo tanto, | |
| si un modelo de aprendizaje automático espera un espectrograma de mel como entrada, verifica que estés calculándolo de la misma manera | |
| para asegurarte de que sea compatible.`;return{c(){d=o("p"),d.innerHTML=b},l(g){d=i(g,"P",{"data-svelte-h":!0}),r(d)!=="svelte-16pjwjt"&&(d.innerHTML=b)},m(g,He){s(g,d,He)},p:ss,d(g){g&&t(d)}}}function ps(Le){let d,b,g,He,$,Fe,_,Oa=`Por naturaleza, una onda sonora es una señal continua, es decir, que contiene un número infinito de valores de la señal en un tiempo determinado. | |
| Este es un problema para los dispositivos digitales que trabajan con un número finito de valores. La onda sonora necesita ser convertida en | |
| un serie de valores discretos para que pueda ser procesada, almacenada y transmitida por un por un dispositivo digital, esta representación discreta | |
| se conoce como representación digital.`,Ie,j,et=`Si exploras cualquier base de datos de audio, encontrarás archivos digitales con fragmentos de sonido que pueden contener narraciones o música. | |
| Puedes encontrar diferentes formatos de archivo como <code>.wav</code> (Waveform Audio File), <code>.flac</code> (Free Lossless Audio Codec) | |
| y <code>.mp3</code> (MPEG-1 Audio Layer 3). Estos formatos difieren principalmente en como comprimen la representación digital de la señal de audio.`,Ue,h,at=`Examinemos como pasamos de una señal continua a una representación digital. La señal acústica(análoga) es primero capturada por un micrófono, | |
| que convierte las ondas sonoras en una señal electrica(Tambien análoga). La señal electrica es digitalizada por un | |
| conversor Análogo-Digital(ADC) para tener una representación digital a través del muestreo.`,We,J,Ze,z,tt=`El muestreo es el proceso de medir el valor de una señal continua en intervalos de tiempo fijos. La señal sampleada es discreta, | |
| ya que contiene un número finito de valores de la señal.`,Se,x,st='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/Signal_Sampling.png" alt="Signal sampling illustration"/>',Xe,B,nt='<em>Ilustración de un articulo de Wikipedia: <a href="https://es.wikipedia.org/wiki/Muestreo_(se%C3%B1al)" rel="nofollow">Muestreo(procesamiento de señal)</a></em>',De,E,lt=`La <strong>Tasa de Muestreo</strong> (Tambien llamada frecuencia de muestreo) es el número de muestras capturadas en un segundo y es medida en unidades | |
| de Hertz (Hz). Para tener un punto de referencia, un audio con calidad de CD tiene una frecuencia de muestreo de 44,100 Hz, es decir que se | |
| capturan 44,100 muestras por segundo. Existen archivos de audio Hi-Fi que utilizan frecuencias de muestreo de 192,000 hz o 192kHz. Una | |
| frecuencia de muestreo comúnmente usada para entrenar modelos de voz es 16,0000 Hz o 16 kHz.`,Re,G,ot=`La elección de la frecuencia de muestreo determina la frecuencia más alta que puede ser representada digitalmente. Esto se conoce | |
| como el limite de Nyquist y es exactamente la mitad de la señal de la frecuencia de muestreo. Las frecuencias audibles en la voz humana | |
| estan por debajo de 8kHz, por lo que una frecuencia de 16kHz es suficiente. Usar una frecuencia de muestreo más alta no va a capturar | |
| más información pero si añade un costo computacional al procesamiento de estos archivos. En el caso contrario, elegir una frecuencia de | |
| muestreo muy baja puede resultar en perdidas de información. Audios de voz sampleados a 8kHz sonarán opacos, ya que las frecuencias por encima | |
| de 4kHz no pueden ser capturadas por esta frecuencia de muestreo.`,Ye,L,it=`Es importante asegurar que todos los ejemplos de audio de la base de datos tienen la misma frecuencia de muestreo. Si planeas usar | |
| tus propios audios para hacer fine-tunning de un modelo pre-entrenado, la frecuencia de muestreo de estos audios debe concordar con | |
| la frecuencia de muestreo con la que el modelo fue previamente entrenado. La frecuencia de muestreo determina el intervalo de tiempo | |
| entre muestras de audio sucesivas, lo que tiene un efecto en la resolución temporal de los datos de audio. Por ejemplo: un audio de 5 | |
| segundos con una frecuencia de muestreo de 16,000 Hz será representado como una serie de 80,000 valores, mientras que el mismo audio con | |
| una frecuencia de muestreo de 8,000hz será representado como una serie de 40,000 valores. Los modelos de transformers para audio tratan los | |
| ejemplos como secuencias y se basan en mecanismos de atención para aprender del audio o de representaciónes multimodales. Ya que la longitud | |
| de las secuencias difiere al usar frecuencias de muestreo diferentes, será dificil para el modelo generalizar para diferentes frecuencias de muestro. | |
| <strong>Resamplear</strong> es el proceso de convertir una señal a otra frecuencia de muestreo, es parte de la sección de <a href="preprocessing#resampling-the-audio-data">preprosesamiento</a> de datos de audio.`,Ve,H,Ne,k,rt="Mientras que la frecuencia de muestreo te indica con qué frecuencia se toman las muestras, ¿Qué representan exactamente los valores en cada muestra?",Qe,P,dt=`El sonido se produce por cambios en la presión del aire a frecuencias audibles para los humanos. La <strong>amplitud</strong> de un sonido describe el nivel | |
| de presión sonora en un momento dado y se mide en decibelios (dB). Percibimos la amplitud como volumen o intensidad del sonido. Por ejemplo, | |
| una voz normal al hablar está por debajo de los 60 dB, mientras que un concierto de rock puede llegar a los 125 dB, alcanzando | |
| los límites de la audición humana.`,Ae,F,ut=`En el audio digital, cada muestra de audio registra la amplitud de la onda de audio en un momento específico. La profundidad de bits de | |
| la muestra determina con qué precisión se puede describir este valor de amplitud. Cuanto mayor sea la profundidad de bits, más fiel será la | |
| representación digital a la onda de sonido continua original.`,Ke,I,mt=`Las profundidades de bits de audio más comunes son 16 bits y 24 bits. Cada una es una medida binaria que representa el número de pasos posibles | |
| en los que se puede cuantificar el valor de amplitud al convertirlo de continuo a discreto: 65.536 pasos para el audio de 16 bits | |
| y 16.777.216 pasos para el audio de 24 bits. Debido a que la cuantificación implica redondear el valor continuo a un valor discreto, el proceso | |
| de muestreo introduce ruido. Cuanto mayor sea la profundidad de bits, menor será este ruido de cuantificación. En la práctica, el ruido de | |
| cuantificación del audio de 16 bits ya es lo suficientemente pequeño como para ser audible, por lo que generalmente no es | |
| necesario utilizar profundidades de bits más altas.`,Oe,U,ct=`También es posible encontrarse con audio de 32 bits. Este almacena las muestras como valores de punto flotante, mientras que el audio | |
| de 16 bits y 24 bits utiliza muestras enteras. La precisión de un valor de punto flotante de 32 bits es de 24 bits, lo que le otorga | |
| la misma profundidad de bits que el audio de 24 bits. Se espera que las muestras de audio de punto flotante se encuentren dentro del | |
| rango [-1.0, 1.0]. Dado que los modelos de aprendizaje automático trabajan naturalmente con datos de punto flotante, el audio debe convertirse | |
| primero al formato de punto flotante antes de poder ser utilizado para entrenar el modelo. Veremos cómo hacer esto en la próxima sección | |
| sobre Preprocesamiento.`,ea,W,pt=`Al igual que con las señales de audio continuas, la amplitud del audio digital se expresa típicamente en decibelios (dB). Dado que la audición | |
| humana es de naturaleza logarítmica, es decir, nuestros oídos son más sensibles a las pequeñas fluctuaciones en sonidos silenciosos que en | |
| sonidos fuertes, el volumen de un sonido es más fácil de interpretar si las amplitudes están en decibelios, que también son logarítmicos. | |
| La escala de decibelios para el audio real comienza en 0 dB, que representa el sonido más silencioso posible que los humanos pueden escuchar, | |
| y los sonidos más fuertes tienen valores más grandes. Sin embargo, para las señales de audio digital, 0 dB es la amplitud más alta posible, | |
| mientras que todas las demás amplitudes son negativas. Como regla general: cada -6 dB implica una reducción a la mitad de la amplitud, y cualquier | |
| valor por debajo de -60 dB generalmente es inaudible a menos que subas mucho el volumen.`,aa,Z,ta,S,ft=`Es posible que hayas visto los sonidos visualizados como una <strong>forma de onda</strong>(waveform), que representa los valores de las muestras a lo | |
| largo del tiempo y muestra los cambios en la amplitud del sonido. Esta representación también se conoce como la representación en | |
| el dominio del tiempo del sonido.`,sa,X,vt=`Este tipo de visualización es útil para identificar características específicas de la señal de audio, como la sincronización | |
| de eventos de sonido individuales, la intensidad general de la señal y cualquier irregularidad o ruido presente en el audio.`,na,D,bt="Para graficar la forma de onda de una señal de audio, usamos una libreria de Python llamada <code>librosa</code>:",la,R,oa,Y,gt="Carguemos un ejemplo de la libreria llamado “trumpet”:",ia,V,ra,N,xt=`El ejemplo es cargado como una tupla formada por una serie temporal de valores de audio(llamado <code>array</code>) y la frecuencia de muestreo (<code>sampling_rate</code>). | |
| Grafiquemos este sonido usando la función <code>waveshow()</code> de librosa:`,da,Q,ua,T,Tt='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/waveform_plot.png" alt="Waveform plot"/>',ma,A,yt=`Esta representación grafica la amplitud de la señal en el eje y y el tiempo en el eje x. En otras palabras, cada punto corresponde | |
| a un único valor de muestra que se tomó cuando se muestreó este sonido. También es importante tener en cuenta que librosa devuelve | |
| el audio en forma de valores de punto flotante y que los valores de amplitud se encuentran dentro del rango [-1.0, 1.0].`,ca,K,Ct=`Visualizar el audio junto con escucharlo puede ser una herramienta útil para comprender los datos con los que estás trabajando. | |
| Puedes observar la forma de la señal, identificar patrones y aprender a detectar ruido o distorsión. | |
| Si preprocesas los datos de alguna manera, como normalización, remuestreo o filtrado, puedes confirmar visualmente que los pasos | |
| de preprocesamiento se hayan aplicado correctamente.`,pa,O,Mt=`Después de entrenar un modelo, también puedes visualizar las muestras donde se producen errores (por ejemplo, en una tarea de | |
| clasificación de audio) para solucionar el problema. Esto te permitirá depurar y entender mejor las áreas en las que el modelo | |
| puede tener dificultades o errores.`,fa,ee,va,ae,wt=`Otra forma de visualizar los datos de audio es graficar el espectro de frecuencia de una señal de audio, | |
| también conocido como la representación en el dominio de la frecuencia. El espectro se calcula utilizando la transformada | |
| discreta de Fourier o DFT. Describe las frecuencias individuales que componen la señal y su intensidad.`,ba,te,qt=`Grafiquemos el espectro de frecuencia para el mismo sonido de trompeta mediante el cálculo de la transformada discreta de Fourier (DFT) | |
| utilizando la función rfft() de numpy. Si bien es posible trazar el espectro de toda la señal de audio, es más útil observar una pequeña | |
| región en su lugar. Aquí tomaremos la DFT de los primeros 4096 valores de muestra, que es aproximadamente la duración de la primera nota | |
| que se está tocando:`,ga,se,xa,y,$t='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrum_plot.png" alt="Spectrum plot"/>',Ta,ne,_t=`Esto representa la intensidad de los diferentes componentes de frecuencia que están presentes en este segmento de audio. | |
| Los valores de frecuencia se encuentran en el eje x, generalmente representados en una escala logarítmica, mientras que | |
| las amplitudes se encuentran en el eje y.`,ya,le,jt=`El espectro de frecuencia que hemos graficado muestra varios picos. Estos picos corresponden a los armónicos de la nota que se está tocando, | |
| siendo los armónicos más altos(en frecuencia) los más silenciosos. Dado que el primer pico se encuentra alrededor de 620 Hz, este es el espectro | |
| de frecuencia de una nota Mi♭.`,Ca,oe,ht=`La salida de la DFT es una matriz de números complejos, compuestos por componentes reales e imaginarios. Tomar la magnitud con np.abs(dft) | |
| extrae la información de amplitud del espectrograma. El ángulo entre los componentes reales e imaginarios proporciona el llamado espectro | |
| de fase, pero esto a menudo se descarta en aplicaciones de aprendizaje automático.`,Ma,ie,Jt=`Utilizamos <code>librosa.amplitude_to_db()</code> para convertir los valores de amplitud a la escala de decibelios, lo que facilita ver los detalles más | |
| sutiles en el espectro. A veces, las personas utilizan el <strong>espectro de potencia</strong>, que mide la energía en lugar de la amplitud; esto es simplemente | |
| un espectro con los valores de amplitud elevados al cuadrado.+`,wa,C,qa,re,zt=`El espectro de frecuencia de una señal de audio contiene exactamente la misma información que su representación en el dominio | |
| del tiempo(forma de onda); simplemente son dos formas diferentes de ver los mismos datos (en este caso, los primeros 4096 valores | |
| de muestra del sonido de trompeta). Mientras que la forma de onda representa la amplitud de la señal de audio a lo largo del tiempo, | |
| el espectro visualiza las amplitudes de las frecuencias individuales en un punto fijo en el tiempo.`,$a,de,_a,ue,Bt=`¿Y si queremos ver cómo cambian las frecuencias en una señal de audio? La trompeta toca varias notas que tienen diferentes frecuencias. | |
| El problema es que el espectro solo es una foto fija de las frecuencias en un instante determinado. La solución es tomar múltiples DFT, | |
| cada una abarcando un pequeño fragmento de la señal, y luego apilar los espectros resultantes en un <strong>espectrograma</strong>.`,ja,me,Et=`Un espectrograma grafica el contenido frecuencial de una señal de audio a medida que cambia en el tiempo. Esto nos permite ver en la | |
| misma gráfica la información de tiempo, frecuencia y amplitud. El algoritmo que permite hacer este representación se conoce como STFT o | |
| Transformada de tiempo corto de Fourier.`,ha,ce,Gt=`El espectrograma es una de las herramientas más útiles disponibles. Por ejemplo, cuando estamos trabajando con una grabación de música, | |
| podemos ver como contribuye cada instrumento y las voces al sonido general. En el habla, se pueden identificar los difrerentes | |
| sonidos de las vocales ya que cada vocal esta caracterizada por frecuencias particulares.`,Ja,pe,Lt="Grafiquemos ahora un espectrograma del mismo sonido de trompeta, usando las funciones de librosa <code>stft()</code> y <code>specshow()</code>:",za,fe,Ba,M,Ht='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrogram_plot.png" alt="Spectrogram plot"/>',Ea,ve,kt=`En este gráfico, el eje x representa el tiempo al igual que en la visulización de la forma de onda sin embargo el eje y ahora representa la | |
| frecuencia en hertz(Hz). La intensidad del color representa el nivel en decibelios (dB) de las componentes de frecuencia en cada punto del tiempo.`,Ga,be,Pt=`El espectrograma es creado al tomar pequeños segmentos de la señal de audio, comunmente de unos cuantos milisegundos y calculando | |
| la transformada discreta de Fourier de cada segmento para obtener el espectro en frecuencia. Estos espectros se concatenan a lo | |
| largo del eje temporal para crear un espectrograma. Cada columna en la imagen corresponde a un espectro de frecuencia, Por defecto, | |
| la función <code>librosa.stft()</code> divide la señal en segmentos de 2048 muestras, lo que ofrece un buen resultado | |
| para la resolución en frecuencia y la resolución temporal.`,La,ge,Ft=`Dado que el espectrograma y la forma de onda son diferentes representaciones de los mismos datos, es posible convertir el | |
| espectrograma nuevamente en la forma de onda original utilizando la STFT inversa (transformada de Fourier de tiempo corto inversa). | |
| Sin embargo, esto requiere tanto la información de amplitud como la información de fase. Si el espectrograma fue generado por un | |
| modelo de aprendizaje automático, típicamente solo se genera la información de amplitud. En ese caso, podemos utilizar un algoritmo | |
| de reconstrucción de fase clásico como el algoritmo de Griffin-Lim, o utilizar una red neuronal llamada vocoder, para reconstruir una | |
| forma de onda a partir del espectrograma.`,Ha,xe,It=`Los espectrogramas no solo se utilizan para visualización. Muchos modelos de aprendizaje automático toman espectrogramas como entrada, | |
| en lugar de formas de onda, y producen espectrogramas como salida.`,ka,Te,Ut=`Ahora que sabemos qué es un espectrograma y cómo se genera, echemos un vistazo a una variante ampliamente utilizada en el procesamiento | |
| del habla: el espectrograma de mel.`,Pa,ye,Fa,Ce,Wt=`Un espectrograma mel es una variante del espectrograma que se utiliza comúnmente en el procesamiento del habla y en tareas de aprendizaje | |
| automático. Es similar a un espectrograma en el sentido de que muestra el contenido de frecuencia de una señal de audio a lo largo del tiempo, | |
| pero en un eje de frecuencia diferente.`,Ia,Me,Zt=`En un espectrograma estándar, el eje de frecuencia es lineal y se mide en hercios (Hz). Sin embargo, el sistema auditivo humano | |
| es más sensible a los cambios en las frecuencias bajas que en las frecuencias altas, y esta sensibilidad disminuye de manera logarítmica | |
| a medida que la frecuencia aumenta. La escala mel es una escala perceptual que aproxima la respuesta de frecuencia no lineal del oído humano.`,Ua,we,St=`Para crear un espectrograma de mel, se utiliza la STFT de la misma manera que vimos antes, dividiendo el audio en segmentos cortos para | |
| obtener una secuencia de espectros de frecuencia. Además, cada espectro se pasa a través de un conjunto de filtros(banco de filtros de mel) | |
| para transformar las frecuencias a la escala de mel.`,Wa,qe,Xt="Obsrevemos como podemos obtener el espectrograma de mel usando la función <code>melspectrogram()</code> de librosa, que realiza todos los pasos anteriores:",Za,$e,Sa,w,Dt='<img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/mel-spectrogram.png" alt="Mel spectrogram plot"/>',Xa,_e,Rt=`En el ejemplo anterior, <code>n_mels</code> representa el número de bandas de mel que se generarán. Las bandas de mel definen un conjunto de | |
| rangos de frecuencia que dividen el espectro en componentes significativos desde el punto de vista perceptual, utilizando un | |
| conjunto de filtros cuya forma y espaciado se eligen para imitar la forma en que el oído humano responde a diferentes frecuencias. | |
| Los valores comunes para <code>n_mels</code> son 40 o 80. <code>fmax</code> indica la frecuencia más alta (en Hz) que nos interesa.`,Da,je,Yt=`Al igual que con un espectrograma regular, es práctica común expresar la intensidad de los componentes de frecuencia de mel en decibelios. | |
| Esto se conoce comúnmente como un <strong>espectrograma logarítmico de mel</strong>, porque la conversión a decibelios implica una operación logarítmica. | |
| El ejemplo anterior se usó <code>librosa.power_to_db()</code> ya que la función <code>librosa.feature.melspectrogram()</code> crea un espectrograma de potencia.`,Ra,q,Ya,he,Vt=`La creación de un espectrograma mel es una operación con pérdidas, ya que implica filtrar la señal. Convertir un espectrograma de mel de | |
| nuevo en una forma de onda es más difícil que hacerlo para un espectrograma regular, ya que requiere estimar las frecuencias que se eliminaron. | |
| Es por eso que se necesitan modelos de aprendizaje automático como el vocoder HiFiGAN para producir una forma de onda a partir de un espectrograma de mel.`,Va,Je,Nt=`En comparación con un espectrograma estándar, un espectrograma mel captura características más significativas de la señal de audio para la percepción humana, | |
| lo que lo convierte en una opción popular en tareas como el reconocimiento de voz, la identificación de hablantes y la clasificación de géneros musicales.`,Na,ze,Qt="Ahora que sabes cómo visualizar datos de audio, trata de ver cómo se ven tus sonidos favoritos. :)",Qa,Be,Aa,Pe,Ka;return $=new Ge({props:{title:"Introducción a los datos de audio",local:"introducción-a-los-datos-de-audio",headingTag:"h1"}}),J=new Ge({props:{title:"Muestreo y frecuencia de muestreo",local:"muestreo-y-frecuencia-de-muestreo",headingTag:"h2"}}),H=new Ge({props:{title:"Amplitud y profundidad de bits",local:"amplitud-y-profundidad-de-bits",headingTag:"h2"}}),Z=new Ge({props:{title:"Audio como forma de onda",local:"audio-como-forma-de-onda",headingTag:"h2"}}),R=new ke({props:{code:"cGlwJTIwaW5zdGFsbCUyMGxpYnJvc2E=",highlighted:"pip install librosa",wrap:!1}}),V=new ke({props:{code:"aW1wb3J0JTIwbGlicm9zYSUwQSUwQWFycmF5JTJDJTIwc2FtcGxpbmdfcmF0ZSUyMCUzRCUyMGxpYnJvc2EubG9hZChsaWJyb3NhLmV4KCUyMnRydW1wZXQlMjIpKQ==",highlighted:`<span class="hljs-keyword">import</span> librosa | |
| array, sampling_rate = librosa.load(librosa.ex(<span class="hljs-string">"trumpet"</span>))`,wrap:!1}}),Q=new ke({props:{code:"aW1wb3J0JTIwbWF0cGxvdGxpYi5weXBsb3QlMjBhcyUyMHBsdCUwQWltcG9ydCUyMGxpYnJvc2EuZGlzcGxheSUwQSUwQXBsdC5maWd1cmUoKS5zZXRfZmlnd2lkdGgoMTIpJTBBbGlicm9zYS5kaXNwbGF5LndhdmVzaG93KGFycmF5JTJDJTIwc3IlM0RzYW1wbGluZ19yYXRlKQ==",highlighted:`<span class="hljs-keyword">import</span> matplotlib.pyplot <span class="hljs-keyword">as</span> plt | |
| <span class="hljs-keyword">import</span> librosa.display | |
| plt.figure().set_figwidth(<span class="hljs-number">12</span>) | |
| librosa.display.waveshow(array, sr=sampling_rate)`,wrap:!1}}),ee=new Ge({props:{title:"El espectro de frecuencia",local:"el-espectro-de-frecuencia",headingTag:"h2"}}),se=new ke({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBZGZ0X2lucHV0JTIwJTNEJTIwYXJyYXklNUIlM0E0MDk2JTVEJTBBJTBBJTIzJTIwY2FsY3VsYXIlMjBsYSUyMERGVCUwQXdpbmRvdyUyMCUzRCUyMG5wLmhhbm5pbmcobGVuKGRmdF9pbnB1dCkpJTBBd2luZG93ZWRfaW5wdXQlMjAlM0QlMjBkZnRfaW5wdXQlMjAqJTIwd2luZG93JTBBZGZ0JTIwJTNEJTIwbnAuZmZ0LnJmZnQod2luZG93ZWRfaW5wdXQpJTBBJTBBJTIzJTIwb2J0ZW5lciUyMGxhJTIwYW1wbGl0dWQlMjBkZWwlMjBlc3BlY3RybyUyMGVuJTIwZGVjaWJlbGVzJTBBYW1wbGl0dWRlJTIwJTNEJTIwbnAuYWJzKGRmdCklMEFhbXBsaXR1ZGVfZGIlMjAlM0QlMjBsaWJyb3NhLmFtcGxpdHVkZV90b19kYihhbXBsaXR1ZGUlMkMlMjByZWYlM0RucC5tYXgpJTBBJTBBJTIzJTIwT2J0ZW5lciUyMGxvcyUyMGJpbnMlMjBkZSUyMGZyZWN1ZW5jaWElMEFmcmVxdWVuY3klMjAlM0QlMjBsaWJyb3NhLmZmdF9mcmVxdWVuY2llcyhzciUzRHNhbXBsaW5nX3JhdGUlMkMlMjBuX2ZmdCUzRGxlbihkZnRfaW5wdXQpKSUwQSUwQXBsdC5maWd1cmUoKS5zZXRfZmlnd2lkdGgoMTIpJTBBcGx0LnBsb3QoZnJlcXVlbmN5JTJDJTIwYW1wbGl0dWRlX2RiKSUwQXBsdC54bGFiZWwoJTIyRnJlcXVlbmN5JTIwKEh6KSUyMiklMEFwbHQueWxhYmVsKCUyMkFtcGxpdHVkZSUyMChkQiklMjIpJTBBcGx0LnhzY2FsZSglMjJsb2clMjIp",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| dft_input = array[:<span class="hljs-number">4096</span>] | |
| <span class="hljs-comment"># calcular la DFT</span> | |
| window = np.hanning(<span class="hljs-built_in">len</span>(dft_input)) | |
| windowed_input = dft_input * window | |
| dft = np.fft.rfft(windowed_input) | |
| <span class="hljs-comment"># obtener la amplitud del espectro en decibeles</span> | |
| amplitude = np.<span class="hljs-built_in">abs</span>(dft) | |
| amplitude_db = librosa.amplitude_to_db(amplitude, ref=np.<span class="hljs-built_in">max</span>) | |
| <span class="hljs-comment"># Obtener los bins de frecuencia</span> | |
| frequency = librosa.fft_frequencies(sr=sampling_rate, n_fft=<span class="hljs-built_in">len</span>(dft_input)) | |
| plt.figure().set_figwidth(<span class="hljs-number">12</span>) | |
| plt.plot(frequency, amplitude_db) | |
| plt.xlabel(<span class="hljs-string">"Frequency (Hz)"</span>) | |
| plt.ylabel(<span class="hljs-string">"Amplitude (dB)"</span>) | |
| plt.xscale(<span class="hljs-string">"log"</span>)`,wrap:!1}}),C=new es({props:{$$slots:{default:[ms]},$$scope:{ctx:Le}}}),de=new Ge({props:{title:"Espectrograma",local:"espectrograma",headingTag:"h2"}}),fe=new ke({props:{code:"aW1wb3J0JTIwbnVtcHklMjBhcyUyMG5wJTBBJTBBRCUyMCUzRCUyMGxpYnJvc2Euc3RmdChhcnJheSklMEFTX2RiJTIwJTNEJTIwbGlicm9zYS5hbXBsaXR1ZGVfdG9fZGIobnAuYWJzKEQpJTJDJTIwcmVmJTNEbnAubWF4KSUwQSUwQXBsdC5maWd1cmUoKS5zZXRfZmlnd2lkdGgoMTIpJTBBbGlicm9zYS5kaXNwbGF5LnNwZWNzaG93KFNfZGIlMkMlMjB4X2F4aXMlM0QlMjJ0aW1lJTIyJTJDJTIweV9heGlzJTNEJTIyaHolMjIpJTBBcGx0LmNvbG9yYmFyKCk=",highlighted:`<span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| D = librosa.stft(array) | |
| S_db = librosa.amplitude_to_db(np.<span class="hljs-built_in">abs</span>(D), ref=np.<span class="hljs-built_in">max</span>) | |
| plt.figure().set_figwidth(<span class="hljs-number">12</span>) | |
| librosa.display.specshow(S_db, x_axis=<span class="hljs-string">"time"</span>, y_axis=<span class="hljs-string">"hz"</span>) | |
| plt.colorbar()`,wrap:!1}}),ye=new Ge({props:{title:"Espectrograma de Mel",local:"espectrograma-de-mel",headingTag:"h2"}}),$e=new ke({props:{code:"UyUyMCUzRCUyMGxpYnJvc2EuZmVhdHVyZS5tZWxzcGVjdHJvZ3JhbSh5JTNEYXJyYXklMkMlMjBzciUzRHNhbXBsaW5nX3JhdGUlMkMlMjBuX21lbHMlM0QxMjglMkMlMjBmbWF4JTNEODAwMCklMEFTX2RCJTIwJTNEJTIwbGlicm9zYS5wb3dlcl90b19kYihTJTJDJTIwcmVmJTNEbnAubWF4KSUwQSUwQXBsdC5maWd1cmUoKS5zZXRfZmlnd2lkdGgoMTIpJTBBbGlicm9zYS5kaXNwbGF5LnNwZWNzaG93KFNfZEIlMkMlMjB4X2F4aXMlM0QlMjJ0aW1lJTIyJTJDJTIweV9heGlzJTNEJTIybWVsJTIyJTJDJTIwc3IlM0RzYW1wbGluZ19yYXRlJTJDJTIwZm1heCUzRDgwMDApJTBBcGx0LmNvbG9yYmFyKCk=",highlighted:`S = librosa.feature.melspectrogram(y=array, sr=sampling_rate, n_mels=<span class="hljs-number">128</span>, fmax=<span class="hljs-number">8000</span>) | |
| S_dB = librosa.power_to_db(S, ref=np.<span class="hljs-built_in">max</span>) | |
| plt.figure().set_figwidth(<span class="hljs-number">12</span>) | |
| librosa.display.specshow(S_dB, x_axis=<span class="hljs-string">"time"</span>, y_axis=<span class="hljs-string">"mel"</span>, sr=sampling_rate, fmax=<span class="hljs-number">8000</span>) | |
| plt.colorbar()`,wrap:!1}}),q=new es({props:{$$slots:{default:[cs]},$$scope:{ctx:Le}}}),Be=new us({props:{source:"https://github.com/huggingface/audio-transformers-course/blob/main/chapters/es/chapter1/audio_data.mdx"}}),{c(){d=o("meta"),b=n(),g=o("p"),He=n(),u($.$$.fragment),Fe=n(),_=o("p"),_.textContent=Oa,Ie=n(),j=o("p"),j.innerHTML=et,Ue=n(),h=o("p"),h.textContent=at,We=n(),u(J.$$.fragment),Ze=n(),z=o("p"),z.textContent=tt,Se=n(),x=o("div"),x.innerHTML=st,Xe=n(),B=o("p"),B.innerHTML=nt,De=n(),E=o("p"),E.innerHTML=lt,Re=n(),G=o("p"),G.textContent=ot,Ye=n(),L=o("p"),L.innerHTML=it,Ve=n(),u(H.$$.fragment),Ne=n(),k=o("p"),k.textContent=rt,Qe=n(),P=o("p"),P.innerHTML=dt,Ae=n(),F=o("p"),F.textContent=ut,Ke=n(),I=o("p"),I.textContent=mt,Oe=n(),U=o("p"),U.textContent=ct,ea=n(),W=o("p"),W.textContent=pt,aa=n(),u(Z.$$.fragment),ta=n(),S=o("p"),S.innerHTML=ft,sa=n(),X=o("p"),X.textContent=vt,na=n(),D=o("p"),D.innerHTML=bt,la=n(),u(R.$$.fragment),oa=n(),Y=o("p"),Y.textContent=gt,ia=n(),u(V.$$.fragment),ra=n(),N=o("p"),N.innerHTML=xt,da=n(),u(Q.$$.fragment),ua=n(),T=o("div"),T.innerHTML=Tt,ma=n(),A=o("p"),A.textContent=yt,ca=n(),K=o("p"),K.textContent=Ct,pa=n(),O=o("p"),O.textContent=Mt,fa=n(),u(ee.$$.fragment),va=n(),ae=o("p"),ae.textContent=wt,ba=n(),te=o("p"),te.textContent=qt,ga=n(),u(se.$$.fragment),xa=n(),y=o("div"),y.innerHTML=$t,Ta=n(),ne=o("p"),ne.textContent=_t,ya=n(),le=o("p"),le.textContent=jt,Ca=n(),oe=o("p"),oe.textContent=ht,Ma=n(),ie=o("p"),ie.innerHTML=Jt,wa=n(),u(C.$$.fragment),qa=n(),re=o("p"),re.textContent=zt,$a=n(),u(de.$$.fragment),_a=n(),ue=o("p"),ue.innerHTML=Bt,ja=n(),me=o("p"),me.textContent=Et,ha=n(),ce=o("p"),ce.textContent=Gt,Ja=n(),pe=o("p"),pe.innerHTML=Lt,za=n(),u(fe.$$.fragment),Ba=n(),M=o("div"),M.innerHTML=Ht,Ea=n(),ve=o("p"),ve.textContent=kt,Ga=n(),be=o("p"),be.innerHTML=Pt,La=n(),ge=o("p"),ge.textContent=Ft,Ha=n(),xe=o("p"),xe.textContent=It,ka=n(),Te=o("p"),Te.textContent=Ut,Pa=n(),u(ye.$$.fragment),Fa=n(),Ce=o("p"),Ce.textContent=Wt,Ia=n(),Me=o("p"),Me.textContent=Zt,Ua=n(),we=o("p"),we.textContent=St,Wa=n(),qe=o("p"),qe.innerHTML=Xt,Za=n(),u($e.$$.fragment),Sa=n(),w=o("div"),w.innerHTML=Dt,Xa=n(),_e=o("p"),_e.innerHTML=Rt,Da=n(),je=o("p"),je.innerHTML=Yt,Ra=n(),u(q.$$.fragment),Ya=n(),he=o("p"),he.textContent=Vt,Va=n(),Je=o("p"),Je.textContent=Nt,Na=n(),ze=o("p"),ze.textContent=Qt,Qa=n(),u(Be.$$.fragment),Aa=n(),Pe=o("p"),this.h()},l(e){const a=os("svelte-u9bgzb",document.head);d=i(a,"META",{name:!0,content:!0}),a.forEach(t),b=l(e),g=i(e,"P",{}),Ot(g).forEach(t),He=l(e),m($.$$.fragment,e),Fe=l(e),_=i(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-vglwpc"&&(_.textContent=Oa),Ie=l(e),j=i(e,"P",{"data-svelte-h":!0}),r(j)!=="svelte-vfea13"&&(j.innerHTML=et),Ue=l(e),h=i(e,"P",{"data-svelte-h":!0}),r(h)!=="svelte-13n2irf"&&(h.textContent=at),We=l(e),m(J.$$.fragment,e),Ze=l(e),z=i(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-19mcb4k"&&(z.textContent=tt),Se=l(e),x=i(e,"DIV",{class:!0,"data-svelte-h":!0}),r(x)!=="svelte-1g809yq"&&(x.innerHTML=st),Xe=l(e),B=i(e,"P",{"data-svelte-h":!0}),r(B)!=="svelte-1bcv9f5"&&(B.innerHTML=nt),De=l(e),E=i(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-dflhrg"&&(E.innerHTML=lt),Re=l(e),G=i(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-1q8d7ov"&&(G.textContent=ot),Ye=l(e),L=i(e,"P",{"data-svelte-h":!0}),r(L)!=="svelte-lw35og"&&(L.innerHTML=it),Ve=l(e),m(H.$$.fragment,e),Ne=l(e),k=i(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-1byp2kz"&&(k.textContent=rt),Qe=l(e),P=i(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-xha3t7"&&(P.innerHTML=dt),Ae=l(e),F=i(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-1wfo8at"&&(F.textContent=ut),Ke=l(e),I=i(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-mtj7us"&&(I.textContent=mt),Oe=l(e),U=i(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-b73hql"&&(U.textContent=ct),ea=l(e),W=i(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-s1kauj"&&(W.textContent=pt),aa=l(e),m(Z.$$.fragment,e),ta=l(e),S=i(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-r03sdc"&&(S.innerHTML=ft),sa=l(e),X=i(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-1jaqavx"&&(X.textContent=vt),na=l(e),D=i(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-nav12"&&(D.innerHTML=bt),la=l(e),m(R.$$.fragment,e),oa=l(e),Y=i(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-13jm96f"&&(Y.textContent=gt),ia=l(e),m(V.$$.fragment,e),ra=l(e),N=i(e,"P",{"data-svelte-h":!0}),r(N)!=="svelte-yap478"&&(N.innerHTML=xt),da=l(e),m(Q.$$.fragment,e),ua=l(e),T=i(e,"DIV",{class:!0,"data-svelte-h":!0}),r(T)!=="svelte-1cse5se"&&(T.innerHTML=Tt),ma=l(e),A=i(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-kontn5"&&(A.textContent=yt),ca=l(e),K=i(e,"P",{"data-svelte-h":!0}),r(K)!=="svelte-13qajpk"&&(K.textContent=Ct),pa=l(e),O=i(e,"P",{"data-svelte-h":!0}),r(O)!=="svelte-1si1izj"&&(O.textContent=Mt),fa=l(e),m(ee.$$.fragment,e),va=l(e),ae=i(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-1w3lgn1"&&(ae.textContent=wt),ba=l(e),te=i(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-11qmiz5"&&(te.textContent=qt),ga=l(e),m(se.$$.fragment,e),xa=l(e),y=i(e,"DIV",{class:!0,"data-svelte-h":!0}),r(y)!=="svelte-1eg4i6m"&&(y.innerHTML=$t),Ta=l(e),ne=i(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-1g2mnp4"&&(ne.textContent=_t),ya=l(e),le=i(e,"P",{"data-svelte-h":!0}),r(le)!=="svelte-4qm4i9"&&(le.textContent=jt),Ca=l(e),oe=i(e,"P",{"data-svelte-h":!0}),r(oe)!=="svelte-1o50who"&&(oe.textContent=ht),Ma=l(e),ie=i(e,"P",{"data-svelte-h":!0}),r(ie)!=="svelte-7qwa9p"&&(ie.innerHTML=Jt),wa=l(e),m(C.$$.fragment,e),qa=l(e),re=i(e,"P",{"data-svelte-h":!0}),r(re)!=="svelte-179g5u2"&&(re.textContent=zt),$a=l(e),m(de.$$.fragment,e),_a=l(e),ue=i(e,"P",{"data-svelte-h":!0}),r(ue)!=="svelte-1gne02w"&&(ue.innerHTML=Bt),ja=l(e),me=i(e,"P",{"data-svelte-h":!0}),r(me)!=="svelte-3mt9e4"&&(me.textContent=Et),ha=l(e),ce=i(e,"P",{"data-svelte-h":!0}),r(ce)!=="svelte-1slunkn"&&(ce.textContent=Gt),Ja=l(e),pe=i(e,"P",{"data-svelte-h":!0}),r(pe)!=="svelte-new0ms"&&(pe.innerHTML=Lt),za=l(e),m(fe.$$.fragment,e),Ba=l(e),M=i(e,"DIV",{class:!0,"data-svelte-h":!0}),r(M)!=="svelte-b6kbs6"&&(M.innerHTML=Ht),Ea=l(e),ve=i(e,"P",{"data-svelte-h":!0}),r(ve)!=="svelte-d8eo76"&&(ve.textContent=kt),Ga=l(e),be=i(e,"P",{"data-svelte-h":!0}),r(be)!=="svelte-qq2qqz"&&(be.innerHTML=Pt),La=l(e),ge=i(e,"P",{"data-svelte-h":!0}),r(ge)!=="svelte-1hp6n5i"&&(ge.textContent=Ft),Ha=l(e),xe=i(e,"P",{"data-svelte-h":!0}),r(xe)!=="svelte-y0tpi2"&&(xe.textContent=It),ka=l(e),Te=i(e,"P",{"data-svelte-h":!0}),r(Te)!=="svelte-1ylhaov"&&(Te.textContent=Ut),Pa=l(e),m(ye.$$.fragment,e),Fa=l(e),Ce=i(e,"P",{"data-svelte-h":!0}),r(Ce)!=="svelte-c9z56k"&&(Ce.textContent=Wt),Ia=l(e),Me=i(e,"P",{"data-svelte-h":!0}),r(Me)!=="svelte-1ayrdzo"&&(Me.textContent=Zt),Ua=l(e),we=i(e,"P",{"data-svelte-h":!0}),r(we)!=="svelte-17x4zy7"&&(we.textContent=St),Wa=l(e),qe=i(e,"P",{"data-svelte-h":!0}),r(qe)!=="svelte-dixcfj"&&(qe.innerHTML=Xt),Za=l(e),m($e.$$.fragment,e),Sa=l(e),w=i(e,"DIV",{class:!0,"data-svelte-h":!0}),r(w)!=="svelte-1soplef"&&(w.innerHTML=Dt),Xa=l(e),_e=i(e,"P",{"data-svelte-h":!0}),r(_e)!=="svelte-11wlk2q"&&(_e.innerHTML=Rt),Da=l(e),je=i(e,"P",{"data-svelte-h":!0}),r(je)!=="svelte-1usrhsf"&&(je.innerHTML=Yt),Ra=l(e),m(q.$$.fragment,e),Ya=l(e),he=i(e,"P",{"data-svelte-h":!0}),r(he)!=="svelte-csbj6"&&(he.textContent=Vt),Va=l(e),Je=i(e,"P",{"data-svelte-h":!0}),r(Je)!=="svelte-1w59gau"&&(Je.textContent=Nt),Na=l(e),ze=i(e,"P",{"data-svelte-h":!0}),r(ze)!=="svelte-tlj3wy"&&(ze.textContent=Qt),Qa=l(e),m(Be.$$.fragment,e),Aa=l(e),Pe=i(e,"P",{}),Ot(Pe).forEach(t),this.h()},h(){Ee(d,"name","hf:doc:metadata"),Ee(d,"content",fs),Ee(x,"class","flex justify-center"),Ee(T,"class","flex justify-center"),Ee(y,"class","flex justify-center"),Ee(M,"class","flex justify-center"),Ee(w,"class","flex justify-center")},m(e,a){is(document.head,d),s(e,b,a),s(e,g,a),s(e,He,a),c($,e,a),s(e,Fe,a),s(e,_,a),s(e,Ie,a),s(e,j,a),s(e,Ue,a),s(e,h,a),s(e,We,a),c(J,e,a),s(e,Ze,a),s(e,z,a),s(e,Se,a),s(e,x,a),s(e,Xe,a),s(e,B,a),s(e,De,a),s(e,E,a),s(e,Re,a),s(e,G,a),s(e,Ye,a),s(e,L,a),s(e,Ve,a),c(H,e,a),s(e,Ne,a),s(e,k,a),s(e,Qe,a),s(e,P,a),s(e,Ae,a),s(e,F,a),s(e,Ke,a),s(e,I,a),s(e,Oe,a),s(e,U,a),s(e,ea,a),s(e,W,a),s(e,aa,a),c(Z,e,a),s(e,ta,a),s(e,S,a),s(e,sa,a),s(e,X,a),s(e,na,a),s(e,D,a),s(e,la,a),c(R,e,a),s(e,oa,a),s(e,Y,a),s(e,ia,a),c(V,e,a),s(e,ra,a),s(e,N,a),s(e,da,a),c(Q,e,a),s(e,ua,a),s(e,T,a),s(e,ma,a),s(e,A,a),s(e,ca,a),s(e,K,a),s(e,pa,a),s(e,O,a),s(e,fa,a),c(ee,e,a),s(e,va,a),s(e,ae,a),s(e,ba,a),s(e,te,a),s(e,ga,a),c(se,e,a),s(e,xa,a),s(e,y,a),s(e,Ta,a),s(e,ne,a),s(e,ya,a),s(e,le,a),s(e,Ca,a),s(e,oe,a),s(e,Ma,a),s(e,ie,a),s(e,wa,a),c(C,e,a),s(e,qa,a),s(e,re,a),s(e,$a,a),c(de,e,a),s(e,_a,a),s(e,ue,a),s(e,ja,a),s(e,me,a),s(e,ha,a),s(e,ce,a),s(e,Ja,a),s(e,pe,a),s(e,za,a),c(fe,e,a),s(e,Ba,a),s(e,M,a),s(e,Ea,a),s(e,ve,a),s(e,Ga,a),s(e,be,a),s(e,La,a),s(e,ge,a),s(e,Ha,a),s(e,xe,a),s(e,ka,a),s(e,Te,a),s(e,Pa,a),c(ye,e,a),s(e,Fa,a),s(e,Ce,a),s(e,Ia,a),s(e,Me,a),s(e,Ua,a),s(e,we,a),s(e,Wa,a),s(e,qe,a),s(e,Za,a),c($e,e,a),s(e,Sa,a),s(e,w,a),s(e,Xa,a),s(e,_e,a),s(e,Da,a),s(e,je,a),s(e,Ra,a),c(q,e,a),s(e,Ya,a),s(e,he,a),s(e,Va,a),s(e,Je,a),s(e,Na,a),s(e,ze,a),s(e,Qa,a),c(Be,e,a),s(e,Aa,a),s(e,Pe,a),Ka=!0},p(e,[a]){const At={};a&2&&(At.$$scope={dirty:a,ctx:e}),C.$set(At);const Kt={};a&2&&(Kt.$$scope={dirty:a,ctx:e}),q.$set(Kt)},i(e){Ka||(p($.$$.fragment,e),p(J.$$.fragment,e),p(H.$$.fragment,e),p(Z.$$.fragment,e),p(R.$$.fragment,e),p(V.$$.fragment,e),p(Q.$$.fragment,e),p(ee.$$.fragment,e),p(se.$$.fragment,e),p(C.$$.fragment,e),p(de.$$.fragment,e),p(fe.$$.fragment,e),p(ye.$$.fragment,e),p($e.$$.fragment,e),p(q.$$.fragment,e),p(Be.$$.fragment,e),Ka=!0)},o(e){f($.$$.fragment,e),f(J.$$.fragment,e),f(H.$$.fragment,e),f(Z.$$.fragment,e),f(R.$$.fragment,e),f(V.$$.fragment,e),f(Q.$$.fragment,e),f(ee.$$.fragment,e),f(se.$$.fragment,e),f(C.$$.fragment,e),f(de.$$.fragment,e),f(fe.$$.fragment,e),f(ye.$$.fragment,e),f($e.$$.fragment,e),f(q.$$.fragment,e),f(Be.$$.fragment,e),Ka=!1},d(e){e&&(t(b),t(g),t(He),t(Fe),t(_),t(Ie),t(j),t(Ue),t(h),t(We),t(Ze),t(z),t(Se),t(x),t(Xe),t(B),t(De),t(E),t(Re),t(G),t(Ye),t(L),t(Ve),t(Ne),t(k),t(Qe),t(P),t(Ae),t(F),t(Ke),t(I),t(Oe),t(U),t(ea),t(W),t(aa),t(ta),t(S),t(sa),t(X),t(na),t(D),t(la),t(oa),t(Y),t(ia),t(ra),t(N),t(da),t(ua),t(T),t(ma),t(A),t(ca),t(K),t(pa),t(O),t(fa),t(va),t(ae),t(ba),t(te),t(ga),t(xa),t(y),t(Ta),t(ne),t(ya),t(le),t(Ca),t(oe),t(Ma),t(ie),t(wa),t(qa),t(re),t($a),t(_a),t(ue),t(ja),t(me),t(ha),t(ce),t(Ja),t(pe),t(za),t(Ba),t(M),t(Ea),t(ve),t(Ga),t(be),t(La),t(ge),t(Ha),t(xe),t(ka),t(Te),t(Pa),t(Fa),t(Ce),t(Ia),t(Me),t(Ua),t(we),t(Wa),t(qe),t(Za),t(Sa),t(w),t(Xa),t(_e),t(Da),t(je),t(Ra),t(Ya),t(he),t(Va),t(Je),t(Na),t(ze),t(Qa),t(Aa),t(Pe)),t(d),v($,e),v(J,e),v(H,e),v(Z,e),v(R,e),v(V,e),v(Q,e),v(ee,e),v(se,e),v(C,e),v(de,e),v(fe,e),v(ye,e),v($e,e),v(q,e),v(Be,e)}}}const fs='{"title":"Introducción a los datos de audio","local":"introducción-a-los-datos-de-audio","sections":[{"title":"Muestreo y frecuencia de muestreo","local":"muestreo-y-frecuencia-de-muestreo","sections":[],"depth":2},{"title":"Amplitud y profundidad de bits","local":"amplitud-y-profundidad-de-bits","sections":[],"depth":2},{"title":"Audio como forma de onda","local":"audio-como-forma-de-onda","sections":[],"depth":2},{"title":"El espectro de frecuencia","local":"el-espectro-de-frecuencia","sections":[],"depth":2},{"title":"Espectrograma","local":"espectrograma","sections":[],"depth":2},{"title":"Espectrograma de Mel","local":"espectrograma-de-mel","sections":[],"depth":2}],"depth":1}';function vs(Le){return ts(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Cs extends ns{constructor(d){super(),ls(this,d,vs,ps,as,{})}}export{Cs as component}; | |
Xet Storage Details
- Size:
- 39 kB
- Xet hash:
- 1093b944aea2c28c98fa5ebb95164dccac61d51d1b1799eed82fe2e756711804
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.