<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Work on Matias Di Bernardo</title><link>https://dibernardo.netlify.app/es/tags/work/</link><description>Recent content in Work on Matias Di Bernardo</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Matías Di Bernardo</copyright><lastBuildDate>Mon, 24 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://dibernardo.netlify.app/es/tags/work/index.xml" rel="self" type="application/rss+xml"/><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>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></channel></rss>