La creación de aplicaciones para Windows que aprovechan los modelos de inteligencia artificial (IA) en el dispositivo puede parecer una tarea abrumadora. Implica definir el caso de uso, seleccionar y ajustar los modelos apropiados, y perfeccionar la lógica que rodea a estos modelos.
A pesar de que no existe un camino rápido y sencillo para aprender sobre IA en Windows, se ha desglosado un ejemplo de aplicación presentado en Build para ayudar a comprender cómo se pueden utilizar los modelos en el dispositivo para potenciar sus aplicaciones.
El ejemplo presentado es un Editor de Audio con IA, construido con WinUI3 y WinAppSDK. La funcionalidad de la aplicación en sí es mínima, pero proporciona un buen marco para mostrar la parte de IA de la app.
La aplicación de editor de audio utiliza varios modelos para habilitar el «recorte inteligente» de audio. El flujo sigue estos pasos: 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, y el Editor de Audio genera un clip de audio recortado que contiene el segmento de audio más relevante relacionado con el tema proporcionado.
El interfaz de usuario de entrada para este flujo ayuda a visualizar lo que se espera en el ejemplo. 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 la tarea de «recorte inteligente», se utilizan tres modelos diferentes, todos ellos ONNX, para procesar los datos de audio de entrada y obtener el resultado esperado. A continuación, se desglosa el papel de cada modelo, lo que logra para nuestro caso de uso y dónde se puede encontrar más información sobre ellos.
El primero es Silero Voice Activity Detection (VAD), usado para «segmentar inteligentemente» el audio en partes más pequeñas para que puedan ser procesadas por el modelo de transcripción. Esto es necesario porque Whisper, el modelo de transcripción, solo puede procesar fragmentos de audio de treinta segundos a la vez. Silero VAD detecta la actividad de la voz y corta en las pausas al hablar, resultando en segmentos de audio que son suficientemente pequeños para que Whisper los procese, pero siguen siendo porciones de habla correctamente seccionadas.
El segundo modelo es Whisper Tiny, que transcribe el discurso a texto. Se utiliza la versión Tiny de Whisper para optimizar en rendimiento, aunque conlleva algunas desventajas, como limitaciones al inglés y una posible disminución en la precisión. Sin embargo, para este caso de uso, funciona adecuadamente.
El tercer modelo es MiniLM, un modelo de incrustación de texto que mapea las frases escritas a un espacio vectorial multidimensional que encapsula toda la información semántica contenida en una frase. En este ejemplo, se toma el texto transcrito de Whisper, la frase temática de entrada y se utiliza MiniLM para generar las incrustaciones de texto para ambos. Con estas incrustaciones, se calcula la Similitud de Coseno entre la frase temática y las secciones del texto del audio incrustado para obtener la sección más semánticamente similar del audio.
Una vez hecho esto, sólo queda cortar el audio basado en las marcas de tiempo y cargarlo en el reproductor. Y eso es todo.
Para quienes desean ejecutar el ejemplo por sí mismos o sumergirse en la implementación para obtener más detalles sobre cómo funciona todo esto, pueden dirigirse al repositorio donde se encuentra el ejemplo. Existen muchos pasos previos para configurar todos los modelos en el proyecto, pero todos están definidos en el README. También se dispone de un documento de recorrido por el código para quienes necesiten un punto de entrada a cómo se escribió este ejemplo. Para aprender más sobre el uso de modelos locales en Windows, es posible visitar la documentación correspondiente.