Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"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}"> | |
| <link href="/docs/audio-course/pr_239/es/_app/immutable/assets/0.e3b0c442.css" rel="modulepreload"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/entry/start.e5641179.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/scheduler.a045fce0.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/singletons.7110d700.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/index.2447c7d9.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/paths.6f512667.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/entry/app.aeb8f25d.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/preload-helper.efc34262.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/index.bc14ef44.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/nodes/0.e1906c03.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/each.e59479a4.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/nodes/5.46cd2301.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/Tip.3a2ad1d6.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/MermaidChart.svelte_svelte_type_style_lang.dd3847c1.js"> | |
| <link rel="modulepreload" href="/docs/audio-course/pr_239/es/_app/immutable/chunks/CodeBlock.39c0a862.js"><!-- HEAD_svelte-u9bgzb_START --><meta name="hf:doc:metadata" content="{"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}"><!-- HEAD_svelte-u9bgzb_END --> <p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"><div class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg></span> <span>Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg></button></div> </div> <h1 class="relative group"><a id="introducción-a-los-datos-de-audio" 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" href="#introducción-a-los-datos-de-audio"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Introducción a los datos de audio</span></h1> <p data-svelte-h="svelte-vglwpc">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.</p> <p data-svelte-h="svelte-vfea13">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.</p> <p data-svelte-h="svelte-13n2irf">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.</p> <h2 class="relative group"><a id="muestreo-y-frecuencia-de-muestreo" 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" href="#muestreo-y-frecuencia-de-muestreo"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Muestreo y frecuencia de muestreo</span></h2> <p data-svelte-h="svelte-19mcb4k">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.</p> <div class="flex justify-center" data-svelte-h="svelte-1g809yq"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/Signal_Sampling.png" alt="Signal sampling illustration"></div> <p data-svelte-h="svelte-1bcv9f5"><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></p> <p data-svelte-h="svelte-dflhrg">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.</p> <p data-svelte-h="svelte-1q8d7ov">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.</p> <p data-svelte-h="svelte-lw35og">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.</p> <h2 class="relative group"><a id="amplitud-y-profundidad-de-bits" 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" href="#amplitud-y-profundidad-de-bits"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Amplitud y profundidad de bits</span></h2> <p data-svelte-h="svelte-1byp2kz">Mientras que la frecuencia de muestreo te indica con qué frecuencia se toman las muestras, ¿Qué representan exactamente los valores en cada muestra?</p> <p data-svelte-h="svelte-xha3t7">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.</p> <p data-svelte-h="svelte-1wfo8at">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.</p> <p data-svelte-h="svelte-mtj7us">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.</p> <p data-svelte-h="svelte-b73hql">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.</p> <p data-svelte-h="svelte-s1kauj">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.</p> <h2 class="relative group"><a id="audio-como-forma-de-onda" 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" href="#audio-como-forma-de-onda"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Audio como forma de onda</span></h2> <p data-svelte-h="svelte-r03sdc">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.</p> <p data-svelte-h="svelte-1jaqavx">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.</p> <p data-svelte-h="svelte-nav12">Para graficar la forma de onda de una señal de audio, usamos una libreria de Python llamada <code>librosa</code>:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->pip install librosa<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-13jm96f">Carguemos un ejemplo de la libreria llamado “trumpet”:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><span class="hljs-keyword">import</span> librosa | |
| array, sampling_rate = librosa.load(librosa.ex(<span class="hljs-string">"trumpet"</span>))<!-- HTML_TAG_END --></pre></div> <p data-svelte-h="svelte-yap478">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:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><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)<!-- HTML_TAG_END --></pre></div> <div class="flex justify-center" data-svelte-h="svelte-1cse5se"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/waveform_plot.png" alt="Waveform plot"></div> <p data-svelte-h="svelte-kontn5">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].</p> <p data-svelte-h="svelte-13qajpk">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.</p> <p data-svelte-h="svelte-1si1izj">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.</p> <h2 class="relative group"><a id="el-espectro-de-frecuencia" 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" href="#el-espectro-de-frecuencia"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>El espectro de frecuencia</span></h2> <p data-svelte-h="svelte-1w3lgn1">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.</p> <p data-svelte-h="svelte-11qmiz5">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:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><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>)<!-- HTML_TAG_END --></pre></div> <div class="flex justify-center" data-svelte-h="svelte-1eg4i6m"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrum_plot.png" alt="Spectrum plot"></div> <p data-svelte-h="svelte-1g2mnp4">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.</p> <p data-svelte-h="svelte-4qm4i9">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♭.</p> <p data-svelte-h="svelte-1o50who">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.</p> <p data-svelte-h="svelte-7qwa9p">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.+</p> <blockquote class="tip">💡 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.</blockquote> <p data-svelte-h="svelte-179g5u2">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.</p> <h2 class="relative group"><a id="espectrograma" 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" href="#espectrograma"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Espectrograma</span></h2> <p data-svelte-h="svelte-1gne02w">¿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>.</p> <p data-svelte-h="svelte-3mt9e4">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.</p> <p data-svelte-h="svelte-1slunkn">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.</p> <p data-svelte-h="svelte-new0ms">Grafiquemos ahora un espectrograma del mismo sonido de trompeta, usando las funciones de librosa <code>stft()</code> y <code>specshow()</code>:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START --><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()<!-- HTML_TAG_END --></pre></div> <div class="flex justify-center" data-svelte-h="svelte-b6kbs6"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/spectrogram_plot.png" alt="Spectrogram plot"></div> <p data-svelte-h="svelte-d8eo76">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.</p> <p data-svelte-h="svelte-qq2qqz">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.</p> <p data-svelte-h="svelte-1hp6n5i">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.</p> <p data-svelte-h="svelte-y0tpi2">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.</p> <p data-svelte-h="svelte-1ylhaov">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.</p> <h2 class="relative group"><a id="espectrograma-de-mel" 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" href="#espectrograma-de-mel"><span><svg class="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg></span></a> <span>Espectrograma de Mel</span></h2> <p data-svelte-h="svelte-c9z56k">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.</p> <p data-svelte-h="svelte-1ayrdzo">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.</p> <p data-svelte-h="svelte-17x4zy7">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.</p> <p data-svelte-h="svelte-dixcfj">Obsrevemos como podemos obtener el espectrograma de mel usando la función <code>melspectrogram()</code> de librosa, que realiza todos los pasos anteriores:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg> <div class="absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0"><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent; "></div> Copied</div></button></div> <pre class=""><!-- HTML_TAG_START -->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()<!-- HTML_TAG_END --></pre></div> <div class="flex justify-center" data-svelte-h="svelte-1soplef"><img src="https://huggingface.co/datasets/huggingface-course/audio-course-images/resolve/main/mel-spectrogram.png" alt="Mel spectrogram plot"></div> <p data-svelte-h="svelte-11wlk2q">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.</p> <p data-svelte-h="svelte-1usrhsf">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.</p> <blockquote class="tip"><p data-svelte-h="svelte-16pjwjt">💡 ¡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.</p></blockquote> <p data-svelte-h="svelte-csbj6">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.</p> <p data-svelte-h="svelte-1w59gau">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.</p> <p data-svelte-h="svelte-tlj3wy">Ahora que sabes cómo visualizar datos de audio, trata de ver cómo se ven tus sonidos favoritos. :)</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/audio-transformers-course/blob/main/chapters/es/chapter1/audio_data.mdx" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg> <span data-svelte-h="svelte-zjs2n5"><span class="underline">Update</span> on GitHub</span></a> <p></p> | |
| <script> | |
| { | |
| __sveltekit_1t9zdhx = { | |
| assets: "/docs/audio-course/pr_239/es", | |
| base: "/docs/audio-course/pr_239/es", | |
| env: {} | |
| }; | |
| const element = document.currentScript.parentElement; | |
| const data = [null,null]; | |
| Promise.all([ | |
| import("/docs/audio-course/pr_239/es/_app/immutable/entry/start.e5641179.js"), | |
| import("/docs/audio-course/pr_239/es/_app/immutable/entry/app.aeb8f25d.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 5], | |
| data, | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 47.1 kB
- Xet hash:
- 9f64eb46189f4b634a2201aa754e9f4ed97d10acc53569864ccaf2df7199e4a5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.