Compartir:
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.
Aunque no existe un camino rápido y sencillo para aprender sobre IA en Windows, vamos a desglosar 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 que veremos 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, que sigue el siguiente 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 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. Desglosaremos 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.
En orden de uso:
-
Silero Voice Activity Detection (VAD): Este modelo se usa 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 procesar fragmentos de audio de treinta segundos a la vez. Usamos Silero VAD para detectar la actividad de la voz y cortar en las pausas al hablar, resultando en segmentos de audio que son lo suficientemente pequeños para que Whisper los procese, pero siguen siendo porciones de habla correctamente seccionadas.
-
Whisper Tiny: Después de que nuestro audio ha sido segmentado, tomamos la salida y la alimentamos al modelo Whisper Tiny. Este modelo transcribe el discurso a texto. Usamos la versión Tiny de Whisper para optimizar el rendimiento, aunque conlleva algunas desventajas, como limitaciones al inglés y una posible disminución en la precisión. Sin embargo, para nuestro caso de uso, funciona bien.
- MiniLM: El último modelo que usamos es un modelo de incrustación de texto llamado MiniLM, que mapea las frases escritas a un espacio vectorial multidimensional que encapsula toda la información semántica contenida en una frase. Para este ejemplo, tomamos el texto transcrito de nuestro modelo Whisper, nuestra frase temática de entrada y utilizamos MiniLM para generar las incrustaciones de texto para ambos. Una vez que tenemos nuestras incrustaciones, podemos calcular la Similitud de Coseno entre nuestra frase temática y las secciones del texto del audio incrustado para obtener la sección más semánticamente similar de nuestro audio.
A partir de ahí, solo tenemos que cortar nuestro audio basado en las marcas de tiempo, cargarlo en el reproductor, ¡y eso es todo!
Si deseas ejecutar el ejemplo por ti mismo, o sumergirte en la implementación para obtener más detalles sobre cómo funciona todo esto, puedes dirigirte al repositorio donde se encuentra el ejemplo. También disponemos de un documento de recorrido por el código si quieres un punto de entrada a cómo se escribió este ejemplo.
Existen muchos pasos previos para configurar todos los modelos en el proyecto, pero todos los pasos previos se definen en el README. Ve y échale un vistazo. Si quieres aprender más sobre el uso de modelos locales en Windows, puedes visitar la documentación correspondiente.