La creación de aplicaciones para Windows que integran modelos de inteligencia artificial (IA) en el dispositivo puede parecer una tarea monumental. Implica identificar el caso de uso, seleccionar y ajustar los modelos adecuados, y afinar la lógica que rodea a estos modelos. Aunque no hay un camino fácil y rápido para dominar la IA en Windows, desglosaremos un ejemplo de aplicación presentado en la conferencia Build para ayudar a comprender cómo se pueden utilizar los modelos en el dispositivo para potenciar aplicaciones.
El ejemplo en cuestión es un Editor de Audio con IA, construido con WinUI3 y WinAppSDK. La funcionalidad de la aplicación en sí es limitada, pero ofrece un marco útil para mostrar la integración de IA.
Este editor de audio emplea varios modelos para habilitar el “recorte inteligente” de audio, siguiendo este flujo:
- El usuario sube un archivo de audio que incluye discurso reconocible.
- Proporciona una palabra o frase clave temática y una duración de recorte.
- El Editor de Audio genera un clip de audio recortado con el segmento más relevante relacionado con el tema proporcionado.
La interfaz de usuario facilita la visualización de lo que se espera en cada paso. Una vez que se hace clic en “Generar nuevo clip”, el nuevo clip de audio se carga en la aplicación y puede reproducirse para su validación. Para esta tarea de “recorte inteligente”, se utilizan tres modelos diferentes, todos ellos ONNX, para procesar los datos de entrada y obtener el resultado esperado. Vamos a desglosar el papel de cada modelo, su función en nuestro caso de uso y dónde se puede encontrar más información sobre ellos.
En orden de uso:
Silero Voice Activity Detection (VAD): Este modelo se utiliza para "segmentar inteligentemente" el audio en partes más pequeñas para que puedan ser procesadas por nuestro modelo de transcripción. Esto es necesario porque Whisper, nuestro modelo de transcripción, solo puede manejar fragmentos de hasta treinta segundos de audio a la vez. Usamos Silero VAD para detectar la actividad de la voz y cortar en las pausas del habla, resultando en segmentos suficientemente pequeños para que Whisper los procese, pero que siguen siendo porciones de habla correctamente seccionadas.
Whisper Tiny: Después de segmentar el audio, se toma la salida y se alimenta al modelo Whisper Tiny. Este modelo transcribe el habla a texto. Usamos la versión Tiny de Whisper para optimizar el rendimiento, aunque tiene algunas limitaciones, como restricciones al inglés y una posible disminución en la precisión. Sin embargo, para nuestro caso de uso, es adecuado.
- MiniLM: El modelo final es un modelo de incrustación de texto llamado MiniLM, que mapea las frases escritas a un espacio vectorial multidimensional encapsulando toda la información semántica contenida en una frase. Para este ejemplo, tomamos el texto transcrito del modelo Whisper y la frase temática de entrada, y utilizamos MiniLM para generar las incrustaciones de texto de ambos. Con estas incrustaciones, podemos calcular la Similitud de Coseno entre la frase temática y las secciones transcritas del audio para identificar el segmento más semánticamente similar.
Después de esto, simplemente cortamos el audio basado en las marcas de tiempo, lo cargamos en el reproductor, ¡y listo!
Si deseas ejecutar el ejemplo por ti mismo o profundizar en la implementación para obtener más detalles sobre cómo funciona, puedes acceder al repositorio donde se encuentra el ejemplo. Además, hay un documento de recorrido por el código que sirve como punto de entrada para entender cómo se escribió este ejemplo. La configuración inicial para todos los modelos en el proyecto se define en el README. Visítalo y explora más. Si deseas aprender más sobre el uso de modelos locales en Windows, puedes consultar la documentación relevante.