<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Matias Di Bernardo</title><link>https://dibernardo.netlify.app/es/</link><description>Recent content on Matias Di Bernardo</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Matías Di Bernardo</copyright><lastBuildDate>Thu, 26 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://dibernardo.netlify.app/es/index.xml" rel="self" type="application/rss+xml"/><item><title>Algoritmo de optimización modal para recintos pequeños</title><link>https://dibernardo.netlify.app/es/p/algoritmo-de-optimizaci%C3%B3n-modal-para-recintos-peque%C3%B1os/</link><pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/algoritmo-de-optimizaci%C3%B3n-modal-para-recintos-peque%C3%B1os/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/port.PNG" alt="Featured image of post Algoritmo de optimización modal para recintos pequeños" />&lt;p>Este trabajo se desarrollo en el contexto de la materia &lt;em>Instrumentos y Mediciones Acústicas&lt;/em> en UNTREF Argentina.&lt;/p>
&lt;h3 id="introducción">&lt;strong>Introducción&lt;/strong>
&lt;/h3>&lt;p>Las salas de control y los entornos de escucha crítica a menudo sufren de respuestas acústicas irregulares en bajas frecuencias. Estas irregularidades, causadas por una distribución dispersa de los modos de vibración, generan &amp;ldquo;coloraciones&amp;rdquo; que dificultan una evaluación sonora precisa. Tradicionalmente, se han utilizado criterios como los de Bonello, Bolt y Louden para optimizar la geometría de salas rectangulares y mejorar la distribución modal. Sin embargo, estas metodologías no consideran la influencia de contornos complejos ni la ubicación de la fuente y el oyente.&lt;/p>
&lt;p>Este trabajo presenta una herramienta de código abierto desarrollada en &lt;strong>Python/FEniCS&lt;/strong> que aborda estas limitaciones. El software utiliza la optimización geométrica por fuerza bruta sobre modelos de elementos finitos (FEM) para encontrar dimensiones y contornos de sala que proporcionen una distribución modal más uniforme.&lt;/p>
&lt;h3 id="marco-teórico-y-criterios-clásicos">&lt;strong>Marco Teórico y Criterios Clásicos&lt;/strong>
&lt;/h3>&lt;p>El comportamiento de las bajas frecuencias en un recinto está dominado por las ondas estacionarias, o modos normales, que se caracterizan por nodos y antinodos de presión. Los modos axiales, tangenciales y oblicuos, cuyas frecuencias dependen de las dimensiones de la sala, pueden generar problemas de coloración si se agrupan.&lt;/p>
&lt;p>Los criterios clásicos de diseño, como los de &lt;strong>Bolt&lt;/strong>, &lt;strong>Bonello&lt;/strong> y &lt;strong>Louden&lt;/strong>, se centran en evitar agrupamientos modales y proponen proporciones geométricas óptimas para salas rectangulares. Sin embargo, estos enfoques tienen una limitación importante: no consideran factores cruciales como la posición de la fuente sonora y el receptor, y están restringidos a geometrías simples.&lt;/p>
&lt;h3 id="metodología-y-desarrollo-del-software">&lt;strong>Metodología y Desarrollo del Software&lt;/strong>
&lt;/h3>&lt;p>La herramienta desarrollada combina un proceso de optimización en dos etapas.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Búsqueda Inicial:&lt;/strong> Primero, el software realiza una búsqueda rápida en geometrías de paralelepípedos rectangulares utilizando el método clásico de superposición modal (SM) para identificar las proporciones geométricas iniciales más prometedoras.&lt;/li>
&lt;li>&lt;strong>Refinamiento y Optimización:&lt;/strong> Luego, refina la búsqueda generando contornos planarios aleatorios con simetría forzada y aplica el &lt;strong>Método de Elementos Finitos en el dominio de la Frecuencia (FD-FEM)&lt;/strong> para evaluar el mérito acústico de geometrías complejas. Este método es más preciso que la superposición modal para geometrías no rectangulares.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/geom.PNG"
width="663"
height="353"
srcset="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/geom_hu10103050829635732771.PNG 480w, https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/geom_hu14036568945277152459.PNG 1024w"
loading="lazy"
alt="Generador de geometrías donde se presenta una geometría válida (izquierda) y un NO válida (derecha)"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
>&lt;/p>
&lt;p>Para cuantificar el rendimiento acústico, se utiliza una figura de mérito combinada: la &lt;strong>Desviación Media del Campo Sonoro (MSFD)&lt;/strong>. Esta métrica integra dos parámetros clave:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Desviación de Magnitud (MD):&lt;/strong> Mide cuán plana es la respuesta en frecuencia en una posición específica.&lt;/li>
&lt;li>&lt;strong>Desviación Espacial (SD):&lt;/strong> Mide la variación de la magnitud a lo largo del área de escucha.&lt;/li>
&lt;/ul>
&lt;p>La herramienta cuenta con una interfaz gráfica (GUI) en &lt;strong>PyQt5&lt;/strong> que permite al usuario definir las dimensiones, márgenes y posiciones de fuente y receptor, y visualizar los resultados y las geometrías optimizadas.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/gui.PNG"
width="927"
height="911"
srcset="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/gui_hu10660350233230319476.PNG 480w, https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/gui_hu7665759294953434962.PNG 1024w"
loading="lazy"
alt="Captura de la GUI del programa"
class="gallery-image"
data-flex-grow="101"
data-flex-basis="244px"
>&lt;/p>
&lt;h3 id="resultados-y-conclusiones">&lt;strong>Resultados y Conclusiones&lt;/strong>
&lt;/h3>&lt;p>Los estudios de caso en tres volúmenes de salas de control de referencia mostraron mejoras de &lt;strong>MSFD de hasta 5 dB&lt;/strong> en comparación con el diseño base. Los resultados demuestran que:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Impacto de los Márgenes:&lt;/strong> A medida que se aumenta el espacio disponible para la optimización, se obtienen mejores resultados, mejorando la respuesta general en hasta 3 dB. Esta mejora se observa principalmente en la desviación de magnitud (MD).&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/margenes.PNG"
width="769"
height="521"
srcset="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/margenes_hu7235455855802676823.PNG 480w, https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/margenes_hu1596749676858920027.PNG 1024w"
loading="lazy"
alt="Resultado de la optimización variando los márgenes"
class="gallery-image"
data-flex-grow="147"
data-flex-basis="354px"
>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Geometrías Complejas:&lt;/strong> El aumento de la cantidad de paredes en la geometría compleja permite obtener soluciones superiores a las de los paralelepípedos simples, con una diferencia media de 1.3 dB en el factor de mérito. El proceso de optimización no produce una única solución, sino una variedad de geometrías que presentan un mínimo de MSFD.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/complex.PNG"
width="1056"
height="484"
srcset="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/complex_hu17276317947581166062.PNG 480w, https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/complex_hu260113823065011408.PNG 1024w"
loading="lazy"
alt="Resultado de la optimización variando la cantidad de paredes a generar"
class="gallery-image"
data-flex-grow="218"
data-flex-basis="523px"
>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Comparación con Criterios Tradicionales:&lt;/strong> Una geometría optimizada compleja superó a las salas con dimensiones basadas en los criterios clásicos de Bolt, Louden y Cox. Aunque estos criterios son efectivos y de costo computacional nulo, la capacidad del software para modelar geometrías complejas y considerar la ubicación de fuentes y receptores provee una condición superior.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/compare.PNG"
width="882"
height="437"
srcset="https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/compare_hu6871012066806431324.PNG 480w, https://dibernardo.netlify.app/p/acoustic-modal-response-optimization-for-small-rooms-with-genetic-algorithms/compare_hu17032096468667991809.PNG 1024w"
loading="lazy"
alt="Comparación entre resultados clásicos de la literatura respecto a la solución de nuestro optimizador"
class="gallery-image"
data-flex-grow="201"
data-flex-basis="484px"
>&lt;/p>
&lt;p>El estudio concluye que el software es una herramienta efectiva para la optimización de la acústica modal. Se sugieren mejoras futuras como la implementación de algoritmos de optimización más avanzados, como algoritmos genéticos, para reducir el tiempo de cálculo y mejorar la eficiencia del proceso.&lt;/p>
&lt;p>Un análisis detallado del desarrollo de este algoritmo está disponible en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1bFloyBC-lmMt_NCkeMwyjXit8-o1ZzsZ/view?usp=sharing" target="_blank" rel="noopener"
>trabajo&lt;/a>.&lt;/p></description></item><item><title>Medición de parámetros acústicos en la Usina del Arte</title><link>https://dibernardo.netlify.app/es/p/medici%C3%B3n-de-par%C3%A1metros-ac%C3%BAsticos-en-la-usina-del-arte/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/medici%C3%B3n-de-par%C3%A1metros-ac%C3%BAsticos-en-la-usina-del-arte/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/portadix.jpg" alt="Featured image of post Medición de parámetros acústicos en la Usina del Arte" />&lt;h3 id="introducción">&lt;strong>Introducción&lt;/strong>
&lt;/h3>&lt;p>Esta medición fue parte de la materia &lt;em>Instrumentos y mediciónes Acústica&lt;/em> del programa de Ingeniería de Sonido en UNTREF. Los &lt;strong>parámetros acústicos&lt;/strong> obtenidos a partir de la respuesta al impulso son esenciales para evaluar el comportamiento de un recinto. Este informe presenta una caracterización integral del auditorio principal de la &lt;strong>Usina del Arte&lt;/strong>, un centro cultural en Buenos Aires. El edificio, originalmente una planta generadora de energía del siglo XX con un distintivo estilo florentino-industrial, fue transformado con un diseño acústico que buscaba una calidad natural y equilibrada, sin necesidad de amplificación. Se implementó una estructura desacoplada (&lt;strong>box-in-box&lt;/strong>) para el aislamiento y un acondicionamiento interior con materiales como madera de guatambú, superficies difusoras y un reflector acústico suspendido. El objetivo era un tiempo de reverberación de aproximadamente &lt;strong>2 segundos&lt;/strong> y una distribución uniforme de las reflexiones tempranas laterales para una sensación envolvente.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/vista_ext.PNG"
width="1134"
height="630"
srcset="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/vista_ext_hu376550853728715864.PNG 480w, https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/vista_ext_hu11205598148463235636.PNG 1024w"
loading="lazy"
alt="Vista exterior del complejo Usina del Arte"
class="gallery-image"
data-flex-grow="180"
data-flex-basis="432px"
>&lt;/p>
&lt;h3 id="medición">&lt;strong>Medición&lt;/strong>
&lt;/h3>&lt;p>La caracterización se llevó a cabo el 9 de junio de 2025, donde se registraron un total de &lt;strong>162 respuestas al impulso&lt;/strong> monoaurales y binaurales. Se registraron datos desde 27 posiciones de micrófono y 3 de fuente. También se realizó un relevamiento del auditorio para analizar sus características constructivas y un análisis perceptivo.&lt;/p>
&lt;p>Previo a las mediciones, se construyó un modelo del recinto en el software &lt;strong>EASE 4.3&lt;/strong>, que estimó un volumen de &lt;strong>15,700 m³&lt;/strong> y una frecuencia de Schroeder de &lt;strong>22.1 Hz&lt;/strong>. El ruido de fondo se midió en ocho posiciones para evaluar el aislamiento, confirmando una relación señal/ruido superior a 40 dB. La disposición de los micrófonos se basó en la simetría del recinto para obtener un mapeo detallado.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/mapeo_puntos.PNG"
width="946"
height="876"
srcset="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/mapeo_puntos_hu16757661932159290668.PNG 480w, https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/mapeo_puntos_hu16618579752656839347.PNG 1024w"
loading="lazy"
alt="Posición de fuente y micrófono (separados según tipo de micrófono)"
class="gallery-image"
data-flex-grow="107"
data-flex-basis="259px"
>&lt;/p>
&lt;p>Mas imágenes del proceso de la medición:&lt;/p>
&lt;div id="carousel0" class="carousel" duration="70000">
&lt;ul>
&lt;li id="c0_slide1" style="min-width: calc(100%/1); padding-bottom: 900px;">&lt;img src="https://dibernardo.netlify.app/images/usina/med1.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide2" style="min-width: calc(100%/1); padding-bottom: 900px;">&lt;img src="https://dibernardo.netlify.app/images/usina/med2.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide3" style="min-width: calc(100%/1); padding-bottom: 900px;">&lt;img src="https://dibernardo.netlify.app/images/usina/med3.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide4" style="min-width: calc(100%/1); padding-bottom: 900px;">&lt;img src="https://dibernardo.netlify.app/images/usina/med4.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>&lt;a href="#c0_slide1">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide2">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide3">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide4">&lt;/a>&lt;/li>
&lt;/ol>
&lt;div class="prev">&amp;lsaquo;&lt;/div>
&lt;div class="next">&amp;rsaquo;&lt;/div>
&lt;/div>
&lt;h3 id="procesamiento">&lt;strong>Procesamiento&lt;/strong>
&lt;/h3>&lt;p>Se procesaron las grabaciones para obtener las respuestas al impulso y se calcularon diversos parámetros, siguiendo la norma &lt;strong>ISO 3382-1&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tiempo de reverberación:&lt;/strong> $T_{20}$, $T_{30}$ y EDT.&lt;/li>
&lt;li>&lt;strong>Claridad:&lt;/strong> $C_{50}$ y $C_{80}$.&lt;/li>
&lt;li>&lt;strong>Fuerza (G):&lt;/strong> Diferencia de nivel de presión sonora entre la sala y una condición anecoica.&lt;/li>
&lt;li>&lt;strong>Fracción lateral (LF):&lt;/strong> Proporción de energía sonora percibida desde los laterales.&lt;/li>
&lt;li>&lt;strong>Relación directo/reverberante (D/R).&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Inteligibilidad:&lt;/strong> Se calculó el &lt;strong>Speech Transmission Index (STI)&lt;/strong> y el Articulation Loss of Consonants (%Alcons).&lt;/li>
&lt;li>&lt;strong>Soporte de escenario:&lt;/strong> $ST_{Early}$ y $ST_{Late}$, para evaluar las condiciones acústicas para los músicos.&lt;/li>
&lt;/ul>
&lt;p>Se utilizaron diferentes software comericales como el plugin Aurora Acoustical Parameters, el software EASERA, y también se calcularon otros parámetros con un scripts específicos en Python.&lt;/p>
&lt;h3 id="resultados">&lt;strong>Resultados&lt;/strong>
&lt;/h3>&lt;p>Los resultados muestran que el auditorio se comporta adecuadamente para una sala de conciertos, pero con áreas de mejora:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Tiempo de reverberación:&lt;/strong> El promedio global fue de &lt;strong>1.92 s&lt;/strong>. Sin embargo, se observaron variaciones notables en bajas frecuencias, donde el escenario flotante actúa como un resonador.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/rtres.PNG"
width="786"
height="509"
srcset="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/rtres_hu93740916745270815.PNG 480w, https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/rtres_hu4110432717716336813.PNG 1024w"
loading="lazy"
alt="Resultado de T30 y EDT por frecuencia."
class="gallery-image"
data-flex-grow="154"
data-flex-basis="370px"
>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Claridad e Inteligibilidad:&lt;/strong> Los valores de claridad para el habla están por debajo de los umbrales recomendados, y se identificaron problemas de inteligibilidad en ciertas zonas.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Factor de Nivel Sonoro (G):&lt;/strong> El nivel de fuerza sonora presenta una variación baja considerando las dimensiones del auditorio.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/Gfactor.PNG"
width="776"
height="597"
srcset="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/Gfactor_hu12495539726591375420.PNG 480w, https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/Gfactor_hu210762990484597037.PNG 1024w"
loading="lazy"
alt="Mapeo del valor de G en el espacio."
class="gallery-image"
data-flex-grow="129"
data-flex-basis="311px"
>&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Fracción Lateral (LF):&lt;/strong> Los valores superan las recomendaciones, sugiriendo que la mayor parte del sonido proviene de los laterales. Esto podría estar relacionado con la gran cantidad de difusores.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Ruido de Fondo:&lt;/strong> La sala presenta un nivel de ruido superior al recomendado para un recinto sinfónico (NC-35 vs. NC-20), probablemente debido al sistema de ventilación.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/ruido.PNG"
width="1032"
height="476"
srcset="https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/ruido_hu16139815568609075014.PNG 480w, https://dibernardo.netlify.app/p/acoustic-measurement-at-usina-del-arte/ruido_hu4680391019551906221.PNG 1024w"
loading="lazy"
alt="Medición de ruido de fondo por frecuecia."
class="gallery-image"
data-flex-grow="216"
data-flex-basis="520px"
>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Difusión Sonora:&lt;/strong> La repetición de una única secuencia de difusores disminuye su eficacia, generando un comportamiento lobular en lugar de una difusión estocástica.&lt;/li>
&lt;/ul>
&lt;p>Se proponen mejoras clave como reducir el ruido de fondo, optimizar la difusión sonora con secuencias no periódicas y equilibrar la respuesta espectral, corrigiendo la absorción en bajas frecuencias.&lt;/p>
&lt;h3 id="conclusiones">&lt;strong>Conclusiones&lt;/strong>
&lt;/h3>&lt;p>Pudimos caracterizar de forma efectiva el auditorio y se aplicaron la mayoría de temas teóricos vistos en clase a una experiencia práctica. El informe completo de este trabajo con todos los resultados y detalles de la medición se puede encontrar en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1nSmWFrk30IFAhzBs9R42ZR61uK_ARc8z/view?usp=sharing" target="_blank" rel="noopener"
>informe&lt;/a>.&lt;/p></description></item><item><title>IA Generativa, Flow Matching y TTS</title><link>https://dibernardo.netlify.app/es/p/ia-generativa-flow-matching-y-tts/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/ia-generativa-flow-matching-y-tts/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/generative-ai-flow-matching-and-tts/front2.PNG" alt="Featured image of post IA Generativa, Flow Matching y TTS" />&lt;p>En &lt;em>Intercambios Transorgánicos&lt;/em>, trabajamos continuamente con modelos de &lt;em>Deep Learning&lt;/em> de última generación. Para ello, nos mantenemos en constante aprendizaje sobre los desarrollos más recientes en el campo. En esta presentación, el objetivo fue explicar los fundamentos del modelo &lt;em>F5-TTS&lt;/em>, un sistema de síntesis de voz de vanguardia. Durante el desarrollo, se introdujo el concepto de inteligencia artificial generativa y los modelos de flujo (&lt;em>flow-based models&lt;/em>), dado que &lt;em>F5-TTS&lt;/em> se basa en esta técnica. El propósito es compartir este conocimiento con el equipo y con cualquier persona interesada en iniciarse en los modelos de conversión de texto a voz (&lt;em>Text-to-Speech&lt;/em>).&lt;/p>
&lt;h2 id="introducción---ia-generativa-y-tts">Introducción - IA Generativa y TTS
&lt;/h2>&lt;p>La estructura de la clase se organizó de la siguiente manera:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Introducción a los modelos de TTS&lt;/strong>: Se describen los diferentes modelos utilizados, sus principales características y las razones por las cuales se decidió cambiar de enfoque.&lt;/li>
&lt;li>&lt;strong>Evolución de los modelos TTS&lt;/strong>: Se presenta un gráfico basado en encuestas que muestra la evolución de diversas tecnologías de TTS.&lt;/li>
&lt;li>&lt;strong>Cambio de paradigma en modelos de lenguaje&lt;/strong>: Se explica cómo el uso de grandes volúmenes de datos ha permitido una mejor generalización en modelos de lenguaje.&lt;/li>
&lt;li>&lt;strong>Ejemplo de generalización&lt;/strong>: Se presentan casos ilustrativos, como la generación de una imagen de un astronauta montando un caballo, ejemplos de audio y síntesis de acentos específicos (ej., un hablante cordobés enojado).&lt;/li>
&lt;li>&lt;strong>Cambio en la estructuración de conjuntos de datos&lt;/strong>:
&lt;ul>
&lt;li>&lt;strong>Enfoque tradicional&lt;/strong>: Uso de un único hablante de alta calidad con gran cantidad de datos (modelo entrenado para cada hablante).&lt;/li>
&lt;li>&lt;strong>Enfoque actual y futuro&lt;/strong>: Uso de conjuntos de datos diversos con etiquetas que permiten entrenar modelos capaces de entender el concepto del habla y generalizar en múltiples tareas (ejemplos extraídos de &lt;em>VoiceBox&lt;/em>).&lt;/li>
&lt;li>&lt;strong>Costo computacional&lt;/strong>: Se menciona el aumento en el tamaño de los modelos y la dificultad de su entrenamiento, similar a los modelos de lenguaje a gran escala (&lt;em>LLMs&lt;/em>).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Explicación de IA Generativa&lt;/strong>:
&lt;ul>
&lt;li>Introducción a los modelos generativos y el concepto de distribución subyacente.&lt;/li>
&lt;li>Explicación sobre &lt;em>Transformers&lt;/em> y su función en la clasificación con contexto. Se aclara que aunque los &lt;em>Transformers&lt;/em> son modelos &lt;em>Non-Autoregressive&lt;/em> (NAR) en entrenamiento, en inferencia funcionan de manera &lt;em>Autoregressive&lt;/em> (AR).&lt;/li>
&lt;li>Diferencia entre modelos de clasificación y modelos generativos basados en reducción de dimensionalidad y variables latentes.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="modelos-de-tts-voicebox-e2-y-f5">Modelos de TTS: VoiceBox, E2 y F5
&lt;/h2>&lt;p>Esta sección detalla los principales avances en modelos de TTS que han llevado al desarrollo de &lt;em>F5-TTS&lt;/em>.&lt;/p>
&lt;h3 id="1-voicebox-tts---in-context-learning">1. VoiceBox TTS - &lt;em>In Context Learning&lt;/em>
&lt;/h3>&lt;p>Se introduce la arquitectura inicial de &lt;em>VoiceBox&lt;/em>, cuyo objetivo principal es la generalización mediante &lt;em>In Context Learning&lt;/em>. Este enfoque permite al modelo inferir información a partir de ejemplos previos. Para lograrlo, se le proporciona un fragmento de audio con una parte oculta, forzando al modelo a completarla de manera coherente.&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We show that Voicebox’s text-guided speech infilling approach is much more scalable in terms of data while subsuming many common speech generative tasks.&amp;rdquo;&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Este método, introducido por Meta en &lt;em>VoiceBox&lt;/em>, marca un cambio de paradigma al demostrar que los modelos de TTS pueden beneficiarse de técnicas previamente utilizadas en modelos de lenguaje e imagen.&lt;/p>
&lt;p>No obstante, el modelo aún depende de técnicas clásicas en TTS, como el predictor de duración de fonemas y el &lt;em>Forced Alignment&lt;/em> para mapear fonemas a espectrogramas de Mel, ya que la longitud de estos no coincide con la de los tokens de texto.&lt;/p>
&lt;h3 id="2-e2-tts---filler-tokens">2. E2 TTS - &lt;em>Filler Tokens&lt;/em>
&lt;/h3>&lt;p>&lt;em>E2 TTS&lt;/em> simplifica varias de las decisiones arquitectónicas de &lt;em>VoiceBox&lt;/em>, especialmente en lo referente a la longitud de los espectrogramas de Mel y el texto. En lugar de utilizar alineación forzada, introduce los &lt;em>Filler Tokens&lt;/em>, que permiten igualar la dimensión entre texto y audio de manera más sencilla. Esta estrategia facilita que el modelo aprenda la asociación temporal entre ambos elementos.&lt;/p>
&lt;p>Otro cambio significativo es que el modelo trabaja directamente con texto en lugar de fonemas. Aunque esto podría parecer una desventaja (dado que palabras homógrafas pueden tener pronunciaciones diferentes), el contexto provee suficiente información para inferir la pronunciación adecuada, de manera similar al procesamiento del lenguaje natural en humanos.&lt;/p>
&lt;h3 id="3-f5-tts---open-source">3. F5 TTS - &lt;em>Open Source&lt;/em>
&lt;/h3>&lt;p>Si bien &lt;em>E2 TTS&lt;/em> representa un avance importante, su entrenamiento es lento debido a la necesidad de inferir asociaciones previamente guiadas. &lt;em>F5 TTS&lt;/em> optimiza el modelo anterior con las siguientes mejoras:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Uso de ConvNeXt&lt;/strong>: Mejora el procesamiento del texto de entrada.&lt;/li>
&lt;li>&lt;strong>Cambio de arquitectura&lt;/strong>: Sustitución de la red &lt;em>U-Net&lt;/em> por &lt;em>DiT&lt;/em> (&lt;em>Diffusion Transformer&lt;/em>).&lt;/li>
&lt;li>&lt;strong>Sway Sampling&lt;/strong>: Optimización en el proceso de inferencia.&lt;/li>
&lt;/ul>
&lt;p>Además, &lt;em>F5 TTS&lt;/em> es de código abierto, lo que facilita su adopción y mejora por parte de la comunidad.&lt;/p>
&lt;h2 id="flow-matching---fundamentos-teóricos">Flow Matching - Fundamentos Teóricos
&lt;/h2>&lt;p>Para comprender el funcionamiento de &lt;em>F5-TTS&lt;/em>, es necesario revisar los modelos en los que se basa, conocidos como &lt;em>Flow Matching Models&lt;/em>. Estos modelos han evolucionado a partir de técnicas previas en modelado de distribuciones probabilísticas.&lt;/p>
&lt;h3 id="1-normalizing-flow">1. Normalizing Flow
&lt;/h3>&lt;p>Los &lt;em>Normalizing Flows&lt;/em> son una familia de modelos probabilísticos que transforman una distribución simple en una más compleja mediante una serie de funciones invertibles y diferenciables. Se utilizan para modelar distribuciones de datos de alta dimensión y generar muestras realistas con un control preciso sobre la probabilidad.&lt;/p>
&lt;h3 id="2-residual-flow">2. Residual Flow
&lt;/h3>&lt;p>Los &lt;em>Residual Flows&lt;/em> extienden los &lt;em>Normalizing Flows&lt;/em> al permitir transformaciones más flexibles sin necesidad de cumplir estrictamente con la condición de invertibilidad. Esto se logra mediante redes residuales que aproximan las funciones de transformación sin restricciones de estructura.&lt;/p>
&lt;h3 id="3-continuous-normalizing-flows-cnf">3. Continuous Normalizing Flows (CNF)
&lt;/h3>&lt;p>Los &lt;em>Continuous Normalizing Flows&lt;/em> reformulan los &lt;em>Normalizing Flows&lt;/em> en términos de ecuaciones diferenciales ordinarias (ODEs). En lugar de aplicar transformaciones discretas en pasos sucesivos, estos modelos aprenden una dinámica continua en el espacio latente, lo que permite una mayor expresividad y eficiencia computacional.&lt;/p>
&lt;h3 id="4-flow-matching">4. Flow Matching
&lt;/h3>&lt;p>&lt;em>Flow Matching&lt;/em> es una técnica que optimiza la transformación de una distribución de referencia a una distribución objetivo utilizando un enfoque basado en la minimización de una función de costo específica. Se diferencia de los enfoques anteriores al no requerir el cálculo explícito de la función de densidad, lo que lo hace especialmente útil para modelos generativos de gran escala, como &lt;em>F5-TTS&lt;/em>.&lt;/p>
&lt;h2 id="grabación-de-la-presentación">Grabación de la presentación
&lt;/h2>&lt;p>Cada sección detalla en este artículo se explica en profundidad en la presentación:&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/YIpvFC41NUw"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Medidor de THD+N</title><link>https://dibernardo.netlify.app/es/p/medidor-de-thd-n/</link><pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/medidor-de-thd-n/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/thd-n-meter/port.jpeg" alt="Featured image of post Medidor de THD+N" />&lt;h1 id="medidor-thdn">Medidor THD+N
&lt;/h1>&lt;p>Un medidor de THD+N mide la distorsión armónica de un dispositivo. En audio, esto es crucial para evaluar la calidad del equipo. Este proyecto fue desarrollado como parte de la asignatura &amp;ldquo;Instrumentos y Mediciones Electrónicas&amp;rdquo; en UNTREF. En este curso, los estudiantes diseñan y desarrollan diversos instrumentos electrónicos, y los proyectos son continuados por grupos sucesivos de estudiantes. Este proyecto en particular ya estaba en marcha, y nuestro enfoque fue desarrollar un desfasador para alinear dos señales.&lt;/p>
&lt;h2 id="teoría-sobre-como-medición-de-thd">Teoría sobre como medición de THD
&lt;/h2>&lt;p>Para medir la distorsión de un sistema, se introduce una señal sinusoidal con la menor distorsión posible al dispositivo bajo prueba. El objetivo es evaluar cuánta distorsión agrega el dispositivo a la señal. Esto se cuantifica midiendo la potencia de la señal original y la potencia de la señal después de pasar por el dispositivo, excluyendo la armónica fundamental.&lt;/p>
&lt;p>Un amplificador diferencial se utiliza para restar la señal de salida del dispositivo de la señal de referencia, dejando solo las armónicas de orden superior.&lt;/p>
&lt;p>El THD+N se calcula luego como un porcentaje usando la siguiente ecuación:&lt;/p>
$$
THD+N = \frac{V_{filt}}{V_{tot}} \cdot 100
$$&lt;p>Donde:
$V_{filt}$ es el valor RMS de la señal filtrada (excluyendo la armónica fundamental).
$V_{tot}$ es el valor RMS de la señal original.&lt;/p>
&lt;h2 id="desfasador">Desfasador
&lt;/h2>&lt;p>Para lograr una cancelación efectiva en la sección diferencial, se requieren ajustes precisos de fase y ganancia de las dos señales. El ajuste de ganancia había sido implementado con éxito por el grupo anterior que trabajó en el proyecto. Sin embargo, lograr la rotación de fase necesaria de 360 grados en toda la gama de frecuencias audibles (20 Hz a 20 kHz) presentó un desafío.&lt;/p>
&lt;p>Para abordar este problema, diseñamos dos filtros pasa-todo en serie y calculamos los valores de los componentes para lograr la rotación de fase deseada en el rango de frecuencias objetivo.&lt;/p>
&lt;p>El diseño fue modular para facilitar la integración con las etapas anteriores.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/thd-n-meter/esquem_thd.PNG"
width="991"
height="597"
srcset="https://dibernardo.netlify.app/p/thd-n-meter/esquem_thd_hu7854488014118793125.PNG 480w, https://dibernardo.netlify.app/p/thd-n-meter/esquem_thd_hu5535924513728456883.PNG 1024w"
loading="lazy"
alt="Esquematico del desplazador de fase"
class="gallery-image"
data-flex-grow="165"
data-flex-basis="398px"
>&lt;/p>
&lt;p>Probamos el circuito en un protoboard antes de diseñar la PCB utilizando &lt;em>Altium Designer&lt;/em>.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/thd-n-meter/pcb_thd.PNG"
width="757"
height="496"
srcset="https://dibernardo.netlify.app/p/thd-n-meter/pcb_thd_hu3351495035239025609.PNG 480w, https://dibernardo.netlify.app/p/thd-n-meter/pcb_thd_hu4551021193416416361.PNG 1024w"
loading="lazy"
alt="PCB design of the circuit"
class="gallery-image"
data-flex-grow="152"
data-flex-basis="366px"
>&lt;/p>
&lt;h2 id="el-dispositivo">El dispositivo
&lt;/h2>&lt;p>El dispositivo cuenta con varios controles para ajustar la fase y la ganancia. Tanto los ajustes de fase como de ganancia incluyen potenciómetros de ajuste fino para garantizar la máxima precisión.&lt;/p>
&lt;div id="carousel0" class="carousel" duration="70000">
&lt;ul>
&lt;li id="c0_slide1" style="min-width: calc(100%/1); padding-bottom: 600px;">&lt;img src="https://dibernardo.netlify.app/images/thd/thd1.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide2" style="min-width: calc(100%/1); padding-bottom: 600px;">&lt;img src="https://dibernardo.netlify.app/images/thd/thd2.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide3" style="min-width: calc(100%/1); padding-bottom: 600px;">&lt;img src="https://dibernardo.netlify.app/images/thd/thd3.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>&lt;a href="#c0_slide1">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide2">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide3">&lt;/a>&lt;/li>
&lt;/ol>
&lt;div class="prev">&amp;lsaquo;&lt;/div>
&lt;div class="next">&amp;rsaquo;&lt;/div>
&lt;/div>
&lt;p>Está equipado con entradas y salidas BNC, lo que permite a los usuarios visualizar la salida en un osciloscopio y lograr la máxima atenuación.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>Este dispositivo se comparó con un medidor de THD comercial (GW INSTEK GAD-201G), y los resultados fueron muy similares. La principal limitación fue el nivel de ruido base del entorno de medición, que restringió significativamente el valor más bajo de THD que pudimos medir.&lt;/p>
&lt;p>Las especificaciones del dispositivo se resumen en la siguiente tabla (en español):&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/thd-n-meter/specs_thd.PNG"
width="1192"
height="887"
srcset="https://dibernardo.netlify.app/p/thd-n-meter/specs_thd_hu7856985861425421171.PNG 480w, https://dibernardo.netlify.app/p/thd-n-meter/specs_thd_hu9340525222663809333.PNG 1024w"
loading="lazy"
alt="Especificaciones técnicas del dispositivo"
class="gallery-image"
data-flex-grow="134"
data-flex-basis="322px"
>&lt;/p>
&lt;p>Un análisis detallado del dispositivo está disponible en este &lt;a class="link" href="https://drive.google.com/file/d/1b36O_s27LkEJAZ6-y5TcdTT5wKB1xdGk/view?usp=sharing" target="_blank" rel="noopener"
>informe&lt;/a>.&lt;/p></description></item><item><title>Efecto de algorítmos de reducción de rudio en sistemas de TTS</title><link>https://dibernardo.netlify.app/es/p/efecto-de-algor%C3%ADtmos-de-reducci%C3%B3n-de-rudio-en-sistemas-de-tts/</link><pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/efecto-de-algor%C3%ADtmos-de-reducci%C3%B3n-de-rudio-en-sistemas-de-tts/</guid><description>&lt;p>Este estudio se realizó en el contexto de la clase &lt;em>Laboratorio de Acústica&lt;/em> en la UNTREF. Elegí este tema porque está alineado con investigaciones que he estado desarrollando como parte del grupo &lt;em>Intercambios Transorgánicos&lt;/em>. La consigna para el trabajo de clase consistió en realizar un estudio subjetivo utilizando una encuesta para explorar la relación entre variables objetivas y subjetivas.&lt;/p>
&lt;p>En mi grupo de investigación, he estado investigando cómo los algoritmos de reducción de ruido afectan a los sistemas de síntesis de voz (TTS) entrenados con grabaciones de baja calidad. El enfoque está en el español rioplatense, un acento regional con datos de alta calidad limitados. En este contexto, fue natural combinar ambas tareas y realizar una prueba subjetiva sobre el impacto de los algoritmos de reducción de ruido en los sistemas TTS.&lt;/p>
&lt;h2 id="resumen">Resumen
&lt;/h2>&lt;p>Los puntos clave de esta investigación son:&lt;/p>
&lt;ul>
&lt;li>Evaluación de tres algoritmos de reducción de ruido: Wave U-Net, HiFi-GAN y DeepFilterNet.&lt;/li>
&lt;li>Uso de métricas subjetivas (CMOS) y objetivas (PESQ, STOI, MCD).&lt;/li>
&lt;li>Ideas sobre el desarrollo de modelos TTS eficientes en recursos para acentos poco representados.&lt;/li>
&lt;/ul>
&lt;h2 id="metodología">Metodología
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Algoritmos&lt;/strong>: Wave U-Net, HiFi-GAN y DeepFilterNet evaluados con el modelo TTS FastPitch.&lt;/li>
&lt;li>&lt;strong>Conjunto de datos&lt;/strong>: Subconjunto de la colección ArchiVoz (15 minutos de audio con ruido).&lt;/li>
&lt;li>&lt;strong>Pruebas&lt;/strong>: Prueba subjetiva CMOS y métricas objetivas (PESQ, STOI, MCD).&lt;/li>
&lt;li>&lt;strong>Participantes&lt;/strong>: 24 respuestas válidas, incluyendo tanto expertos como no expertos.&lt;/li>
&lt;/ul>
&lt;h2 id="principales-hallazgos">Principales Hallazgos
&lt;/h2>&lt;ol>
&lt;li>
&lt;p>&lt;strong>Rendimiento de DeepFilterNet&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Obtuvo la puntuación CMOS más alta, reflejando la mejor calidad subjetiva.&lt;/li>
&lt;li>Mostró mejoras significativas en la salida TTS a pesar de las correlaciones mixtas con las métricas objetivas.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Análisis de Métricas Objetivas&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>PESQ y MCD mostraron una correlación limitada con las preferencias subjetivas.&lt;/li>
&lt;li>Las puntuaciones STOI fueron consistentes entre los algoritmos, indicando inteligibilidad preservada.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Comparación de Algoritmos&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>DeepFilterNet&lt;/strong>: Evaluaciones subjetivas superiores, MCD moderado.&lt;/li>
&lt;li>&lt;strong>Demucs&lt;/strong>: Comparable a DeepFilterNet en PESQ, pero con puntuaciones subjetivas inferiores.&lt;/li>
&lt;li>&lt;strong>Wave U-Net&lt;/strong>: Bajo rendimiento tanto subjetivo como objetivo.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Experiencia de los Participantes&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>No se observaron diferencias significativas entre las evaluaciones subjetivas de expertos y no expertos.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="implicaciones">Implicaciones
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Eficiencia&lt;/strong>: Métodos avanzados de reducción de ruido como DeepFilterNet pueden mejorar los sistemas TTS sin necesidad de grabaciones de alta calidad.&lt;/li>
&lt;li>&lt;strong>Limitaciones&lt;/strong>: Las métricas objetivas como PESQ y MCD no son indicadores suficientes por sí solas de la calidad subjetiva en TTS.&lt;/li>
&lt;li>&lt;strong>Trabajo Futuro&lt;/strong>:
&lt;ul>
&lt;li>Ampliar los conjuntos de datos y niveles de ruido para un análisis más robusto.&lt;/li>
&lt;li>Explorar sistemas TTS entrenados conjuntamente con algoritmos de reducción de ruido.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>Este trabajo concluye que el preprocesamiento con DeepFilterNet mejora significativamente el rendimiento de los sistemas TTS, con un aumento de 1.1 en la puntuación CMOS. Estos hallazgos destacan la importancia de la selección de algoritmos para optimizar sistemas TTS con pocos recursos. Además, adquirí valiosos conocimientos sobre evaluaciones subjetivas y el análisis estadístico necesario para extraer conclusiones significativas de los datos.&lt;/p>
&lt;p>Toda la información de este estudio se encuentra en el &lt;a class="link" href="https://drive.google.com/file/d/1F4aJGIU9FX2LT8OFik-Yjg4uSz6T09jw/view?usp=sharing" target="_blank" rel="noopener"
>informe académico&lt;/a> (en inglés).&lt;/p></description></item><item><title>Construcción y diseño de un altoparlante personal</title><link>https://dibernardo.netlify.app/es/p/construcci%C3%B3n-y-dise%C3%B1o-de-un-altoparlante-personal/</link><pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/construcci%C3%B3n-y-dise%C3%B1o-de-un-altoparlante-personal/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/front_bass.PNG" alt="Featured image of post Construcción y diseño de un altoparlante personal" />&lt;h1 id="bassado-un-parlante-hogareño-semi-portable-de-bajo-costo">&amp;ldquo;BassAdo&amp;rdquo; un parlante hogareño semi portable de bajo costo
&lt;/h1>&lt;p>Este proyecto se enmarca en la materia Electroacústica II en UNTREF de la carrera Ingeniería de Sonido. La tarea era diseñar desde cero un altoparlante aplicando la teoría y conceptos explicados en clase.
El trabajo se fue desarrollando durante todo el cuatrimestre con diferentes etapas a completar que se tenían que presentar con un informe. El parlante esta pensado para ser usado en un espacio grande, puede ser al aire libre, para poner música en un entorno de reunión. Se lo denomino &lt;em>Bassado&lt;/em> para combinar el asado (típica comida argentina donde la gente se reune) y la palabra bass, enfatizando la característica del altoparlante.&lt;/p>
&lt;h2 id="diseño">Diseño
&lt;/h2>&lt;p>El objetivo es diseñar un sistema de audio hogareño con prestaciones accesibles, que permita explorar temas de interés abordados en la materia. El diseño busca lograr una predominancia en graves, característica de los sistemas comerciales, priorizando la extensión del ancho de banda en bajas frecuencias por encima de un bajo retardo de grupo y control temporal del sistema.&lt;/p>
&lt;p>Con respecto a los transductores a utilizar, el equipo contaba con unidades de la marca Yharo, que se pueden clasificar como no profesionales, consumidor-aficionado, con posibles aplicaciones en automóviles y/o sistemas hogareños.
Se evalúa la respuesta en impedancia de los mismos y se selecciona un Woofer de 8” para cubrir la sección de bajas frecuencias, y dos de 4” para el rango de medias/altas.&lt;/p>
&lt;p>Al medir los parámetros de Thielle-Small de los altoparlantes se encuentra que tiene un &lt;em>Vas&lt;/em> (Volumen Acústico Equivalente de Suspensión) muy alto, lo que requiere realizar un gabinete con mucho volumen para tener un buen control. Para solucionar este problema y dado la posibilidad de que se contaba con 2 Woofers de 8”, se decide hacer un altoparlante del tipo isobárico, colocando los 2 Woofers en serie acústicamente, para que tengan mayor control y poder hacer más chico el gabinete. Además, va a ser un gabinete ventilado para tener mejor respuesta en bajas.&lt;/p>
&lt;p>La respuesta de los altoparlantes (paráemtros TS) fue obtenida en el software &lt;a class="link" href="https://www.roomeqwizard.com/" target="_blank" rel="noopener"
>REW&lt;/a>. Con esos parámetros, se simula en el software &lt;a class="link" href="https://www.tolvan.com/index.php?page=/basta/basta.php" target="_blank" rel="noopener"
>Basta!&lt;/a> y se optimizan los parámetros para obtener la respuesta deseada. Lo principal fue sintonizar la frecuencia de resonancia del port, ya que el objetivo del altoparlante era tener una buena respuesta en bajas. El transductor tenía una &lt;em>fs&lt;/em> en 45 Hz, y se busca sintonizar el port en 40 Hz controlando el largo del tubo y el volumen de aire del gabinete.&lt;/p>
&lt;p>En base a estos resultados, se hace un modelo 3D del gabinete en el software &lt;a class="link" href="https://www.solidworks.com/" target="_blank" rel="noopener"
>SolidWorks&lt;/a> con el que se manda a cortar las maderas para poder construir el gabinete.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/dise%C3%B1o_gab.PNG"
width="422"
height="306"
srcset="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/dise%C3%B1o_gab_hu4105664598446689879.PNG 480w, https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/dise%C3%B1o_gab_hu11734023399320749680.PNG 1024w"
loading="lazy"
alt="Modelado 3D del gabinete del altoparlante"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/p>
&lt;p>El detalle de todo este proceso esta documentado en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1uej1m6gwg99JoPEw5Jbu3cTq74ViIG58/view?usp=sharing" target="_blank" rel="noopener"
>informe de diseño&lt;/a>.&lt;/p>
&lt;h2 id="construcción">Construcción
&lt;/h2>&lt;p>Se mandaron a realizar los cortes a las maderas para hacer el gabinete según el modelo 3D y se realiza el ensamblado.&lt;/p>
&lt;div id="carousel0" class="carousel" duration="700000">
&lt;ul>
&lt;li id="c0_slide1" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b1.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide2" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b2.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide3" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b3.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide4" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b4.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide5" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b5.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide6" style="min-width: calc(100%/1); padding-bottom: 700px;">&lt;img src="https://dibernardo.netlify.app/images/bassado/b6.jpeg" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>&lt;a href="#c0_slide1">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide2">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide3">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide4">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide5">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide6">&lt;/a>&lt;/li>
&lt;/ol>
&lt;div class="prev">&amp;lsaquo;&lt;/div>
&lt;div class="next">&amp;rsaquo;&lt;/div>
&lt;/div>
&lt;p>Como se puede ver en las imágenes, se agregó lana de roca para hacer de absorbente acústico. Al realizar las mediciones nos dimos cuenta de que fue demasiado (la resonancia del port quedaba muy amortiguada) pero se le pudo sacar lana de roca hasta lograr el resultado deseado.&lt;/p>
&lt;h2 id="medición-y-calibración">Medición y Calibración
&lt;/h2>&lt;p>Se realizaron mediciones de respuesta en frecuencia y de directividad en el laboratorio de la universidad, teníamos a disposición el siguiente equipamiento:&lt;/p>
&lt;ul>
&lt;li>Potencia Powersoft M50Q&lt;/li>
&lt;li>Micrófono Earthworks M50&lt;/li>
&lt;li>Placa de Audio RME Fireface UCX&lt;/li>
&lt;li>Mesa Giratoria OUTLINE ET250-3D&lt;/li>
&lt;/ul>
&lt;p>Con estas prestaciones y utilizando el software &lt;a class="link" href="https://artalabs.hr/" target="_blank" rel="noopener"
>Arta&lt;/a>, se pudo caracterizar la respuesta acústica de los transductores por separado (lo cual nos va a servir para simular los filtros de cruze). También se evalúa la respuesta directiva en el eje vertical y el horizontal para poder determinar cual es la mejor disposición para utilizar el dispositivo. Se realizaron gráficos de la respuesta para los dos transductores.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/patron_polar.PNG"
width="943"
height="584"
srcset="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/patron_polar_hu10205775189482527862.PNG 480w, https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/patron_polar_hu2898494236095029192.PNG 1024w"
loading="lazy"
alt="Respuesta polar del driver de medias/altas frecuencias"
class="gallery-image"
data-flex-grow="161"
data-flex-basis="387px"
>&lt;/p>
&lt;p>Todas las respuestas y el análisis en profundidad se encuentran en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1dPwJAqadPM3Ja80anA1P1Ei3EP9M8w-q/view?usp=sharing" target="_blank" rel="noopener"
>informe de medición&lt;/a>.&lt;/p>
&lt;h2 id="diseño-de-filtro-de-cruce">Diseño de filtro de cruce
&lt;/h2>&lt;p>Por último, se diseña la etapa del filtro de curce. Con las mediciones realizadas previamente, se subieron los datos al software &lt;a class="link" href="https://kimmosaunisto.net/" target="_blank" rel="noopener"
>VituixCad&lt;/a>. El objetivo del filtro de cruce es lograr una respuesta en frecuencia que suene agradable al reproducir un programa músical y que realce las bajas frecuencias. Se busca también, la mayor homogeneidad en la respuesta polar vertical.&lt;/p>
&lt;p>Como se va utilizar una etapa de potencia que requiere alimentación, se va a realizar un filtro de cruce activo con la topología Sallen-Key. Se definen una cantidad de filtros según el espacio y el costo y se realizan los ajustes en el software para obtener la respuesta deseada. Por ejemplo, para los drivers de baja frecuencia se realizó el siguiente arreglo:&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/filtro_cruce.PNG"
width="1221"
height="648"
srcset="https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/filtro_cruce_hu13251352229816192527.PNG 480w, https://dibernardo.netlify.app/p/building-and-design-of-a-personal-loudspeaker/filtro_cruce_hu16925353032023854787.PNG 1024w"
loading="lazy"
alt="Filtro de cruce para el driver de bajas frecuencias"
class="gallery-image"
data-flex-grow="188"
data-flex-basis="452px"
>&lt;/p>
&lt;p>Donde:&lt;/p>
&lt;ul>
&lt;li>F1: Pasa altos fs=30 Hz | Q=0.67&lt;/li>
&lt;li>F2: Pasa bajos fs=480 Hz | Q=0.5&lt;/li>
&lt;li>F3: Elimina Banda 220 Hz&lt;/li>
&lt;li>F4: Elimina Banda 400 x Hz&lt;/li>
&lt;/ul>
&lt;p>Antes de realizar el filtro, se probó la configuración planteada con un filtro digital para evaluar de forma práctica la respuesta del sistema según el diseño planteado.
Todos los detalles de esta sección estan plasmados en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/121wkPnp_QsODk99a2Jm44jfb-Xbl6ZKn/view?usp=sharing" target="_blank" rel="noopener"
>informe de filtro de cruce&lt;/a>.&lt;/p>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>Con este trabajo, pudimos bajar muchos conceptos teóricos a la práctica y entender con más profundidad como es el desarrollo y los desafíos en un diseño de un sistema electroacústico.&lt;/p></description></item><item><title>Generador de ruitnas de entrenamiento automáticas</title><link>https://dibernardo.netlify.app/es/p/generador-de-ruitnas-de-entrenamiento-autom%C3%A1ticas/</link><pubDate>Wed, 17 Apr 2024 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/generador-de-ruitnas-de-entrenamiento-autom%C3%A1ticas/</guid><description>&lt;h1 id="generador-automático-de-rutinas-de-ejercicio">Generador Automático de Rutinas de Ejercicio
&lt;/h1>&lt;p>Este proyecto fue el trabajo final para la asignatura Algoritmos y Programación II en la UNTREF. La idea de la aplicación es funcionar como una planificación inteligente de rutinas de ejercicio, donde el usuario ingresa ciertos criterios y el programa establece la mejor rutina para maximizar las preferencias del usuario. El programa fue escrito en el lenguaje de programación Go.&lt;/p>
&lt;h2 id="gestión-de-datos">Gestión de Datos
&lt;/h2>&lt;p>Este curso no se centra en bases de datos, por lo que optamos por usar un archivo CSV para simular una base de datos. Este archivo contiene toda la información sobre las diferentes rutinas y sus atributos. Esto sirve como un archivo de persistencia mientras que toda la lógica es manejada por el programa.&lt;/p>
&lt;p>Los diferentes ejercicios están categorizados por temáticas. Hay dos entidades en el programa que están representadas como structs en Go: los Ejercicios y las Rutinas.&lt;/p>
&lt;h3 id="ejercicio">Ejercicio
&lt;/h3>&lt;p>Todos los ejercicios tienen los siguientes atributos:&lt;/p>
&lt;ul>
&lt;li>Nombre: Nombre del ejercicio.&lt;/li>
&lt;li>Descripción: Descripción detallada del ejercicio.&lt;/li>
&lt;li>Duración: Duración estimada del ejercicio.&lt;/li>
&lt;li>Calorías: Número de calorías quemadas durante el ejercicio.&lt;/li>
&lt;li>Tipo: Tipo de ejercicio (por ejemplo, cardio, fuerza, flexibilidad).&lt;/li>
&lt;li>Grupo Muscular: Grupo muscular objetivo del ejercicio.&lt;/li>
&lt;li>Puntos: Puntos asignados al ejercicio según sus tipos.&lt;/li>
&lt;li>Dificultad: Nivel de dificultad del ejercicio.&lt;/li>
&lt;/ul>
&lt;h3 id="rutinas">Rutinas
&lt;/h3>&lt;p>Todas las rutinas son una colección de ejercicios. Estas se procesan como una lista enlazada de ejercicios. Además, las rutinas tienen los siguientes atributos:&lt;/p>
&lt;ul>
&lt;li>Nombre: Nombre de la rutina.&lt;/li>
&lt;li>Ejercicios: Cadena que almacena los IDs de los ejercicios en la rutina, separados por comas.&lt;/li>
&lt;li>EjerciciosDisponibles: Lista enlazada de los ejercicios disponibles para crear la rutina.&lt;/li>
&lt;/ul>
&lt;h2 id="algoritmo">Algoritmo
&lt;/h2>&lt;p>La idea es maximizar diferentes parámetros, por ejemplo, la cantidad máxima de calorías quemadas en el menor tiempo posible, o la duración mínima para un grupo muscular o tipo de ejercicio específico. Para encontrar las mejores soluciones basadas en los datos existentes, proponemos un algoritmo de programación dinámica que busca todas las posibilidades a partir de los datos y encuentra el máximo o mínimo según las especificaciones del usuario. El enfoque de programación dinámica utiliza memoria para evitar recalcular combinaciones que ya fueron computadas, lo que optimiza el algoritmo lo suficiente como para generar las rutinas en milisegundos (con el conjunto de datos de prueba evaluado).&lt;/p>
&lt;h2 id="interfaz-de-usuario">Interfaz de Usuario
&lt;/h2>&lt;p>Actualmente, el programa está diseñado para ser utilizado desde la terminal como una aplicación CLI. El usuario puede crear un ejercicio y una rutina, listar las opciones disponibles y generar una rutina personalizada basada en las especificaciones que elija.&lt;/p>
&lt;p>Esta es la primera iteración del proyecto y es completamente funcional, pero planeamos crear una interfaz gráfica para que sea más amigable para el usuario. Para este propósito, sería mejor usar un framework diferente y utilizar esta aplicación en Go como backend para un servicio web o una aplicación.&lt;/p>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>Con este proyecto, solidifiqué mis conocimientos sobre temas de programación como estructuras de datos y algoritmos, ya que aplicamos la teoría vista en clase a un caso real. También me ayudó a familiarizarme con el lenguaje Go, que se convirtió en un lenguaje que disfruto mucho programar. El código de este proyecto está disponible en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/Workout-routine-generator" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p></description></item><item><title>Entendiendo FastPitch y la arquitectura Transformers</title><link>https://dibernardo.netlify.app/es/p/entendiendo-fastpitch-y-la-arquitectura-transformers/</link><pubDate>Wed, 23 Aug 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/entendiendo-fastpitch-y-la-arquitectura-transformers/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/understanding-fastpitch-and-the-transformer-architecture/front.png" alt="Featured image of post Entendiendo FastPitch y la arquitectura Transformers" />&lt;p>Entender un modelo moderno de deep learning no es sencillo debido a la gran cantidad de conocimiento previo necesario y al rápido ritmo de avance en este campo. En el proyecto de investigación &lt;em>Intercambios Transorgánicos&lt;/em>, estamos trabajando con TTS, específicamente con el modelo FastPitch de Nvidia. He estudiado este modelo para ajustarlo (fine-tuning) al español y he compartido este proceso de investigación en una clase para ayudar a mis colegas del grupo de investigación a comprenderlo mejor.&lt;/p>
&lt;h2 id="entendiendo-los-modelos-seq2seq">Entendiendo los Modelos Seq2Seq
&lt;/h2>&lt;p>En &lt;em>Intercambios Transorgánicos&lt;/em> utilizábamos previamente Tacotron2 como modelo TTS. Este modelo funciona bien, pero presenta varios problemas, principalmente durante el entrenamiento y la inferencia, debido a su naturaleza auto-regresiva. En contraste, FastPitch es un modelo no auto-regresivo (NAR). Para entender estas diferencias, exploré en profundidad los modelos seq2seq, analizando su evolución a lo largo del tiempo, y realicé un resumen rápido de los modelos de análisis de secuencias más relevantes:&lt;/p>
&lt;ul>
&lt;li>RNN&lt;/li>
&lt;li>LSTM&lt;/li>
&lt;li>Transformers&lt;/li>
&lt;/ul>
&lt;p>Tacotron2 se basa en un modelo LSTM (AR), mientras que FastPitch utiliza Transformers (NAR). Comprender esta progresión tecnológica proporciona un contexto esencial, especialmente sobre los transformers, incluyendo la codificación posicional, un elemento clave para su naturaleza no auto-regresiva, y el mecanismo de atención.&lt;/p>
&lt;h2 id="la-arquitectura-transformer">La Arquitectura Transformer
&lt;/h2>&lt;p>Comencé estudiando la arquitectura transformer, ya que es fundamental para el modelo FastPitch. Revisé recursos en línea y el influyente artículo &lt;em>Attention is All You Need&lt;/em>. A continuación, algunos puntos clave que anoté durante mi estudio:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Mecanismo de Auto-Atención&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Propósito&lt;/strong>: Focalizar dinámicamente en diferentes partes de la secuencia de entrada.&lt;/li>
&lt;li>&lt;strong>Mecanismo&lt;/strong>:
&lt;ul>
&lt;li>Query (Q), Key (K), Value (V): Derivados de las embeddings de entrada.&lt;/li>
&lt;li>Los puntajes de atención se calculan como el producto punto de Q y K, escalado por la raíz cuadrada de la dimensión.&lt;/li>
&lt;li>Los puntajes se normalizan con softmax para generar pesos de atención.&lt;/li>
&lt;li>Se calcula una suma ponderada de V basada en estos pesos para producir la salida.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Atención Multi-Cabezal&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Propósito&lt;/strong>: Capturar diferentes relaciones entre tokens aplicando múltiples mecanismos de auto-atención en paralelo.&lt;/li>
&lt;li>&lt;strong>Mecanismo&lt;/strong>: Las salidas de las múltiples cabezas de atención se concatenan y se transforman linealmente.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Codificación Posicional&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Propósito&lt;/strong>: Añadir información sobre el orden de los tokens en la secuencia, compensando la falta de un concepto incorporado de orden secuencial en los Transformers (a diferencia de los RNNs).&lt;/li>
&lt;li>&lt;strong>Mecanismo&lt;/strong>: Se añade un vector fijo o aprendible a las embeddings de entrada.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Estructura Codificador-Descodificador&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Codificador&lt;/strong>: Procesa la secuencia de entrada en representaciones ricas en contexto.
&lt;ul>
&lt;li>Componentes:
&lt;ul>
&lt;li>Auto-atención multi-cabezal&lt;/li>
&lt;li>Red neuronal feed-forward (FFN)&lt;/li>
&lt;li>Normalización por capas y conexiones residuales&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;strong>Descodificador&lt;/strong>: Genera la secuencia de salida atendiendo tanto a las salidas del codificador como a los tokens generados previamente.
&lt;ul>
&lt;li>Componentes:
&lt;ul>
&lt;li>Auto-atención multi-cabezal enmascarada (evita atender a tokens futuros)&lt;/li>
&lt;li>Atención multi-cabezal sobre las salidas del codificador&lt;/li>
&lt;li>FFN, normalización por capas y conexiones residuales&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Red Feed-Forward (FFN)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Propósito&lt;/strong>: Introducir no linealidad y procesar cada token de manera independiente.&lt;/li>
&lt;li>&lt;strong>Mecanismo&lt;/strong>: Dos capas lineales con una activación ReLU entre ellas.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Normalización por Capas y Conexiones Residuales&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Propósito&lt;/strong>: Estabilizar el entrenamiento y mejorar el flujo de gradientes al normalizar las entradas de cada capa y añadir conexiones de salto.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h2 id="fastpitch">FastPitch
&lt;/h2>&lt;p>Con la teoría cubierta, examiné cada sección de la arquitectura de FastPitch en detalle. Ofrecí una breve explicación sobre las embeddings de palabras y la codificación posicional, ya que son temas complejos, y quise mantener la clase concisa.&lt;/p>
&lt;p>FastPitch convierte texto en espectrogramas mel, que luego son transformados en audio por otro modelo (en nuestro caso, HiFi-GAN). La secuencia de entrenamiento incluye los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>Texto a embeddings de palabras&lt;/li>
&lt;li>Concatenación de embeddings de palabras con espectrogramas mel&lt;/li>
&lt;li>Codificación posicional y FFT (bloque Transformer Feed-Forward)&lt;/li>
&lt;li>Predicción de tono&lt;/li>
&lt;li>Predicción de la duración de los fonemas&lt;/li>
&lt;li>Otro bloque FFT&lt;/li>
&lt;li>Capa completamente conectada&lt;/li>
&lt;li>Salida del espectrograma mel&lt;/li>
&lt;/ol>
&lt;p>En cada bloque, presenté las ecuaciones correspondientes y proporcioné explicaciones cualitativas sobre su rol en el modelo. Por ejemplo, la predicción de la duración de los fonemas es crucial para alinear la duración de un fonema con la duración esperada en el espectrograma.&lt;/p>
&lt;h2 id="clase-online">Clase Online
&lt;/h2>&lt;p>Finalmente, resumí los puntos más importantes y realicé una clase online para compartir estos conceptos con mis colegas. Puedes verla aquí:&lt;/p>
&lt;div class="video-wrapper">
&lt;iframe loading="lazy"
src="https://www.youtube.com/embed/v4bt8bGIM00"
allowfullscreen
title="YouTube Video"
>
&lt;/iframe>
&lt;/div></description></item><item><title>Z-Plane Visualizer</title><link>https://dibernardo.netlify.app/es/p/z-plane-visualizer/</link><pubDate>Sat, 12 Aug 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/z-plane-visualizer/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/z-plane-visualizer/frontz.PNG" alt="Featured image of post Z-Plane Visualizer" />&lt;p>En el curso de &lt;em>Procesamiento Digital de Señales&lt;/em> (DSP) en la UNTREF, exploramos el plano Z para el diseño de filtros con variables discretas. Durante la clase, el profesor presentó una herramienta construida en MatLab que visualiza los gráficos de transferencia y fase en relación con las posiciones de los ceros y polos en el plano Z.&lt;/p>
&lt;p>Inspirado en esto, decidí recrear esta herramienta en Python. Aprovechando mi experiencia con la biblioteca PyGame, logré construir una aplicación en tiempo real que permite mover los polos y ceros, permitiendo a los usuarios ver cómo cambia la función de transferencia en tiempo real.&lt;/p>
&lt;h2 id="cómo-funciona">Cómo Funciona
&lt;/h2>&lt;p>Primero, mapeo las posiciones de los píxeles en el plano Z a coordenadas de acuerdo con la representación del círculo unitario. Luego, construyo la función de transferencia, donde cada cero $z_{n}$ es un término en el numerador y cada polo $z_{i}$ es un término en el denominador. Con la función de transferencia $H(z)$, puedo graficar tanto el magnitud como el gráfico de fase, que también son representaciones mapeadas de la respuesta normalizada dentro de la aplicación.&lt;/p>
$$
H(z) = \frac{\sum_{n=0}^{N} (z - z_{n})}{\sum_{i=0}^{N} (z - z_{i})}
$$&lt;p>Cada fotograma recalcula la función de transferencia. El programa funciona de manera eficiente porque almaceno los ceros y polos en arreglos, lo que permite cálculos más rápidos gracias a numpy, que ya está altamente optimizado. Esto permite visualizar los cambios en tiempo real y proporciona una comprensión más intuitiva del comportamiento del plano Z. El siguiente fragmento de código muestra como se calcula la magnitud y fase utilizando exponenciales complejas.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">root&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">exp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">root&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">transfer_function&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">zeros&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">poles&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">w&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">RES&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">zero&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">zeros&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">num&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">zero&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">pole&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">poles&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">den&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">w&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">pole&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">H_z&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">den&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">mag&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">abs&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">H_z&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ang&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">angle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">H_z&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">mag&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ang&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Este proyecto está diseñado como material educativo, proporcionando a los estudiantes una herramienta práctica para comprender mejor las interacciones entre los polos y ceros en el plano Z. No está destinado como una herramienta profesional para el diseño de filtros.&lt;/p>
&lt;h2 id="funcionalidad">Funcionalidad
&lt;/h2>&lt;p>La aplicación ofrece las siguientes características:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Mostrar y mover polos/ceros&lt;/strong>: Los usuarios pueden seleccionar y mover los polos y ceros en el plano Z. Cuando la opción de simetría está activa, todos los polos y ceros seleccionados o movidos se colocan de manera simétrica respecto al eje imaginario.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Orden&lt;/strong>: Los usuarios pueden ajustar el orden de los polos y ceros desplazando la rueda del mouse. El orden puede incrementarse o disminuirse, con soporte hasta un orden de 4. El color de cada polo o cero cambia según su orden.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Información&lt;/strong>: Al pasar el cursor sobre un polo o cero, se muestra información sobre su posición, simetría y orden.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Zoom&lt;/strong>: El usuario puede acercar o alejar el plano Z usando los botones de más y menos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Eliminar&lt;/strong>: El ícono de la papelera elimina todos los polos y ceros del plano. Los usuarios también pueden eliminar polos o ceros individuales haciendo clic derecho sobre ellos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gráfico de Magnitud&lt;/strong>: El espectro de magnitud mostrado en la aplicación está normalizado. Esta decisión asegura que el enfoque permanezca en la forma de la magnitud, haciendo que el gráfico sea visualmente significativo para los usuarios. Sin embargo, no captura la diferencia en los valores máximos.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Gráfico de Fase&lt;/strong>: La fase se muestra sin envolver entre $-\pi$ y $\pi$.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="demo">Demo
&lt;/h2>&lt;p>Aquí tienes una demostración rápida de la aplicación en acción:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045497647" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>El código fuente de este proyecto se encuentra en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/Z-Plane_Visualizer" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p></description></item><item><title>Algorítmos de modificación de escala temporal</title><link>https://dibernardo.netlify.app/es/p/algor%C3%ADtmos-de-modificaci%C3%B3n-de-escala-temporal/</link><pubDate>Thu, 09 Mar 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/algor%C3%ADtmos-de-modificaci%C3%B3n-de-escala-temporal/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/time-scale-modification-algorithms/tsm.PNG" alt="Featured image of post Algorítmos de modificación de escala temporal" />&lt;p>Los algoritmos de modificación de escala temporal se utilizan para acelerar o desacelerar la velocidad de reproducción de un audio. Cuando se cambia la tasa de muestreo de un audio, la velocidad cambia, pero también lo hace el tono (al acelerar el audio, suena con un tono más alto). Existen diferentes algoritmos que permiten modificar la velocidad del audio manteniendo constante el tono.&lt;/p>
&lt;p>La principal referencia para este estudio es el siguiente artículo, donde se describen en detalle los distintos algoritmos.&lt;/p>
&lt;blockquote>
&lt;p>A Review of Time-Scale Modification of Music Signals.&lt;br>
— &lt;cite>Jonathan Driedger y Meinard Müller&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/cite>&lt;/p>
&lt;/blockquote>
&lt;h2 id="comparación-de-algoritmos">Comparación de algoritmos
&lt;/h2>&lt;p>Existen dos algoritmos principales, el &lt;em>Overlap-and-add&lt;/em> (OLA) y el &lt;em>Phase Vocoder&lt;/em> (PV). Ambos logran buenos resultados bajo diferentes señales y condiciones. Para aprovechar las ventajas de ambos métodos, se utiliza una implementación final basada en la &lt;em>Separación Armónico-Percusiva&lt;/em> (HPS), que combina ambos algoritmos y logra los mejores resultados.&lt;/p>
&lt;h3 id="ola">OLA
&lt;/h3>&lt;p>Este método trabaja en el dominio del tiempo, superponiendo secciones del audio (ventanas) y reorganizándolas para lograr un cambio deseado en la velocidad. Este método funciona bien para señales percusivas, pero introduce artefactos cuando se utiliza con señales armónicas o tonales.&lt;/p>
&lt;h3 id="pv">PV
&lt;/h3>&lt;p>Este método opera en el dominio de la frecuencia, combinando fragmentos de audio en este dominio para lograr el cambio deseado en el tiempo. Utiliza el principio del vocoder de fase para propagar la fase entre ventanas, garantizando la continuidad al aplicarse a señales armónicas. Sin embargo, no es efectivo para señales percusivas, ya que el proceso de propagación de fase elimina los transitorios en las señales.&lt;/p>
&lt;p>Creé visualizaciones usando &lt;em>Manim&lt;/em> para mejorar mi presentación en clase. El primer video muestra cómo el algoritmo PV alinea las ventanas para garantizar transiciones suaves en la señal generada a lo largo del tiempo. Para lograrlo, se aplica una ventana gaussiana que mantiene la continuidad y suavidad, incluso al inicio y al final de la secuencia.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045495557" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>El segundo video muestra los efectos de aplicar el algoritmo PV a una señal que contiene transitorios.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045495634" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>Como predice la teoría, los transitorios desaparecen porque el algoritmo PV interrumpe la alineación vertical de la fase. Aunque estos ejemplos utilizan señales idealizadas, demuestran de manera efectiva las principales fortalezas y limitaciones del algoritmo.&lt;/p>
&lt;h3 id="hps">HPS
&lt;/h3>&lt;p>Para utilizar ambos métodos con las señales ideales, se emplea el algoritmo HPS. Este algoritmo separa la señal en sus componentes armónicas y percusivas. Funciona comparando la continuidad de la señal en la representación STFT, utilizando un filtro que compara la presencia vertical contra la horizontal en el espectrograma. Con un umbral, se puede definir una máscara binaria sobre el espectrograma para separar las partes percusivas de las secciones armónicas.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>Implementamos con éxito todos los algoritmos y los comparamos, verificando los contenidos teóricos presentados en el artículo de referencia. Durante el proceso, desarrollamos un conjunto de herramientas para utilizar estos algoritmos con el lenguaje de programación Python. Todo el código está disponible en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/TSM_Toolkit" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p>
&lt;h2 id="presentación-académica">Presentación académica
&lt;/h2>&lt;p>El estudio fue presentado junto a mis compañeros en las &lt;em>JAAS&lt;/em> (Jornadas de Acústica, Audio y Sonido). Las principales ideas y conclusiones se expusieron en la conferencia. En el siguiente informe se encuentran todos los detalles y análisis realizados para este proyecto (en español).&lt;/p>
&lt;blockquote>
&lt;p>ALGORITMOS DE MODIFICACIÓN DE ESCALA TEMPORAL.&lt;br>
— &lt;cite>Matías Di Bernardo; Matías Vereertbruhggen; Sebastían Carro&lt;sup id="fnref:2">&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref">2&lt;/a>&lt;/sup>&lt;/cite>&lt;/p>
&lt;/blockquote>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>A Review of Time-Scale Modification of Music Signal &lt;a class="link" href="https://www.researchgate.net/publication/295082364_A_Review_of_Time-Scale_Modification_of_Music_Signals" target="_blank" rel="noopener"
>paper&lt;/a>.&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;li id="fn:2">
&lt;p>JAAS 2023 - Algoritmos de Modificación de Escala Temporal &lt;a class="link" href="https://drive.google.com/file/d/12kPB3qBjczyx7X2XV3ZpBDo1GDO2u4qR/view?usp=sharing" target="_blank" rel="noopener"
>paper&lt;/a>.&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>IA aprende a jugar 2048</title><link>https://dibernardo.netlify.app/es/p/ia-aprende-a-jugar-2048/</link><pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/ia-aprende-a-jugar-2048/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/ai-learns-to-play-2048-game/game_img.jpg" alt="Featured image of post IA aprende a jugar 2048" />&lt;p>Usé este proyecto como introducción al Aprendizaje por Refuerzo (Reinforcement Learning). Habiendo trabajado principalmente con aprendizaje supervisado y no supervisado, quería comenzar con un proyecto pequeño y sencillo para comprender rápidamente las ideas principales y crear algo divertido. Seguí este &lt;a class="link" href="https://youtu.be/L8ypSXwyBds" target="_blank" rel="noopener"
>video de YouTube&lt;/a> como referencia, el cual explica cómo usar Aprendizaje por Refuerzo (RL) para entrenar un modelo capaz de jugar al juego de la serpiente. Para hacerlo más desafiante, apliqué la misma red al juego 2048.&lt;/p>
&lt;h2 id="código">Código
&lt;/h2>&lt;p>El código tiene tres componentes principales:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>El Juego&lt;/strong>: Implementa la lógica del juego y la interfaz gráfica (GUI).&lt;/li>
&lt;li>&lt;strong>Agente&lt;/strong>: Controla la jugabilidad.&lt;/li>
&lt;li>&lt;strong>Modelo de IA&lt;/strong>: Una red neuronal que aprende a jugar y guía al agente.&lt;/li>
&lt;/ul>
&lt;h3 id="estado-del-juego">Estado del Juego
&lt;/h3>&lt;p>Modelé el estado del juego como una matriz de 4x4 que representa el tablero. Las acciones del juego están representadas por un vector con las siguientes posibilidades:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Izquierda&lt;/strong>: [1, 0, 0, 0]&lt;/li>
&lt;li>&lt;strong>Derecha&lt;/strong>: [0, 1, 0, 0]&lt;/li>
&lt;li>&lt;strong>Arriba&lt;/strong>: [0, 0, 1, 0]&lt;/li>
&lt;li>&lt;strong>Abajo&lt;/strong>: [0, 0, 0, 1]&lt;/li>
&lt;/ul>
&lt;h3 id="recompensa">Recompensa
&lt;/h3>&lt;p>El modelo de RL funciona con recompensas para cuantificar cuándo el agente actúa bien o mal. Inicialmente, definí las siguientes recompensas:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>+10 puntos&lt;/strong>: Cuando el agente duplica los puntos. Esto es crucial porque, en 2048, los puntos aumentan exponencialmente.&lt;/li>
&lt;li>&lt;strong>-10 puntos&lt;/strong>: Cuando se pierde el juego. Esto sirve como una penalización sencilla.&lt;/li>
&lt;/ul>
&lt;p>Al principio, el modelo mostraba una mejora lenta. Para solucionarlo, añadí una recompensa adicional:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>+2 puntos&lt;/strong>: Cuando se incrementan los puntos. Esta recompensa incentiva acciones que maximicen la limpieza del tablero y el progreso.&lt;/li>
&lt;/ul>
&lt;h2 id="cómo-funciona-el-modelo">Cómo Funciona el Modelo
&lt;/h2>&lt;p>El modelo es una red neuronal lineal simple. Toma el estado del juego como entrada y predice la mejor acción siguiente para maximizar la recompensa.&lt;/p>
&lt;p>Las recompensas se gestionan utilizando una técnica llamada Q-Learning. Un &lt;em>valor Q&lt;/em> representa la calidad de una decisión basada en la función de pérdida. La función de pérdida se deriva de la &lt;em>Ecuación de Bellman&lt;/em>:&lt;/p>
$$
NewQ(s, a) = Q(s, a) + \alpha [R(s, a) + \lambda \, \text{max}Q'(s', a') - Q(s, a)]
$$&lt;p>Donde:&lt;/p>
&lt;ul>
&lt;li>$Q(s, a)$: El &lt;em>valor Q&lt;/em> para un estado y acción específicos.&lt;/li>
&lt;li>$\alpha$: Tasa de aprendizaje.&lt;/li>
&lt;li>$R(s, a)$: Recompensa para un estado y acción específicos.&lt;/li>
&lt;li>$\lambda$: Tasa de descuento.&lt;/li>
&lt;li>$\text{max}Q&amp;rsquo;(s&amp;rsquo;, a&amp;rsquo;)$: Recompensa futura máxima esperada.&lt;/li>
&lt;/ul>
&lt;h2 id="experimentos-y-resultados">Experimentos y Resultados
&lt;/h2>&lt;h3 id="prueba-aleatoria-como-línea-base">Prueba Aleatoria como Línea Base
&lt;/h3>&lt;p>Para establecer una línea base, probé el puntaje promedio que se puede lograr tomando acciones aleatorias. Después de 1,000 iteraciones, el puntaje promedio fue de &lt;strong>170&lt;/strong>, muy por debajo de los 2048 puntos necesarios para ganar el juego.&lt;/p>
&lt;h3 id="resultados-iniciales">Resultados Iniciales
&lt;/h3>&lt;p>Mis primeros intentos fueron desalentadores. El modelo tenía un desempeño peor que los movimientos aleatorios. Aquí algunos resultados iniciales:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Juego 1,000&lt;/strong> | Puntaje: 208 | Récord: 416 | Puntaje Promedio: 200 | Recompensa: 640&lt;/li>
&lt;li>&lt;strong>Juego 1,000&lt;/strong> | Puntaje: 116 | Récord: 346 | Puntaje Promedio: 161 | Recompensa: 310&lt;/li>
&lt;li>&lt;strong>Juego 1,000&lt;/strong> | Puntaje: 112 | Récord: 348 | Puntaje Promedio: 146 | Recompensa: 320&lt;/li>
&lt;/ol>
&lt;p>En estos intentos, el agente desarrolló una estrategia subóptima de llenar el tablero antes de incrementar los puntos.&lt;/p>
&lt;h3 id="mejoras">Mejoras
&lt;/h3>&lt;p>Tras experimentar con los parámetros de recompensa, me centré en la fase de exploración. Inicialmente, el parámetro de &lt;em>juegos de exploración&lt;/em>, que elige movimientos aleatorios, estaba configurado en 25 juegos. Al aumentar este parámetro, el agente pudo explorar más estrategias, logrando mejores resultados:&lt;/p>
&lt;ol start="4">
&lt;li>&lt;strong>Juego 1,000&lt;/strong> | Puntaje: 478 | Récord: 478 | Puntaje Promedio: 230&lt;/li>
&lt;li>&lt;strong>Juego 1,000&lt;/strong> | Puntaje: 514 | Récord: 964 | Puntaje Promedio: 382&lt;/li>
&lt;/ol>
&lt;p>A medida que el modelo mejoraba, extendí el entrenamiento a más juegos:&lt;/p>
&lt;ol start="6">
&lt;li>&lt;strong>Juego 3,796&lt;/strong> | Puntaje: 770 | Récord: 1,366 | Puntaje Promedio: 469&lt;/li>
&lt;li>&lt;strong>Juego 4,852&lt;/strong> | Puntaje: 631 | Récord: 1,462 | Puntaje Promedio: 483&lt;/li>
&lt;/ol>
&lt;p>Finalmente, con 200 juegos de exploración y 5,000 juegos de entrenamiento, los resultados fueron los siguientes:&lt;/p>
&lt;ol start="8">
&lt;li>&lt;strong>Juego 5,000&lt;/strong> | Puntaje: 840 | Récord: 1,678 | Puntaje Promedio: 512&lt;/li>
&lt;/ol>
&lt;p>Aunque el modelo no logró ganar el juego, quedé satisfecho con el progreso. Creo que con más tiempo de entrenamiento (el último intento duró 4 horas) y capas adicionales en la red, sería posible ganar el juego con esta arquitectura.&lt;/p>
&lt;h2 id="demo">Demo
&lt;/h2>&lt;p>Aquí tienes una demostración de la aplicación, mostrando el proceso de aprendizaje del agente:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://player.vimeo.com/video/1045495533" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;p>Implementé atajos de teclado para controlar la velocidad del juego, ofreciendo tres opciones:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rápida&lt;/strong>: Para un entrenamiento acelerado.&lt;/li>
&lt;li>&lt;strong>Lenta&lt;/strong>: Para observar y analizar el progreso del agente y sus errores.&lt;/li>
&lt;li>&lt;strong>Media&lt;/strong>: Casi no la utilicé.&lt;/li>
&lt;/ul>
&lt;p>El código completo para este proyecto está disponible en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/RF_2048-game" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p></description></item><item><title>Comparación de diferentes transformaciones tiempo-frecuencia</title><link>https://dibernardo.netlify.app/es/p/comparaci%C3%B3n-de-diferentes-transformaciones-tiempo-frecuencia/</link><pubDate>Fri, 11 Nov 2022 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/comparaci%C3%B3n-de-diferentes-transformaciones-tiempo-frecuencia/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/fourier.jpg" alt="Featured image of post Comparación de diferentes transformaciones tiempo-frecuencia" />&lt;p>Esta investigación se desarrolla en el marco de la materia &lt;em>Metodología de la Investigación&lt;/em> en UNTREF. En el artículo se pretende comparar las diferencias entre tres tipos de transformaciones tiempo-frecuencia:&lt;/p>
&lt;ol>
&lt;li>Transformada de Fourier (FT)&lt;/li>
&lt;li>Transformada Wavelet (WT)&lt;/li>
&lt;li>Transformada Huang-Hilbert (HHT)&lt;/li>
&lt;/ol>
&lt;p>El objetivo del trabajo es entender las diferencias entre estos tipos de transformaciones y profundizar mi conocimiento en el procesamiento de señales.&lt;/p>
&lt;h2 id="objetivo">Objetivo
&lt;/h2>&lt;p>El objetivo general de la investigación es determinar con qué herramienta de análisis espectral se logra una mayor precisión en la tarea de detección de tono.&lt;/p>
&lt;p>Para alcanzar este objetivo, se plantean los siguientes puntos a completar:&lt;/p>
&lt;ul>
&lt;li>Determinar los parámetros necesarios para representar la señal en el dominio espectral según cada caso.&lt;/li>
&lt;li>Elegir un algoritmo que identifique el tono de la señal en base a su representación espectral.&lt;/li>
&lt;li>Generar los datos (señales de audio) con los cuales se realizará la comparación.&lt;/li>
&lt;li>Evaluar los datos generados con los distintos métodos de análisis y aplicar procesos estadísticos para validar los resultados.&lt;/li>
&lt;li>Establecer una medida de precisión en la tarea de detección de tono.&lt;/li>
&lt;li>Comparar los resultados de los distintos análisis y determinar cuál es el que consigue una mayor precisión en la detección de tono.&lt;/li>
&lt;/ul>
&lt;p>Se eligió la tarea de detección de tono porque es una de las aplicaciones principales de este tipo de transformadas.&lt;/p>
&lt;h2 id="algoritmos">Algoritmos
&lt;/h2>&lt;p>El análisis teórico de todas las transformadas se realiza en el dominio continuo, pero para llevar a cabo los experimentos y comparaciones se trabaja en el dominio discreto, de forma que todos los cálculos se realizan digitalmente.&lt;/p>
&lt;h3 id="fft">FFT
&lt;/h3>&lt;p>La FFT es un algoritmo que optimiza la DFT (Transformada de Fourier de tiempo discreto). Con este algoritmo se obtiene la representación espectral de la señal de acuerdo al análisis de Fourier, descomponiendo una señal compleja en una suma de senos o cosenos. La DFT se calcula mediante la fórmula:&lt;/p>
$$
X_k = \sum_{n=0}^{N-1} e^{-i\frac{2\pi}{N}kn} x_n
$$&lt;p>Donde \( N \) es la cantidad de muestras de la señal y \( k \) son los números naturales de \( 0 \) hasta \( N – 1 \).&lt;/p>
&lt;h3 id="wt">WT
&lt;/h3>&lt;p>La Transformada Wavelet (WT) utiliza una función ondulatoria (wavelet) y aplica una convolución entre la señal y la función de onda elegida para determinar si esa forma ondulatoria está presente en la señal. La onda se deforma en frecuencia y amplitud, permitiendo que una sola función ondulatoria recree todo el espectro de interés.&lt;/p>
&lt;p>Para esta investigación se empleará la CDWT (Cyclic Discrete Wavelet Transform), la implementación más común al discretizar la WT. Conceptualmente, esta transformada extiende el análisis de Fourier utilizando una base de funciones ondulatorias en lugar de senos y cosenos. Se calcula así:&lt;/p>
$$
Wf[n, a^j] = \sum_{m=0}^{N-1} f[m] \psi_j[m-n]
$$&lt;p>Donde \( N \) es la cantidad de muestras de la señal, \( \psi \) es la función ondulatoria y \( j \) representa la deformación de la onda según el banco de ondas seleccionado.&lt;/p>
&lt;h3 id="hht">HHT
&lt;/h3>&lt;p>Por último, se empleará la Transformada Huang-Hilbert (HHT), que utiliza la Descomposición Empírica Modal (EMD) para descomponer la señal en subseñales relevantes. En lugar de descomponer en funciones senoidales u ondulatorias, el EMD encuentra funciones modales intrínsecas (IMF) específicas de cada señal.&lt;/p>
&lt;p>La relación entre las IMF y la frecuencia original se establece con la ecuación:&lt;/p>
$$
z(t) = f(t) + i H\{ f(t) \}
$$&lt;p>Donde \( f(t) \) es una IMF y \( H \) es la Transformada Hilbert. Esto permite proyectar la señal al eje imaginario y extraer la amplitud y la fase de cada instante, construyendo la representación espectral. Como una señal generalmente tiene múltiples IMF, este proceso se repite para todas y se suman para obtener el espectro completo.&lt;/p>
&lt;h2 id="procedimiento">Procedimiento
&lt;/h2>&lt;p>Se analizará la relación entre los tipos de representación espectral y la precisión en la detección de tono.&lt;/p>
&lt;p>Primero, se seleccionarán los parámetros para las distintas transformadas, como el número de muestras para el ventaneo temporal, que determina la resolución temporal y frecuencial.&lt;/p>
&lt;p>Para comparar los métodos, se generarán datos representativos de distintos casos de interés, modelando cuatro tipos de señales:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Monótonas&lt;/strong>: Una sola nota correspondiente a la \( F_0 \).&lt;/li>
&lt;li>&lt;strong>Politonales&lt;/strong>: Múltiples notas, donde la armonía determina la \( F_0 \).&lt;/li>
&lt;li>&lt;strong>Transiciones lentas&lt;/strong>: Cambios de \( F_0 \) graduales.&lt;/li>
&lt;li>&lt;strong>Transiciones rápidas&lt;/strong>: Cambios de \( F_0 \) abruptos.&lt;/li>
&lt;/ul>
&lt;p>Se comparará el valor real \( V(t) \) con el resultado \( P(t) \) de cada transformada, integrando la diferencia temporalmente para calcular la precisión.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>En esta etapa, solo se requería completar el plan de investigación detallando el procedimiento y los métodos de análisis. Para ello, se generaron datos de ejemplo (&lt;em>dummy data&lt;/em>) y se validaron estadísticamente los resultados esperados.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res.PNG"
width="834"
height="550"
srcset="https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res_hu8387233291062647437.PNG 480w, https://dibernardo.netlify.app/p/comparative-analysis-of-time-frequency-transformations/res_hu2809804783985204141.PNG 1024w"
loading="lazy"
alt="Gráfico con la precisión de cada transformada según el tipo de señal analizada"
class="gallery-image"
data-flex-grow="151"
data-flex-basis="363px"
>&lt;/p>
&lt;p>El gráfico muestra la precisión obtenida con las tres transformadas en función del tipo de señal. Se espera que la Transformada Wavelet (WT) supere a la Transformada de Fourier (FT), y que la Transformada Huang-Hilbert (HHT) sea más precisa en general.&lt;/p>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>En la tarea de detección de tono por análisis frecuencial, la Transformada Huang-Hilbert (HHT) ofrece, en la mayoría de los casos, mayor precisión que la Transformada Rápida de Fourier (FFT) y la Transformada Wavelet Cíclica (CDWT).&lt;/p>
&lt;p>La magnitud de esta diferencia depende del tipo de señal analizada, siendo las señales con transiciones rápidas las menos beneficiadas por el cambio de transformada, mientras que las señales politonales muestran las mejoras más significativas al emplear la HHT.&lt;/p>
&lt;p>En este proyecto, profundicé mis conocimientos en procesamiento de señales y comprendí los fundamentos para usar herramientas como la WT y la HHT según las características de la señal.&lt;/p>
&lt;p>Más detalles del trabajo están disponibles en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1G5kasP3BzZPVuxrXArHM72pUVlkN9b2Q/view?usp=sharing" target="_blank" rel="noopener"
>informe&lt;/a>.&lt;/p></description></item><item><title>Evaluación de diferentes modelos de Separación del Hablante</title><link>https://dibernardo.netlify.app/es/p/evaluaci%C3%B3n-de-diferentes-modelos-de-separaci%C3%B3n-del-hablante/</link><pubDate>Fri, 04 Nov 2022 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/evaluaci%C3%B3n-de-diferentes-modelos-de-separaci%C3%B3n-del-hablante/</guid><description>&lt;p>Este proyecto comenzó como el trabajo final para un seminario de la UNTREF llamado &lt;em>Seminario en Aplicaciones de Redes Neuronales en la recuperación de información musical&lt;/em>. El objetivo era utilizar una Red Neuronal Siamés (SNN, por sus siglas en inglés) en un contexto diferente al visto en clase (detección de similitud musical).&lt;/p>
&lt;p>Para el proyecto final de este curso, desarrollamos un modelo SNN desde cero utilizando el framework &lt;em>Keras&lt;/em> y la arquitectura &lt;em>SincNet&lt;/em> para reducir la dimensionalidad del audio, logrando buenos resultados. Más adelante, para expandir este proyecto, probé otro enfoque utilizando &lt;em>Wav2Vec&lt;/em> para la reducción de dimensionalidad y reimplementé todo el proyecto en el framework &lt;em>PyTorch&lt;/em>. Sin embargo, este intento arrojó resultados subóptimos, lo que indica que la reducción de dimensionalidad con Wav2Vec perdió información crítica necesaria para la tarea de diarización de locutores.&lt;/p>
&lt;h2 id="tarea-de-diarización-de-locutores">Tarea de Diarización de Locutores
&lt;/h2>&lt;p>El objetivo de un modelo de diarización de locutores es identificar diferentes hablantes en un flujo de audio que contiene múltiples voces. Por ejemplo, en un podcast con dos personas (A y B), el modelo debe determinar los pasos de tiempo en los que el hablante A está hablando y los pasos de tiempo en los que el hablante B está hablando (e identificar implícitamente los períodos de silencio). Estos modelos son extremadamente útiles para la edición de audio y el análisis de largas secuencias de audio con múltiples hablantes.&lt;/p>
&lt;h2 id="por-qué-redes-neuronales-siamés">¿Por qué Redes Neuronales Siamés?
&lt;/h2>&lt;p>En clase, exploramos la arquitectura siamés para comparar similitudes entre piezas musicales, desarrollando una herramienta capaz de identificar versiones de canciones famosas.&lt;/p>
&lt;p>Una Red Neuronal Siamés consiste en dos o más subredes idénticas que comparten los mismos pesos y parámetros. Está diseñada para comparar pares de entradas y medir su similitud, generalmente utilizando una métrica de distancia como la distancia euclidiana. Cada subred procesa una entrada, y las salidas se combinan para calcular un puntaje de similitud.&lt;/p>
&lt;p>Con esta comparación de similitudes en mente, quisimos aplicar estas redes a la tarea de diarización de locutores. La idea era generar embeddings de hablantes a partir de audio utilizando un modelo preentrenado y comparar las salidas de diferentes segmentos de audio. Basándonos en el puntaje de similitud, buscamos identificar los segmentos donde diferentes hablantes están hablando.&lt;/p>
&lt;h2 id="experimentos">Experimentos
&lt;/h2>&lt;p>Probé dos métodos diferentes para la extracción de características de audio que servirían como embeddings de hablantes.&lt;/p>
&lt;h3 id="implementación-en-keras-con-sincnet">Implementación en Keras con SincNet
&lt;/h3>&lt;p>En este enfoque, utilizamos la arquitectura SincNet para extraer características específicas de los hablantes a partir del audio. SincNet aplica funciones sinc aprendibles como sus filtros, que son particularmente adecuadas para el procesamiento de audio, ya que imitan los filtros de paso de banda tradicionales. Estas características se introdujeron en la Red Neuronal Siamés, que comparó pares de segmentos de audio para calcular sus puntajes de similitud. El modelo se entrenó con conjuntos de datos de audio etiquetados y observamos un rendimiento sólido al agrupar segmentos de audio por hablante, logrando límites claros entre diferentes hablantes.&lt;/p>
&lt;p>Un informe con los resultados puede encontrarse en el siguiente &lt;a class="link" href="https://github.com/MatiasDiBernardo/Speaker-Diarization-with-SNN/blob/master/TP%20Final%20Seminario%20Redes%20-%20Di%20Bernardo%20Ferreyra.ipynb" target="_blank" rel="noopener"
>notebook de Jupyter&lt;/a> (en español).&lt;/p>
&lt;h3 id="implementación-en-pytorch-con-wav2vec">Implementación en PyTorch con Wav2Vec
&lt;/h3>&lt;p>Para este método, utilicé Wav2Vec, un modelo preentrenado poderoso para la extracción de embeddings profundos de audio. A diferencia de SincNet, los embeddings de Wav2Vec se derivan del aprendizaje autosupervisado, capturando representaciones de alto nivel del audio. Estos embeddings se usaron en la Red Neuronal Siamés para comparaciones de similitud. Sin embargo, los resultados fueron subóptimos para la tarea de diarización. Parece que Wav2Vec, aunque excelente para tareas de reconocimiento de voz, perdió algunos detalles específicos del hablante necesarios para distinguir entre diferentes voces en nuestro contexto.&lt;/p>
&lt;h2 id="resultados">Resultados
&lt;/h2>&lt;p>Los experimentos demostraron que la elección del método de extracción de características es crucial para la diarización de locutores. La implementación en Keras con SincNet superó a la implementación en PyTorch con Wav2Vec, mostrando mayor precisión al identificar transiciones entre hablantes. Esto sugiere que la extracción de características específicas para la tarea, como SincNet, es más efectiva que los embeddings de propósito general como Wav2Vec para la diarización de locutores.&lt;/p>
&lt;p>El código de este proyecto está disponible en este &lt;a class="link" href="https://github.com/MatiasDiBernardo/Speaker-Diarization-with-SNN" target="_blank" rel="noopener"
>repositorio&lt;/a>.&lt;/p>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>Este proyecto fue una de mis primeras experiencias con modelos de aprendizaje profundo, donde apliqué mis conocimientos a un problema sin seguir un artículo específico o utilizar un modelo preentrenado. Exploré diferentes soluciones y concluí sobre la importancia de la extracción de características y la selección del modelo.&lt;/p>
&lt;p>También me ayudó a familiarizarme con la sintaxis de los frameworks de aprendizaje profundo más populares y a solidificar mi comprensión en el proceso.&lt;/p></description></item><item><title>Diseño de un auditorio</title><link>https://dibernardo.netlify.app/es/p/dise%C3%B1o-de-un-auditorio/</link><pubDate>Wed, 22 Jun 2022 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/p/dise%C3%B1o-de-un-auditorio/</guid><description>&lt;img src="https://dibernardo.netlify.app/p/theather-acoustic-design/front.PNG" alt="Featured image of post Diseño de un auditorio" />&lt;p>Este proyecto es el trabajo final de la clase &lt;em>Acústica y Psicoacústica II&lt;/em>, donde se nos encargó rediseñar un auditorio existente. El objetivo era aplicar la teoría vista en clase para crear un auditorio optimizado desde el punto de vista acústico. Para nuestro proyecto, elegimos rediseñar el Royal Albert Hall en Londres. Esto representó un desafío particular debido a las grandes dimensiones del auditorio, lo que dificulta asegurar que el sonido llegue de manera uniforme a todos los espectadores.&lt;/p>
&lt;h2 id="ideas-principales-del-rediseño">Ideas Principales del Rediseño
&lt;/h2>&lt;p>El rediseño buscó preservar el concepto original del auditorio, incluyendo su gran volumen y capacidad de asientos, mientras se introducían cambios críticos para mejorar su acústica. Aunque el enfoque principal fue la mejora acústica, el rediseño también consideró otros factores esenciales, como las líneas de visión y una distribución adecuada de los asientos.&lt;/p>
&lt;p>A pesar de la intención de mantener las dimensiones originales del auditorio, su volumen resultó ser demasiado grande para lograr un tiempo de reverberación óptimo. Para abordar este problema, el rediseño incorporó un techo intermedio para reducir el volumen del techo esférico, y se redujo el área principal de asientos. Estos cambios permitieron obtener un mejor tiempo de reverberación en la sala, como se ilustra en la sección transversal a continuación.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/theather-acoustic-design/cross_section.PNG"
width="1324"
height="506"
srcset="https://dibernardo.netlify.app/p/theather-acoustic-design/cross_section_hu8201639409724213049.PNG 480w, https://dibernardo.netlify.app/p/theather-acoustic-design/cross_section_hu5610852418196906417.PNG 1024w"
loading="lazy"
alt="Sección transversal del rediseño del auditorio"
class="gallery-image"
data-flex-grow="261"
data-flex-basis="627px"
>&lt;/p>
&lt;h2 id="detalles-de-construcción-y-regulaciones">Detalles de Construcción y Regulaciones
&lt;/h2>&lt;p>Para garantizar un rediseño factible y funcional, se consideraron cuidadosamente los siguientes aspectos clave:&lt;/p>
&lt;ul>
&lt;li>Distribución de asientos&lt;/li>
&lt;li>Espaciado de los pasillos&lt;/li>
&lt;li>Optimización de las líneas de visión&lt;/li>
&lt;li>Comodidad del escenario&lt;/li>
&lt;/ul>
&lt;h2 id="tratamiento-acústico">Tratamiento Acústico
&lt;/h2>&lt;p>El tratamiento acústico fue la parte más crítica de este estudio y se centró en dos aspectos principales: reflexiones y tiempo de reverberación.&lt;/p>
&lt;h3 id="reflexiones">Reflexiones
&lt;/h3>&lt;p>El análisis de las reflexiones es esencial para la experiencia acústica del público. El Royal Albert Hall original cuenta con un techo esférico que centraliza las reflexiones, creando efectos acústicos indeseables. Para mitigar esto, el rediseño incorporó un techo intermedio con una geometría específica diseñada para distribuir las reflexiones de manera uniforme entre el público.&lt;/p>
&lt;p>El diseño escalonado del techo garantiza reflexiones adecuadas para todas las filas de asientos. En el balcón principal, se abordaron dos reflexiones específicas para compensar el menor nivel de presión sonora (SPL) debido a la gran distancia desde el escenario, como se muestra en la imagen a continuación.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/theather-acoustic-design/balcony_cel_ref.PNG"
width="1136"
height="462"
srcset="https://dibernardo.netlify.app/p/theather-acoustic-design/balcony_cel_ref_hu8173242411301837287.PNG 480w, https://dibernardo.netlify.app/p/theather-acoustic-design/balcony_cel_ref_hu890172879033338586.PNG 1024w"
loading="lazy"
alt="Reflexiones en el techo del balcón"
class="gallery-image"
data-flex-grow="245"
data-flex-basis="590px"
>&lt;/p>
&lt;p>También se optimizaron las reflexiones laterales mediante ajustes en la geometría del escenario y las paredes de los balcones laterales.&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/theather-acoustic-design/lateral_ref.PNG"
width="642"
height="521"
srcset="https://dibernardo.netlify.app/p/theather-acoustic-design/lateral_ref_hu2629534869006446785.PNG 480w, https://dibernardo.netlify.app/p/theather-acoustic-design/lateral_ref_hu11386676131120321573.PNG 1024w"
loading="lazy"
alt="Reflexiones laterales en el público principal"
class="gallery-image"
data-flex-grow="123"
data-flex-basis="295px"
>&lt;/p>
&lt;p>Además, el rediseño buscó minimizar el ITDG (Initial Time Delay Gap) en los diferentes puntos del público.&lt;/p>
&lt;h3 id="materiales-y-tiempo-de-reverberación">Materiales y Tiempo de Reverberación
&lt;/h3>&lt;p>El rediseño siguió las recomendaciones del libro &lt;em>Acoustic Absorbers and Diffusers&lt;/em> para lograr un equilibrio entre absorción, difusión y reflexiones especulares. Se utilizaron materiales reflectantes en el techo y en partes de los balcones laterales para garantizar reflexiones especulares efectivas. Para reducir el tiempo de reverberación (RT), se aplicaron materiales con coeficientes de absorción más altos en otras superficies.&lt;/p>
&lt;p>Usando los materiales seleccionados y la ecuación de Sabine, calculamos el RT estimado del auditorio. El tiempo de reverberación para las diferentes frecuencias se muestra a continuación:&lt;/p>
&lt;p>&lt;img src="https://dibernardo.netlify.app/p/theather-acoustic-design/rt.PNG"
width="848"
height="644"
srcset="https://dibernardo.netlify.app/p/theather-acoustic-design/rt_hu5951076229482181811.PNG 480w, https://dibernardo.netlify.app/p/theather-acoustic-design/rt_hu15811556200730072255.PNG 1024w"
loading="lazy"
alt="Tiempo de reverberación por frecuencia"
class="gallery-image"
data-flex-grow="131"
data-flex-basis="316px"
>&lt;/p>
&lt;p>El RT calculado para frecuencias medias es de 2,51 segundos. Aunque este valor está ligeramente por encima del máximo recomendado de 2,4 segundos para una acústica óptima, es aceptable dado el gran volumen del auditorio.&lt;/p>
&lt;h2 id="modelado-3d">Modelado 3D
&lt;/h2>&lt;p>Renderizamos el auditorio rediseñado utilizando el software &lt;em>SketchUp&lt;/em>. A continuación, se presentan algunas visualizaciones:&lt;/p>
&lt;div id="carousel0" class="carousel" duration="70000">
&lt;ul>
&lt;li id="c0_slide1" style="min-width: calc(100%/1); padding-bottom: 450px;">&lt;img src="https://dibernardo.netlify.app/images/royal/r1.PNG" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide2" style="min-width: calc(100%/1); padding-bottom: 450px;">&lt;img src="https://dibernardo.netlify.app/images/royal/r2.PNG" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide3" style="min-width: calc(100%/1); padding-bottom: 450px;">&lt;img src="https://dibernardo.netlify.app/images/royal/r3.PNG" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;li id="c0_slide4" style="min-width: calc(100%/1); padding-bottom: 450px;">&lt;img src="https://dibernardo.netlify.app/images/royal/r4.PNG" alt="" />&lt;div>&lt;div>&lt;/div>&lt;/div>&lt;/li>
&lt;/ul>
&lt;ol>
&lt;li>&lt;a href="#c0_slide1">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide2">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide3">&lt;/a>&lt;/li>
&lt;li>&lt;a href="#c0_slide4">&lt;/a>&lt;/li>
&lt;/ol>
&lt;div class="prev">&amp;lsaquo;&lt;/div>
&lt;div class="next">&amp;rsaquo;&lt;/div>
&lt;/div>
&lt;h2 id="conclusiones">Conclusiones
&lt;/h2>&lt;p>Rediseñar el Royal Albert Hall para mejorar su acústica mientras se preserva su esencia original presentó desafíos significativos. El proyecto requirió soluciones innovadoras para abordar los problemas acústicos sin comprometer el diseño icónico del auditorio. Aunque fueron necesarios algunos cambios, el resultado final demuestra un rediseño cuidadosamente pensado que mejora la acústica mientras mantiene el carácter histórico del Royal Albert Hall. Este proyecto también profundizó nuestra comprensión de los conceptos de acústica y diseño de auditorios.&lt;/p>
&lt;p>Una descripción detallada de este proyecto está disponible en el siguiente &lt;a class="link" href="https://drive.google.com/file/d/1CkX-t_gx2s_YlKbrjB-5IK_dmZIkpJrd/view?usp=sharing" target="_blank" rel="noopener"
>artículo&lt;/a> (en inglés).&lt;/p></description></item><item><title>Archivos</title><link>https://dibernardo.netlify.app/es/archives/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/archives/</guid><description/></item><item><title>Buscar</title><link>https://dibernardo.netlify.app/es/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/search/</guid><description/></item><item><title>Sobre mí</title><link>https://dibernardo.netlify.app/es/sobre-m%C3%AD/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dibernardo.netlify.app/es/sobre-m%C3%AD/</guid><description>&lt;p>Hola, mi nombre es Matías Di Bernardo. Soy estudiante de Ingeniería en Sonido e Ingeniería en Computación en Argentina. Me encanta aprender cosas nuevas y tengo una amplia gama de intereses, incluyendo algoritmos, aprendizaje profundo, procesamiento digital de señales (DSP), acústica y más. En mi tiempo libre, disfruto tocar música (toco el piano) y leer.&lt;/p>
&lt;h2 id="estudios">Estudios
&lt;/h2>&lt;p>Comencé a estudiar en 2019 para obtener el título de Ingeniero en Sonido en la UNTREF. Elegí esta carrera porque, como músico, quería combinar mi pasión por la música con mi interés en las matemáticas y las ciencias. Rápidamente me di cuenta de que una carrera en ingeniería ofrece mucho más de lo que imaginaba, y disfruté especialmente los cursos básicos de matemáticas, así como aquellos enfocados en acústica y procesamiento digital de señales.&lt;/p>
&lt;p>Esta experiencia profundizó mi interés en la programación y la computación, lo que me llevó a comenzar la carrera de Ingeniería en Computación en 2022, en paralelo con la primera, también en la UNTREF. A través de estos estudios, he podido solidificar mis conocimientos de programación, explorar conceptos como estructuras de datos y patrones de diseño, y adentrarme en los aspectos teóricos de la Inteligencia Artificial, un tema que siempre me ha apasionado.&lt;/p>
&lt;p>Actualmente estoy en mi último año de la carrera de Ingeniería en Sonido y en mi tercer año de la carrera de Ingeniería en Computación.&lt;/p>
&lt;p>Además de mi educación formal, siempre estoy buscando materiales adicionales en plataformas como YouTube o cursos en línea. Por ejemplo, dos cursos que han enriquecido mucho mi aprendizaje son &lt;em>DSP for Music Applications&lt;/em> en Coursera y &lt;em>Learning from Data&lt;/em>, una serie de YouTube de la Universidad de Caltech.&lt;/p>
&lt;h2 id="trabajo">Trabajo
&lt;/h2>&lt;p>Tengo un gran interés en el aprendizaje profundo y he realizado varios cursos sobre el tema. En 2022, me uní a un grupo de investigación académica en mi universidad llamado Intercambios Transorgánicos, que se enfoca en utilizar la tecnología para ayudar a las personas.&lt;/p>
&lt;p>Como parte de este grupo, he trabajado en un modelo de Text-to-Speech (TTS) que captura el acento rioplatense, haciendo esta tecnología más accesible para las personas que han perdido la voz y dependen de estos sistemas para comunicarse.&lt;/p>
&lt;p>Este proyecto encaja perfectamente con mis intereses, ya que combina aprendizaje profundo, procesamiento del habla, DSP y acústica. Rápidamente asumí más tareas y responsabilidades, y en 2024 fui promovido a CTO (Chief Technical Officer). En este rol, gestiono todas las decisiones técnicas, lidero un equipo de cuatro estudiantes y realizo investigaciones para mejorar la tecnología TTS, con un enfoque en la accesibilidad y la innovación.&lt;/p>
&lt;h2 id="por-qué-comencé-este-blog">¿Por qué comencé este blog?
&lt;/h2>&lt;p>Muchos de los proyectos que he iniciado en el pasado se han quedado a medias o han terminado abruptamente. Sin embargo, un blog es una excelente manera de mantenerme organizado y aprovechar al máximo mi trabajo.&lt;/p>
&lt;p>Además, documentar mis proyectos aquí me permite hacer un seguimiento de mi progreso y sirve como una referencia útil para futuros proyectos. Por ahora, el blog se centrará principalmente en temas de tecnología y ciencia, aunque no descarto expandirme a otras áreas en el futuro.&lt;/p>
&lt;h2 id="mis-libros-de-referencia-favoritos">Mis libros de referencia favoritos
&lt;/h2>&lt;p>Dejo un extra adicional que nadie pidió, aquí están algunos de los libros que más me han ayudado en diferentes temas:&lt;/p>
&lt;ul>
&lt;li>Acoustics: Sound Fields, Transducers and Vibration (2nd Edition) by Leo Beranek&lt;/li>
&lt;li>Fundamental of Music Processing by Meinard Müller&lt;/li>
&lt;li>Deep Learning by Ian Goodfellow&lt;/li>
&lt;li>Fundations of Signal Processing by Martin Vetterli&lt;/li>
&lt;/ul>
&lt;p>¡Estos son algunos de mis favoritos, y los recomiendo mucho!&lt;/p></description></item></channel></rss>